]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
x86/lib: Inline csum_ipv6_magic()
authorEric Dumazet <edumazet@google.com>
Thu, 13 Nov 2025 15:45:45 +0000 (15:45 +0000)
committerDave Hansen <dave.hansen@linux.intel.com>
Mon, 5 Jan 2026 18:14:05 +0000 (10:14 -0800)
commit529676cabcf4a5046d217bba2c8f3b94a3f6a10f
tree985eb5b5714a603b61f4170879941632d96a5914
parent9ace4753a5202b02191d54e9fdf7f9e3d02b85eb
x86/lib: Inline csum_ipv6_magic()

Inline this small helper. It has been observed to consume up
to 0.75%, which is significant for such a small function.

This should reduce register pressure, as saddr and daddr are often
back to back in memory.

For instance code inlined in tcp6_gro_receive() will look like:

 55a: 48 03 73 28           add    0x28(%rbx),%rsi
 55e: 8b 43 70              mov    0x70(%rbx),%eax
 561: 29 f8                 sub    %edi,%eax
 563: 0f c8                 bswap  %eax
 565: 89 c0                 mov    %eax,%eax
 567: 48 05 00 06 00 00     add    $0x600,%rax
 56d: 48 03 46 08           add    0x8(%rsi),%rax
 571: 48 13 46 10           adc    0x10(%rsi),%rax
 575: 48 13 46 18           adc    0x18(%rsi),%rax
 579: 48 13 46 20           adc    0x20(%rsi),%rax
 57d: 48 83 d0 00           adc    $0x0,%rax
 581: 48 89 c6              mov    %rax,%rsi
 584: 48 c1 ee 20           shr    $0x20,%rsi
 588: 01 f0                 add    %esi,%eax
 58a: 83 d0 00              adc    $0x0,%eax
 58d: 89 c6                 mov    %eax,%esi
 58f: 66 31 c0              xor    %ax,%ax

Surprisingly, this inlining does not seem to bloat kernel text size.
It at least two cases[1], it either has no effect or results in a
slightly smaller kernel.

1. https://lore.kernel.org/all/CANn89iJzcb_XO9oCApKYfRxsMMmg7BHukRDqWTca3ZLQ8HT0iQ@mail.gmail.com/

[ dhansen: add justification and note about lack of kernel bloat ]

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20251113154545.594580-1-edumazet@google.com
arch/x86/include/asm/checksum_64.h
arch/x86/lib/csum-wrappers_64.c