1
0
Fork 0

rcu: Make SRCU optional by using CONFIG_SRCU

SRCU is not necessary to be compiled by default in all cases. For tinification
efforts not compiling SRCU unless necessary is desirable.

The current patch tries to make compiling SRCU optional by introducing a new
Kconfig option CONFIG_SRCU which is selected when any of the components making
use of SRCU are selected.

If we do not select CONFIG_SRCU, srcu.o will not be compiled at all.

   text    data     bss     dec     hex filename
   2007       0       0    2007     7d7 kernel/rcu/srcu.o

Size of arch/powerpc/boot/zImage changes from

   text    data     bss     dec     hex filename
 831552   64180   23944  919676   e087c arch/powerpc/boot/zImage : before
 829504   64180   23952  917636   e0084 arch/powerpc/boot/zImage : after

so the savings are about ~2000 bytes.

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
CC: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
CC: Josh Triplett <josh@joshtriplett.org>
CC: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
[ paulmck: resolve conflict due to removal of arch/ia64/kvm/Kconfig. ]
hifive-unleashed-5.1
Pranith Kumar 2014-12-05 11:24:45 -05:00 committed by Paul E. McKenney
parent 9735af5c78
commit 83fe27ea53
23 changed files with 34 additions and 1 deletions

View File

@ -23,6 +23,7 @@ config KVM
select HAVE_KVM_CPU_RELAX_INTERCEPT select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_MMIO select KVM_MMIO
select KVM_ARM_HOST select KVM_ARM_HOST
select SRCU
depends on ARM_VIRT_EXT && ARM_LPAE depends on ARM_VIRT_EXT && ARM_LPAE
---help--- ---help---
Support hosting virtualized guest machines. You will also Support hosting virtualized guest machines. You will also

View File

@ -26,6 +26,7 @@ config KVM
select KVM_ARM_HOST select KVM_ARM_HOST
select KVM_ARM_VGIC select KVM_ARM_VGIC
select KVM_ARM_TIMER select KVM_ARM_TIMER
select SRCU
---help--- ---help---
Support hosting virtualized guest machines. Support hosting virtualized guest machines.

View File

@ -20,6 +20,7 @@ config KVM
select PREEMPT_NOTIFIERS select PREEMPT_NOTIFIERS
select ANON_INODES select ANON_INODES
select KVM_MMIO select KVM_MMIO
select SRCU
---help--- ---help---
Support for hosting Guest kernels. Support for hosting Guest kernels.
Currently supported on MIPS32 processors. Currently supported on MIPS32 processors.

View File

@ -21,6 +21,7 @@ config KVM
select PREEMPT_NOTIFIERS select PREEMPT_NOTIFIERS
select ANON_INODES select ANON_INODES
select HAVE_KVM_EVENTFD select HAVE_KVM_EVENTFD
select SRCU
config KVM_BOOK3S_HANDLER config KVM_BOOK3S_HANDLER
bool bool

View File

@ -28,6 +28,7 @@ config KVM
select HAVE_KVM_IRQCHIP select HAVE_KVM_IRQCHIP
select HAVE_KVM_IRQFD select HAVE_KVM_IRQFD
select HAVE_KVM_IRQ_ROUTING select HAVE_KVM_IRQ_ROUTING
select SRCU
---help--- ---help---
Support hosting paravirtualized guest machines using the SIE Support hosting paravirtualized guest machines using the SIE
virtualization capability on the mainframe. This should work virtualization capability on the mainframe. This should work

View File

@ -21,6 +21,7 @@ config KVM
depends on HAVE_KVM && MODULES depends on HAVE_KVM && MODULES
select PREEMPT_NOTIFIERS select PREEMPT_NOTIFIERS
select ANON_INODES select ANON_INODES
select SRCU
---help--- ---help---
Support hosting paravirtualized guest machines. Support hosting paravirtualized guest machines.

View File

