On 29.06.2011, at 13:53, Josh Boyer wrote: > On Wed, Jun 29, 2011 at 08:41:03PM +1000, Paul Mackerras wrote: >> Documentation/virtual/kvm/api.txt | 35 >> +++++++++++++++++++++++++++++++++++ >> arch/powerpc/include/asm/kvm.h | 15 +++++++++++++++ >> arch/powerpc/include/asm/kvm_host.h | 1 + >> arch/powerpc/kvm/powerpc.c | 28 ++++++++++++++++++++++++++++ >> include/linux/kvm.h | 1 + >> 5 files changed, 80 insertions(+), 0 deletions(-) >> >> diff --git a/Documentation/virtual/kvm/api.txt >> b/Documentation/virtual/kvm/api.txt >> index b0e4b9c..3ab012c 100644 >> --- a/Documentation/virtual/kvm/api.txt >> +++ b/Documentation/virtual/kvm/api.txt >> @@ -1430,6 +1430,41 @@ is supported; 2 if the processor requires all virtual >> machines to have >> an RMA, or 1 if the processor can use an RMA but doesn't require it, >> because it supports the Virtual RMA (VRMA) facility. >> >> +4.64 KVM_PPC_SET_PLATFORM >> + >> +Capability: none >> +Architectures: powerpc >> +Type: vm ioctl >> +Parameters: struct kvm_ppc_set_platform (in) >> +Returns: 0, or -1 on error >> + >> +This is used by userspace to tell KVM what sort of platform it should >> +emulate. The return value of the ioctl tells userspace whether the >> +emulation it is requesting is supported by KVM. >> + >> +struct kvm_ppc_set_platform { >> + __u16 platform; /* defines the OS/hypervisor ABI */ >> + __u16 guest_arch; /* e.g. decimal 206 for v2.06 */ >> + __u32 flags; >> +}; >> + >> +/* Values for platform */ >> +#define KVM_PPC_PV_NONE 0 /* bare-metal, >> non-paravirtualized */ >> +#define KVM_PPC_PV_KVM 1 /* as defined in kvm_para.h */ >> +#define KVM_PPC_PV_SPAPR 2 /* IBM Server PAPR (a la PowerVM) */ >> + >> +/* Values for flags */ >> +#define KVM_PPC_CROSS_ARCH 1 /* guest architecture != host */ >> + >> +The KVM_PPC_CROSS_ARCH bit being 1 indicates that the guest is of a >> +sufficiently different architecture to the host that the guest cannot >> +be permitted to use supervisor mode. For example, if the host is a >> +64-bit machine and the guest is a 32-bit machine, then this bit should >> +be set. > > This makes me wonder if a similar thing might eventually be usable for > running an i686 or x32 guest on an x86_64 KVM host. I have no idea if > that is even theoretically possible, but if it is it might be better to > rename the ioctl to be architecture agnostic.
On x86 this is not required unless we want to "virtualize" pre-CPUID CPUs. Everything as of Pentium has a full bitmap of feature capabilities that KVM gets from user space, including information such as "Can we do 64-bit mode?". Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html