[BISECTED] power8: watchdog: CPU 3 self-detected hard LOCKUP @ queued_spin_lock_slowpath+0x154/0x2d0
Stijn Tintel
stijn at linux-ipv6.be
Tue Dec 28 19:55:33 AEDT 2021
On 25/12/2021 12:31, Nicholas Piggin wrote:
> Excerpts from Stijn Tintel's message of December 22, 2021 11:20 am:
>> Hi,
>>
>> After upgrading my Power8 server from 5.10 LTS to 5.15 LTS, I started
>> experiencing CPU hard lockups, usually rather quickly after boot:
>>
>>
>> watchdog: CPU 3 self-detected hard LOCKUP @
>> queued_spin_lock_slowpath+0x154/0x2d0
>> watchdog: CPU 3 TB:265651929071, last heartbeat TB:259344820187 (12318ms
>> ago)
snip
>> Bisecting lead to the following commit:
>>
>> deb9b13eb2571fbde164ae012c77985fd14f2f02 is the first bad commit
>> commit deb9b13eb2571fbde164ae012c77985fd14f2f02
>> Author: Davidlohr Bueso<dave at stgolabs.net>
>> Date: Mon Mar 8 17:59:50 2021 -0800
>>
>> powerpc/qspinlock: Use generic smp_cond_load_relaxed
> Thanks for bisecting and reporting this.
Thanks for your response, much appreciated.
> As far as I can see, the code should be functionally identical,
> the difference is slightly in loop structure and priority nops
> but that shouldn't cause complete lock ups.
>
> I suspect possibly something is getting miscompiled. What distro
> do you use, what gcc version? And would you be able to send the
> output of objdump --disassemble=queued_spin_lock_slowpath vmlinux
> for your bad kernel?
>
Gentoo hardened musl, both gcc 10.3.0 and 11.2.0 exhibit the lockups.
/boot/disable/vmlinuz-5.12.0-rc3-ppc64le-00024-gdeb9b13eb257: file
format elf64-powerpcle
Disassembly of section .head.text:
Disassembly of section .text:
c00000000010d0d4 <queued_spin_lock_slowpath>:
c00000000010d0d4: e9 00 4c 3c addis r2,r12,233
c00000000010d0d8: 2c f3 42 38 addi r2,r2,-3284
c00000000010d0dc: 00 01 04 28 cmplwi r4,256
c00000000010d0e0: 2c 00 82 40 bne c00000000010d10c
<queued_spin_lock_slowpath+0x38>
c00000000010d0e4: 01 02 20 39 li r9,513
c00000000010d0e8: a6 03 29 7d mtctr r9
c00000000010d0ec: 02 00 83 e8 lwa r4,0(r3)
c00000000010d0f0: 00 01 04 2c cmpwi r4,256
c00000000010d0f4: 14 00 82 40 bne c00000000010d108
<queued_spin_lock_slowpath+0x34>
c00000000010d0f8: 10 00 40 42 bdz c00000000010d108
<queued_spin_lock_slowpath+0x34>
c00000000010d0fc: 78 0b 21 7c mr r1,r1
c00000000010d100: 78 13 42 7c mr r2,r2
c00000000010d104: e8 ff ff 4b b c00000000010d0ec
<queued_spin_lock_slowpath+0x18>
c00000000010d108: 20 00 84 78 clrldi r4,r4,32
c00000000010d10c: 2e 00 84 54 rlwinm r4,r4,0,0,23
c00000000010d110: 00 00 04 2c cmpwi r4,0
c00000000010d114: 38 00 82 40 bne c00000000010d14c
<queued_spin_lock_slowpath+0x78>
c00000000010d118: 00 01 40 39 li r10,256
c00000000010d11c: 28 18 20 7d lwarx r9,0,r3
c00000000010d120: 78 4b 48 7d or r8,r10,r9
c00000000010d124: 2d 19 00 7d stwcx. r8,0,r3
c00000000010d128: f4 ff c2 40 bne- c00000000010d11c
<queued_spin_lock_slowpath+0x48>
c00000000010d12c: 2c 01 00 4c isync
c00000000010d130: 2e 00 28 55 rlwinm r8,r9,0,0,23
c00000000010d134: 20 00 2a 79 clrldi r10,r9,32
c00000000010d138: 00 00 08 2c cmpwi r8,0
c00000000010d13c: e4 00 82 41 beq c00000000010d220
<queued_spin_lock_slowpath+0x14c>
c00000000010d140: 00 ff 29 71 andi. r9,r9,65280
c00000000010d144: 08 00 82 40 bne c00000000010d14c
<queued_spin_lock_slowpath+0x78>
c00000000010d148: 01 00 23 99 stb r9,1(r3)
c00000000010d14c: 28 00 2d e9 ld r9,40(r13)
c00000000010d150: cf ff 42 3d addis r10,r2,-49
c00000000010d154: 01 00 00 39 li r8,1
c00000000010d158: 80 15 4a 39 addi r10,r10,5504
c00000000010d15c: 78 53 46 7d mr r6,r10
c00000000010d160: 14 4a c6 7c add r6,r6,r9
c00000000010d164: 0e 00 26 e9 lwa r9,12(r6)
c00000000010d168: 01 00 e9 38 addi r7,r9,1
c00000000010d16c: 03 00 09 2c cmpwi r9,3
c00000000010d170: 0c 00 e6 90 stw r7,12(r6)
c00000000010d174: 00 00 ed a0 lhz r7,0(r13)
c00000000010d178: e4 00 81 41 bgt c00000000010d25c
<queued_spin_lock_slowpath+0x188>
c00000000010d17c: e4 26 20 79 rldicr r0,r9,4,59
c00000000010d180: 14 02 66 7d add r11,r6,r0
c00000000010d184: 00 00 00 39 li r8,0
c00000000010d188: 08 00 0b 91 stw r8,8(r11)
c00000000010d18c: 00 00 00 39 li r8,0
c00000000010d190: 2a 01 06 7d stdx r8,r6,r0
c00000000010d194: 00 00 03 81 lwz r8,0(r3)
c00000000010d198: b5 07 08 7d extsw. r8,r8
c00000000010d19c: 04 01 82 41 beq c00000000010d2a0
<queued_spin_lock_slowpath+0x1cc>
c00000000010d1a0: 01 00 e7 38 addi r7,r7,1
c00000000010d1a4: 1e 80 29 55 rlwinm r9,r9,16,0,15
c00000000010d1a8: f8 ff e1 fb std r31,-8(r1)
c00000000010d1ac: 1a 90 e7 54 rlwinm r7,r7,18,0,13
c00000000010d1b0: 78 3b 27 7d or r7,r9,r7
c00000000010d1b4: ac 04 20 7c lwsync
c00000000010d1b8: 00 00 80 38 li r4,0
c00000000010d1bc: 02 00 03 39 addi r8,r3,2
c00000000010d1c0: f8 1e 0c 55 rlwinm r12,r8,3,27,28
c00000000010d1c4: 3e 84 e5 54 rlwinm r5,r7,16,16,31
c00000000010d1c8: ff ff 84 60 ori r4,r4,65535
c00000000010d1cc: 64 07 08 79 rldicr r8,r8,0,61
c00000000010d1d0: 30 60 a5 7c slw r5,r5,r12
c00000000010d1d4: 30 60 84 7c slw r4,r4,r12
c00000000010d1d8: 28 40 20 7d lwarx r9,0,r8
c00000000010d1dc: 78 20 3f 7d andc r31,r9,r4
c00000000010d1e0: 78 2b ff 7f or r31,r31,r5
c00000000010d1e4: 2d 41 e0 7f stwcx. r31,0,r8
c00000000010d1e8: f0 ff c2 40 bne- c00000000010d1d8
<queued_spin_lock_slowpath+0x104>
c00000000010d1ec: 30 64 29 7d srw r9,r9,r12
c00000000010d1f0: 29 80 25 79 rldic. r5,r9,16,32
c00000000010d1f4: 1e 80 28 55 rlwinm r8,r9,16,0,15
c00000000010d1f8: d0 00 82 40 bne c00000000010d2c8
<queued_spin_lock_slowpath+0x1f4>
c00000000010d1fc: 00 00 20 39 li r9,0
c00000000010d200: 02 00 c3 e8 lwa r6,0(r3)
c00000000010d204: 00 00 03 81 lwz r8,0(r3)
c00000000010d208: 3e 04 05 55 clrlwi r5,r8,16
c00000000010d20c: 00 00 05 2c cmpwi r5,0
c00000000010d210: 10 01 82 41 beq c00000000010d320
<queued_spin_lock_slowpath+0x24c>
c00000000010d214: 78 0b 21 7c mr r1,r1
c00000000010d218: 78 13 42 7c mr r2,r2
c00000000010d21c: e4 ff ff 4b b c00000000010d200
<queued_spin_lock_slowpath+0x12c>
c00000000010d220: 00 00 2a 2c cmpdi r10,0
c00000000010d224: 24 00 82 41 beq c00000000010d248
<queued_spin_lock_slowpath+0x174>
c00000000010d228: 02 00 23 e9 lwa r9,0(r3)
c00000000010d22c: 3e 06 29 55 clrlwi r9,r9,24
c00000000010d230: 00 00 09 2c cmpwi r9,0
c00000000010d234: 10 00 82 41 beq c00000000010d244
<queued_spin_lock_slowpath+0x170>
c00000000010d238: 78 0b 21 7c mr r1,r1
c00000000010d23c: 78 13 42 7c mr r2,r2
c00000000010d240: e8 ff ff 4b b c00000000010d228
<queued_spin_lock_slowpath+0x154>
c00000000010d244: ac 04 20 7c lwsync
c00000000010d248: 01 00 20 39 li r9,1
c00000000010d24c: 00 00 23 b1 sth r9,0(r3)
c00000000010d250: 20 00 80 4e blr
c00000000010d254: 78 0b 21 7c mr r1,r1
c00000000010d258: 78 13 42 7c mr r2,r2
c00000000010d25c: 00 00 23 81 lwz r9,0(r3)
c00000000010d260: b5 07 29 7d extsw. r9,r9
c00000000010d264: f0 ff 82 40 bne c00000000010d254
<queued_spin_lock_slowpath+0x180>
c00000000010d268: 28 18 e0 7c lwarx r7,0,r3
c00000000010d26c: 00 48 07 7c cmpw r7,r9
c00000000010d270: 10 00 c2 40 bne- c00000000010d280
<queued_spin_lock_slowpath+0x1ac>
c00000000010d274: 2d 19 00 7d stwcx. r8,0,r3
c00000000010d278: f0 ff c2 40 bne- c00000000010d268
<queued_spin_lock_slowpath+0x194>
c00000000010d27c: 2c 01 00 4c isync
c00000000010d280: 00 00 07 2c cmpwi r7,0
c00000000010d284: d0 ff 82 40 bne c00000000010d254
<queued_spin_lock_slowpath+0x180>
c00000000010d288: 28 00 0d e9 ld r8,40(r13)
c00000000010d28c: 0c 00 2a 39 addi r9,r10,12
c00000000010d290: 2e 40 49 7d lwzx r10,r9,r8
c00000000010d294: ff ff 4a 39 addi r10,r10,-1
c00000000010d298: 2e 41 49 7d stwx r10,r9,r8
c00000000010d29c: 20 00 80 4e blr
c00000000010d2a0: 01 00 a0 38 li r5,1
c00000000010d2a4: 28 18 80 7c lwarx r4,0,r3
c00000000010d2a8: 00 40 04 7c cmpw r4,r8
c00000000010d2ac: 10 00 c2 40 bne- c00000000010d2bc
<queued_spin_lock_slowpath+0x1e8>
c00000000010d2b0: 2d 19 a0 7c stwcx. r5,0,r3
c00000000010d2b4: f0 ff c2 40 bne- c00000000010d2a4
<queued_spin_lock_slowpath+0x1d0>
c00000000010d2b8: 2c 01 00 4c isync
c00000000010d2bc: 00 00 04 2c cmpwi r4,0
c00000000010d2c0: c8 ff 82 41 beq c00000000010d288
<queued_spin_lock_slowpath+0x1b4>
c00000000010d2c4: dc fe ff 4b b c00000000010d1a0
<queued_spin_lock_slowpath+0xcc>
c00000000010d2c8: be 74 08 55 rlwinm r8,r8,14,18,31
c00000000010d2cc: 04 00 a2 3c addis r5,r2,4
c00000000010d2d0: f0 cf a5 38 addi r5,r5,-12304
c00000000010d2d4: a8 26 29 79 rldic r9,r9,4,58
c00000000010d2d8: ff ff 08 39 addi r8,r8,-1
c00000000010d2dc: 14 4a 2a 7d add r9,r10,r9
c00000000010d2e0: b4 07 08 7d extsw r8,r8
c00000000010d2e4: 24 1f 08 79 rldicr r8,r8,3,60
c00000000010d2e8: 2a 40 05 7d ldx r8,r5,r8
c00000000010d2ec: 2a 41 69 7d stdx r11,r9,r8
c00000000010d2f0: 0a 00 2b e9 lwa r9,8(r11)
c00000000010d2f4: 00 00 29 2c cmpdi r9,0
c00000000010d2f8: 10 00 82 40 bne c00000000010d308
<queued_spin_lock_slowpath+0x234>
c00000000010d2fc: 78 0b 21 7c mr r1,r1
c00000000010d300: 78 13 42 7c mr r2,r2
c00000000010d304: ec ff ff 4b b c00000000010d2f0
<queued_spin_lock_slowpath+0x21c>
c00000000010d308: ac 04 20 7c lwsync
c00000000010d30c: 2a 00 26 7d ldx r9,r6,r0
c00000000010d310: 00 00 29 2c cmpdi r9,0
c00000000010d314: ec fe 82 41 beq c00000000010d200
<queued_spin_lock_slowpath+0x12c>
c00000000010d318: ec 49 00 7c dcbtstct 0,r9
c00000000010d31c: e4 fe ff 4b b c00000000010d200
<queued_spin_lock_slowpath+0x12c>
c00000000010d320: ac 04 20 7c lwsync
c00000000010d324: 1e 00 08 55 rlwinm r8,r8,0,0,15
c00000000010d328: 00 38 08 7c cmpw r8,r7
c00000000010d32c: 2c 00 82 41 beq c00000000010d358
<queued_spin_lock_slowpath+0x284>
c00000000010d330: 00 00 29 2c cmpdi r9,0
c00000000010d334: 01 00 00 39 li r8,1
c00000000010d338: 00 00 03 99 stb r8,0(r3)
c00000000010d33c: 58 00 82 40 bne c00000000010d394
<queued_spin_lock_slowpath+0x2c0>
c00000000010d340: 00 00 2b e9 ld r9,0(r11)
c00000000010d344: 00 00 29 2c cmpdi r9,0
c00000000010d348: 4c 00 82 40 bne c00000000010d394
<queued_spin_lock_slowpath+0x2c0>
c00000000010d34c: 78 0b 21 7c mr r1,r1
c00000000010d350: 78 13 42 7c mr r2,r2
c00000000010d354: ec ff ff 4b b c00000000010d340
<queued_spin_lock_slowpath+0x26c>
c00000000010d358: 01 00 00 39 li r8,1
c00000000010d35c: 28 18 e0 7c lwarx r7,0,r3
c00000000010d360: 00 30 07 7c cmpw r7,r6
c00000000010d364: 0c 00 c2 40 bne- c00000000010d370
<queued_spin_lock_slowpath+0x29c>
c00000000010d368: 2d 19 00 7d stwcx. r8,0,r3
c00000000010d36c: f0 ff c2 40 bne- c00000000010d35c
<queued_spin_lock_slowpath+0x288>
c00000000010d370: 00 38 06 7c cmpw r6,r7
c00000000010d374: bc ff 82 40 bne c00000000010d330
<queued_spin_lock_slowpath+0x25c>
c00000000010d378: 28 00 0d e9 ld r8,40(r13)
c00000000010d37c: 0c 00 2a 39 addi r9,r10,12
c00000000010d380: 2e 40 49 7d lwzx r10,r9,r8
c00000000010d384: ff ff 4a 39 addi r10,r10,-1
c00000000010d388: 2e 41 49 7d stwx r10,r9,r8
c00000000010d38c: f8 ff e1 eb ld r31,-8(r1)
c00000000010d390: 20 00 80 4e blr
c00000000010d394: ac 04 20 7c lwsync
c00000000010d398: 01 00 00 39 li r8,1
c00000000010d39c: 08 00 09 91 stw r8,8(r9)
c00000000010d3a0: d8 ff ff 4b b c00000000010d378
<queued_spin_lock_slowpath+0x2a4>
Disassembly of section .init.text:
Disassembly of section .exit.text:
>
>>
>>
>> The problem persists in 2f47a9a4dfa3674fad19a49b40c5103a9a8e1589 and
>> goes away if I revert deb9b13eb2571fbde164ae012c77985fd14f2f02 on top of
>> that. As deb9b13eb2571fbde164ae012c77985fd14f2f02 seems to be a revert
>> of 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe, I suspect this problem
>> might have existed before 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe. I
>> therefore tried to build 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe and
>> 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe^1 to verify if the problem
>> exists there as well, unfortunately these commits don't build due to the
>> following compile error:
>>
>> kernel/smp.c:In function 'smp_init':
>> ./include/linux/compiler.h:392:38:error: call to
>> '__compiletime_assert_150' declared with attribute error: BUILD_BUG_ON
>> failed: offsetof(struct task_struct, wake_entry_type) - offsetof(struct
>> task_struct, wake_entry) != offsetof(struct __call_single_data, flags) -
>> offsetof(struct __call_single_data, llist)
>> 392 | _compiletime_assert(condition, msg, __compiletime_assert_,
>> __COUNTER__)
>> | ^
>>
Switching from gcc 10.3.0 to gcc 11.2.0 made the above compile error go
away, and as expected, 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe boots
fine and 49a7d46a06c30c7beabbf9d1a8ea1de0f9e4fdfe^1 exhibits the same
problem. I started bisecting the 2nd part but I'll pause that effort for
now.
Thanks,
Stijn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20211228/4d621f3f/attachment-0001.htm>
More information about the Linuxppc-dev
mailing list