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] [PATCH] support protected mode mmio with non-zero CS bas

To: "Mats Petersson" <Mats.Petersson@xxxxxxx>
Subject: RE: [Xen-devel] [PATCH] support protected mode mmio with non-zero CS base
From: "Jan Beulich" <jbeulich@xxxxxxxxxx>
Date: Wed, 22 Nov 2006 08:36:20 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 21 Nov 2006 23:34:38 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <907625E08839C4409CE5768403633E0B018E1746@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: <45633D88.76E4.0078.0@xxxxxxxxxx> <907625E08839C4409CE5768403633E0B018E1746@xxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>      realmode = hvm_realmode(v);
>>      if ( realmode )
>> -        inst_addr = (regs->cs << 4) + regs->eip;
>> +        inst_addr = regs->cs << 4;
>>      else
>> -        inst_addr = regs->eip;
>> +        inst_addr = hvm_get_segment_base(current, seg_cs);
>
>Remove the "if ( realmode ) " and just use the segment base address. The
>base-address in the register should be correct even in realmod, or the
>processor is broken. [I don't think this code is being executed from
>vmxassist - if it is, then that's a different special case!]. 

I intentionally didn't, as at least on VMX the read operation could
be significantly slower than a shift (and due to the indirect call it will
be slower even on SVM).

>Theoretically, you should also check that (eip <= segment.limit), and
>issue GP-fault if not true. 

Again intentionally no: If the original instruction managed to generate
a page fault, than it must have been entirely within limits - otherwise
hardware would have generated a GP fault.

Jan

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