Things Which Sleep

You can never call the following routines while holding a spinlock, as they may sleep. This also means you need to be in user context.

printk() can be called in any context, interestingly enough.