lkml.org 
[lkml]   [2010]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [x86] Unify semaphore_32.S and rwlock_64.S
On 01/20/2010 03:57 PM, Linus Torvalds wrote:
>
>
> On Wed, 20 Jan 2010, Christoph Lameter wrote:
>>
>> Well 2^32 readers is a bit large anyways. If we are satisifed with 2^30
>> (only a billion) then it works with the same code.
>
> Yes, that's what I would suggest. Make the constants be (for the 64-bit
> case)
>
> #define RWSEM_UNLOCKED_VALUE 0x00000000
> #define RWSEM_ACTIVE_BIAS 0x00000001
> #define RWSEM_ACTIVE_MASK 0x3fffffff
> #define RWSEM_WAITING_BIAS (~RWSEM_ACTIVE_MASK)
> #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
> #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
>
> and now all the constants should be expressable as 32-bit (signed) values.
>
> Side note: it might be interesting to keep the rwsem_count_t be a config
> option on x86-64 too, so this would _not_ necessarily always be a "x86-32"
> vs "x86-64" issue. A raw spinlock is 32-bit, which together with a 32-bit
> rwsem_count would make the resem's smaller. Does it matter? Maybe not. But
> we might at some point decide that it's worth limiting number of threads
> to 32k in certain configurations, so I'd keep my options open.
>
> So make the size of the counter be a CONFIG_RWSEM_LARGE thing, rather than
> a 32-bit vs 64-bit thing. And just start out with making x86-64 select it,
> but leaving the option open to use the 32-bit version on x86-64 too?
>

I'm somewhat unhappy about that notion, mostly because it means Yet
Another Thing To Verify[TM]. I would like to look at the relative code
sizes of 2^31 and 2^30, however, if all it means is that *one*
instruction in *one* asm has to be different, I'd rather leave it at 2^31.

-hpa



\
 
 \ /
  Last update: 2010-01-21 01:05    [from the cache]
©2003-2011 Jasper Spaans