diff options
| -rw-r--r-- | arch/sparc/Kconfig | 1 | ||||
| -rw-r--r-- | kernel/locking/lockdep_internals.h | 20 | ||||
| -rw-r--r-- | lib/Kconfig.debug | 3 |
3 files changed, 21 insertions, 3 deletions
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 60145c9b9f84..165ecdd24d22 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
| @@ -43,6 +43,7 @@ config SPARC | |||
| 43 | select ARCH_HAS_SG_CHAIN | 43 | select ARCH_HAS_SG_CHAIN |
| 44 | select CPU_NO_EFFICIENT_FFS | 44 | select CPU_NO_EFFICIENT_FFS |
| 45 | select HAVE_ARCH_HARDENED_USERCOPY | 45 | select HAVE_ARCH_HARDENED_USERCOPY |
| 46 | select PROVE_LOCKING_SMALL if PROVE_LOCKING | ||
| 46 | 47 | ||
| 47 | config SPARC32 | 48 | config SPARC32 |
| 48 | def_bool !64BIT | 49 | def_bool !64BIT |
diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h index 51c4b24b6328..c2b88490d857 100644 --- a/kernel/locking/lockdep_internals.h +++ b/kernel/locking/lockdep_internals.h | |||
| @@ -46,6 +46,14 @@ enum { | |||
| 46 | (LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ) | 46 | (LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ) |
| 47 | 47 | ||
| 48 | /* | 48 | /* |
| 49 | * CONFIG_PROVE_LOCKING_SMALL is defined for sparc. Sparc requires .text, | ||
| 50 | * .data and .bss to fit in required 32MB limit for the kernel. With | ||
| 51 | * PROVE_LOCKING we could go over this limit and cause system boot-up problems. | ||
| 52 | * So, reduce the static allocations for lockdeps related structures so that | ||
| 53 | * everything fits in current required size limit. | ||
| 54 | */ | ||
| 55 | #ifdef CONFIG_PROVE_LOCKING_SMALL | ||
| 56 | /* | ||
| 49 | * MAX_LOCKDEP_ENTRIES is the maximum number of lock dependencies | 57 | * MAX_LOCKDEP_ENTRIES is the maximum number of lock dependencies |
| 50 | * we track. | 58 | * we track. |
| 51 | * | 59 | * |
| @@ -54,18 +62,24 @@ enum { | |||
| 54 | * table (if it's not there yet), and we check it for lock order | 62 | * table (if it's not there yet), and we check it for lock order |
| 55 | * conflicts and deadlocks. | 63 | * conflicts and deadlocks. |
| 56 | */ | 64 | */ |
| 65 | #define MAX_LOCKDEP_ENTRIES 16384UL | ||
| 66 | #define MAX_LOCKDEP_CHAINS_BITS 15 | ||
| 67 | #define MAX_STACK_TRACE_ENTRIES 262144UL | ||
| 68 | #else | ||
| 57 | #define MAX_LOCKDEP_ENTRIES 32768UL | 69 | #define MAX_LOCKDEP_ENTRIES 32768UL |
| 58 | 70 | ||
| 59 | #define MAX_LOCKDEP_CHAINS_BITS 16 | 71 | #define MAX_LOCKDEP_CHAINS_BITS 16 |
| 60 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) | ||
| 61 | |||
| 62 | #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5) | ||
| 63 | 72 | ||
| 64 | /* | 73 | /* |
| 65 | * Stack-trace: tightly packed array of stack backtrace | 74 | * Stack-trace: tightly packed array of stack backtrace |
| 66 | * addresses. Protected by the hash_lock. | 75 | * addresses. Protected by the hash_lock. |
| 67 | */ | 76 | */ |
| 68 | #define MAX_STACK_TRACE_ENTRIES 524288UL | 77 | #define MAX_STACK_TRACE_ENTRIES 524288UL |
| 78 | #endif | ||
| 79 | |||
| 80 | #define MAX_LOCKDEP_CHAINS (1UL << MAX_LOCKDEP_CHAINS_BITS) | ||
| 81 | |||
| 82 | #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5) | ||
| 69 | 83 | ||
| 70 | extern struct list_head all_lock_classes; | 84 | extern struct list_head all_lock_classes; |
| 71 | extern struct lock_chain lock_chains[]; | 85 | extern struct lock_chain lock_chains[]; |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index b01e547d4d04..a6c8db1d62f6 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
| @@ -1085,6 +1085,9 @@ config PROVE_LOCKING | |||
| 1085 | 1085 | ||
| 1086 | For more details, see Documentation/locking/lockdep-design.txt. | 1086 | For more details, see Documentation/locking/lockdep-design.txt. |
| 1087 | 1087 | ||
| 1088 | config PROVE_LOCKING_SMALL | ||
| 1089 | bool | ||
| 1090 | |||
| 1088 | config LOCKDEP | 1091 | config LOCKDEP |
| 1089 | bool | 1092 | bool |
| 1090 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT | 1093 | depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT |
