Thread (76 messages) flat view 76 messages, 10 authors, 21h ago

Re: [Linux PPC] Disable PREEMPT

From: Shrikanth Hegde <sshegde@linux.ibm.com>
Date: 2026-09-23 18:42:43
Subsystem: kernel virtual machine for powerpc (kvm/powerpc), linux for powerpc (32-bit and 64-bit), the rest · Maintainers: Madhavan Srinivasan, Linus Torvalds

Hi

On 9/23/26 9:31 PM, Christian Zigotzky wrote:
On 23/09/26 07:13, Shrikanth Hegde wrote:
quoted

On 9/23/26 10:39 AM, Christian Zigotzky wrote:
quoted
On 21/09/26 07:12, Shrikanth Hegde wrote:
quoted
Hi Christian.

On 9/20/26 6:34 PM, Christian Zigotzky wrote:
quoted
On 09/20/2026 01:49 PM, Christian Zigotzky wrote:
quoted
On 09/18/2026 09:10 AM, Michal Suchánek wrote:
quoted
On Fri, Sep 18, 2026 at 04:39:57AM +0200, Christian Zigotzky wrote:
quoted
On 17/09/26 16:15, Shrikanth Hegde wrote:
quoted
Hi Michal,
quoted
quoted
Give it a try.

I am suspecting both lockup, stack corruptions are secondary
symptoms here.
While recreate, I have different type of traces.
Yes, it does work for the crash I see.
Thanks. Give me sometime to see further on that. Didn't get any time
today.
quoted
However, we hijacked the report
of KVM locking up on FSL Cyrus+, and that is likely a different problem
still not addressed.
Ah, that's what you meant. Yes, i still don't know where FSL Cyrus+ is
stuck.

I would need help from FSL Cyrus+ to get some logs or is there a way we
can spin of
a QEMU guest of it? We should have the log to start somewhere.
It's difficult to get a log because it freezes and can't write any error
messages to the log files. This bug is very old. We had this issue some
years ago but we was able to disable PREEMPT because we don't need it.
I would expect serial console and sysrq could give something, depending
on how much of the kernel is frozen.

Thanks

Michal
Here is a serial log: https://github.com/user-attachments/files/32433586/e5500_preempt_putty.log
Thanks Michal for helping to get the traces.
quoted
Another serial log with pcie_ports=compat: https://github.com/user-attachments/files/32434487/e5500_preempt_pcie_ports_compat_putty.log
I see it is mostly busy with printing
WARNING: at .enable_kernel_fp+0x30/0x78, CPU#3: qemu-system-ppc/4884

The path seems to be same also.

[c000000085ca7700] [c00000000005de84] .kvmppc_load_guest_fp+0x30/0x80
[c000000085ca7780] [c00000000005f2a0] .kvmppc_handle_exit+0x5bc/0x5cc
[c000000085ca7830] [c00000000006204c] .kvmppc_resume_host+0xb8/0x10c


Does below help to boot or make it stable?
---
 arch/powerpc/kvm/booke.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index 13ad4cf5fa71..d4be7a306bfc 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -1404,10 +1404,17 @@ int kvmppc_handle_exit(struct kvm_vcpu *vcpu, unsigned int exit_nr)
         if (s <= 0)
             r = (s << 2) | RESUME_HOST | (r & RESUME_FLAG_NV);
         else {
-            /* interrupts now hard-disabled */
+            /*
+             * interrupts now hard-disabled. i.e EE=0
+             * But irqs_disabled relies on PACA entries
+             * and fixup below enables it.
+             * So irqs_disabled == false
+             */
             kvmppc_fix_ee_before_entry();
+            preempt_disable();
             kvmppc_load_guest_fp(vcpu);
             kvmppc_load_guest_altivec(vcpu);
+            preempt_enable_no_resched();
         }
     }
Hi,

Thanks a lot for your patch!

I patched the 7.3-rc4 kernel sources with your new patch and compiled the kernel again yesterday. [1]
Thanks for trying.
quoted
Unfortunately, the issue still exists.
Can you share the console log of the kernel with the patch applied?
We need to see where it is stuck now. Has it made forward progress?
quoted
I tested it with a guest kernel with and without preempt support.

Cheers,
Christian

[1] https://github.com/chzigotzky/kernels/releases/tag/v7.3.0-rc4-2-preempt
Here is a new serial log from the patched kernel: https://github.com/user-attachments/files/32570808/e5500_preempt_pcie_ports_compat_patched_putty.log
That paca mismatch is independent of preemption modes.

It shows a few warnings and even after that a console message has come through.
Do warning continue forever?

To fix those warnings, can you try this diff on the top of the earlier ones?
(Igonore whitespace mangling if any, Also patch is UNTESTED. It is more of my
speculation.).

Sorry, I don't have any way to test it out locally.

---
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 9194cf492d1c..0a014fa45b20 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -147,6 +147,19 @@ int kvmppc_prepare_to_enter(struct kvm_vcpu *vcpu)
                         continue;
                 }
  
+#ifdef CONFIG_PPC64
+               if (unlikely(local_paca->irq_happened != PACA_IRQ_HARD_DIS)) {
+               /*
+                * An interrupt arrived between the soft and hard
+                * disable. Replay it and retry guest entry.
+                */
+                       local_irq_enable();
+                       local_irq_disable();
+                       hard_irq_disable();
+                       continue;
+               }
+#endif
+
                 guest_enter_irqoff();
                 return 1;
         }

Thanks
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help