Kernel gets deadlocked during smp booting

AYAN KUMAR HALDER ayankumarh at gmail.com
Tue Jun 16 07:24:28 EDT 2015


Hi All,

I am booting kernel 4.0.4 on an ARM based custom SOC with SMP enabled.
I see that the kernel gets deadlocked on a spinlock. To be precise,

static inline void arch_spin_lock(arch_spinlock_t *lock)
{
...
// loops in the following while loop for indefinite period
while (lockval.tickets.next != lockval.tickets.owner) {
        wfe();
        lockval.tickets.owner = ACCESS_ONCE(lock->tickets.owner);
    }

}

Can someone explain to me what does the loop exactly do.
Besides, any pointers about how to debug such issues.

The backtrace shows the following:-
arch_spin_lock
_raw_spin_lock
vprintk_emit ----> raw_spin_lock(&logbuf_lock);
vprintk_default
printk
smp_init

I can guess that the deadlock is being caused due to logbuf_lock. But,
I am unable to proceed further.

Thanks and Regards,
Ayan kumar Halder



More information about the Kernelnewbies mailing list