"ease" isn't the main objective. A more important question is "what
makes sense". We should be able to call printk() from anywhere, any
time under any conditions. That can't be done 100% but it is the
objective. printk() should be robust and not being able to call
printk() while holding zone->lock isn't robust!
If you look at the above commit, it explicitly call out the possible deadlock scenarios and recommend to call printk_deferred() instead in those areas of code where zone->lock looks like one of those candidates.