Some VM capabilities are currently checked with kvm_check_extension(). This doesn't have any impact for most host architectures because they don't depend on the KVM type. However, this is a problem for server-class ppc hosts that can support the PR and HV KVM types. Both implementations can co-exist in the kernel at the same time and we decide which one will be used with the "type" argument of the KVM_CREATE_VM ioctl.
Each KVM type has a different set of capabilities, and checking them with kvm_check_extension() will always cause KVM to assume we're in HV mode, even if they are VM specific and we have explicitely requested to run in PR mode. This may produce unexpected results. Similar issues were recently fixed in the ppc code: https://github.com/qemu/qemu/commit/70a0c19e83aa4c71c879d51e426e89e4b3d4e014 https://github.com/dgibson/qemu/commit/b152d74ebaed61f89fa1ab2c9b1526d9e9dabae5 This series focuses on capabilities that are checked by the common code. -- Greg --- Greg Kurz (2): kvm: check KVM_CAP_SYNC_MMU with kvm_vm_check_extension() kvm: check KVM_CAP_NR_VCPUS with kvm_vm_check_extension() accel/kvm/kvm-all.c | 51 +++++++++++++++++++++++++----------------------- accel/stubs/kvm-stub.c | 4 ++-- include/sysemu/kvm.h | 2 +- 3 files changed, 30 insertions(+), 27 deletions(-)