aboutsummaryrefslogtreecommitdiff
path: root/hw/psi.c
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2021-08-04 12:51:16 +0530
committerVasant Hegde <hegdevasant@linux.vnet.ibm.com>2021-08-06 12:27:46 +0530
commit0c6a3065eb11a25bf89577b73eae34ec6173d148 (patch)
treecaec5f4185b896995a879668b8e67a45b73320a2 /hw/psi.c
parent47f46e5ff3f816b135b65e210aff65d9194698fa (diff)
downloadskiboot-0c6a3065eb11a25bf89577b73eae34ec6173d148.zip
skiboot-0c6a3065eb11a25bf89577b73eae34ec6173d148.tar.gz
skiboot-0c6a3065eb11a25bf89577b73eae34ec6173d148.tar.bz2
psi/p10: Mask all sources at init
Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'hw/psi.c')
-rw-r--r--hw/psi.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/hw/psi.c b/hw/psi.c
index e9b8e2e..954b7bf 100644
--- a/hw/psi.c
+++ b/hw/psi.c
@@ -766,6 +766,8 @@ static void psi_init_p10_interrupts(struct psi *psi)
u64 val;
uint32_t esb_shift = 16;
uint32_t flags = XIVE_SRC_LSI;
+ struct irq_source *is;
+ int isn;
/* Grab chip */
chip = get_chip(psi->chip_id);
@@ -813,6 +815,11 @@ static void psi_init_p10_interrupts(struct psi *psi)
esb_shift, psi->esb_mmio, flags,
psi, &psi_p10_irq_ops);
+ /* Mask all sources */
+ is = irq_find_source(psi->interrupt);
+ for (isn = is->start; isn < is->end; isn++)
+ xive2_source_mask(is, isn);
+
/* 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);