public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [KJ]remove SPIN_LOCK_UNLOCKED
@ 2007-04-10 18:16 Milind Arun Choudhary
  2007-04-10 20:50 ` Jan Engelhardt
  0 siblings, 1 reply; 11+ messages in thread
From: Milind Arun Choudhary @ 2007-04-10 18:16 UTC (permalink / raw)
  To: kernel-janitors; +Cc: kernelnewbies, linux-kernel

"use spin_lock_init instead of SPIN_LOCK_UNLOCKED"


i'm a bit confused with SPIN_LOCK_UNLOCKED removal
 I just did the below mentioned change
but then came to know that  spin_lock_init is defined as

# define spin_lock_init(lock)                                   \
        do { *(lock) = SPIN_LOCK_UNLOCKED; } while (0)

so what difference does it make..
eventually replacing SPIN_LOCK_UNLOCKED with itself

or is it just that this one [SPIN_LOCK_UNLOCKED] also needs 
to be replaced with __SPIN_LOCK_UNLOCKED?

after thought with CONFIG_DEBUG_SPINLOCK does make a diff


let me know if this is fine ..


 aerdrv.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
index db6ad8e..6846fb4 100644
--- a/drivers/pci/pcie/aer/aerdrv.c
+++ b/drivers/pci/pcie/aer/aerdrv.c
@@ -157,7 +157,7 @@ static struct aer_rpc* aer_alloc_rpc(struct pcie_device *dev)
 	 * Initialize Root lock access, e_lock, to Root Error Status Reg,
 	 * Root Error ID Reg, and Root error producer/consumer index.
 	 */
-	rpc->e_lock = SPIN_LOCK_UNLOCKED;
+	spin_lock_init(&rpc->e_lock);
 
 	rpc->rpd = dev;
 	INIT_WORK(&rpc->dpc_handler, aer_isr);


-- 
Milind Arun Choudhary

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 18:16 [KJ]remove SPIN_LOCK_UNLOCKED Milind Arun Choudhary
@ 2007-04-10 20:50 ` Jan Engelhardt
  2007-04-10 21:13   ` Roland Dreier
  2007-04-10 21:25   ` Robert P. J. Day
  0 siblings, 2 replies; 11+ messages in thread
From: Jan Engelhardt @ 2007-04-10 20:50 UTC (permalink / raw)
  To: Milind Arun Choudhary; +Cc: kernel-janitors, kernelnewbies, linux-kernel


On Apr 10 2007 23:46, Milind Arun Choudhary wrote:

>"use spin_lock_init instead of SPIN_LOCK_UNLOCKED"

Fact is, we cannot remove SPIN_LOCK_UNLOCKED. It's needed for
variables outside functions:

static spinlock_t foobar = SPIN_LOCK_UNLOCKED;




>let me know if this is fine ..

not for me to comment :)


> aerdrv.c |    2 +-
> 1 files changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/pci/pcie/aer/aerdrv.c b/drivers/pci/pcie/aer/aerdrv.c
>index db6ad8e..6846fb4 100644
>--- a/drivers/pci/pcie/aer/aerdrv.c
>+++ b/drivers/pci/pcie/aer/aerdrv.c
>@@ -157,7 +157,7 @@ static struct aer_rpc* aer_alloc_rpc(struct pcie_device *dev)
> 	 * Initialize Root lock access, e_lock, to Root Error Status Reg,
> 	 * Root Error ID Reg, and Root error producer/consumer index.
> 	 */
>-	rpc->e_lock = SPIN_LOCK_UNLOCKED;
>+	spin_lock_init(&rpc->e_lock);
> 
> 	rpc->rpd = dev;
> 	INIT_WORK(&rpc->dpc_handler, aer_isr);
>
>
>-- 
>Milind Arun Choudhary
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>

