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

David Laight David.Laight at ACULAB.COM
Mon Jan 22 08:52:42 PST 2024


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 at rivosinc.com>
> > ---
> 
> 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)




More information about the linux-riscv mailing list