Blame SOURCES/kvm-Use-KVM_GET_MSR_INDEX_LIST-for-MSR_IA32_ARCH_CAP.patch

8b1478
From d8ed655838cc87d703e1a1419bd9704fceae6a6c Mon Sep 17 00:00:00 2001
8b1478
From: "plai@redhat.com" <plai@redhat.com>
8b1478
Date: Tue, 4 Jun 2019 21:47:25 +0200
8b1478
Subject: [PATCH 06/23] kvm: Use KVM_GET_MSR_INDEX_LIST for
8b1478
 MSR_IA32_ARCH_CAPABILITIES support
8b1478
8b1478
RH-Author: plai@redhat.com
8b1478
Message-id: <1559684847-10889-7-git-send-email-plai@redhat.com>
8b1478
Patchwork-id: 88529
8b1478
O-Subject: [RHEL7.7 qemu-kvm-rhev PATCH v4 6/8] kvm: Use KVM_GET_MSR_INDEX_LIST for MSR_IA32_ARCH_CAPABILITIES support
8b1478
Bugzilla: 1709972
8b1478
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
8b1478
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
8b1478
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
8b1478
8b1478
From: Bandan Das <bsd@redhat.com>
8b1478
8b1478
When writing to guest's MSR_IA32_ARCH_CAPABILITIES, check whether it's
8b1478
supported in the guest using the KVM_GET_MSR_INDEX_LIST ioctl.
8b1478
8b1478
Fixes: d86f963694df27f11b3681ffd225c9362de1b634
8b1478
Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
8b1478
Tested-by: balducci@units.it
8b1478
Signed-off-by: Bandan Das <bsd@redhat.com>
8b1478
Message-Id: <jpg4lc4iiav.fsf_-_@linux.bootlegged.copy>
8b1478
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
8b1478
(cherry picked from commit aec5e9c3a94cf8b7920f59bef69a6f426092c4a0)
8b1478
Signed-off-by: Paul Lai <plai@redhat.com>
8b1478
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
8b1478
---
8b1478
 target/i386/kvm.c | 15 +++++++--------
8b1478
 1 file changed, 7 insertions(+), 8 deletions(-)
8b1478
8b1478
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
8b1478
index 88a4114..c99c0ef 100644
8b1478
--- a/target/i386/kvm.c
8b1478
+++ b/target/i386/kvm.c
8b1478
@@ -94,6 +94,7 @@ static bool has_msr_xss;
8b1478
 static bool has_msr_spec_ctrl;
8b1478
 static bool has_msr_virt_ssbd;
8b1478
 static bool has_msr_smi_count;
8b1478
+static bool has_msr_arch_capabs;
8b1478
 
8b1478
 static uint32_t has_architectural_pmu_version;
8b1478
 static uint32_t num_architectural_pmu_gp_counters;
8b1478
@@ -1330,6 +1331,9 @@ static int kvm_get_supported_msrs(KVMState *s)
8b1478
                 case MSR_VIRT_SSBD:
8b1478
                     has_msr_virt_ssbd = true;
8b1478
                     break;
8b1478
+                case MSR_IA32_ARCH_CAPABILITIES:
8b1478
+                    has_msr_arch_capabs = true;
8b1478
+                    break;
8b1478
                 }
8b1478
             }
8b1478
         }
8b1478
@@ -1834,14 +1838,9 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
8b1478
 #endif
8b1478
 
8b1478
     /* If host supports feature MSR, write down. */
8b1478
-    if (kvm_feature_msrs) {
8b1478
-        int i;
8b1478
-        for (i = 0; i < kvm_feature_msrs->nmsrs; i++)
8b1478
-            if (kvm_feature_msrs->indices[i] == MSR_IA32_ARCH_CAPABILITIES) {
8b1478
-                kvm_msr_entry_add(cpu, MSR_IA32_ARCH_CAPABILITIES,
8b1478
-                              env->features[FEAT_ARCH_CAPABILITIES]);
8b1478
-                break;
8b1478
-            }
8b1478
+    if (has_msr_arch_capabs) {
8b1478
+        kvm_msr_entry_add(cpu, MSR_IA32_ARCH_CAPABILITIES,
8b1478
+                          env->features[FEAT_ARCH_CAPABILITIES]);
8b1478
     }
8b1478
 
8b1478
     /*
8b1478
-- 
8b1478
1.8.3.1
8b1478