lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 20 Jan 2010 15:57:13 -0800 (PST)
From:	Linus Torvalds <torvalds@...ux-foundation.org>
To:	Christoph Lameter <cl@...ux-foundation.org>
cc:	"H. Peter Anvin" <hpa@...or.com>, Ingo Molnar <mingo@...e.hu>,
	linux-kernel@...r.kernel.org, Andi Kleen <andi@...stfloor.org>
Subject: Re: [x86] Unify semaphore_32.S and rwlock_64.S



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?

			Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