Is there any documentation of the logic behind what
cpuid bits are exposed to a PV guest OS?
It was reported to me that /proc/cpuinfo in a 32-bit PV
guest running on a 64-bit Xen on a 64-bit hardware platform
does NOT report "lm" (64-bit hardware). Although this
might seem to make sense, since the cpuid instruction
is unprivileged, userland apps testing the same cpuid
bit will observe that the hardware is indeed 64-bit,
even though the OS (which uses "pvcpuid") does not.
This difference confused a user.
So I compared /proc/cpuinfo in a 32-bit guest running on
a 64-bit, ahem, distinguished competitor's hypervisor,
on a 64-bit hardware platform vs the same on Xen on
The differences were:
The "other" hypervisor reported these features that
Xen did not: vme, pse, mtrr, pge, mca, pse36, lm.
Xen reported these features that the "other" hypervisor
did not: ht (only).
I'm far from an x86 expert, so would need to look up
most of these and all the differences may be perfectly
defensible, but I thought I would ask the question so
that the real x86 experts could comment, and possibly
fix anything necessary prior to Xen 4.0.
Unfortunately, I didn't test an hvm domain on the Xen
system and no longer have access to the "other"
hypervisor to run further tests.
Xen-devel mailing list