Jan
-- 

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 20:50 ` Jan Engelhardt
@ 2007-04-10 21:13   ` Roland Dreier
  2007-04-10 21:25   ` Robert P. J. Day
  1 sibling, 0 replies; 11+ messages in thread
From: Roland Dreier @ 2007-04-10 21:13 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: Milind Arun Choudhary, kernel-janitors, kernelnewbies,
	linux-kernel

 > Fact is, we cannot remove SPIN_LOCK_UNLOCKED. It's needed for
 > variables outside functions:
 > 
 > static spinlock_t foobar = SPIN_LOCK_UNLOCKED;

DEFINE_SPINLOCK() is provided to define variables that way.

 - R.

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 20:50 ` Jan Engelhardt
  2007-04-10 21:13   ` Roland Dreier
@ 2007-04-10 21:25   ` Robert P. J. Day
  2007-04-10 21:28     ` Jan Engelhardt
  1 sibling, 1 reply; 11+ messages in thread
From: Robert P. J. Day @ 2007-04-10 21:25 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: Milind Arun Choudhary, kernel-janitors, kernelnewbies,
	linux-kernel

On Tue, 10 Apr 2007, Jan Engelhardt wrote:

>
> On Apr 10 2007 23:46, Milind Arun Choudhary wrote:
>
> >"use spin_lock_init instead of SPIN_LOCK_UNLOCKED"
>
> Fact is, we cannot remove SPIN_LOCK_UNLOCKED. It's needed for
> variables outside functions:
>
> static spinlock_t foobar = SPIN_LOCK_UNLOCKED;

but that's where you would use the more explicit
__RAW_SPIN_LOCK_UNLOCKED, no?  AFAIK, you really can remove the macro
SPIN_LOCK_UNLOCKED in its entirety.

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 21:25   ` Robert P. J. Day
@ 2007-04-10 21:28     ` Jan Engelhardt
  2007-04-10 21:42       ` Roland Dreier
  0 siblings, 1 reply; 11+ messages in thread
From: Jan Engelhardt @ 2007-04-10 21:28 UTC (permalink / raw)
  To: Robert P. J. Day
  Cc: Milind Arun Choudhary, kernel-janitors, kernelnewbies,
	linux-kernel


On Apr 10 2007 17:25, Robert P. J. Day wrote:
>On Tue, 10 Apr 2007, Jan Engelhardt wrote:
>> On Apr 10 2007 23:46, Milind Arun Choudhary wrote:
>>
>> >"use spin_lock_init instead of SPIN_LOCK_UNLOCKED"
>>
>> Fact is, we cannot remove SPIN_LOCK_UNLOCKED. It's needed for
>> variables outside functions:
>>
>> static spinlock_t foobar = SPIN_LOCK_UNLOCKED;
>
>but that's where you would use the more explicit
>__RAW_SPIN_LOCK_UNLOCKED, no?  AFAIK, you really can remove the macro
>SPIN_LOCK_UNLOCKED in its entirety.

I don't remember LDD speaking about __RAW_*. (And other than not
having looked into the code to date, I don't know the difference.)


Jan
-- 

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 21:28     ` Jan Engelhardt
@ 2007-04-10 21:42       ` Roland Dreier
  2007-04-10 21:45         ` Robert P. J. Day
  0 siblings, 1 reply; 11+ messages in thread
From: Roland Dreier @ 2007-04-10 21:42 UTC (permalink / raw)
  To: Jan Engelhardt
  Cc: Robert P. J. Day, Milind Arun Choudhary, kernel-janitors,
	kernelnewbies, linux-kernel

 > >but that's where you would use the more explicit
 > >__RAW_SPIN_LOCK_UNLOCKED, no?  AFAIK, you really can remove the macro
 > >SPIN_LOCK_UNLOCKED in its entirety.
 > 
 > I don't remember LDD speaking about __RAW_*. (And other than not
 > having looked into the code to date, I don't know the difference.)

Don't worry about the __RAW_SPIN_LOCK_UNLOCKED stuff, that's obviously
not for generic code to use.  The right answer (as I said before) is
to use DEFINE_SPINLOCK().

 - R.

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 21:42       ` Roland Dreier
@ 2007-04-10 21:45         ` Robert P. J. Day
  2007-04-10 21:58           ` Roland Dreier
  2007-04-10 22:08           ` [KJ] remove SPIN_LOCK_UNLOCKED Matthew Wilcox
  0 siblings, 2 replies; 11+ messages in thread
From: Robert P. J. Day @ 2007-04-10 21:45 UTC (permalink / raw)
  To: Roland Dreier
  Cc: Jan Engelhardt, Milind Arun Choudhary, kernel-janitors,
	kernelnewbies, linux-kernel

On Tue, 10 Apr 2007, Roland Dreier wrote:

>  > >but that's where you would use the more explicit
>  > >__RAW_SPIN_LOCK_UNLOCKED, no?  AFAIK, you really can remove the macro
>  > >SPIN_LOCK_UNLOCKED in its entirety.
>  >
>  > I don't remember LDD speaking about __RAW_*. (And other than not
>  > having looked into the code to date, I don't know the difference.)
>
> Don't worry about the __RAW_SPIN_LOCK_UNLOCKED stuff, that's
> obviously not for generic code to use.  The right answer (as I said
> before) is to use DEFINE_SPINLOCK().

that works fine if you're defining a single spinlock, but what do you
do in cases like this:

arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED

that is, when you're assigning an array of them?  you still need some
kind of generic, unnamed spinlock in those circumstances, no?

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

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

* Re: [KJ]remove SPIN_LOCK_UNLOCKED
  2007-04-10 21:45         ` Robert P. J. Day
