WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] RE: [Xen-changelog] Fix MOVS instruction emulation for H

To: "Petersson, Mats" <Mats.Petersson@xxxxxxx>
Subject: Re: [Xen-devel] RE: [Xen-changelog] Fix MOVS instruction emulation for HVM MMIO.
From: Gerd Hoffmann <kraxel@xxxxxxx>
Date: Wed, 17 May 2006 08:42:39 +0200
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, xen-changelog@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 16 May 2006 23:43:08 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <907625E08839C4409CE5768403633E0BA7FC80@xxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <907625E08839C4409CE5768403633E0BA7FC80@xxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.2 (X11/20060411)
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).

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

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>