Thread (36 messages) 36 messages, 7 authors, 2024-03-01

Re: [PATCH v10] lib: checksum: Use aligned accesses for ip_fast_csum and csum_ipv6_magic tests

From: Christophe Leroy <hidden>
Date: 2024-03-01 06:46:08
Also in: lkml


Le 26/02/2024 à 17:44, Guenter Roeck a écrit :
On 2/26/24 03:34, Christophe Leroy wrote:
quoted

Le 23/02/2024 à 23:11, Charlie Jenkins a écrit :
quoted
The test cases for ip_fast_csum and csum_ipv6_magic were not properly
aligning the IP header, which were causing failures on architectures
that do not support misaligned accesses like some ARM platforms. To
solve this, align the data along (14 + NET_IP_ALIGN) bytes which is the
standard alignment of an IP header and must be supported by the
architecture.
I'm still wondering what we are really trying to fix here.

All other tests are explicitely testing that it works with any alignment.

Shouldn't ip_fast_csum() and csum_ipv6_magic() work for any alignment as
well ? I would expect it, I see no comment in arm code which explicits
that assumption around those functions.

Isn't the problem only the following line, because csum_offset is
unaligned ?

csum = *(__wsum *)(random_buf + i + csum_offset);

Otherwise, if there really is an alignment issue for the IPv6 source or
destination address, isn't it enough to perform a 32 bits alignment ?
It isn't just arm.

Question should be what alignments the functions are supposed to be able
to handle, not what they are optimized for. If byte and/or half word 
alignments
are expected to be supported, there is still architecture code which would
have to be fixed. Unaligned accesses are known to fail on hppa64/parisc64
and on sh4, for example. If unaligned accesses are expected to be handled,
it would probably make sense to add a separate test case, though, to 
clarify
that the test fails due to alignment issues, not due to input parameters.
When you say "Unaligned accesses are known to fail on hppa64/parisc64 
and on sh4", do you mean unaligned accesses in general or do you mean 
ip_fast_csum() with unaligned ip header and csum_ipv6_magic() with 
unaligned source and dest addresses ?

Because later in this thread it is said that only ARM and NIOS2 
potentially have an issue.

And when you say "unaligned", to what level is that ? Is it 4-bytes 
alignment or more or less ?

Christophe
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help