RE: [PATCH v15 5/5] kunit: Add tests for csum_ipv6_magic and ip_fast_csum

From: David Laight
Date: Mon Jan 22 2024 - 12:55:37 EST


From: Guenter Roeck
> Sent: 22 January 2024 16:40
>
> Hi,
>
> On Mon, Jan 08, 2024 at 03:57:06PM -0800, Charlie Jenkins wrote:
> > Supplement existing checksum tests with tests for csum_ipv6_magic and
> > ip_fast_csum.
> >
> > Signed-off-by: Charlie Jenkins <charlie@xxxxxxxxxxxx>
> > ---
>
> With this patch in the tree, the arm:mps2-an385 qemu emulation gets a bad hiccup.
>
> [ 1.839556] Unhandled exception: IPSR = 00000006 LR = fffffff1
> [ 1.839804] CPU: 0 PID: 164 Comm: kunit_try_catch Tainted: G N 6.8.0-rc1 #1
> [ 1.839948] Hardware name: Generic DT based system
> [ 1.840062] PC is at __csum_ipv6_magic+0x8/0xb4
> [ 1.840408] LR is at test_csum_ipv6_magic+0x3d/0xa4
> [ 1.840493] pc : [<21212f34>] lr : [<21117fd5>] psr: 0100020b
> [ 1.840586] sp : 2180bebc ip : 46c7f0d2 fp : 21275b38
> [ 1.840664] r10: 21276b60 r9 : 21275b28 r8 : 21465cfc
> [ 1.840751] r7 : 00003085 r6 : 21275b4e r5 : 2138702c r4 : 00000001
> [ 1.840847] r3 : 2c000000 r2 : 1ac7f0d2 r1 : 21275b39 r0 : 21275b29
> [ 1.840942] xPSR: 0100020b
>
> This translates to:
>
> PC is at __csum_ipv6_magic (arch/arm/lib/csumipv6.S:15)
> LR is at test_csum_ipv6_magic (./arch/arm/include/asm/checksum.h:60
> ./arch/arm/include/asm/checksum.h:163 lib/checksum_kunit.c:617)
>
> Obviously I can not say if this is a problem with qemu or a problem with
> the Linux kernel. Given that, and the presumably low interest in
> running mps2-an385 with Linux, I'll simply disable that test. Just take
> it as a heads up that there _may_ be a problem with this on arm
> nommu systems.

Can you drop in a disassembly of __csum_ipv6_magic ?
Actually I think it is:
ENTRY(__csum_ipv6_magic)
str lr, [sp, #-4]!
adds ip, r2, r3
ldmia r1, {r1 - r3, lr}

So the fault is (probably) a misaligned ldmia ?
Are they ever supported?

David

adcs ip, ip, r1
adcs ip, ip, r2
adcs ip, ip, r3
adcs ip, ip, lr
ldmia r0, {r0 - r3}
adcs r0, ip, r0
adcs r0, r0, r1
adcs r0, r0, r2
ldr r2, [sp, #4]
adcs r0, r0, r3
adcs r0, r0, r2
adcs r0, r0, #0
ldmfd sp!, {pc}
ENDPROC(__csum_ipv6_magic)

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)