NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/58340: 64-bit atomic ops unusable for armv7: __HAVE_ATOMIC64_{OPS,LOADSTORE} confusion



The following reply was made to PR kern/58340; it has been noted by GNATS.

From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: Rin Okuyama <rokuyama.rk%gmail.com@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, netbsd-bugs%NetBSD.org@localhost
Subject: Re: kern/58340: 64-bit atomic ops unusable for armv7:
	__HAVE_ATOMIC64_{OPS,LOADSTORE} confusion
Date: Tue, 18 Jun 2024 19:14:23 +0000

 > Date: Tue, 18 Jun 2024 23:44:01 +0900
 > From: Rin Okuyama <rokuyama.rk%gmail.com@localhost>
 > 
 > (1) Shouldn't we document things explicitly in, e.g., SIZE AND ALIGNMENT
 > section in atomic_loadstore(9)?
 
 I added a paragraph about this.  Does that help?
 
 > (2) Can't we provide 64-bit atomic-ops API for ILP32 platforms? If no,
 > do you speak about something by which we don't provide such runtime
 > routines with our libc?
 
 I don't understand.  Are you suggesting that we implement
 atomic_load/store_* in terms of atomic_swap_*, or are you talking
 about hash-locked atomic r/m/w like sparc32 and hppa, or what?
 
 The point of __HAVE_ATOMIC64_LOADSTORE is to test whether the
 architecture supports a _cheap_ atomic 64-bit load/store which can
 safely be used without locking.  (Well, except for the hash-locked
 architectures -- sparc32, hppa -- where atomic _stores_ can't be done
 cheaply at all because they have to coordinate with the hash-locked
 CAS anyway.)
 
 So while it would be possible in principle (in the kernel, at least,
 with all code cooperating in the protocol) to use a hash-locked scheme
 for 64-bit atomic_load/store_*, this is almost certainly a waste --
 better to just use an application-specific lock for better performance
 and easier reasoning.
 


Home | Main Index | Thread Index | Old Index