That's why page_alloc_init_late() needs spin_lock_irq(). If a CPU is holding deferred_zone_grow_lock with enabled interrupts and an interrupt comes in on that CPU and the CPU runs deferred_grow_zone() in its interrupt handler, we deadlock. lockdep knows about this bug and should have reported it.
I see what you are saying. Yes you are correct, we need spin_lock_irq() in page_alloc_init_late(). I will update the patch. I am not sure why lockdep has not reported it. May be it is initialized after this code is executed?
Thank you, Pavel -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>