summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-03-19 10:52:44 +0000
committerPeter Maydell <peter.maydell@linaro.org>2019-03-19 10:52:45 +0000
commit86e2fca2d7f163c50b80254e0afdd4e16378b3bb (patch)
treedd1b2f49d11776099ee7f42570ea1b0198b22f18
parent54281eefc2597d5452720ca88a9b9c96574e1195 (diff)
parente366d181ceb96109b3f4fc6f8356bea644117f9a (diff)
downloadqemu-86e2fca2d7f163c50b80254e0afdd4e16378b3bb.zip
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190319' into staging
ppc patch queue for 2019-03-19 This is a small set, it has a number of fixes and a couple of minor cleanups to go in for the hard freeze. # gpg: Signature made Tue 19 Mar 2019 10:05:48 GMT # gpg: using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392 # gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" [full] # gpg: aka "David Gibson (Red Hat) <dgibson@redhat.com>" [full] # gpg: aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" [full] # gpg: aka "David Gibson (kernel.org) <dwg@kernel.org>" [unknown] # Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392 * remotes/dgibson/tags/ppc-for-4.0-20190319: spapr: Remove NULL checks on error_propagate() calls ppc/xics/spapr: Fix H_IPOLL implementation ppc/pnv: Fix variable size in pnv_psi_power9_irq_set() ppc/pnv: Use local_err variable in pnv_chip_power9_intc_create() MAINTAINERS: PPC: add a PowerNV machine entry ppc/pnv: update skiboot to commit 261ca8e779e5. spapr: Correctly set LPCR[GTSE] in H_REGISTER_PROCESS_TABLE Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--MAINTAINERS13
-rw-r--r--hw/intc/xics_spapr.c9
-rw-r--r--hw/ppc/pnv.c2
-rw-r--r--hw/ppc/pnv_psi.c2
-rw-r--r--hw/ppc/spapr_hcall.c3
-rw-r--r--hw/ppc/spapr_pci.c4
-rw-r--r--pc-bios/skiboot.lidbin1302336 -> 1591384 bytes
m---------roms/skiboot0
8 files changed, 25 insertions, 8 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 0e7baa9aa2..85d7d764e5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1061,7 +1061,6 @@ F: include/hw/*/xics*
F: pc-bios/spapr-rtas/*
F: pc-bios/spapr-rtas.bin
F: pc-bios/slof.bin
-F: pc-bios/skiboot.lid
F: docs/specs/ppc-spapr-hcalls.txt
F: docs/specs/ppc-spapr-hotplug.txt
F: tests/spapr*
@@ -1069,6 +1068,18 @@ F: tests/libqos/*spapr*
F: tests/rtas*
F: tests/libqos/rtas*
+PowerNV (Non-Virtualized)
+M: Cédric Le Goater <clg@kaod.org>
+M: David Gibson <david@gibson.dropbear.id.au>
+L: qemu-ppc@nongnu.org
+S: Maintained
+F: hw/ppc/pnv*
+F: hw/intc/pnv*
+F: hw/intc/xics_pnv.c
+F: include/hw/ppc/pnv*
+F: pc-bios/skiboot.lid
+F: tests/pnv*
+
virtex_ml507
M: Edgar E. Iglesias <edgar.iglesias@gmail.com>
L: qemu-ppc@nongnu.org
diff --git a/hw/intc/xics_spapr.c b/hw/intc/xics_spapr.c
index 607e1c167b..9d2b8adef7 100644
--- a/hw/intc/xics_spapr.c
+++ b/hw/intc/xics_spapr.c
@@ -95,8 +95,15 @@ static target_ulong h_eoi(PowerPCCPU *cpu, SpaprMachineState *spapr,
static target_ulong h_ipoll(PowerPCCPU *cpu, SpaprMachineState *spapr,
target_ulong opcode, target_ulong *args)
{
+ ICPState *icp = xics_icp_get(XICS_FABRIC(spapr), args[0]);
uint32_t mfrr;
- uint32_t xirr = icp_ipoll(spapr_cpu_state(cpu)->icp, &mfrr);
+ uint32_t xirr;
+
+ if (!icp) {
+ return H_PARAMETER;
+ }
+
+ xirr = icp_ipoll(icp, &mfrr);
args[0] = xirr;
args[1] = mfrr;
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 8be4d4cbf7..dfb4ea5742 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -755,7 +755,7 @@ static void pnv_chip_power9_intc_create(PnvChip *chip, PowerPCCPU *cpu,
* controller object is initialized afterwards. Hopefully, it's
* only used at runtime.
*/
- obj = xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(&chip9->xive), errp);
+ obj = xive_tctx_create(OBJECT(cpu), XIVE_ROUTER(&chip9->xive), &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
index 5a923e4151..5345c8389e 100644
--- a/hw/ppc/pnv_psi.c
+++ b/hw/ppc/pnv_psi.c
@@ -786,7 +786,7 @@ static const MemoryRegionOps pnv_psi_p9_xscom_ops = {
static void pnv_psi_power9_irq_set(PnvPsi *psi, int irq, bool state)
{
- uint32_t irq_method = psi->regs[PSIHB_REG(PSIHB9_INTERRUPT_CONTROL)];
+ uint64_t irq_method = psi->regs[PSIHB_REG(PSIHB9_INTERRUPT_CONTROL)];
if (irq > PSIHB9_NUM_IRQS) {
qemu_log_mask(LOG_GUEST_ERROR, "PSI: Unsupported irq %d\n", irq);
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()) {
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 20915d2b3c..b63ed9d8da 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -1488,9 +1488,7 @@ static void spapr_pci_plug(HotplugHandler *plug_handler,
}
out:
- if (local_err) {
- error_propagate(errp, local_err);
- }
+ error_propagate(errp, local_err);
}
static void spapr_pci_unplug(HotplugHandler *plug_handler,
diff --git a/pc-bios/skiboot.lid b/pc-bios/skiboot.lid
index 70612962c6..6d5966c3ae 100644
--- a/pc-bios/skiboot.lid
+++ b/pc-bios/skiboot.lid
Binary files differ
diff --git a/roms/skiboot b/roms/skiboot
-Subproject e0ee24c27a172bcf482f6f2bc905e6211c134bc
+Subproject 261ca8e779e5138869a45f174caa49be6a27450