@ -138,6 +138,7 @@ config X86
select HAVE_ACPI_APEI_NMI if ACPI select HAVE_ACPI_APEI_NMI if ACPI
select ACPI_LEGACY_TABLES_LOOKUP if ACPI select ACPI_LEGACY_TABLES_LOOKUP if ACPI
select X86_FEATURE_NAMES if PROC_FS select X86_FEATURE_NAMES if PROC_FS
select SRCU
config INSTRUCTION_DECODER config INSTRUCTION_DECODER
def_bool y def_bool y

View File

@ -40,6 +40,7 @@ config KVM
select HAVE_KVM_MSI select HAVE_KVM_MSI
select HAVE_KVM_CPU_RELAX_INTERCEPT select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_VFIO select KVM_VFIO
select SRCU
---help--- ---help---
Support hosting fully virtualized guest machines using hardware Support hosting fully virtualized guest machines using hardware
virtualization extensions. You will need a fairly recent virtualization extensions. You will need a fairly recent

View File

@ -13,6 +13,7 @@ config COMMON_CLK
bool bool
select HAVE_CLK_PREPARE select HAVE_CLK_PREPARE
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select SRCU
---help--- ---help---
The common clock framework is a single definition of struct The common clock framework is a single definition of struct
clk, useful across many platforms, as well as an clk, useful across many platforms, as well as an

View File

@ -2,6 +2,7 @@ menu "CPU Frequency scaling"
config CPU_FREQ config CPU_FREQ
bool "CPU Frequency scaling" bool "CPU Frequency scaling"
select SRCU
help help
CPU Frequency scaling allows you to change the clock speed of CPU Frequency scaling allows you to change the clock speed of
CPUs on the fly. This is a nice method to save power, because CPUs on the fly. This is a nice method to save power, because

View File

@ -1,5 +1,6 @@
menuconfig PM_DEVFREQ menuconfig PM_DEVFREQ
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support" bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
select SRCU
help help
A device may have a list of frequencies and voltages available. A device may have a list of frequencies and voltages available.
devfreq, a generic DVFS framework can be registered for a device devfreq, a generic DVFS framework can be registered for a device

View File

@ -5,6 +5,7 @@
menuconfig MD menuconfig MD
bool "Multiple devices driver support (RAID and LVM)" bool "Multiple devices driver support (RAID and LVM)"
depends on BLOCK depends on BLOCK
select SRCU
help help
Support multiple physical spindles through a single logical device. Support multiple physical spindles through a single logical device.
Required for RAID and logical volume management. Required for RAID and logical volume management.

View File

@ -197,6 +197,7 @@ config NETCONSOLE_DYNAMIC
config NETPOLL config NETPOLL
def_bool NETCONSOLE def_bool NETCONSOLE
select SRCU
config NET_POLL_CONTROLLER config NET_POLL_CONTROLLER
def_bool NETPOLL def_bool NETPOLL

View File

@ -8,6 +8,7 @@ config BTRFS_FS
select LZO_DECOMPRESS select LZO_DECOMPRESS
select RAID6_PQ select RAID6_PQ
select XOR_BLOCKS select XOR_BLOCKS
select SRCU
help help
Btrfs is a general purpose copy-on-write filesystem with extents, Btrfs is a general purpose copy-on-write filesystem with extents,

View File

@ -1,5 +1,6 @@
config FSNOTIFY config FSNOTIFY
def_bool n def_bool n
select SRCU
source "fs/notify/dnotify/Kconfig" source "fs/notify/dnotify/Kconfig"
source "fs/notify/inotify/Kconfig" source "fs/notify/inotify/Kconfig"

View File

@ -5,6 +5,7 @@
config QUOTA config QUOTA
bool "Quota support" bool "Quota support"
select QUOTACTL select QUOTACTL
select SRCU
help help
If you say Y here, you will be able to set per user limits for disk If you say Y here, you will be able to set per user limits for disk
usage (also called disk quotas). Currently, it works for the usage (also called disk quotas). Currently, it works for the