@ 2007-04-10 21:58           ` Roland Dreier
  2007-04-10 22:08           ` [KJ] remove SPIN_LOCK_UNLOCKED Matthew Wilcox
  1 sibling, 0 replies; 11+ messages in thread
From: Roland Dreier @ 2007-04-10 21:58 UTC (permalink / raw)
  To: Robert P. J. Day
  Cc: Jan Engelhardt, Milind Arun Choudhary, kernel-janitors,
	kernelnewbies, linux-kernel

 > > Don't worry about the __RAW_SPIN_LOCK_UNLOCKED stuff, that's
 > > obviously not for generic code to use.  The right answer (as I said
 > > before) is to use DEFINE_SPINLOCK().
 > 
 > that works fine if you're defining a single spinlock, but what do you
 > do in cases like this:
 > 
 > arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
 > 
 > that is, when you're assigning an array of them?  you still need some
 > kind of generic, unnamed spinlock in those circumstances, no?

Wow, I didn't realize there was code doing that.  I guess for that
handful of cases, you indeed would probably want to convert them to
raw_spinlock_t and use __RAW_SPIN_LOCK_UNLOCKED.  But in the vast
majority of cases, DEFINE_SPINLOCK() is the right think to do.

 - R.

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

* Re: [KJ] remove SPIN_LOCK_UNLOCKED
  2007-04-10 21:45         ` Robert P. J. Day
  2007-04-10 21:58           ` Roland Dreier
@ 2007-04-10 22:08           ` Matthew Wilcox
  2007-04-11  4:09             ` Milind Arun Choudhary
  2007-04-11  5:47             ` Robert P. J. Day
  1 sibling, 2 replies; 11+ messages in thread
From: Matthew Wilcox @ 2007-04-10 22:08 UTC (permalink / raw)
  To: Robert P. J. Day
  Cc: Roland Dreier, kernelnewbies, kernel-janitors, Jan Engelhardt,
	linux-kernel

On Tue, Apr 10, 2007 at 05:45:07PM -0400, Robert P. J. Day wrote:
> that works fine if you're defining a single spinlock, but what do you
> do in cases like this:
> 
> arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
> 
> that is, when you're assigning an array of them?  you still need some
> kind of generic, unnamed spinlock in those circumstances, no?

That's a special case for architecture-only code.  It's not to be used
by drivers.

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

* Re: [KJ] remove SPIN_LOCK_UNLOCKED
  2007-04-10 22:08           ` [KJ] remove SPIN_LOCK_UNLOCKED Matthew Wilcox
@ 2007-04-11  4:09             ` Milind Arun Choudhary
  2007-04-11  5:47             ` Robert P. J. Day
  1 sibling, 0 replies; 11+ messages in thread
From: Milind Arun Choudhary @ 2007-04-11  4:09 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Robert P. J. Day, kernelnewbies, kernel-janitors, Roland Dreier,
	Jan Engelhardt, linux-kernel

On 4/11/07, Matthew Wilcox <matthew@wil.cx> wrote:
> On Tue, Apr 10, 2007 at 05:45:07PM -0400, Robert P. J. Day wrote:
> > that works fine if you're defining a single spinlock, but what do you
> > do in cases like this:
> >
> > arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
> >
> > that is, when you're assigning an array of them?  you still need some
> > kind of generic, unnamed spinlock in those circumstances, no?
>
> That's a special case for architecture-only code.  It's not to be used
> by drivers.
as per my understanding, [which i should have keyed in earlier]
different places where SPIN_LOCK_UNLOCKED currently appears are

1. static spinlock_t foobar = SPIN_LOCK_UNLOCKED;
needs to be replaced bye DEFINE_SPINLOCK

e.g  linux-core/drm_memory_debug.h
-static spinlock_t drm_mem_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(drm_mem_lock);

there are very few occurrences left in the tree i see

2. allocating a data structure dynamically
& initializing the spinlock embedded within

