LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] powerpc/pasemi: Defer Nemo IRQ initialization
@ 2026-10-24  7:55 chzigotzky
  2026-10-28  3:53 ` Christian Zigotzky
  2026-11-02  3:34 ` Ritesh Harjani
  0 siblings, 2 replies; 5+ messages in thread
From: chzigotzky @ 2026-10-24  7:55 UTC (permalink / raw)
  To: maddy, mpe
  Cc: npiggin, linuxppc-dev, Christian Zigotzky A-EON Open Source,
	Darren Stevens, Christian Zigotzky

From: Christian Zigotzky A-EON Open Source <info@xenosoft.de>

Since pas_pci_init() is now called later during boot, the i8259
initialization in pas_init_IRQ() happens too early and accesses
registers that are not yet mapped, preventing the board from booting.

Move the Nemo-specific i8259 initialization to pas_add_bridge(),
after the ISA bridge has been discovered.

Suggested-by: Darren Stevens <darren@stevens-zone.net>
Tested-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Signed-off-by: Christian Zigotzky A-EON Open Source <info@xenosoft.de>
---
 arch/powerpc/platforms/pasemi/pasemi.h |  6 ++++++
 arch/powerpc/platforms/pasemi/pci.c    |  5 +++++
 arch/powerpc/platforms/pasemi/setup.c  | 12 ++++--------
 3 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/platforms/pasemi/pasemi.h b/arch/powerpc/platforms/pasemi/pasemi.h
index 6f6743b8e48d..01bcfa258625 100644
--- a/arch/powerpc/platforms/pasemi/pasemi.h
+++ b/arch/powerpc/platforms/pasemi/pasemi.h
@@ -7,6 +7,12 @@ extern void pas_pci_init(void);
 struct pci_dev;
 extern void pas_pci_dma_dev_setup(struct pci_dev *dev);
 
+#ifdef CONFIG_PPC_PASEMI_NEMO
+void __init nemo_init_IRQ(void);
+#else
+static inline void __init nemo_init_IRQ(void) { }
+#endif
+
 void __iomem *__init pasemi_pci_getcfgaddr(struct pci_dev *dev, int offset);
 
 extern void __init pasemi_map_registers(void);
diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c
index 2df955274652..fb53782da7ec 100644
--- a/arch/powerpc/platforms/pasemi/pci.c
+++ b/arch/powerpc/platforms/pasemi/pci.c
@@ -265,6 +265,11 @@ static int __init pas_add_bridge(struct device_node *dev)
 	 */
 	isa_bridge_find_early(hose);
 
+	/*
+	 * ISA bridge is now active, add the i8259 cascade (if needed)
+	 */
+	nemo_init_IRQ();
+
 	return 0;
 }
 
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index 45792ecd5dfd..7a961f2a228f 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -216,10 +216,12 @@ static void sb600_8259_cascade(struct irq_desc *desc)
 	chip->irq_eoi(&desc->irq_data);
 }
 
-static void __init nemo_init_IRQ(struct mpic *mpic)
+void __init nemo_init_IRQ(void)
 {
 	struct device_node *np;
 	int gpio_virq;
+	struct mpic *mpic;
+
 	/* Connect the SB600's legacy i8259 controller */
 	np = of_find_node_by_path("/pxp@0,e0000000");
 	i8259_init(np, 0);
@@ -230,14 +232,10 @@ static void __init nemo_init_IRQ(struct mpic *mpic)
 	irq_set_chained_handler(gpio_virq, sb600_8259_cascade);
 	mpic_unmask_irq(irq_get_irq_data(gpio_virq));
 
+	mpic = irq_get_chip_data(gpio_virq);
 	irq_set_default_domain(mpic->irqhost);
 }
 
-#else
-
-static inline void nemo_init_IRQ(struct mpic *mpic)
-{
-}
 #endif
 
 static __init void pas_init_IRQ(void)
@@ -300,8 +298,6 @@ static __init void pas_init_IRQ(void)
 		mpic_unmask_irq(irq_get_irq_data(nmi_virq));
 	}
 
-	nemo_init_IRQ(mpic);
-
 	of_node_put(mpic_node);
 	of_node_put(root);
 }
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread
* [PATCH 0/2] KVM: PPC: BookE: Fix boot hang on preemptible kernels
@ 2026-09-28 11:04 Shrikanth Hegde
  2026-09-28 11:04 ` [PATCH 1/2] KVM: PPC: BookE: Disable preemption before loading guest FP and Altivec Shrikanth Hegde
  0 siblings, 1 reply; 5+ messages in thread
From: Shrikanth Hegde @ 2026-09-28 11:04 UTC (permalink / raw)
  To: maddy, linuxppc-dev, chzigotzky
  Cc: sshegde, mpe, npiggin, christophe.leroy, linux-kernel, msuchanek,
	ritesh.list, harshpb, gautam, amachhiw, venkat88, nnmlinux

Christian Zigotzky had reported that preemptible kernels don't boot on
his FSL Cyrus+ board. The board freezes on running either full/lazy
preemption and has been an issue for a while now.

https://lore.kernel.org/all/b897b0fd-90f2-4215-bcd4-3714e497d773@xenosoft.de/#t

After 7.0, there is only preempt=full/lazy which removed the
preempt=none/voluntary workaround used to mask the issue. There was
challenge is getting the console logs which made the fixes difficult since
one couldn't know where the issue is.

Thanks to Michal for helping in getting the logs. That pointed at few
places where the issue could be. This series is an attempt at fixing
those.

Christian, KVM team, 
Please *test* the patches.

Shrikanth Hegde (2):
  KVM: PPC: BookE: Disable preemption before loading guest FP and
    Altivec
  KVM: PPC: Replay pending interrupts before entering the guest

 arch/powerpc/kvm/booke.c   |  9 ++++++++-
 arch/powerpc/kvm/powerpc.c | 13 +++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

-- 
2.52.0



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

end of thread, other threads:[~2026-11-02  5:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-24  7:55 [PATCH] powerpc/pasemi: Defer Nemo IRQ initialization chzigotzky
2026-10-28  3:53 ` Christian Zigotzky
2026-11-02  3:34 ` Ritesh Harjani
2026-11-02  5:20   ` Christian Zigotzky
  -- strict thread matches above, loose matches on Subject: below --
2026-09-28 11:04 [PATCH 0/2] KVM: PPC: BookE: Fix boot hang on preemptible kernels Shrikanth Hegde
2026-09-28 11:04 ` [PATCH 1/2] KVM: PPC: BookE: Disable preemption before loading guest FP and Altivec Shrikanth Hegde
2026-10-01 11:26   ` Narayana Murty N
2026-10-01 11:53     ` Shrikanth Hegde
2026-10-30 16:21       ` Ritesh Harjani
2026-11-01 11:35         ` [PATCH] powerpc/pasemi: Defer Nemo IRQ initialization Christian Zigotzky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox