Re: [PATCH v2 2/6] bitops: always define asm-generic non-atomic bitops
From: Marco Elver <elver@google.com>
Date: 2022-06-15 07:46:59
Also in:
linux-arch, linux-m68k, linux-sh, lkml, sparclinux
On Wed, 15 Jun 2022 at 04:47, Yury Norov [off-list ref] wrote:
On Mon, Jun 13, 2022 at 04:33:17PM +0200, Marco Elver wrote:quoted
On Mon, 13 Jun 2022 at 16:21, Alexander Lobakin [off-list ref] wrote:quoted
From: Marco Elver <elver@google.com> Date: Fri, 10 Jun 2022 18:32:36 +0200quoted
On Fri, 10 Jun 2022 at 18:02, Luck, Tony [off-list ref] wrote:quoted
quoted
quoted
+/** + * generic_test_bit - Determine whether a bit is set + * @nr: bit number to test + * @addr: Address to start counting from + */Shouldn't we add in this or in separate patch a big NOTE to explain that this is actually atomic and must be kept as a such?"atomic" isn't really the right word. The volatile access makes sure that the compiler does the test at the point that the source code asked, and doesn't move it before/after other operations.It's listed in Documentation/atomic_bitops.txt.Oh, so my memory was actually correct that I saw it in the docs somewhere. WDYT, should I mention this here in the code (block comment) as well that it's atomic and must not lose `volatile` as Andy suggested or it's sufficient to have it in the docs (+ it's not underscored)?Perhaps a quick comment in the code (not kerneldoc above) will be sufficient, with reference to Documentation/atomic_bitops.txt.If it may help, we can do: /* * Bit testing is a naturally atomic operation because bit is * a minimal quantum of information. */ #define __test_bit test_bit
That's redundant and we'll end up with a random mix of both. What'd be more interesting is having a __test_bit without the volatile that allows compilers to optimize things more. But I think that also becomes mostly redundant with the optimizations that this series seeks out to do. The distinction is ever so subtle, and clever compilers *will* break concurrent code in ways that are rather hard to imagine: https://lwn.net/Articles/793253/