public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Problems with csum_partial with misaligned buffers on sh4 platform
@ 2024-02-10 15:12 Guenter Roeck
  2024-02-10 20:12 ` John Paul Adrian Glaubitz
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Guenter Roeck @ 2024-02-10 15:12 UTC (permalink / raw)
  To: Yoshinori Sato
  Cc: Rich Felker, John Paul Adrian Glaubitz, linux-sh, linux-kernel

Hi,

when running checksum unit tests on sh4 qemu emulations, I get the following
errors.

    KTAP version 1
    # Subtest: checksum
    # module: checksum_kunit
    1..5
    # test_csum_fixed_random_inputs: ASSERTION FAILED at lib/checksum_kunit.c:500
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 53378 (0xd082)
        ( u64)expec == 33488 (0x82d0)
    not ok 1 test_csum_fixed_random_inputs
    # test_csum_all_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:525
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 65281 (0xff01)
        ( u64)expec == 65280 (0xff00)
    not ok 2 test_csum_all_carry_inputs
    # test_csum_no_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:573
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 65535 (0xffff)
        ( u64)expec == 65534 (0xfffe)
    not ok 3 test_csum_no_carry_inputs
    ok 4 test_ip_fast_csum
    ok 5 test_csum_ipv6_magic
# checksum: pass:2 fail:3 skip:0 total:5

The above is with from a little endian system. On a big endian system,
the test result is as follows.

    KTAP version 1
    # Subtest: checksum
    # module: checksum_kunit
    1..5
    # test_csum_fixed_random_inputs: ASSERTION FAILED at lib/checksum_kunit.c:500
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 33488 (0x82d0)
        ( u64)expec == 53378 (0xd082)
    not ok 1 test_csum_fixed_random_inputs
    # test_csum_all_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:525
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 65281 (0xff01)
        ( u64)expec == 255 (0xff)
    not ok 2 test_csum_all_carry_inputs
    # test_csum_no_carry_inputs: ASSERTION FAILED at lib/checksum_kunit.c:565
    Expected ( u64)result == ( u64)expec, but
        ( u64)result == 1020 (0x3fc)
        ( u64)expec == 0 (0x0)
    not ok 3 test_csum_no_carry_inputs
    # test_ip_fast_csum: ASSERTION FAILED at lib/checksum_kunit.c:589
    Expected ( u64)expected == ( u64)csum_result, but
        ( u64)expected == 55939 (0xda83)
        ( u64)csum_result == 33754 (0x83da)
    not ok 4 test_ip_fast_csum
    # test_csum_ipv6_magic: ASSERTION FAILED at lib/checksum_kunit.c:617
    Expected ( u64)expected_csum_ipv6_magic[i] == ( u64)csum_ipv6_magic(saddr, daddr, len, proto, csum), but
        ( u64)expected_csum_ipv6_magic[i] == 6356 (0x18d4)
        ( u64)csum_ipv6_magic(saddr, daddr, len, proto, csum) == 43586 (0xaa42)
    not ok 5 test_csum_ipv6_magic
# checksum: pass:0 fail:5 skip:0 total:5

Note that test_ip_fast_csum and test_csum_ipv6_magic fail on all big endian
systems due to a bug in the test code, unrelated to this problem.

Analysis shows that the errors are seen only if the buffer is misaligned.
Looking into arch/sh/lib/checksum.S, I found commit cadc4e1a2b4d2 ("sh:
Handle calling csum_partial with misaligned data") which seemed to be
related. Reverting that commit fixes the problem.
This suggests that something may be wrong with that commit. Alternatively,
of course, it may be possible that something is wrong with the qemu
emulation, but that seems unlikely.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-03-18 15:58 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-10 15:12 Problems with csum_partial with misaligned buffers on sh4 platform Guenter Roeck
2024-02-10 20:12 ` John Paul Adrian Glaubitz
2024-02-10 21:54   ` Guenter Roeck
2024-02-11  3:41     ` D. Jeff Dionne
2024-02-11 16:12       ` Rich Felker
2024-02-11  9:53     ` Geert Uytterhoeven
2024-02-11 14:35 ` Yoshinori Sato
2024-03-11 17:04 ` Guenter Roeck
2024-03-18 15:04   ` Linux regression tracking (Thorsten Leemhuis)
2024-03-18 15:32     ` Guenter Roeck
2024-03-18 15:58       ` Linux regression tracking (Thorsten Leemhuis)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox