v2 --> v3: 1. Eliminate rcu_state.nocb_is_setup 2. Update the code based on the above patch and commit b37a667c6242 ("rcu/nocb: Add an option to offload all CPUs on boot"). Test cases and test results as below: ---------------------------------------------------------------------- | CONFIG_NO_HZ_FULL | CONFIG_RCU_NOCB_CPU_DEFAULT_ALL | cmdline | ---------------------------------------------------------------------- 1) N | N | none | 2) N | N | rcu_nocbs=1-2 | 3) Y | N | nohz_full=1-2 | 4) Y | Y | none | ---------------------------------------------------------------------- 1) [ 1085.691770] rcu-torture:--- End of test: SUCCESS: (default) root@genericarmv8:~# dmesg | grep "Offload RCU callbacks" [ 0.000000] rcu: Offload RCU callbacks from CPUs: (none). root@genericarmv8:~# zcat /proc/config.gz | grep NOCB CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set root@genericarmv8:~# zcat /proc/config.gz | grep NO_HZ_FULL # CONFIG_NO_HZ_FULL is not set root@genericarmv8:~# cat /proc/cmdline console=ttyAMA0 root=/dev/vda2 crashkernel=256M@ee000000 2) [ 1022.532198] rcu-torture:--- End of test: SUCCESS: (default) root@genericarmv8:~# dmesg | grep "Offload RCU callbacks" [ 0.000000] rcu: Offload RCU callbacks from CPUs: 1-2. root@genericarmv8:~# zcat /proc/config.gz | grep NOCB CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set root@genericarmv8:~# zcat /proc/config.gz | grep NO_HZ_FULL # CONFIG_NO_HZ_FULL is not set root@genericarmv8:~# cat /proc/cmdline console=ttyAMA0 root=/dev/vda2 crashkernel=256M@ee000000 rcu_nocbs=1-2 3) [ 1011.714712] rcu-torture:--- End of test: SUCCESS: (default) root@genericarmv8:~# dmesg | grep "Offload RCU callbacks" [ 0.000000] rcu: Offload RCU callbacks from CPUs: 1-2. root@genericarmv8:~# zcat /proc/config.gz | grep NOCB CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set root@genericarmv8:~# zcat /proc/config.gz | grep NO_HZ_FULL CONFIG_NO_HZ_FULL=y root@genericarmv8:~# cat /proc/cmdline console=ttyAMA0 root=/dev/vda2 crashkernel=256M@ee000000 nohz_full=1-2 4) [ 1031.047094] rcu-torture:--- End of test: SUCCESS: (default) root@genericarmv8:~# dmesg | grep "Offload RCU callbacks" [ 0.000000] rcu: Offload RCU callbacks from CPUs: 0-3. root@genericarmv8:~# zcat /proc/config.gz | grep NOCB CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_DEFAULT_ALL=y root@genericarmv8:~# zcat /proc/config.gz | grep NO_HZ_FULL CONFIG_NO_HZ_FULL=y root@genericarmv8:~# cat /proc/cmdline console=ttyAMA0 root=/dev/vda2 crashkernel=256M@ee000000 v1 --> v2: Update commit message. Zhen Lei (2): rcu: Eliminate rcu_state.nocb_is_setup rcu: Simplify the code logic of rcu_init_nohz() kernel/rcu/tree.h | 1 - kernel/rcu/tree_nocb.h | 38 +++++++++++--------------------------- 2 files changed, 11 insertions(+), 28 deletions(-) -- 2.25.1