question on isolcpus and CONFIG_PREEMPT behavior

From: Radha Mohan
Date: Tue Jul 11 2017 - 17:09:50 EST


Hi,
I got a question on the expected behavior with isolcpus and CONFIG_PREEMPT=y.

On a 10 core arm64 system and kernel config having CONFIG_PREEMPT=y,
I passed "isolcpus=1-9". The system boots fine and all the user
processes have affinity of 1 which is good. I have shell script that
prints some string in an infinite loop every 2 seconds - i run this in
background.

Now I crash the kernel by "echo c > /proc/sysrq-trigger". There's a
NULL pointer dereference crash followed by the backtrace. But I can
still see the output from the shell script I am running.

If I run the kernel with either CONFIG_PREEMPT_VOLUNTARY=y or
CONFIG_PREEMPT_NONE=y then I do not see this behaviour.

The user space processes still running which makes the system alive.
This also means the watchdog daemon can update the hardware watchdog
timer and the system can never reset.

Any pointers ?

- Radha