Pablo Greco e6a3ae
From 04f34e7c0b0fada186ca7012f5f4168f46483c5f Mon Sep 17 00:00:00 2001
Pablo Greco e6a3ae
From: "plai@redhat.com" <plai@redhat.com>
Pablo Greco e6a3ae
Date: Mon, 1 Jul 2019 16:17:34 +0100
Pablo Greco e6a3ae
Subject: [PATCH 05/39] i386: Disable OSPKE on CPU model definitions
Pablo Greco e6a3ae
Pablo Greco e6a3ae
RH-Author: plai@redhat.com
Pablo Greco e6a3ae
Message-id: <1561997854-9646-6-git-send-email-plai@redhat.com>
Pablo Greco e6a3ae
Patchwork-id: 89334
Pablo Greco e6a3ae
O-Subject: [RHEL8.1 qemu-kvm PATCH v6 5/5] i386: Disable OSPKE on CPU model definitions
Pablo Greco e6a3ae
Bugzilla: 1629906
Pablo Greco e6a3ae
RH-Acked-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Pablo Greco e6a3ae
RH-Acked-by: Bandan Das <bsd@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
From: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Currently, the Cascadelake-Server, Icelake-Client, and
Pablo Greco e6a3ae
Icelake-Server are always generating the following warning:
Pablo Greco e6a3ae
Pablo Greco e6a3ae
  qemu-system-x86_64: warning: \
Pablo Greco e6a3ae
    host doesn't support requested feature: CPUID.07H:ECX [bit 4]
Pablo Greco e6a3ae
Pablo Greco e6a3ae
This happens because OSPKE was never returned by
Pablo Greco e6a3ae
GET_SUPPORTED_CPUID or x86_cpu_get_supported_feature_word().
Pablo Greco e6a3ae
OSPKE is a runtime flag automatically set by the KVM module or by
Pablo Greco e6a3ae
TCG code, was always cleared by x86_cpu_filter_features(), and
Pablo Greco e6a3ae
was not supposed to appear on the CPU model table.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Remove the OSPKE flag from the CPU model table entries, to avoid
Pablo Greco e6a3ae
the bogus warning and avoid returning invalid feature data on
Pablo Greco e6a3ae
query-cpu-* QMP commands.  As OSPKE was always cleared by
Pablo Greco e6a3ae
x86_cpu_filter_features(), this won't have any guest-visible
Pablo Greco e6a3ae
impact.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Include a test case that should detect the problem if we introduce
Pablo Greco e6a3ae
a similar bug again.
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Fixes: c7a88b52f62b ("i386: Add new model of Cascadelake-Server")
Pablo Greco e6a3ae
Fixes: 8a11c62da914 ("i386: Add new CPU model Icelake-{Server,Client}")
Pablo Greco e6a3ae
Cc: Tao Xu <tao3.xu@intel.com>
Pablo Greco e6a3ae
Cc: Robert Hoo <robert.hu@linux.intel.com>
Pablo Greco e6a3ae
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
Message-Id: <20190319200515.14999-1-ehabkost@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Pablo Greco e6a3ae
(cherry picked from commit bb4928c7cafe50ab2137a0034e350ef1bfa044d9)
Pablo Greco e6a3ae
Signed-off-by: Paul Lai <plai@redhat.com>
Pablo Greco e6a3ae
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Conflicts:
Pablo Greco e6a3ae
	target/i386/cpu.c
Pablo Greco e6a3ae
Pablo Greco e6a3ae
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
Pablo Greco e6a3ae
---
Pablo Greco e6a3ae
 target/i386/cpu.c | 2 +-
Pablo Greco e6a3ae
 1 file changed, 1 insertion(+), 1 deletion(-)
Pablo Greco e6a3ae
Pablo Greco e6a3ae
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
Pablo Greco e6a3ae
index 2538d82..af62281 100644
Pablo Greco e6a3ae
--- a/target/i386/cpu.c
Pablo Greco e6a3ae
+++ b/target/i386/cpu.c
Pablo Greco e6a3ae
@@ -2517,7 +2517,7 @@ static X86CPUDefinition builtin_x86_defs[] = {
Pablo Greco e6a3ae
             CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512CD |
Pablo Greco e6a3ae
             CPUID_7_0_EBX_AVX512VL | CPUID_7_0_EBX_CLFLUSHOPT,
Pablo Greco e6a3ae
         .features[FEAT_7_0_ECX] =
Pablo Greco e6a3ae
-            CPUID_7_0_ECX_PKU | CPUID_7_0_ECX_OSPKE |
Pablo Greco e6a3ae
+            CPUID_7_0_ECX_PKU |
Pablo Greco e6a3ae
             CPUID_7_0_ECX_AVX512VNNI,
Pablo Greco e6a3ae
         .features[FEAT_7_0_EDX] =
Pablo Greco e6a3ae
             CPUID_7_0_EDX_SPEC_CTRL | CPUID_7_0_EDX_SPEC_CTRL_SSBD,
Pablo Greco e6a3ae
-- 
Pablo Greco e6a3ae
1.8.3.1
Pablo Greco e6a3ae