View File

@ -501,9 +501,17 @@ config TINY_RCU
endchoice endchoice
config SRCU
bool
help
This option selects the sleepable version of RCU. This version
permits arbitrary sleeping or blocking within RCU read-side critical
sections.
config TASKS_RCU config TASKS_RCU
bool "Task_based RCU implementation using voluntary context switch" bool "Task_based RCU implementation using voluntary context switch"
default n default n
select SRCU
help help
This option enables a task-based RCU implementation that uses This option enables a task-based RCU implementation that uses
only voluntary context switch (not preemption!), idle, and only voluntary context switch (not preemption!), idle, and
@ -1595,6 +1603,7 @@ config PERF_EVENTS
depends on HAVE_PERF_EVENTS depends on HAVE_PERF_EVENTS
select ANON_INODES select ANON_INODES
select IRQ_WORK select IRQ_WORK
select SRCU
help help
Enable kernel support for various performance events provided Enable kernel support for various performance events provided
by software and hardware. by software and hardware.

View File

@ -402,6 +402,7 @@ int raw_notifier_call_chain(struct raw_notifier_head *nh,
} }
EXPORT_SYMBOL_GPL(raw_notifier_call_chain); EXPORT_SYMBOL_GPL(raw_notifier_call_chain);
#ifdef CONFIG_SRCU
/* /*
* SRCU notifier chain routines. Registration and unregistration * SRCU notifier chain routines. Registration and unregistration
* use a mutex, and call_chain is synchronized by SRCU (no locks). * use a mutex, and call_chain is synchronized by SRCU (no locks).
@ -528,6 +529,8 @@ void srcu_init_notifier_head(struct srcu_notifier_head *nh)
} }
EXPORT_SYMBOL_GPL(srcu_init_notifier_head); EXPORT_SYMBOL_GPL(srcu_init_notifier_head);
#endif /* CONFIG_SRCU */
static ATOMIC_NOTIFIER_HEAD(die_chain); static ATOMIC_NOTIFIER_HEAD(die_chain);
int notrace notify_die(enum die_val val, const char *str, int notrace notify_die(enum die_val val, const char *str,

View File

@ -251,6 +251,7 @@ config APM_EMULATION
config PM_OPP config PM_OPP
bool bool
select SRCU
---help--- ---help---
SOCs have a standard set of tuples consisting of frequency and SOCs have a standard set of tuples consisting of frequency and
voltage pairs that the device will support per voltage domain. This voltage pairs that the device will support per voltage domain. This

View File

@ -1,4 +1,5 @@
obj-y += update.o srcu.o obj-y += update.o
obj-$(CONFIG_SRCU) += srcu.o
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
obj-$(CONFIG_TREE_RCU) += tree.o obj-$(CONFIG_TREE_RCU) += tree.o
obj-$(CONFIG_PREEMPT_RCU) += tree.o obj-$(CONFIG_PREEMPT_RCU) += tree.o

View File

@ -1215,6 +1215,7 @@ config RCU_TORTURE_TEST
tristate "torture tests for RCU" tristate "torture tests for RCU"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
select TORTURE_TEST select TORTURE_TEST
select SRCU
default n default n
help help
This option provides a kernel module that runs torture tests This option provides a kernel module that runs torture tests

View File

@ -325,6 +325,7 @@ config VIRT_TO_BUS
config MMU_NOTIFIER config MMU_NOTIFIER
bool bool
select SRCU
config KSM config KSM
bool "Enable KSM for page merging" bool "Enable KSM for page merging"

View File

@ -5,6 +5,7 @@ config SECURITY_TOMOYO
select SECURITYFS select SECURITYFS
select SECURITY_PATH select SECURITY_PATH
select SECURITY_NETWORK select SECURITY_NETWORK
select SRCU
default n default n
help help
This selects TOMOYO Linux, pathname-based access control. This selects TOMOYO Linux, pathname-based access control.