[PATCH v2 0/3] KVM: PPC: BookE: Fix boot hang on preemptible kernels

From
Shrikanth Hegde <sshegde@linux.ibm.com>
Date
2026-11-10 05:33:09
Also in
lkml
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 (years!).

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

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, I haven't taken the tested-by tag since patches have
changed quite a bit.
Please help in *testing* the patches again.

v1->v2:
- Re-order to avoid preempt count dance (Narayana Murty N)
- Do only hard_irq_disable on PPC64 to avoid second warning. On PPC32
  use local_irq_disable to acheive the same. (Ritesh Harjani)

v1: https://lore.kernel.org/all/20260928110411.844582-1-sshegde@linux.ibm.com/ (local)

New API ppc_hard_irq_disable could potentially be used in other places.
There is similar pattern of doing both local and hard irq disable and
likely not all callsites need both. But it is a larger effort and due to
my time limit, it will be taken up subsequently.

Shrikanth Hegde (3):
  powerpc/irq: Add ppc_hard_irq_disable()
  KVM: PPC: BookE: Load FP and Altivec before enabling the interrupts
  KVM: PPC: Use ppc_hard_irq_disable before guest entry

 arch/powerpc/include/asm/hw_irq.h | 17 +++++++++++++++++
 arch/powerpc/kvm/booke.c          |  7 +++++--
 arch/powerpc/kvm/powerpc.c        | 14 +++-----------
 3 files changed, 25 insertions(+), 13 deletions(-)

-- 
2.52.0

Thread (4 messages) 4 messages, 1 author, last reply 4h ago
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help