[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Get IDT from virtual machine
The IDT isn't even necessarily expressible as a PV 'trap_table': e.g., task gates can't be expressed, nor can the interrupt-stack selector bits in a 64-bit gate. -- Keir On 4/2/08 13:28, "Matthew Donovan" <matthew@xxxxxxxxxxxxxx> wrote: > I'm sorry if I wasn't clear. I was wondering why xc_vcpu_getcontext doesn't > get the IDT for HVM guests and what would be required to make it work. > > -matthew > > -----Original Message----- > From: Keir Fraser [mailto:Keir.Fraser@xxxxxxxxxxxx] > Sent: Saturday, February 02, 2008 5:19 AM > To: Matthew Donovan; xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: Re: [Xen-devel] Get IDT from virtual machine > > Yes, your code extracts the virtual IDT for a PV guest. As I said below, > doing it for an HVM guest requires you to issue a hvm-save-state hypercall > and then pick apart the binary structure that is returned. > > -- Keir > > > On 1/2/08 17:20, "Matthew Donovan" <matthew@xxxxxxxxxxxxxx> wrote: > >> But one could get the IDTR for a para-virt guest? Out of curiousity, >> how hard would it be to do it for HVM guests? >> >> -matthew >> >> -----Original Message----- >> From: Keir Fraser [mailto:Keir.Fraser@xxxxxxxxxxxx] >> Sent: Friday, February 01, 2008 3:40 AM >> To: Matthew Donovan; xen-devel@xxxxxxxxxxxxxxxxxxx >> Subject: Re: [Xen-devel] Get IDT from virtual machine >> >> That's very wishful code! Unfortunately the IDTR is not exposed via >> vcpu_context for HVM guests. The only way to get it right now is to do >> a hvm save hypercall and then parse the pickled state to find the >> IDTR. It actually should be quite easy. >> >> -- Keir >> >> On 31/1/08 21:31, "Matthew Donovan" <matthew@xxxxxxxxxxxxxx> wrote: >> >>> >>> I'm trying to retrieve and print the interrupt descriptor table of a >>> guest OS but every address is coming out 0x00000000. >>> >>> Here's what I'm doing: >>> >>> vcpu_guest_context_t ctx; >>> int i; >>> >>> int res = xc_vcpu_getcontext (xai->xc_handle, xai->domain_id, 0, >> &ctx); >>> if (res < 0) { >>> fprintf (stderr, "xc_vcpu_getcontext failed!\n"); >>> return; >>> } >>> >>> for (i = 0 ; i < 256 ; ++i) { >>> printf ("Interrupt %d: Address 0x%08x\n", >>> i, >>> ctx.trap_ctxt[i].address); >>> } >>> >>> >>> I'm using Xen 3.1.2 on Fedora Core 8. The guest OS's have been XP >>> Pro and Vista Ultimate, though I assume that part doesn't matter >>> since the IDT is a processor structure. >>> >>> Any help is greatly appreciated. >>> -matthew >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>> http://lists.xensource.com/xen-devel >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |