Petersson, Mats
2006-May-17 12:26 UTC
RE: [Xen-devel] RE: [Xen-changelog] Fix MOVS instruction emulation for HVM MMIO.
> -----Original Message----- > From: xen-devel-bounces@lists.xensource.com > [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of > Gerd Hoffmann > Sent: 17 May 2006 07:43 > To: Petersson, Mats > Cc: xen-devel@lists.xensource.com; xen-changelog@lists.xensource.com > Subject: Re: [Xen-devel] RE: [Xen-changelog] Fix MOVS > instruction emulation for HVM MMIO. > > Petersson, Mats wrote: > >> Subject: [Xen-changelog] Fix MOVS instruction emulation > for HVM MMIO. > >> > >> diff -r aab3cd33d2ba -r 7fdc4a8b782b xen/arch/x86/hvm/platform.c > >> --- a/xen/arch/x86/hvm/platform.c Tue May 16 16:34:27 2006 +0100 > >> +++ b/xen/arch/x86/hvm/platform.c Tue May 16 19:50:23 2006 +0100 > >> @@ -865,7 +865,7 @@ void handle_mmio(unsigned long va, unsig > >> * 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)) { > > > > With the risk of being wrong (again), I''d say this is > incorrect: The > > MOVS instruction will start reading at ESI, and write at > the address > > indicated by EDI and write with size bytes, even when it''s copying > > backwards. So there should be no multiplication of sign on > this line. > > I still think this is correct. If I understand things > correctly the point of the test is to figure whenever the > _next_ repz movs interation will access another page (and if > so copy just one data word and let the emulator kick in again > for the remaining data on the page above/below).No, the test is for if the first (current) operation is crossing a page boundary, not if the NEXT one is... That''s why the code in this condition is using hvm_copy to fetch the data that is being accessed... But leave it as is right now, I''m still working on getting a piece of test-code to do MOVS in various ways... -- Mats> > cheers, > > Gerd > > -- > Gerd Hoffmann <kraxel@suse.de> > 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 > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel > >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Gerd Hoffmann
2006-May-18 13:21 UTC
Re: [Xen-devel] RE: [Xen-changelog] Fix MOVS instruction emulation for HVM MMIO.
Hi,> No, the test is for if the first (current) operation is crossing a > page boundary, not if the NEXT one is... That''s why the code in this > condition is using hvm_copy to fetch the data that is being > accessed...Ok, point taken. But that also means that the access range calculation isn''t that simple, it''s quite different for the two directions ... Patch against 9681 (testing repository) attached. cheers, Gerd -- Gerd Hoffmann <kraxel@suse.de> 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 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel