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. ]
23 files changed:
select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_MMIO
select KVM_ARM_HOST
select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_MMIO
select KVM_ARM_HOST
depends on ARM_VIRT_EXT && ARM_LPAE
---help---
Support hosting virtualized guest machines. You will also
depends on ARM_VIRT_EXT && ARM_LPAE
---help---
Support hosting virtualized guest machines. You will also
select KVM_ARM_HOST
select KVM_ARM_VGIC
select KVM_ARM_TIMER
select KVM_ARM_HOST
select KVM_ARM_VGIC
select KVM_ARM_TIMER
---help---
Support hosting virtualized guest machines.
---help---
Support hosting virtualized guest machines.
select PREEMPT_NOTIFIERS
select ANON_INODES
select KVM_MMIO
select PREEMPT_NOTIFIERS
select ANON_INODES
select KVM_MMIO
---help---
Support for hosting Guest kernels.
Currently supported on MIPS32 processors.
---help---
Support for hosting Guest kernels.
Currently supported on MIPS32 processors.
select PREEMPT_NOTIFIERS
select ANON_INODES
select HAVE_KVM_EVENTFD
select PREEMPT_NOTIFIERS
select ANON_INODES
select HAVE_KVM_EVENTFD
config KVM_BOOK3S_HANDLER
bool
config KVM_BOOK3S_HANDLER
bool
select HAVE_KVM_IRQCHIP
select HAVE_KVM_IRQFD
select HAVE_KVM_IRQ_ROUTING
select HAVE_KVM_IRQCHIP
select HAVE_KVM_IRQFD
select HAVE_KVM_IRQ_ROUTING
---help---
Support hosting paravirtualized guest machines using the SIE
virtualization capability on the mainframe. This should work
---help---
Support hosting paravirtualized guest machines using the SIE
virtualization capability on the mainframe. This should work
depends on HAVE_KVM && MODULES
select PREEMPT_NOTIFIERS
select ANON_INODES
depends on HAVE_KVM && MODULES
select PREEMPT_NOTIFIERS
select ANON_INODES
---help---
Support hosting paravirtualized guest machines.
---help---
Support hosting paravirtualized guest machines.
select HAVE_ACPI_APEI_NMI if ACPI
select ACPI_LEGACY_TABLES_LOOKUP if ACPI
select X86_FEATURE_NAMES if PROC_FS
select HAVE_ACPI_APEI_NMI if ACPI
select ACPI_LEGACY_TABLES_LOOKUP if ACPI
select X86_FEATURE_NAMES if PROC_FS
config INSTRUCTION_DECODER
def_bool y
config INSTRUCTION_DECODER
def_bool y
select HAVE_KVM_MSI
select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_VFIO
select HAVE_KVM_MSI
select HAVE_KVM_CPU_RELAX_INTERCEPT
select KVM_VFIO
---help---
Support hosting fully virtualized guest machines using hardware
virtualization extensions. You will need a fairly recent
---help---
Support hosting fully virtualized guest machines using hardware
virtualization extensions. You will need a fairly recent
bool
select HAVE_CLK_PREPARE
select CLKDEV_LOOKUP
bool
select HAVE_CLK_PREPARE
select CLKDEV_LOOKUP
---help---
The common clock framework is a single definition of struct
clk, useful across many platforms, as well as an
---help---
The common clock framework is a single definition of struct
clk, useful across many platforms, as well as an
config CPU_FREQ
bool "CPU Frequency scaling"
config CPU_FREQ
bool "CPU Frequency scaling"
help
CPU Frequency scaling allows you to change the clock speed of
CPUs on the fly. This is a nice method to save power, because
help
CPU Frequency scaling allows you to change the clock speed of
CPUs on the fly. This is a nice method to save power, because
menuconfig PM_DEVFREQ
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
menuconfig PM_DEVFREQ
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
help
A device may have a list of frequencies and voltages available.
devfreq, a generic DVFS framework can be registered for a device
help
A device may have a list of frequencies and voltages available.
devfreq, a generic DVFS framework can be registered for a device
menuconfig MD
bool "Multiple devices driver support (RAID and LVM)"
depends on BLOCK
menuconfig MD
bool "Multiple devices driver support (RAID and LVM)"
depends on BLOCK
help
Support multiple physical spindles through a single logical device.
Required for RAID and logical volume management.
help
Support multiple physical spindles through a single logical device.
Required for RAID and logical volume management.
config NETPOLL
def_bool NETCONSOLE
config NETPOLL
def_bool NETCONSOLE
config NET_POLL_CONTROLLER
def_bool NETPOLL
config NET_POLL_CONTROLLER
def_bool NETPOLL
select LZO_DECOMPRESS
select RAID6_PQ
select XOR_BLOCKS
select LZO_DECOMPRESS
select RAID6_PQ
select XOR_BLOCKS
help
Btrfs is a general purpose copy-on-write filesystem with extents,
help
Btrfs is a general purpose copy-on-write filesystem with extents,
config FSNOTIFY
def_bool n
config FSNOTIFY
def_bool n
source "fs/notify/dnotify/Kconfig"
source "fs/notify/inotify/Kconfig"
source "fs/notify/dnotify/Kconfig"
source "fs/notify/inotify/Kconfig"
config QUOTA
bool "Quota support"
select QUOTACTL
config QUOTA
bool "Quota support"
select QUOTACTL
help
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
help
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
+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
bool "Task_based RCU implementation using voluntary context switch"
default n
config TASKS_RCU
bool "Task_based RCU implementation using voluntary context switch"
default n
help
This option enables a task-based RCU implementation that uses
only voluntary context switch (not preemption!), idle, and
help
This option enables a task-based RCU implementation that uses
only voluntary context switch (not preemption!), idle, and
depends on HAVE_PERF_EVENTS
select ANON_INODES
select IRQ_WORK
depends on HAVE_PERF_EVENTS
select ANON_INODES
select IRQ_WORK
help
Enable kernel support for various performance events provided
by software and hardware.
help
Enable kernel support for various performance events provided
by software and hardware.
}
EXPORT_SYMBOL_GPL(raw_notifier_call_chain);
}
EXPORT_SYMBOL_GPL(raw_notifier_call_chain);
/*
* SRCU notifier chain routines. Registration and unregistration
* use a mutex, and call_chain is synchronized by SRCU (no locks).
/*
* SRCU notifier chain routines. Registration and unregistration
* use a mutex, and call_chain is synchronized by SRCU (no locks).
}
EXPORT_SYMBOL_GPL(srcu_init_notifier_head);
}
EXPORT_SYMBOL_GPL(srcu_init_notifier_head);
+#endif /* CONFIG_SRCU */
+
static ATOMIC_NOTIFIER_HEAD(die_chain);
int notrace notify_die(enum die_val val, const char *str,
static ATOMIC_NOTIFIER_HEAD(die_chain);
int notrace notify_die(enum die_val val, const char *str,
---help---
SOCs have a standard set of tuples consisting of frequency and
voltage pairs that the device will support per voltage domain. This
---help---
SOCs have a standard set of tuples consisting of frequency and
voltage pairs that the device will support per voltage domain. This
-obj-y += update.o srcu.o
+obj-y += update.o
+obj-$(CONFIG_SRCU) += srcu.o
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
obj-$(CONFIG_TREE_RCU) += tree.o
obj-$(CONFIG_PREEMPT_RCU) += tree.o
obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o
obj-$(CONFIG_TREE_RCU) += tree.o
obj-$(CONFIG_PREEMPT_RCU) += tree.o
tristate "torture tests for RCU"
depends on DEBUG_KERNEL
select TORTURE_TEST
tristate "torture tests for RCU"
depends on DEBUG_KERNEL
select TORTURE_TEST
default n
help
This option provides a kernel module that runs torture tests
default n
help
This option provides a kernel module that runs torture tests
config KSM
bool "Enable KSM for page merging"
config KSM
bool "Enable KSM for page merging"
select SECURITYFS
select SECURITY_PATH
select SECURITY_NETWORK
select SECURITYFS
select SECURITY_PATH
select SECURITY_NETWORK
default n
help
This selects TOMOYO Linux, pathname-based access control.
default n
help
This selects TOMOYO Linux, pathname-based access control.