Re: spinlock recursion when running q800 emulation in qemu

Michael Schmitz
2024-03-08T00:20:09Z

Hi Finn,

On 7/03/24 12:52, Finn Thain wrote:
> On Wed, 6 Mar 2024, Michael Schmitz wrote:
>
>> There does not appear to be any interrupt nesting here.
>>
> It's not in the backtrace but that doesn't mean much. It would be
> impossible for a lock checker to place all of it's state on the stack.
> 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.

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?

Cheers,

Michael