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 | |
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>
-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[]; |