From 49e9fdd741301a891493caf0d3936249504e7fdc Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 13 Mar 2019 14:17:27 +1100 Subject: [PATCH 1/7] spapr: Correctly set LPCR[GTSE] in H_REGISTER_PROCESS_TABLE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 176dccee "target/ppc/spapr: Clear partition table entry when allocating hash table" reworked the H_REGISTER_PROCESS_TABLE hypercall, but unfortunately due to a small error no longer correctly sets the LPCR[GTSE] bit which allows the guest to directly execute (some types of) tlbie (TLB flush) instructions without involving the hypervisor. We got away with this, initially, because POWER9 did not have hypervisor mode enabled in its msr_mask, which meant we didn't actually run hypervisor privilege checks in TCG at all. However, da874d90 "target/ppc: add HV support for POWER9" turned on HV support on POWER9 for the benefit of the powernv machine type. This exposed the earlier bug in H_REGISTER_PROCESS_TABLE, and causes guests which rely on LPCR[GTSE] (i.e. basically all of them) to crash during early boot when their first tlbie instruction causes an unexpected trap. Fixes: 176dccee target/ppc/spapr: Clear partition table entry when allocating hash table Signed-off-by: David Gibson Reviewed-by: Cédric Le Goater Reviewed-by: Greg Kurz Tested-by: Cleber Rosa --- hw/ppc/spapr_hcall.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 0761e10142..8a736797b9 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1400,7 +1400,8 @@ static target_ulong h_register_process_table(PowerPCCPU *cpu, else if (flags & FLAG_HASH_PROC_TBL) /* Hash with process tables */ update_lpcr |= LPCR_UPRT; if (flags & FLAG_GTSE) /* Guest translation shootdown enable */ - update_lpcr |= FLAG_GTSE; + update_lpcr |= LPCR_GTSE; + spapr_set_all_lpcrs(update_lpcr, LPCR_UPRT | LPCR_HR | LPCR_GTSE); if (kvm_enabled()) { From 1a7c00bb3aa4cf5501343fe041e93227ec33e66f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Sun, 10 Mar 2019 18:53:37 +0100 Subject: [PATCH 2/7] ppc/pnv: update skiboot to commit 261ca8e779e5. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It includes better support for POWER9 processor and the QEMU platform. DD1.0 workarounds have been removed which simplifies a bit the XIVE PowerNV model. Built from submodule. Signed-off-by: Cédric Le Goater Message-Id: <20190310175338.22266-1-clg@kaod.org> Signed-off-by: David Gibson --- pc-bios/skiboot.lid | Bin 1302336 -> 1591384 bytes roms/skiboot | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/skiboot.lid b/pc-bios/skiboot.lid index 70612962c62c77f5d853005f4cab02bed2559c84..6d5966c3ae5e7f7af0627271603e26f9ecf367ca 100644 GIT binary patch literal 1591384 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