diff options
| author | Babu Moger <babu.moger@oracle.com> | 2016-11-02 12:36:33 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-11-18 14:33:19 -0500 |
| commit | e245d99e6cc4a0b904b87b46b4f60d46fb405987 (patch) | |
| tree | 737814fa3368ed63e4cdb121d1ac2986bb54f4cd /kernel/locking | |
| parent | e6b5f1be7afe1657c40c08082c562b1a036a54c1 (diff) | |
lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
Reduce the size of data structure for lockdep entries by half if
PROVE_LOCKING_SMALL if defined. This is used only for sparc.
Signed-off-by: Babu Moger <babu.moger@oracle.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/locking')
| -rw-r--r-- | kernel/locking/lockdep_internals.h | 20 |
1 files changed, 17 insertions, 3 deletions
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[]; |
