All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 1/2] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions
@ 2009-03-05 10:29 David Rientjes
  2009-03-05 10:29 ` [patch 2/2] lockdep: initialize lockdep debugging statistics David Rientjes
  2009-03-05 10:48 ` [tip:core/locking] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes
  0 siblings, 2 replies; 13+ messages in thread
From: David Rientjes @ 2009-03-05 10:29 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Ingo Molnar, linux-kernel

The atomic debug modifiers are already defined in
kernel/lockdep_internals.h.

Cc: Ingo Molnar <mingo@redhat.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 kernel/lockdep.c |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -430,13 +430,6 @@ atomic_t nr_find_usage_forwards_checks;
 atomic_t nr_find_usage_forwards_recursions;
 atomic_t nr_find_usage_backwards_checks;
 atomic_t nr_find_usage_backwards_recursions;
-# define debug_atomic_inc(ptr)		atomic_inc(ptr)
-# define debug_atomic_dec(ptr)		atomic_dec(ptr)
-# define debug_atomic_read(ptr)		atomic_read(ptr)
-#else
-# define debug_atomic_inc(ptr)		do { } while (0)
-# define debug_atomic_dec(ptr)		do { } while (0)
-# define debug_atomic_read(ptr)		0
 #endif
 
 /*

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-05 10:29 [patch 1/2] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes
@ 2009-03-05 10:29 ` David Rientjes
  2009-03-05 10:48   ` [tip:core/locking] " David Rientjes
  2009-03-05 10:49   ` [patch 2/2] " Peter Zijlstra
  2009-03-05 10:48 ` [tip:core/locking] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes
  1 sibling, 2 replies; 13+ messages in thread
From: David Rientjes @ 2009-03-05 10:29 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Ingo Molnar, linux-kernel

The CONFIG_DEBUG_LOCKDEP statistics need to be initialized with
ATOMIC_INIT(0) since they are of type atomic_t.

Cc: Ingo Molnar <mingo@redhat.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 kernel/lockdep.c |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -413,23 +413,23 @@ static struct stack_trace lockdep_init_trace = {
 /*
  * Various lockdep statistics:
  */
