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

Reply via email to