Re: spinlock recursion when running q800 emulation in qemu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 8 Mar 2024, Michael Schmitz wrote:

If interrupt nesting messed up its state, you won't know it by looking 
at the stack after the fact.

True, we may see the effect only on the next tick.

But we may not need to invoke lock checker corruption in order to 
explain the recursion message.


Right. We can explain it in other ways.

Reentering the VIA1 timer handler would re-run scheduler_tick(). If the 
prior run has not yet released the run queue lock, we'd get the 
recursion message.

I realized (belatedly) that scheduler_tick() does not run the task 
itself but just causes a reschedule if appropriate, so the probability 
for this condition is quite low. The question is - does the VIA1 timer 
interrupt ever get reentered?

Can you add a printk_once() warning when you see 
arch/m68k/mac/via.c:via_timer_handler() reentered, Guenter?


It's not possible for an interrupt handler to be interrupted unless by an 
hard interrupt at a higher priority level. Maybe QEMU could be so broken 
(?!) but recall that I saw this BUG on a Powerbook 180 ten years ago.

IMHO, Gueunter would do better to instrument the spinlock tests on the 
assumption that the locking in arch/m68k really is correct.




[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux