summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-11-27 11:16:20 +0000
committerPeter Maydell <peter.maydell@linaro.org>2017-11-27 11:16:20 +0000
commit5e19aed59ab48ca3c7f1e2da203eed27b91bef2d (patch)
tree7d5db2aa920233157998114557b9aaf75e42c944
parente7b47c22e2df14d55e3e4426688c929bf8e3f7fb (diff)
parente07cc1929515cfb808b5c2fcc60c079e6be110cf (diff)
downloadqemu-5e19aed59ab48ca3c7f1e2da203eed27b91bef2d.tar.gz
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-2.11-20171127' into staging
ppc patch queue 2017-11-27 This series contains a couple of migration fixes for hash guests on POWER9 radix MMU hosts. # gpg: Signature made Mon 27 Nov 2017 04:27:15 GMT # gpg: using RSA key 0x6C38CACA20D9B392 # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" # gpg: aka "David Gibson (Red Hat) <dgibson@redhat.com>" # gpg: aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" # gpg: aka "David Gibson (kernel.org) <dwg@kernel.org>" # Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392 * remotes/dgibson/tags/ppc-for-2.11-20171127: target/ppc: Fix setting of cpu->compat_pvr on incoming migration target/ppc: Move setting of patb_entry on hash table init Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--hw/ppc/spapr.c4
-rw-r--r--target/ppc/machine.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4d0a84f3ec..9efddeaee5 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1373,6 +1373,8 @@ void spapr_reallocate_hpt(sPAPRMachineState *spapr, int shift,
DIRTY_HPTE(HPTE(spapr->htab, i));
}
}
+ /* We're setting up a hash table, so that means we're not radix */
+ spapr->patb_entry = 0;
}
void spapr_setup_hpt_and_vrma(sPAPRMachineState *spapr)
@@ -1392,8 +1394,6 @@ void spapr_setup_hpt_and_vrma(sPAPRMachineState *spapr)
spapr->rma_size = kvmppc_rma_size(spapr_node0_size(MACHINE(spapr)),
spapr->htab_shift);
}
- /* We're setting up a hash table, so that means we're not radix */
- spapr->patb_entry = 0;
}
static void find_unknown_sysbus_device(SysBusDevice *sbdev, void *opaque)
diff --git a/target/ppc/machine.c b/target/ppc/machine.c
index 384caee800..24117e8f31 100644
--- a/target/ppc/machine.c
+++ b/target/ppc/machine.c
@@ -237,9 +237,11 @@ static int cpu_post_load(void *opaque, int version_id)
#if defined(TARGET_PPC64)
if (cpu->compat_pvr) {
+ uint32_t compat_pvr = cpu->compat_pvr;
Error *local_err = NULL;
- ppc_set_compat(cpu, cpu->compat_pvr, &local_err);
+ cpu->compat_pvr = 0;
+ ppc_set_compat(cpu, compat_pvr, &local_err);
if (local_err) {
error_report_err(local_err);
return -1;