-atomic_t chain_lookup_hits;
-atomic_t chain_lookup_misses;
-atomic_t hardirqs_on_events;
-atomic_t hardirqs_off_events;
-atomic_t redundant_hardirqs_on;
-atomic_t redundant_hardirqs_off;
-atomic_t softirqs_on_events;
-atomic_t softirqs_off_events;
-atomic_t redundant_softirqs_on;
-atomic_t redundant_softirqs_off;
-atomic_t nr_unused_locks;
-atomic_t nr_cyclic_checks;
-atomic_t nr_cyclic_check_recursions;
-atomic_t nr_find_usage_forwards_checks;
-atomic_t nr_find_usage_forwards_recursions;
-atomic_t nr_find_usage_backwards_checks;
-atomic_t nr_find_usage_backwards_recursions;
+atomic_t chain_lookup_hits = ATOMIC_INIT(0);
+atomic_t chain_lookup_misses = ATOMIC_INIT(0);
+atomic_t hardirqs_on_events = ATOMIC_INIT(0);
+atomic_t hardirqs_off_events = ATOMIC_INIT(0);
+atomic_t redundant_hardirqs_on = ATOMIC_INIT(0);
+atomic_t redundant_hardirqs_off = ATOMIC_INIT(0);
+atomic_t softirqs_on_events = ATOMIC_INIT(0);
+atomic_t softirqs_off_events = ATOMIC_INIT(0);
+atomic_t redundant_softirqs_on = ATOMIC_INIT(0);
+atomic_t redundant_softirqs_off = ATOMIC_INIT(0);
+atomic_t nr_unused_locks = ATOMIC_INIT(0);
+atomic_t nr_cyclic_checks = ATOMIC_INIT(0);
+atomic_t nr_cyclic_check_recursions = ATOMIC_INIT(0);
+atomic_t nr_find_usage_forwards_checks = ATOMIC_INIT(0);
+atomic_t nr_find_usage_forwards_recursions = ATOMIC_INIT(0);
+atomic_t nr_find_usage_backwards_checks = ATOMIC_INIT(0);
+atomic_t nr_find_usage_backwards_recursions = ATOMIC_INIT(0);
 #endif
 
 /*

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [tip:core/locking] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions
  2009-03-05 10:29 [patch 1/2] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes
  2009-03-05 10:29 ` [patch 2/2] lockdep: initialize lockdep debugging statistics David Rientjes
@ 2009-03-05 10:48 ` David Rientjes
  1 sibling, 0 replies; 13+ messages in thread
From: David Rientjes @ 2009-03-05 10:48 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, rientjes, mingo

Commit-ID:  03d78913f01e8f6599823f00357ed17b32747d3d
Gitweb:     http://git.kernel.org/tip/03d78913f01e8f6599823f00357ed17b32747d3d
Author:     "David Rientjes" <rientjes@google.com>
AuthorDate: Thu, 5 Mar 2009 02:29:05 -0800
Commit:     Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 5 Mar 2009 11:46:00 +0100

lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions

Impact: cleanup

The atomic debug modifiers are already defined in
kernel/lockdep_internals.h.

Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <alpine.DEB.2.00.0903050222160.30401@chino.kir.corp.google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep.c |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 02014f7..9a1e2bc 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -433,13 +433,6 @@ atomic_t nr_find_usage_forwards_checks;
 atomic_t nr_find_usage_forwards_recursions;
 atomic_t nr_find_usage_backwards_checks;
 atomic_t nr_find_usage_backwards_recursions;
-# define debug_atomic_inc(ptr)		atomic_inc(ptr)
-# define debug_atomic_dec(ptr)		atomic_dec(ptr)
-# define debug_atomic_read(ptr)		atomic_read(ptr)
-#else
-# define debug_atomic_inc(ptr)		do { } while (0)
-# define debug_atomic_dec(ptr)		do { } while (0)
-# define debug_atomic_read(ptr)		0
 #endif
 
 /*

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [tip:core/locking] lockdep: initialize lockdep debugging statistics
  2009-03-05 10:29 ` [patch 2/2] lockdep: initialize lockdep debugging statistics David Rientjes
@ 2009-03-05 10:48   ` David Rientjes
  2009-03-05 10:49   ` [patch 2/2] " Peter Zijlstra
  1 sibling, 0 replies; 13+ messages in thread
From: David Rientjes @ 2009-03-05 10:48 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, peterz, tglx, rientjes, mingo

Commit-ID:  742bbc4022d117bccf9c8a86c8e500dfa97e2f70
Gitweb:     http://git.kernel.org/tip/742bbc4022d117bccf9c8a86c8e500dfa97e2f70
Author:     "David Rientjes" <rientjes@google.com>
AuthorDate: Thu, 5 Mar 2009 02:29:06 -0800
Commit:     Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 5 Mar 2009 11:46:00 +0100

lockdep: initialize lockdep debugging statistics

Impact: cleanup

The CONFIG_DEBUG_LOCKDEP statistics need to be initialized with
ATOMIC_INIT(0) since they are of type atomic_t.

Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <alpine.DEB.2.00.0903050223240.30401@chino.kir.corp.google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>


---
 kernel/lockdep.c |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 9a1e2bc..3f7ff12 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -416,23 +416,23 @@ static struct stack_trace lockdep_init_trace = {
 /*
  * Various lockdep statistics:
  */
