Under preemption, the state of the CPU must be protected. For example, on x86, entering and exiting FPU mode is now a critical section that must occur while preemption is disabled. Think what would happen if the kernel is executing a floating-point instruction and is then preempted. Remember, the kernel does not save FPU state except for user tasks. Therefore, upon preemption, the FPU registers will be sold to the lowest bidder.
Documentation/preempt-locking.txt
@niconiconi what have you been through to dig it up like this...
@niconiconi I mean how do you even know where to dig at. My laptop randomly blacks out and the fan just twitches until I force-poweroff, but I can't find a clue in default logs so I just reboot every time it happens ¯\_(ツ)_/¯
@niconiconi who knows, I don't recall seeing it with power plugged in, maybe something wrong with power management. cursed reproducibility
@ghost sounds like a GPU hang to me, much harder to debug since it's not easily reproducible. Hanging on reboot is simpler, since you can just read the kernel source and add printk() to all the functions you've gone though, and check the logs on the console.