Blame SOURCES/kvm-target-ppc-support-KVM_CAP_PPC_MMU_RADIX-KVM_CAP_PPC.patch

76daa3
From e749a6716ee069a5c91bdabb094080419ef0dcda Mon Sep 17 00:00:00 2001
76daa3
From: David Gibson <dgibson@redhat.com>
76daa3
Date: Thu, 27 Apr 2017 02:15:53 +0200
76daa3
Subject: [PATCH 18/23] target-ppc: support KVM_CAP_PPC_MMU_RADIX,
76daa3
 KVM_CAP_PPC_MMU_HASH_V3
76daa3
76daa3
RH-Author: David Gibson <dgibson@redhat.com>
76daa3
Message-id: <20170427021558.4884-3-dgibson@redhat.com>
76daa3
Patchwork-id: 74916
76daa3
O-Subject: [Pegas-1.0 qemu-kvm-rhev PATCH 2/7] target-ppc: support KVM_CAP_PPC_MMU_RADIX, KVM_CAP_PPC_MMU_HASH_V3
76daa3
Bugzilla: 1368786
76daa3
RH-Acked-by: Thomas Huth <thuth@redhat.com>
76daa3
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
76daa3
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
76daa3
From: Sam Bobroff <sam.bobroff@au1.ibm.com>
76daa3
76daa3
Query and cache the value of two new KVM capabilities that indicate
76daa3
KVM's support for new radix and hash modes of the MMU.
76daa3
76daa3
Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
76daa3
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
76daa3
(cherry picked from commit cf1c4cce7c0d53d2a778a4b124d02ea3a84f1663)
76daa3
76daa3
Siged-off-by: David Gibson <dgibson@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 target/ppc/kvm.c     | 14 ++++++++++++++
76daa3
 target/ppc/kvm_ppc.h | 12 ++++++++++++
76daa3
 2 files changed, 26 insertions(+)
76daa3
76daa3
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
76daa3
index 9c355ce..b733578 100644
76daa3
--- a/target/ppc/kvm.c
76daa3
+++ b/target/ppc/kvm.c
76daa3
@@ -85,6 +85,8 @@ static int cap_papr;
76daa3
 static int cap_htab_fd;
76daa3
 static int cap_fixup_hcalls;
76daa3
 static int cap_htm;             /* Hardware transactional memory support */
76daa3
+static int cap_mmu_radix;
76daa3
+static int cap_mmu_hash_v3;
76daa3
 
76daa3
 static uint32_t debug_inst_opcode;
76daa3
 
76daa3
@@ -139,6 +141,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
76daa3
     cap_htab_fd = kvm_check_extension(s, KVM_CAP_PPC_HTAB_FD);
76daa3
     cap_fixup_hcalls = kvm_check_extension(s, KVM_CAP_PPC_FIXUP_HCALL);
76daa3
     cap_htm = kvm_vm_check_extension(s, KVM_CAP_PPC_HTM);
76daa3
+    cap_mmu_radix = kvm_vm_check_extension(s, KVM_CAP_PPC_MMU_RADIX);
76daa3
+    cap_mmu_hash_v3 = kvm_vm_check_extension(s, KVM_CAP_PPC_MMU_HASH_V3);
76daa3
 
76daa3
     if (!cap_interrupt_level) {
76daa3
         fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
76daa3
@@ -2359,6 +2363,16 @@ bool kvmppc_has_cap_htm(void)
76daa3
     return cap_htm;
76daa3
 }
76daa3
 
76daa3
+bool kvmppc_has_cap_mmu_radix(void)
76daa3
+{
76daa3
+    return cap_mmu_radix;
76daa3
+}
76daa3
+
76daa3
+bool kvmppc_has_cap_mmu_hash_v3(void)
76daa3
+{
76daa3
+    return cap_mmu_hash_v3;
76daa3
+}
76daa3
+
76daa3
 static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc)
76daa3
 {
76daa3
     ObjectClass *oc = OBJECT_CLASS(pcc);
76daa3
diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
76daa3
index 08ecf75..64189a4 100644
76daa3
--- a/target/ppc/kvm_ppc.h
76daa3
+++ b/target/ppc/kvm_ppc.h
76daa3
@@ -54,6 +54,8 @@ void kvmppc_read_hptes(ppc_hash_pte64_t *hptes, hwaddr ptex, int n);
76daa3
 void kvmppc_write_hpte(hwaddr ptex, uint64_t pte0, uint64_t pte1);
76daa3
 bool kvmppc_has_cap_fixup_hcalls(void);
76daa3
 bool kvmppc_has_cap_htm(void);
76daa3
+bool kvmppc_has_cap_mmu_radix(void);
76daa3
+bool kvmppc_has_cap_mmu_hash_v3(void);
76daa3
 int kvmppc_enable_hwrng(void);
76daa3
 int kvmppc_put_books_sregs(PowerPCCPU *cpu);
76daa3
 PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void);
76daa3
@@ -254,6 +256,16 @@ static inline bool kvmppc_has_cap_htm(void)
76daa3
     return false;
76daa3
 }
76daa3
 
76daa3
+static inline bool kvmppc_has_cap_mmu_radix(void)
76daa3
+{
76daa3
+    return false;
76daa3
+}
76daa3
+
76daa3
+static inline bool kvmppc_has_cap_mmu_hash_v3(void)
76daa3
+{
76daa3
+    return false;
76daa3
+}
76daa3
+
76daa3
 static inline int kvmppc_enable_hwrng(void)
76daa3
 {
76daa3
     return -1;
76daa3
-- 
76daa3
1.8.3.1
76daa3