-atomic_t chain_lookup_hits;
-atomic_t chain_lookup_misses;
-atomic_t hardirqs_on_events;
-atomic_t hardirqs_off_events;
-atomic_t redundant_hardirqs_on;
-atomic_t redundant_hardirqs_off;
-atomic_t softirqs_on_events;
-atomic_t softirqs_off_events;
-atomic_t redundant_softirqs_on;
-atomic_t redundant_softirqs_off;
-atomic_t nr_unused_locks;
-atomic_t nr_cyclic_checks;
-atomic_t nr_cyclic_check_recursions;
-atomic_t nr_find_usage_forwards_checks;
-atomic_t nr_find_usage_forwards_recursions;
-atomic_t nr_find_usage_backwards_checks;
-atomic_t nr_find_usage_backwards_recursions;
+atomic_t chain_lookup_hits = ATOMIC_INIT(0);
+atomic_t chain_lookup_misses = ATOMIC_INIT(0);
+atomic_t hardirqs_on_events = ATOMIC_INIT(0);
+atomic_t hardirqs_off_events = ATOMIC_INIT(0);
+atomic_t redundant_hardirqs_on = ATOMIC_INIT(0);
+atomic_t redundant_hardirqs_off = ATOMIC_INIT(0);
+atomic_t softirqs_on_events = ATOMIC_INIT(0);
+atomic_t softirqs_off_events = ATOMIC_INIT(0);
+atomic_t redundant_softirqs_on = ATOMIC_INIT(0);
+atomic_t redundant_softirqs_off = ATOMIC_INIT(0);
+atomic_t nr_unused_locks = ATOMIC_INIT(0);
+atomic_t nr_cyclic_checks = ATOMIC_INIT(0);
+atomic_t nr_cyclic_check_recursions = ATOMIC_INIT(0);
+atomic_t nr_find_usage_forwards_checks = ATOMIC_INIT(0);
+atomic_t nr_find_usage_forwards_recursions = ATOMIC_INIT(0);
+atomic_t nr_find_usage_backwards_checks = ATOMIC_INIT(0);
+atomic_t nr_find_usage_backwards_recursions = ATOMIC_INIT(0);
 #endif
 
 /*

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-05 10:29 ` [patch 2/2] lockdep: initialize lockdep debugging statistics David Rientjes
  2009-03-05 10:48   ` [tip:core/locking] " David Rientjes
@ 2009-03-05 10:49   ` Peter Zijlstra
  2009-03-05 11:05     ` Ingo Molnar
  1 sibling, 1 reply; 13+ messages in thread
From: Peter Zijlstra @ 2009-03-05 10:49 UTC (permalink / raw)
  To: David Rientjes; +Cc: Ingo Molnar, linux-kernel

On Thu, 2009-03-05 at 02:29 -0800, David Rientjes wrote:
> The CONFIG_DEBUG_LOCKDEP statistics need to be initialized with
> ATOMIC_INIT(0) since they are of type atomic_t.

And how does ATOMIC_INIT(0) differ from the global/static storage being
initialized to 0?

All I can see this doing it moving the variables from bss to data for
some compilers.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-05 10:49   ` [patch 2/2] " Peter Zijlstra
@ 2009-03-05 11:05     ` Ingo Molnar
  2009-03-05 21:57       ` David Rientjes
  0 siblings, 1 reply; 13+ messages in thread
From: Ingo Molnar @ 2009-03-05 11:05 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: David Rientjes, Ingo Molnar, linux-kernel


* Peter Zijlstra <peterz@infradead.org> wrote:

> On Thu, 2009-03-05 at 02:29 -0800, David Rientjes wrote:
> > The CONFIG_DEBUG_LOCKDEP statistics need to be initialized with
> > ATOMIC_INIT(0) since they are of type atomic_t.
> 
> And how does ATOMIC_INIT(0) differ from the global/static 
> storage being initialized to 0?
> 
> All I can see this doing it moving the variables from bss to 
> data for some compilers.

ok, i dropped it for now.

	Ingo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-05 11:05     ` Ingo Molnar
@ 2009-03-05 21:57       ` David Rientjes
  2009-03-06  8:28         ` Peter Zijlstra
  0 siblings, 1 reply; 13+ messages in thread
From: David Rientjes @ 2009-03-05 21:57 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Peter Zijlstra, Ingo Molnar, David S. Miller, linux-kernel

On Thu, 5 Mar 2009, Ingo Molnar wrote:

> 
> * Peter Zijlstra <peterz@infradead.org> wrote:
> 
> > On Thu, 2009-03-05 at 02:29 -0800, David Rientjes wrote:
> > > The CONFIG_DEBUG_LOCKDEP statistics need to be initialized with
> > > ATOMIC_INIT(0) since they are of type atomic_t.
> > 
> > And how does ATOMIC_INIT(0) differ from the global/static 
> > storage being initialized to 0?
> > 
> > All I can see this doing it moving the variables from bss to 
> > data for some compilers.
> 

It's actually the opposite for gcc 4.1.1, the debugging symbols are now in 
bss.

> ok, i dropped it for now.
> 

It shouldn't be dropped, the initialization is necessary because we can't 
rely on atomic_t's implementation.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-05 21:57       ` David Rientjes
@ 2009-03-06  8:28         ` Peter Zijlstra
  2009-03-06  9:56           ` David Rientjes
  2009-03-06 10:05           ` Li Zefan
  0 siblings, 2 replies; 13+ messages in thread
From: Peter Zijlstra @ 2009-03-06  8:28 UTC (permalink / raw)
  To: David Rientjes; +Cc: Ingo Molnar, David S. Miller, linux-kernel

On Thu, 2009-03-05 at 13:57 -0800, David Rientjes wrote:
> It shouldn't be dropped, the initialization is necessary because we can't 
> rely on atomic_t's implementation.

I'm a bit slow, please use more words and explain this to me.

Before replying please read:

ea435467500612636f8f4fb639ff6e76b2496e4b

and stare at the output of:

git grep "define[ \t]*ATOMIC_INIT\>"



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-06  8:28         ` Peter Zijlstra
@ 2009-03-06  9:56           ` David Rientjes
  2009-03-06 10:19             ` Peter Zijlstra
  2009-03-06 10:05           ` Li Zefan
  1 sibling, 1 reply; 13+ messages in thread
From: David Rientjes @ 2009-03-06  9:56 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Ingo Molnar, David S. Miller, linux-kernel

On Fri, 6 Mar 2009, Peter Zijlstra wrote:

> I'm a bit slow, please use more words and explain this to me.
> 
> Before replying please read:
> 
> ea435467500612636f8f4fb639ff6e76b2496e4b
> 
> and stare at the output of:
> 
> git grep "define[ \t]*ATOMIC_INIT\>"
> 

Peter, this is purely a matter of good software engineering practices.  I 
hadn't realized you were so passionate about avoiding initialization of 
global atomic_t variables, even though it usually suffices.

I assume you wouldn't object to removing all such cases in the kernel.

	$ grep -r "atomic_t.*= ATOMIC_INIT(0)" * | wc -l
	104

Unless David Miller has any input, I'll happily defer to your 
maintainership of lockdep in this matter.  Thanks for looking at the 
patch.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-06  8:28         ` Peter Zijlstra
  2009-03-06  9:56           ` David Rientjes
@ 2009-03-06 10:05           ` Li Zefan
  1 sibling, 0 replies; 13+ messages in thread
From: Li Zefan @ 2009-03-06 10:05 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: David Rientjes, Ingo Molnar, David S. Miller, linux-kernel

Peter Zijlstra wrote:
> On Thu, 2009-03-05 at 13:57 -0800, David Rientjes wrote:
>> It shouldn't be dropped, the initialization is necessary because we can't 
>> rely on atomic_t's implementation.
> 
> I'm a bit slow, please use more words and explain this to me.
> 

I once was also (and is still not sure) wondering if it's better to use
INIT_HLIST_HEAD() for initialization for the reason David is claiming..

The situation is similar with this ATOMIC_INIT(), that INIT_HLIST_HEAD()
just set 2 pointers to 0, and not every user of hlist calls this INIT()
at initialization phase.

But I'll definitely on David's side if it's not kernel project.

> Before replying please read:
> 
> ea435467500612636f8f4fb639ff6e76b2496e4b
> 
> and stare at the output of:
> 
> git grep "define[ \t]*ATOMIC_INIT\>"
> 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-06  9:56           ` David Rientjes
@ 2009-03-06 10:19             ` Peter Zijlstra
  2009-03-06 10:27               ` David Rientjes
  0 siblings, 1 reply; 13+ messages in thread
From: Peter Zijlstra @ 2009-03-06 10:19 UTC (permalink / raw)
  To: David Rientjes; +Cc: Ingo Molnar, David S. Miller, linux-kernel

On Fri, 2009-03-06 at 01:56 -0800, David Rientjes wrote:
> 
> Peter, this is purely a matter of good software engineering practices. 

For complex types I would agree, but atomic_t is assumed to be just
another int - just with special ops. For such things we can hold that
memset('0') will properly initialize them to their 0 value.

>  I 
> hadn't realized you were so passionate about avoiding initialization of 
> global atomic_t variables, 

Given that static/global storage is properly initialized to 0, and the
above, it seems to be redundant.

> I assume you wouldn't object to removing all such cases in the kernel.
> 
>         $ grep -r "atomic_t.*= ATOMIC_INIT(0)" * | wc -l
>         104

Only IFF all those cases are for static/global storage. Otherwise you
have to ensure 0-ness by either using __GFP_ZERO or explicit
initialization.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-06 10:19             ` Peter Zijlstra
@ 2009-03-06 10:27               ` David Rientjes
  2009-03-06 10:46                 ` Peter Zijlstra
  0 siblings, 1 reply; 13+ messages in thread
From: David Rientjes @ 2009-03-06 10:27 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: Ingo Molnar, David S. Miller, linux-kernel

On Fri, 6 Mar 2009, Peter Zijlstra wrote:

> > Peter, this is purely a matter of good software engineering practices. 
> 
> For complex types I would agree, but atomic_t is assumed to be just
> another int - just with special ops. For such things we can hold that
> memset('0') will properly initialize them to their 0 value.
> 

That's the point about good software engineering practices: atomic_t 
should not be assumed to be another int.  If its implementation were ever 
to change even for a single architecture, so would these variable 
declarations.

> > I assume you wouldn't object to removing all such cases in the kernel.
> > 
> >         $ grep -r "atomic_t.*= ATOMIC_INIT(0)" * | wc -l
> >         104
> 
> Only IFF all those cases are for static/global storage.

They are.

Anyway, I've already deferred to your maintainership of lockdep about not 
wanting to initialize global atomics in this part of the kernel, so while 
I disagree with it from a software engineering perspective, I think I'll 
be able to move on.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [patch 2/2] lockdep: initialize lockdep debugging statistics
  2009-03-06 10:27               ` David Rientjes
@ 2009-03-06 10:46                 ` Peter Zijlstra
  0 siblings, 0 replies; 13+ messages in thread
From: Peter Zijlstra @ 2009-03-06 10:46 UTC (permalink / raw)
  To: David Rientjes; +Cc: Ingo Molnar, David S. Miller, linux-kernel

On Fri, 2009-03-06 at 02:27 -0800, David Rientjes wrote:
> That's the point about good software engineering practices: atomic_t 
> should not be assumed to be another int. 

We do, and its a rather fundamental assumption. Any implementation not
conforming is deemed buggy -- esp on the 0 property.

http://lkml.org/lkml/2008/10/28/216


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2009-03-06 10:46 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-05 10:29 [patch 1/2] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes
2009-03-05 10:29 ` [patch 2/2] lockdep: initialize lockdep debugging statistics David Rientjes
2009-03-05 10:48   ` [tip:core/locking] " David Rientjes
2009-03-05 10:49   ` [patch 2/2] " Peter Zijlstra
2009-03-05 11:05     ` Ingo Molnar
2009-03-05 21:57       ` David Rientjes
2009-03-06  8:28         ` Peter Zijlstra
2009-03-06  9:56           ` David Rientjes
2009-03-06 10:19             ` Peter Zijlstra
2009-03-06 10:27               ` David Rientjes
2009-03-06 10:46                 ` Peter Zijlstra
2009-03-06 10:05           ` Li Zefan
2009-03-05 10:48 ` [tip:core/locking] lockdep: remove duplicate CONFIG_DEBUG_LOCKDEP definitions David Rientjes

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.