* Anton Blanchard <an...@samba.org> wrote: > +static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED; > +static int die_owner = -1; > +static unsigned int die_nest_count; > + > +unsigned long __die_spin_lock_irqsave(void) > +{ > + unsigned long flags; > + int cpu; > + > + /* racy, but better than risking deadlock. */ > + raw_local_irq_save(flags); > + > + cpu = smp_processor_id(); > + if (!arch_spin_trylock(&die_lock)) { > + if (cpu != die_owner) > + arch_spin_lock(&die_lock);
So why not trylock and time out here after a few seconds, instead of indefinitely supressing some potentially vital output due to some other CPU crashing/locking with the lock held? > + } > + die_nest_count++; > + die_owner = cpu; > + > + return flags; I suspect this would work in most cases. If we fix the deadlock potential, and get a true global ordering of various oopses/warnings as they triggered (or at least timestamping them), then I'm sold on this I guess, it will likely improve things. Thanks, Ingo _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev