summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorThomas Huth2016-06-07 17:39:40 +0200
committerDavid Gibson2016-06-14 02:41:38 +0200
commitb30ff227c27c931155f768a04c44a6c8757f195f (patch)
tree66d6c0eeabfeff8641ea560ae3566911dbaf004c /hw
parentppc: Improve PCR bit selection in ppc_set_compat() (diff)
downloadqemu-b30ff227c27c931155f768a04c44a6c8757f195f.tar.gz
qemu-b30ff227c27c931155f768a04c44a6c8757f195f.tar.xz
qemu-b30ff227c27c931155f768a04c44a6c8757f195f.zip
ppc: Add PowerISA 2.07 compatibility mode
Make sure that guests can use the PowerISA 2.07 CPU sPAPR compatibility mode when they request it and the target CPU supports it. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw')
-rw-r--r--hw/ppc/spapr_hcall.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c
index cc16249a8c..2ba5cbdb19 100644
--- a/hw/ppc/spapr_hcall.c
+++ b/hw/ppc/spapr_hcall.c
@@ -927,7 +927,7 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
unsigned *cpu_version)
{
unsigned lvl = get_compat_level(pvr);
- bool is205, is206;
+ bool is205, is206, is207;
if (!lvl) {
return;
@@ -939,8 +939,10 @@ static void cas_handle_compat_cpu(PowerPCCPUClass *pcc, uint32_t pvr,
is206 = (pcc->pcr_supported & PCR_COMPAT_2_06) &&
((lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06)) ||
(lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_06_PLUS)));
+ is207 = (pcc->pcr_supported & PCR_COMPAT_2_07) &&
+ (lvl == get_compat_level(CPU_POWERPC_LOGICAL_2_07));
- if (is205 || is206) {
+ if (is205 || is206 || is207) {
if (!max_lvl) {
/* User did not set the level, choose the highest */
if (*compat_lvl <= lvl) {