The book "understanding Linux kernel" mentions several ways which will suspend a process running in kernel mode (Chapter 1, page 22). Here they are:
- a system call request cannot be satisfied immediately
- The CPU detects an exception
- A hardware interrupt occurs
- An interrupt occurs while the CPU is running with kernel preemption enabled, and a higher priority process is runnable.
It does not mention the process runs out its time-slice and the scheduler brings another same priority process to run. I think this should be one case to suspend a process running in kernel mode. Please comment.