Hi,
> I'll write some simple test code to check it out, and let you know...
Fix attached, seems to work ok on a quick test.
cheers,
Gerd
--
Gerd Hoffmann <kraxel@xxxxxxx>
Erst mal heiraten, ein, zwei Kinder, und wenn alles läuft
geh' ich nach drei Jahren mit der Familie an die Börse.
http://www.suse.de/~kraxel/julika-dora.jpeg
diff -r be5a6188cd9f xen/arch/x86/hvm/platform.c
--- a/xen/arch/x86/hvm/platform.c Thu May 11 10:34:34 2006
+++ b/xen/arch/x86/hvm/platform.c Tue May 16 18:11:57 2006
@@ -865,7 +865,7 @@
* copy ourself. After this copy succeeds, "rep movs" is executed
* again.
*/
- if ((addr & PAGE_MASK) != ((addr + size - 1) & PAGE_MASK)) {
+ if ((addr & PAGE_MASK) != ((addr + sign * (size - 1)) & PAGE_MASK)) {
unsigned long value = 0;
mmio_opp->flags |= OVERLAP;
@@ -876,7 +876,7 @@
hvm_copy(&value, addr, size, HVM_COPY_IN);
send_mmio_req(IOREQ_TYPE_COPY, gpa, 1, size, value, dir, 0);
} else {
- if ((addr & PAGE_MASK) != ((addr + count * size - 1) & PAGE_MASK))
{
+ if ((addr & PAGE_MASK) != ((addr + sign * (count * size - 1)) &
PAGE_MASK)) {
regs->eip -= inst_len; /* do not advance %eip */
if (sign > 0)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|