diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2017-06-24 14:17:16 -0500 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-06-26 14:28:58 +1000 |
commit | 616489b0701a7516f5497140a12ca068bb231255 (patch) | |
tree | 3a6a879eb5e68d7897fc5a05c12bb530e7e81102 /hw/psi.c | |
parent | b0db1d7883094adb0fc51a7920075ca3d866d2c7 (diff) | |
download | skiboot-616489b0701a7516f5497140a12ca068bb231255.zip skiboot-616489b0701a7516f5497140a12ca068bb231255.tar.gz skiboot-616489b0701a7516f5497140a12ca068bb231255.tar.bz2 |
psi: Switch to ESB mode later
There's an errata, if we switch to ESB mode before setting up
the various ESB mode related registers, a pending interrupts
can go wrong.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/psi.c')
-rw-r--r-- | hw/psi.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -826,10 +826,6 @@ static void psi_init_p9_interrupts(struct psi *psi) bool is_p9ndd1; u64 val; - /* Reset irq handling and switch to ESB mode */ - out_be64(psi->regs + PSIHB_INTERRUPT_CONTROL, PSIHB_IRQ_RESET); - out_be64(psi->regs + PSIHB_INTERRUPT_CONTROL, 0); - /* Grab chip */ chip = get_chip(psi->chip_id); if (!chip) @@ -874,6 +870,10 @@ static void psi_init_p9_interrupts(struct psi *psi) 12, psi->esb_mmio, XIVE_SRC_LSI, psi, &psi_p9_irq_ops); } + + /* Reset irq handling and switch to ESB mode */ + out_be64(psi->regs + PSIHB_INTERRUPT_CONTROL, PSIHB_IRQ_RESET); + out_be64(psi->regs + PSIHB_INTERRUPT_CONTROL, 0); } static void psi_init_interrupts(struct psi *psi) |