use spin_lock_init()
e.g   linux-core/via_dmablit.c

-               blitq->blit_lock = SPIN_LOCK_UNLOCKED;
+               spin_lock_init(&blitq->blit_lock);

3. static initialization of structure members
struct foo bar ={
.
.
.
.lock = SPIN_LOCK_UNLOCKED,
.
}
use
struct foo bar ={
.
.
.
.lock = __SPIN_LOCK_UNLOCKED(bar.lock),
.
}

e.g arch/i386/kernel/traps.c
-		.lock =			SPIN_LOCK_UNLOCKED,
+		.lock =			__SPIN_LOCK_UNLOCKED(die.lock),

plenty of these are still there
may be some patches queued


4. arrays of spinlocks
e.g arch/cris/arch-v32/kernel/smp.c

-spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] =
SPIN_LOCK_UNLOCKED};
+raw_spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] =
__RAW_SPIN_LOCK_UNLOCKED};


my question is still there in the original post
about spin_lock_init()

CMIIW
Refer:
http://lkml.org/lkml/2005/6/20/47
http://lkml.org/lkml/2007/1/16/90
http://lists.openwall.net/linux-kernel/2007/02/01/258
-- 
Milind Arun Choudhary

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

* Re: [KJ] remove SPIN_LOCK_UNLOCKED
  2007-04-10 22:08           ` [KJ] remove SPIN_LOCK_UNLOCKED Matthew Wilcox
  2007-04-11  4:09             ` Milind Arun Choudhary
@ 2007-04-11  5:47             ` Robert P. J. Day
  1 sibling, 0 replies; 11+ messages in thread
From: Robert P. J. Day @ 2007-04-11  5:47 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Roland Dreier, kernelnewbies, kernel-janitors, Jan Engelhardt,
	linux-kernel

On Tue, 10 Apr 2007, Matthew Wilcox wrote:

> On Tue, Apr 10, 2007 at 05:45:07PM -0400, Robert P. J. Day wrote:
> > that works fine if you're defining a single spinlock, but what do you
> > do in cases like this:
> >
> > arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
> >
> > that is, when you're assigning an array of them?  you still need
> > some kind of generic, unnamed spinlock in those circumstances, no?
>
> That's a special case for architecture-only code.  It's not to be
> used by drivers.

be that as it may, it still means you need to take it into account
whenever someone says they want to entirely remove the
SPIN_LOCK_UNLOCKED macro from the source tree, as suggested in
Documentation/spinlocks.txt.

if you do that removal, you can always replace SPIN_LOCK_UNLOCKED with
its current definition of __SPIN_LOCK_UNLOCKED(old_style_spin_init),
or what have you.  but you would obviously have to replace it with
*something* that represents an unnamed spinlock if SPIN_LOCK_UNLOCKED
goes away.

rday

p.s.  just FYI:

$ grep -r "\.\.\..*SPIN_LOCK_UNLOCKED" *
arch/sparc/lib/atomic32.c:      [0 ... (ATOMIC_HASH_SIZE-1)] = SPIN_LOCK_UNLOCKED
arch/cris/arch-v32/kernel/smp.c:spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = SPIN_LOCK_UNLOCKED};
arch/parisc/lib/bitops.c:       [0 ... (ATOMIC_HASH_SIZE-1)]  = __RAW_SPIN_LOCK_UNLOCKED
arch/mips/kernel/gdb-stub.c:    [0 ... NR_CPUS-1] = __RAW_SPIN_LOCK_UNLOCKED,
arch/powerpc/platforms/iseries/htab.c:  { [0 ... 63] = SPIN_LOCK_UNLOCKED};

so, as matthew says, it's clearly not for drivers.

-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

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

end of thread, other threads:[~2007-04-11  5:48 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-10 18:16 [KJ]remove SPIN_LOCK_UNLOCKED Milind Arun Choudhary
2007-04-10 20:50 ` Jan Engelhardt
2007-04-10 21:13   ` Roland Dreier
2007-04-10 21:25   ` Robert P. J. Day
2007-04-10 21:28     ` Jan Engelhardt
2007-04-10 21:42       ` Roland Dreier
2007-04-10 21:45         ` Robert P. J. Day
2007-04-10 21:58           ` Roland Dreier
2007-04-10 22:08           ` [KJ] remove SPIN_LOCK_UNLOCKED Matthew Wilcox
2007-04-11  4:09             ` Milind Arun Choudhary
2007-04-11  5:47             ` Robert P. J. Day

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox