<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From e9e26236af6a858961280cd4997c437eab27c1e9 Mon Sep 17 00:00:00 2001
From: "Dr. David Alan Gilbert" &lt;dgilbert@redhat.com&gt;
Date: Thu, 22 Sep 2016 19:07:57 +0200
Subject: [PATCH 2/3] target-i386: introduce kvm_put_one_msr

RH-Author: Dr. David Alan Gilbert &lt;dgilbert@redhat.com&gt;
Message-id: &lt;1474571278-16316-2-git-send-email-dgilbert@redhat.com&gt;
Patchwork-id: 72406
O-Subject: [RHEL-7.3 qemu-kvm-rhev PATCH 1/2] target-i386: introduce kvm_put_one_msr
Bugzilla: 1377920
RH-Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
RH-Acked-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
RH-Acked-by: Radim Krcmar &lt;rkrcmar@redhat.com&gt;

From: Paolo Bonzini &lt;pbonzini@redhat.com&gt;

Avoid further code duplication in the next patch.

Signed-off-by: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
(cherry picked from commit 73e1b8f2f9b8a90361f9c1af306ee17bfcfd592d)
  Merge conflict:
      We don't yet have Eduardo's patch where kvm_msr_entry_add
      was added, so rework to the older kvm_msr_entry_set.
Signed-off-by: Dr. David Alan Gilbert &lt;dgilbert@redhat.com&gt;

Signed-off-by: Miroslav Rezanina &lt;mrezanin@redhat.com&gt;
---
 target-i386/kvm.c | 39 +++++++++++++++++----------------------
 1 file changed, 17 insertions(+), 22 deletions(-)

diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index b80347c..85ef5dc 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -1451,27 +1451,32 @@ static void kvm_msr_entry_set(struct kvm_msr_entry *entry,
     entry-&gt;data = value;
 }
 
-static int kvm_put_tscdeadline_msr(X86CPU *cpu)
+static int kvm_put_one_msr(X86CPU *cpu, int index, uint64_t value)
 {
-    CPUX86State *env = &amp;cpu-&gt;env;
     struct {
         struct kvm_msrs info;
         struct kvm_msr_entry entries[1];
     } msr_data;
-    struct kvm_msr_entry *msrs = msr_data.entries;
-    int ret;
-
-    if (!has_msr_tsc_deadline) {
-        return 0;
-    }
 
-    kvm_msr_entry_set(&amp;msrs[0], MSR_IA32_TSCDEADLINE, env-&gt;tsc_deadline);
+    kvm_msr_entry_set(&amp;msr_data.entries[0], index, value);
 
     msr_data.info = (struct kvm_msrs) {
         .nmsrs = 1,
     };
 
-    ret = kvm_vcpu_ioctl(CPU(cpu), KVM_SET_MSRS, &amp;msr_data);
+    return kvm_vcpu_ioctl(CPU(cpu), KVM_SET_MSRS, &amp;msr_data);
+}
+
+static int kvm_put_tscdeadline_msr(X86CPU *cpu)
+{
+    CPUX86State *env = &amp;cpu-&gt;env;
+    int ret;
+
+    if (!has_msr_tsc_deadline) {
+        return 0;
+    }
+
+    ret = kvm_put_one_msr(cpu, MSR_IA32_TSCDEADLINE, env-&gt;tsc_deadline);
     if (ret &lt; 0) {
         return ret;
     }
@@ -1488,24 +1493,14 @@ static int kvm_put_tscdeadline_msr(X86CPU *cpu)
  */
 static int kvm_put_msr_feature_control(X86CPU *cpu)
 {
-    struct {
-        struct kvm_msrs info;
-        struct kvm_msr_entry entry;
-    } msr_data;
     int ret;
 
     if (!has_msr_feature_control) {
         return 0;
     }
 
-    kvm_msr_entry_set(&amp;msr_data.entry, MSR_IA32_FEATURE_CONTROL,
-                      cpu-&gt;env.msr_ia32_feature_control);
-
-    msr_data.info = (struct kvm_msrs) {
-        .nmsrs = 1,
-    };
-
-    ret = kvm_vcpu_ioctl(CPU(cpu), KVM_SET_MSRS, &amp;msr_data);
+    ret = kvm_put_one_msr(cpu, MSR_IA32_FEATURE_CONTROL,
+                          cpu-&gt;env.msr_ia32_feature_control);
     if (ret &lt; 0) {
         return ret;
     }
-- 
1.8.3.1

</pre></body></html>