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] Paravirtualization of the "HLT" instruction ( for exampl

To: "Ian Brown" <ianbrn@xxxxxxxxx>, "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
Subject: RE: [Xen-devel] Paravirtualization of the "HLT" instruction ( for example) on x386
From: "Petersson, Mats" <mats.petersson@xxxxxxx>
Date: Tue, 24 Jan 2006 14:34:18 +0100
Cc: Xen Mailing List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Tue, 24 Jan 2006 13:46:24 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcYg4YB3FIPKpt+pSMymK8qtRDNq2gAB9FIQ
Thread-topic: [Xen-devel] Paravirtualization of the "HLT" instruction ( for example) on x386
 

> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx 
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Ian Brown
> Sent: 24 January 2006 12:24
> To: Keir Fraser
> Cc: Xen Mailing List
> Subject: Re: [Xen-devel] Paravirtualization of the "HLT" 
> instruction ( for example) on x386
> 
> Hello,
> 
> Thanks for your answer in such a short time !
> 
> I am aware of emulate_privileged_op() in traps.c and also of 
> the emulation of both CLTS and WBINVD in this method.
> 
> you said :
> >GPFs that are not handled by Xen are indeed then passed to the guest 
> >and will end up in the function you mentioned in your email.
> 
> I am not sure about something regarding "are indeed then 
> passed to the guest":
> suppose a guest OS, running in ring 1, issues a privileged 
> instruction (namely, an instruction which causes #GP(0) since 
> it was issued in CPL1 ).
> I don't know if it is possible at all since as I understand 
> such instructions were replaced in the guest OS code. But 
> let's say it's possible, the "passed to the guest" is the 
> point I am trying to get at.
> 
> In such a case, what happens ? there is a #GP(0) of course, 
> but who handles it in the first place ? is it the OS in ring 
> 0 (with it's
> do_general_protection() method in this case ? ) ? or is it 
> the OS in ring 1, which also have do_general_protection() method ?
> 
> and by
> >GPFs that are not handled by Xen are indeed then passed to the guest 
> >and will end up in the function you mentioned in your email.
> 
> you mean that GPFs that occurred in ring 1 will be handled at 
> the first place by the guest ? (or ,what seems to me more 
> unlikely, first by ring0 and then somehow "passed" to the guest)
> 
> Regards,
> IB
> 
> 
The way it works is that the GP fault is taken by Xen, and if Xen
decides that "I don't know what to do with this", for example because
it's an unexpected scenario, it will PASS it to the Guest. I haven't
looked at how the passing is done in Xen's hypervisor - there are
several ways you could do this, for example parsing the IDT of the guest
and making a fake stack-frame for the guest. 

In a hardware virtualized environment, the GP fault would be passed in
the same way as a virtual interrupt is passed to the guest. 

I just noticed that Keir just answered this one too. 

[snip]

--
Mats


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

<Prev in Thread] Current Thread [Next in Thread>
  • RE: [Xen-devel] Paravirtualization of the "HLT" instruction ( for example) on x386, Petersson, Mats <=