Skip to content
Snippets Groups Projects
  1. Sep 21, 2017
  2. Sep 19, 2017
  3. Sep 15, 2017
    • Greg Kurz's avatar
      ppc/kvm: use kvm_vm_check_extension() in kvmppc_is_pr() · 70a0c19e
      Greg Kurz authored
      If the host has both KVM PR and KVM HV loaded and we pass:
      
      	-machine pseries,accel=kvm,kvm-type=PR
      
      the kvmppc_is_pr() returns false instead of true. Since the helper
      is mostly used as fallback, it doesn't have any real impact with
      recent kernels. A notable exception is the workaround to allow
      migration between compatible hosts with different PVRs (eg, POWER8
      and POWER8E), since KVM still doesn't provide a way to check if a
      specific PVR is supported (see commit c363a37a for details).
      
      According to the official KVM API documentation [1], KVM_PPC_GET_PVINFO
      is "vm ioctl", but we check it as a global ioctl. The following function
      in KVM is hence called with kvm == NULL and considers we're in HV mode.
      
      int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
      {
      	int r;
      	/* Assume we're using HV mode when the HV module is loaded */
      	int hv_enabled = kvmppc_hv_ops ? 1 : 0;
      
      	if (kvm) {
      		/*
      		 * Hooray - we know which VM type we're running on. Depend on
      		 * that rather than the guess above.
      		 */
      		hv_enabled = is_kvmppc_hv_enabled(kvm);
      	}
      
      Let's use kvm_vm_check_extension() to fix the issue.
      
      [1] https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt
      
      
      
      Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
      Reviewed-by: default avatarThomas Huth <thuth@redhat.com>
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      70a0c19e
  4. Sep 14, 2017
Loading