No guarantee on which address space the system will be in when the interrupt occurs: can't transfer data to and from user space
Interrupt handler execution is managed by the CPU, not by the scheduler. Handlers can't run actions that may sleep, because there is nothing to resume their execution. In particular, need to allocate memory with GFP_ATOMIC.
Have to complete their job quickly enough:
they shouldn't block their interrupt line for too long.