Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1492126 > unrolled thread

[PATCH v3 0/2] Ajust lockdep static allocations for sparc

Started byBabu Moger <babu.moger@oracle.com>
First post2016-09-27 21:40 +0200
Last post2016-09-29 16:00 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v3 0/2] Ajust lockdep static allocations for sparc Babu Moger <babu.moger@oracle.com> - 2016-09-27 21:40 +0200
    [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined Babu Moger <babu.moger@oracle.com> - 2016-09-27 21:40 +0200
      Re: [PATCH v3 2/2] lockdep: Limit static allocations if  PROVE_LOCKING_SMALL is defined Sam Ravnborg <sam@ravnborg.org> - 2016-09-28 23:00 +0200
      Re: [PATCH v3 2/2] lockdep: Limit static allocations if  PROVE_LOCKING_SMALL is defined Babu Moger <babu.moger@oracle.com> - 2016-09-29 16:00 +0200

#1492126 — [PATCH v3 0/2] Ajust lockdep static allocations for sparc

FromBabu Moger <babu.moger@oracle.com>
Date2016-09-27 21:40 +0200
Subject[PATCH v3 0/2] Ajust lockdep static allocations for sparc
Message-ID<sm6oq-58G-21@gated-at.bofh.it>
These patches limit the static allocations for lockdep data structures
used for debugging locking correctness. For sparc, all the kernel's code,
data, and bss, must have locked translations in the TLB so that we don't
get TLB misses on kernel code and data. Current sparc chips have 8 TLB
entries available that may be locked down, and with a 4mb page size,
this gives a maximum of 32MB. With PROVE_LOCKING we could go over this
limit and cause system boot-up problems. These patches limit the static
allocations so that everything fits in current required size limit.

patch 1 : Adds new config parameter CONFIG_PROVE_LOCKING_SMALL
Patch 2 : Adjusts the sizes based on the new config parameter

v2-> v3:
   Some more comments from Sam Ravnborg and Peter Zijlstra.
   Defined PROVE_LOCKING_SMALL as invisible and moved the selection to
   arch/sparc/Kconfig. 

v1-> v2:
   As suggested by Peter Zijlstra, keeping the default as is.
   Introduced new config variable CONFIG_PROVE_LOCKING_SMALL
   to handle sparc specific case.

v0:
   Initial revision.

Babu Moger (2):
  config: Adding the new config parameter CONFIG_PROVE_LOCKING_SMALL
    for sparc
  lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined

 arch/sparc/Kconfig                 |    1 +
 kernel/locking/lockdep_internals.h |   20 +++++++++++++++++---
 lib/Kconfig.debug                  |    3 +++
 3 files changed, 21 insertions(+), 3 deletions(-)

[toc] | [next] | [standalone]


#1492127 — [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined

FromBabu Moger <babu.moger@oracle.com>
Date2016-09-27 21:40 +0200
Subject[PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
Message-ID<sm6oq-58G-29@gated-at.bofh.it>
In reply to#1492126
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>
---
 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 51c4b24..c2b8849 100644
--- a/kernel/locking/lockdep_internals.h
+++ b/kernel/locking/lockdep_internals.h
@@ -46,6 +46,14 @@ enum {
 		(LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ)
 
 /*
+ * CONFIG_PROVE_LOCKING_SMALL is defined for sparc. Sparc requires .text,
+ * .data and .bss to fit in required 32MB limit for the kernel. With
+ * PROVE_LOCKING we could go over this limit and cause system boot-up problems.
+ * So, reduce the static allocations for lockdeps related structures so that
+ * everything fits in current required size limit.
+ */
+#ifdef CONFIG_PROVE_LOCKING_SMALL
+/*
  * MAX_LOCKDEP_ENTRIES is the maximum number of lock dependencies
  * we track.
  *
@@ -54,18 +62,24 @@ enum {
  * table (if it's not there yet), and we check it for lock order
  * conflicts and deadlocks.
  */
+#define MAX_LOCKDEP_ENTRIES	16384UL
+#define MAX_LOCKDEP_CHAINS_BITS	15
+#define MAX_STACK_TRACE_ENTRIES	262144UL
+#else
 #define MAX_LOCKDEP_ENTRIES	32768UL
 
 #define MAX_LOCKDEP_CHAINS_BITS	16
-#define MAX_LOCKDEP_CHAINS	(1UL << MAX_LOCKDEP_CHAINS_BITS)
-
-#define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5)
 
 /*
  * Stack-trace: tightly packed array of stack backtrace
  * addresses. Protected by the hash_lock.
  */
 #define MAX_STACK_TRACE_ENTRIES	524288UL
+#endif
+
+#define MAX_LOCKDEP_CHAINS	(1UL << MAX_LOCKDEP_CHAINS_BITS)
+
+#define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5)
 
 extern struct list_head all_lock_classes;
 extern struct lock_chain lock_chains[];
-- 
1.7.1

[toc] | [prev] | [next] | [standalone]


#1492953 — Re: [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined

FromSam Ravnborg <sam@ravnborg.org>
Date2016-09-28 23:00 +0200
SubjectRe: [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
Message-ID<smu7n-3aV-11@gated-at.bofh.it>
In reply to#1492127
On Tue, Sep 27, 2016 at 12:33:28PM -0700, Babu Moger wrote:
> 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>

[toc] | [prev] | [next] | [standalone]


#1493478 — Re: [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined

FromBabu Moger <babu.moger@oracle.com>
Date2016-09-29 16:00 +0200
SubjectRe: [PATCH v3 2/2] lockdep: Limit static allocations if PROVE_LOCKING_SMALL is defined
Message-ID<smK2y-4NO-11@gated-at.bofh.it>
In reply to#1492127
CCing Dave.

Dave, Please ack it if it looks good. Thanks.


On 9/27/2016 2:33 PM, Babu Moger wrote:
> 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>
> ---
>   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 51c4b24..c2b8849 100644
> --- a/kernel/locking/lockdep_internals.h
> +++ b/kernel/locking/lockdep_internals.h
> @@ -46,6 +46,14 @@ enum {
>   		(LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ)
>   
>   /*
> + * CONFIG_PROVE_LOCKING_SMALL is defined for sparc. Sparc requires .text,
> + * .data and .bss to fit in required 32MB limit for the kernel. With
> + * PROVE_LOCKING we could go over this limit and cause system boot-up problems.
> + * So, reduce the static allocations for lockdeps related structures so that
> + * everything fits in current required size limit.
> + */
> +#ifdef CONFIG_PROVE_LOCKING_SMALL
> +/*
>    * MAX_LOCKDEP_ENTRIES is the maximum number of lock dependencies
>    * we track.
>    *
> @@ -54,18 +62,24 @@ enum {
>    * table (if it's not there yet), and we check it for lock order
>    * conflicts and deadlocks.
>    */
> +#define MAX_LOCKDEP_ENTRIES	16384UL
> +#define MAX_LOCKDEP_CHAINS_BITS	15
> +#define MAX_STACK_TRACE_ENTRIES	262144UL
> +#else
>   #define MAX_LOCKDEP_ENTRIES	32768UL
>   
>   #define MAX_LOCKDEP_CHAINS_BITS	16
> -#define MAX_LOCKDEP_CHAINS	(1UL << MAX_LOCKDEP_CHAINS_BITS)
> -
> -#define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5)
>   
>   /*
>    * Stack-trace: tightly packed array of stack backtrace
>    * addresses. Protected by the hash_lock.
>    */
>   #define MAX_STACK_TRACE_ENTRIES	524288UL
> +#endif
> +
> +#define MAX_LOCKDEP_CHAINS	(1UL << MAX_LOCKDEP_CHAINS_BITS)
> +
> +#define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5)
>   
>   extern struct list_head all_lock_classes;
>   extern struct lock_chain lock_chains[];

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web