All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] hw/intc: openpic: Correct the reset value of IPIDR for FSL chipset
@ 2021-09-18  3:01 Bin Meng
  2021-09-18  3:01 ` [PATCH 2/3] hw/intc: openpic: Drop Raven related codes Bin Meng
  2021-09-18  3:01 ` [PATCH 3/3] hw/intc: openpic: Clean up the styles Bin Meng
  0 siblings, 2 replies; 4+ messages in thread
From: Bin Meng @ 2021-09-18  3:01 UTC (permalink / raw)
  To: David Gibson, Greg Kurz, qemu-devel, qemu-ppc; +Cc: Bin Meng

From: Bin Meng <bin.meng@windriver.com>

The reset value of IPIDR should be zero for Freescale chipset, per
the following 2 manuals I checked:

- P2020RM (https://www.nxp.com/webapp/Download?colCode=P2020RM)
- P4080RM (https://www.nxp.com/webapp/Download?colCode=P4080RM)

Currently it is set to 1, which leaves the IPI enabled on core 0
after power-on reset. Such may cause unexpected interrupt to be
delivered to core 0 if the IPI is triggered from core 0 to other
cores later.

Fixes: ffd5e9fe0276 ("openpic: Reset IRQ source private members")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/584
Signed-off-by: Bin Meng <bin.meng@windriver.com>
---

 hw/intc/openpic.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 9b4c17854d..2790c6710a 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -1276,6 +1276,15 @@ static void openpic_reset(DeviceState *d)
             break;
         }
 
+        /* Mask all IPI interrupts for Freescale OpenPIC */
+        if ((opp->model == OPENPIC_MODEL_FSL_MPIC_20) ||
+            (opp->model == OPENPIC_MODEL_FSL_MPIC_42)) {
+            if (i >= opp->irq_ipi0 && i < opp->irq_tim0) {
+                write_IRQreg_idr(opp, i, 0);
+                continue;
+            }
+        }
+
         write_IRQreg_idr(opp, i, opp->idr_reset);
     }
     /* Initialise IRQ destinations */
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-09-18  3:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-18  3:01 [PATCH 1/3] hw/intc: openpic: Correct the reset value of IPIDR for FSL chipset Bin Meng
2021-09-18  3:01 ` [PATCH 2/3] hw/intc: openpic: Drop Raven related codes Bin Meng
2021-09-18  3:24   ` Bin Meng
2021-09-18  3:01 ` [PATCH 3/3] hw/intc: openpic: Clean up the styles Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.