diff options
| author | Kevin Hilman <khilman@linaro.org> | 2013-09-16 18:28:21 -0400 |
|---|---|---|
| committer | Frederic Weisbecker <fweisbec@gmail.com> | 2013-09-30 09:35:53 -0400 |
| commit | 554b0004d0ec4fbd11e08668dfc400f211e8d5c5 (patch) | |
| tree | 962305270252e407cd887ba9ed949bde346b8f81 | |
| parent | 15c03dd4859ab16f9212238f29dd315654aa94f6 (diff) | |
vtime: Add HAVE_VIRT_CPU_ACCOUNTING_GEN Kconfig
With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit. In order
to use that feature, arch code should be audited to ensure there are no
races in concurrent read/write of cputime_t. For example,
reading/writing 64-bit cputime_t on some 32-bit arches may require
multiple accesses for low and high value parts, so proper locking
is needed to protect against concurrent accesses.
Therefore, add CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN which arches can
enable after they've been audited for potential races.
This option is automatically enabled on 64-bit platforms.
Feature requested by Frederic Weisbecker.
Signed-off-by: Kevin Hilman <khilman@linaro.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Arm Linux <linux-arm-kernel@lists.infradead.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
| -rw-r--r-- | arch/Kconfig | 12 | ||||
| -rw-r--r-- | init/Kconfig | 1 | ||||
| -rw-r--r-- | kernel/time/Kconfig | 1 |
3 files changed, 14 insertions, 0 deletions
diff --git a/arch/Kconfig b/arch/Kconfig index af2cc6eabcc7..185f8b007643 100644 --- a/arch/Kconfig +++ b/arch/Kconfig | |||
| @@ -353,6 +353,18 @@ config HAVE_CONTEXT_TRACKING | |||
| 353 | config HAVE_VIRT_CPU_ACCOUNTING | 353 | config HAVE_VIRT_CPU_ACCOUNTING |
| 354 | bool | 354 | bool |
| 355 | 355 | ||
| 356 | config HAVE_VIRT_CPU_ACCOUNTING_GEN | ||
| 357 | bool | ||
| 358 | default y if 64BIT | ||
| 359 | help | ||
| 360 | With VIRT_CPU_ACCOUNTING_GEN, cputime_t becomes 64-bit. | ||
| 361 | Before enabling this option, arch code must be audited | ||
| 362 | to ensure there are no races in concurrent read/write of | ||
| 363 | cputime_t. For example, reading/writing 64-bit cputime_t on | ||
| 364 | some 32-bit arches may require multiple accesses, so proper | ||
| 365 | locking is needed to protect against concurrent accesses. | ||
| 366 | |||
| 367 | |||
| 356 | config HAVE_IRQ_TIME_ACCOUNTING | 368 | config HAVE_IRQ_TIME_ACCOUNTING |
| 357 | bool | 369 | bool |
| 358 | help | 370 | help |
diff --git a/init/Kconfig b/init/Kconfig index 3ecd8a1178f1..68c1a0ed704d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -355,6 +355,7 @@ config VIRT_CPU_ACCOUNTING_NATIVE | |||
| 355 | config VIRT_CPU_ACCOUNTING_GEN | 355 | config VIRT_CPU_ACCOUNTING_GEN |
| 356 | bool "Full dynticks CPU time accounting" | 356 | bool "Full dynticks CPU time accounting" |
| 357 | depends on HAVE_CONTEXT_TRACKING && 64BIT | 357 | depends on HAVE_CONTEXT_TRACKING && 64BIT |
| 358 | depends on HAVE_VIRT_CPU_ACCOUNTING_GEN | ||
| 358 | select VIRT_CPU_ACCOUNTING | 359 | select VIRT_CPU_ACCOUNTING |
| 359 | select CONTEXT_TRACKING | 360 | select CONTEXT_TRACKING |
| 360 | help | 361 | help |
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index 2b62fe86f9ec..f148475e5194 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig | |||
| @@ -101,6 +101,7 @@ config NO_HZ_FULL | |||
| 101 | depends on HAVE_CONTEXT_TRACKING | 101 | depends on HAVE_CONTEXT_TRACKING |
| 102 | # VIRT_CPU_ACCOUNTING_GEN dependency | 102 | # VIRT_CPU_ACCOUNTING_GEN dependency |
| 103 | depends on 64BIT | 103 | depends on 64BIT |
| 104 | depends on HAVE_VIRT_CPU_ACCOUNTING_GEN | ||
| 104 | select NO_HZ_COMMON | 105 | select NO_HZ_COMMON |
| 105 | select RCU_USER_QS | 106 | select RCU_USER_QS |
| 106 | select RCU_NOCB_CPU | 107 | select RCU_NOCB_CPU |
