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