Thread (5 messages) 5 messages, 5 authors, 2026-01-27

Re: [PATCH net-next] net: alacritech: Use u64_stats_t with u64_stats_sync properly

From: David Laight <hidden>
Date: 2026-01-26 11:35:26
Also in: lkml

On Mon, 26 Jan 2026 11:11:09 +0100
Eric Dumazet [off-list ref] wrote:
On Mon, Jan 26, 2026 at 12:23 AM Jakub Kicinski [off-list ref] wrote:
quoted
On Fri, 23 Jan 2026 02:51:07 +0800 David Yang wrote:  
quoted
On 64bit arches, struct u64_stats_sync is empty and provides no help
against load/store tearing. Convert to u64_stats_t to ensure atomic
operations.  
Eric, could you comment if this matters? I expect David may send a
non-trivial number of these, I want to make sure we're making good
use of everyone's time here. 64b accesses are not torn on 64b arches,
and never used for control flow.  
I  added u64_stats_add()/u64_stats_inc() back in 2019, and never bothered
sending dozens of patches.

Presumably compilers could be really dumb back then, I am not sure
this is still the case today.
gcc still generates 'crap code' for var_64 += var_32 on x86-32.
Basically it zero-extends then does a 64bit add rather than
using 'adc $0, %reg_hi', the extra register is likely to force
a spill to stack.
But that is 'fixed' by using add_u64_u32().

Oh and you really don't want to support adding a signed 32bit value
for one place that wants to do a subtract.

	David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help