From f7eb6a0a9b9326d3daae4bf0d9c664c8e79bea39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 6 Mar 2019 09:50:18 +0100 Subject: ppc/pnv: psi: add a reset handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reset all regs but keep the MMIO BAR enabled as it is at realize time. Signed-off-by: Cédric Le Goater Message-Id: <20190306085032.15744-14-clg@kaod.org> Signed-off-by: David Gibson --- hw/ppc/pnv_psi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'hw/ppc') diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index a2f8d0d..e61861b 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -442,6 +442,15 @@ static const MemoryRegionOps pnv_psi_xscom_ops = { } }; +static void pnv_psi_reset(void *dev) +{ + PnvPsi *psi = PNV_PSI(dev); + + memset(psi->regs, 0x0, sizeof(psi->regs)); + + psi->regs[PSIHB_XSCOM_BAR] = psi->bar | PSIHB_BAR_EN; +} + static void pnv_psi_init(Object *obj) { PnvPsi *psi = PNV_PSI(obj); @@ -511,6 +520,8 @@ static void pnv_psi_realize(DeviceState *dev, Error **errp) psi->regs[xivr] = PSIHB_XIVR_PRIO_MSK | ((uint64_t) i << PSIHB_XIVR_SRC_SH); } + + qemu_register_reset(pnv_psi_reset, dev); } static int pnv_psi_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_offset) -- cgit v1.1