[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xen pv and cpuid
On 26/10/2009 17:44, "Dan Magenheimer" <dan.magenheimer@xxxxxxxxxx> wrote: > Is it true in a PV domain that there is no way (short of binary translation) > to trap a userland cpuid instruction into Xen? A pure CPUID instruction cannot be trapped, that is correct. > I found the routine pv_cpuid() in arch/x86/traps.c and assumed that userland > cpuid's would find their way into that code, but it appears to not be the > case. After adding some printks and reading the code more closely, I gather > that PV OS's somehow get their cpuid instructions replaced with an invalid op > so that kernel-land cpuid's do indeed get trapped? Then looking at the Intel > SDM I don't see any way to force cpuid at any privilege level to trap (except > in an HVM)? Correct, PV guest kernels are expected to use the 'special' paravirtualised CPUDI instruction that is a specially-interpreted/emulated invalid instruction. PV guest applications are also allowed to use this paravirtualised instruction, if they like. > (If this is all correct, then I am sadly back to needing userland hypercalls > :-( Presumably you can just use the paravirtualised CPUID instruction. See tools/misc/xen-detect.c for an example usage which deals with the case that the invalid instruction visibly faults (i.e., because you aren't running on Xen after all). An alternative to fork-and-test-the-child would be to ask the kernel if it is running on Xen (e.g., on XenLinux perhaps by querying for Xen-specific nodes in /proc). -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |