On 8 August 2013 13:51, Peter Maydell <peter.maydell@xxxxxxxxxx> wrote: > For ARM you can't get at feature info of the host from userspace > (unless you want to get into parsing /proc/cpuinfo), so my current > idea is to have KVM_ARM_VCPU_INIT support a target-cpu-type > which means "whatever host CPU is". To expand on this for the 64 bit situation: * although in theory we could support a 32-bit-compiled QEMU binary on a 64-bit host kernel, I think there's not much need for it * if you run a 64-bit QEMU on a 64-bit host and ask VCPU_INIT for a 'host' CPU, you get a 64 bit CPU * you can add the feature flag '32 bit VM please' when making the VCPU_INIT call, which gets you the same host CPU but forced into 32 bit mode (this flag & behaviour exist in the kernel today) -- in QEMU I guess we have a '-cpu host32' which drives this, or possibly add support for "-cpu host,+32bitvm" style syntax. NB that the API for reading and writing registers isn't the same for "64 bit CPU in 32 bit mode" as for a native 32 bit CPU -- the view of the guest that QEMU sees in the former case is the same view that a 64 bit hypervisor sees of a 32 bit guest. I think that to avoid huge ifdefs it will be cleaner to have target-arm/kvm.c [common functions] target-arm/kvm32.c [init_vcpu, get_registers, etc for 32 bit] target-arm/kvm64.c [ditto, 64 bit] and configure only sets CONFIG_KVM for aarch64-on-aarch64 and arm-on-arm. -- PMM -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html