76daa3
From ae9b87b57aa0cfc52f49960888c5d7d8060fa28c Mon Sep 17 00:00:00 2001
76daa3
From: David Gibson <dgibson@redhat.com>
76daa3
Date: Fri, 11 Aug 2017 06:09:08 +0200
76daa3
Subject: [PATCH 1/3] target/ppc: Implement TIDR
76daa3
MIME-Version: 1.0
76daa3
Content-Type: text/plain; charset=UTF-8
76daa3
Content-Transfer-Encoding: 8bit
76daa3
76daa3
RH-Author: David Gibson <dgibson@redhat.com>
76daa3
Message-id: <20170811060909.31369-2-dgibson@redhat.com>
76daa3
Patchwork-id: 75935
76daa3
O-Subject: [RHEL-7.4-ALT qemu-kvm PATCH 1/2] target/ppc: Implement TIDR
76daa3
Bugzilla: 1478822
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: David Gibson <david@gibson.dropbear.id.au>
76daa3
76daa3
This adds a trivial implementation of the TIDR register added in
76daa3
POWER9.  This isn't particularly important to qemu directly - it's
76daa3
used by accelerator modules that we don't emulate.
76daa3
76daa3
However, since qemu isn't aware of it, its state is not synchronized
76daa3
with KVM and therefore not migrated, which can be a problem.
76daa3
76daa3
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
76daa3
Reviewed-by: Cédric Le Goater <clg@kaod.org>
76daa3
Reviewed-by: Greg Kurz <groug@kaod.org>
76daa3
Reviewed-by: Thomas Huth <thuth@redhat.com>
76daa3
(cherry picked from commit 650f3287abb7c6124b7fb0f4a2330246fe2d4da2)
76daa3
76daa3
Signed-off-by: David Gibson <dgibson@redhat.com>
76daa3
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
76daa3
---
76daa3
 target/ppc/cpu.h            | 1 +
76daa3
 target/ppc/translate_init.c | 5 +++++
76daa3
 2 files changed, 6 insertions(+)
76daa3
76daa3
diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h
76daa3
index 43bd257..a2d7b6f 100644
76daa3
--- a/target/ppc/cpu.h
76daa3
+++ b/target/ppc/cpu.h
76daa3
@@ -1444,6 +1444,7 @@ int ppc_compat_max_threads(PowerPCCPU *cpu);
76daa3
 #define SPR_TEXASR            (0x082)
76daa3
 #define SPR_TEXASRU           (0x083)
76daa3
 #define SPR_UCTRL             (0x088)
76daa3
+#define SPR_TIDR              (0x090)
76daa3
 #define SPR_MPC_CMPA          (0x090)
76daa3
 #define SPR_MPC_CMPB          (0x091)
76daa3
 #define SPR_MPC_CMPC          (0x092)
76daa3
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
76daa3
index c1a9014..624bc1c 100644
76daa3
--- a/target/ppc/translate_init.c
76daa3
+++ b/target/ppc/translate_init.c
76daa3
@@ -8837,6 +8837,11 @@ static void init_proc_POWER9(CPUPPCState *env)
76daa3
     gen_spr_power8_book4(env);
76daa3
     gen_spr_power8_rpr(env);
76daa3
 
76daa3
+    /* POWER9 Specific registers */
76daa3
+    spr_register_kvm(env, SPR_TIDR, "TIDR", NULL, NULL,
76daa3
+                     spr_read_generic, spr_write_generic,
76daa3
+                     KVM_REG_PPC_TIDR, 0);
76daa3
+
76daa3
     /* env variables */
76daa3
 #if !defined(CONFIG_USER_ONLY)
76daa3
     env->slb_nr = 32;
76daa3
-- 
76daa3
1.8.3.1
76daa3