Re: Regression: Linux v5.15+ does not boot on Freescale P2020
From: Pali Rohár <pali@kernel.org>
Date: 2022-07-25 12:53:08
Also in:
lkml
On Monday 25 July 2022 18:20:01 Michael Ellerman wrote:
Pali Rohár [off-list ref] writes:quoted
On Saturday 23 July 2022 14:42:22 Christophe Leroy wrote:quoted
Le 22/07/2022 à 11:09, Pali Rohár a écrit :quoted
Trying to boot mainline Linux kernel v5.15+, including current version from master branch, on Freescale P2020 does not work. Kernel does not print anything to serial console, seems that it does not work and after timeout watchdog reset the board.Can you provide more information ? Which defconfig or .config, which version of gcc, etc ... ?I used default defconfig for mpc85xx with gcc 8, compilation for e500 cores. If you need exact .config content I can send it during week.quoted
quoted
I run git bisect and it found following commit: 9401f4e46cf6965e23738f70e149172344a01eef is the first bad commit commit 9401f4e46cf6965e23738f70e149172344a01eef Author: Christophe Leroy [off-list ref] Date: Tue Mar 2 08:48:11 2021 +0000 powerpc: Use lwarx/ldarx directly instead of PPC_LWARX/LDARX macros Force the eh flag at 0 on PPC32. Signed-off-by: Christophe Leroy [off-list ref] Signed-off-by: Michael Ellerman [off-list ref] Link: https://lore.kernel.org/r/1fc81f07cabebb875b963e295408cc3dd38c8d85.1614674882.git.christophe.leroy@csgroup.eu (local) :040000 040000 fe6747e45736dfcba74914a9445e5f70f5120600 96358d08b65d3200928a973efb5b969b3d45f2b0 M arch If I revert this commit then kernel boots correctly. It also boots fine if I revert this commit on top of master branch. Freescale P2020 has two 32-bit e500 powerpc cores. Any idea why above commit is causing crash of the kernel? And why it is needed? Could eh flag set to 0 cause deadlock?Setting the eh flag to 0 is not supposed to be a change introduced by that commit. Indeed that commit is not supposed to change anything at all in the generated code.My understanding of that commit is that it changed eh flag parameter from 1 to 0 for 32-bit powerpc, including also p2020.Can you compare the disassembly before and after and find a place where an instruction has changed? cheers
Yes, of course. Here is diff between output from objdump -d vmlinux. original version --- is from git master branch and modified version +++ is the original version with reverted above problematic commit. So the +++ version is the one which is working.
--- vmlinux.master.dump 2022-07-25 14:43:45.922239496 +0200
+++ vmlinux.revert.dump 2022-07-25 14:43:49.238259296 +0200@@ -1,5 +1,5 @@ -vmlinux.master: file format elf32-powerpc +vmlinux.revert: file format elf32-powerpc Disassembly of section .head.text:
@@ -11213,7 +11213,7 @@ c000b850: 3f a0 c1 0f lis r29,-1611 c000b854: 81 02 00 04 lwz r8,4(r2) c000b858: 3b fd 10 68 addi r31,r29,4200 c000b85c: 39 40 00 01 li r10,1 -c000b860: 7d 20 f8 29 lwarx r9,0,r31,1 +c000b860: 7d 20 f8 28 lwarx r9,0,r31 c000b864: 2c 09 00 00 cmpwi r9,0 c000b868: 40 82 00 10 bne c000b878 <die+0x68> c000b86c: 7d 40 f9 2d stwcx. r10,0,r31
@@ -11227,7 +11227,7 @@ c000b888: 81 3e 00 1c lwz r9,28(r30 c000b88c: 7f 88 48 00 cmpw cr7,r8,r9 c000b890: 41 9e 00 38 beq cr7,c000b8c8 <die+0xb8> c000b894: 39 40 00 01 li r10,1 -c000b898: 7d 20 f8 29 lwarx r9,0,r31,1 +c000b898: 7d 20 f8 28 lwarx r9,0,r31 c000b89c: 2c 09 00 00 cmpwi r9,0 c000b8a0: 40 82 00 10 bne c000b8b0 <die+0xa0> c000b8a4: 7d 40 f9 2d stwcx. r10,0,r31
@@ -186495,7 +186495,7 @@ c00b173c: 3b 40 00 00 li r26,0 c00b1740: 3a e0 00 00 li r23,0 c00b1744: 7e c0 00 a6 mfmsr r22 c00b1748: 7c 00 01 46 wrteei 0 -c00b174c: 7f a0 c0 29 lwarx r29,0,r24,1 +c00b174c: 7f a0 c0 28 lwarx r29,0,r24 c00b1750: 2c 1d 00 00 cmpwi r29,0 c00b1754: 40 82 00 10 bne c00b1764 <rcu_gp_init+0x15c> c00b1758: 7f 20 c1 2d stwcx. r25,0,r24
@@ -187821,7 +187821,7 @@ c00b2b7c: 3f e0 c1 0b lis r31,-1611 c00b2b80: 38 c0 00 01 li r6,1 c00b2b84: 3b ff c5 20 addi r31,r31,-15072 c00b2b88: 38 ff 02 20 addi r7,r31,544 -c00b2b8c: 7d 00 38 29 lwarx r8,0,r7,1 +c00b2b8c: 7d 00 38 28 lwarx r8,0,r7 c00b2b90: 2c 08 00 00 cmpwi r8,0 c00b2b94: 40 82 00 10 bne c00b2ba4 <rcu_cpu_starting+0xc0> c00b2b98: 7c c0 39 2d stwcx. r6,0,r7
@@ -187947,7 +187947,7 @@ c00b2d6c: 3f a0 c1 0b lis r29,-1611 c00b2d70: 39 00 00 01 li r8,1 c00b2d74: 3b bd c5 20 addi r29,r29,-15072 c00b2d78: 39 3d 02 20 addi r9,r29,544 -c00b2d7c: 7d 40 48 29 lwarx r10,0,r9,1 +c00b2d7c: 7d 40 48 28 lwarx r10,0,r9 c00b2d80: 2c 0a 00 00 cmpwi r10,0 c00b2d84: 40 82 00 10 bne c00b2d94 <rcu_report_dead+0x90> c00b2d88: 7d 00 49 2d stwcx. r8,0,r9
@@ -2527838,7 +2527838,7 @@ c096b0e4: 4e 80 00 20 blr c096b0e8 <_raw_spin_trylock>: c096b0e8: 94 21 ff f0 stwu r1,-16(r1) c096b0ec: 39 40 00 01 li r10,1 -c096b0f0: 7d 20 18 29 lwarx r9,0,r3,1 +c096b0f0: 7d 20 18 28 lwarx r9,0,r3 c096b0f4: 2c 09 00 00 cmpwi r9,0 c096b0f8: 40 82 00 10 bne c096b108 <_raw_spin_trylock+0x20> c096b0fc: 7d 40 19 2d stwcx. r10,0,r3
@@ -2527853,7 +2527853,7 @@ c096b11c: 4e 80 00 20 blr c096b120 <_raw_read_trylock>: c096b120: 94 21 ff f0 stwu r1,-16(r1) -c096b124: 7d 20 18 29 lwarx r9,0,r3,1 +c096b124: 7d 20 18 28 lwarx r9,0,r3 c096b128: 35 29 00 01 addic. r9,r9,1 c096b12c: 40 81 00 10 ble c096b13c <_raw_read_trylock+0x1c> c096b130: 7d 20 19 2d stwcx. r9,0,r3
@@ -2527869,7 +2527869,7 @@ c096b150: 4e 80 00 20 blr c096b154 <_raw_write_trylock>: c096b154: 94 21 ff f0 stwu r1,-16(r1) c096b158: 39 40 ff ff li r10,-1 -c096b15c: 7d 20 18 29 lwarx r9,0,r3,1 +c096b15c: 7d 20 18 28 lwarx r9,0,r3 c096b160: 2c 09 00 00 cmpwi r9,0 c096b164: 40 82 00 10 bne c096b174 <_raw_write_trylock+0x20> c096b168: 7d 40 19 2d stwcx. r10,0,r3
@@ -2527888,7 +2527888,7 @@ c096b190: 81 22 00 00 lwz r9,0(r2) c096b194: 39 29 02 00 addi r9,r9,512 c096b198: 91 22 00 00 stw r9,0(r2) c096b19c: 39 40 00 01 li r10,1 -c096b1a0: 7d 20 18 29 lwarx r9,0,r3,1 +c096b1a0: 7d 20 18 28 lwarx r9,0,r3 c096b1a4: 2c 09 00 00 cmpwi r9,0 c096b1a8: 40 82 00 10 bne c096b1b8 <_raw_spin_lock_bh+0x2c> c096b1ac: 7d 40 19 2d stwcx. r10,0,r3
@@ -2527940,7 +2527940,7 @@ c096b240: 81 22 00 00 lwz r9,0(r2) c096b244: 39 29 02 00 addi r9,r9,512 c096b248: 91 22 00 00 stw r9,0(r2) c096b24c: 39 40 00 01 li r10,1 -c096b250: 7d 20 18 29 lwarx r9,0,r3,1 +c096b250: 7d 20 18 28 lwarx r9,0,r3 c096b254: 2c 09 00 00 cmpwi r9,0 c096b258: 40 82 00 10 bne c096b268 <_raw_spin_trylock_bh+0x34> c096b25c: 7d 40 19 2d stwcx. r10,0,r3
@@ -2527997,7 +2527997,7 @@ c096b304: 94 21 ff f0 stwu r1,-16(r1 c096b308: 81 22 00 00 lwz r9,0(r2) c096b30c: 39 29 02 00 addi r9,r9,512 c096b310: 91 22 00 00 stw r9,0(r2) -c096b314: 7d 20 18 29 lwarx r9,0,r3,1 +c096b314: 7d 20 18 28 lwarx r9,0,r3 c096b318: 35 29 00 01 addic. r9,r9,1 c096b31c: 40 81 00 10 ble c096b32c <_raw_read_lock_bh+0x28> c096b320: 7d 20 19 2d stwcx. r9,0,r3
@@ -2528018,7 +2528018,7 @@ c096b350: 81 22 00 00 lwz r9,0(r2) c096b354: 39 29 02 00 addi r9,r9,512 c096b358: 91 22 00 00 stw r9,0(r2) c096b35c: 39 40 ff ff li r10,-1 -c096b360: 7d 20 18 29 lwarx r9,0,r3,1 +c096b360: 7d 20 18 28 lwarx r9,0,r3 c096b364: 2c 09 00 00 cmpwi r9,0 c096b368: 40 82 00 10 bne c096b378 <_raw_write_lock_bh+0x2c> c096b36c: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528035,7 +2528035,7 @@ c096b394: 4b ff ff f4 b c096b388 c096b398 <_raw_read_lock>: c096b398: 94 21 ff f0 stwu r1,-16(r1) -c096b39c: 7d 20 18 29 lwarx r9,0,r3,1 +c096b39c: 7d 20 18 28 lwarx r9,0,r3 c096b3a0: 35 29 00 01 addic. r9,r9,1 c096b3a4: 40 81 00 10 ble c096b3b4 <_raw_read_lock+0x1c> c096b3a8: 7d 20 19 2d stwcx. r9,0,r3
@@ -2528053,7 +2528053,7 @@ c096b3d0: 4b ff ff f4 b c096b3c4 c096b3d4 <_raw_read_lock_irq>: c096b3d4: 94 21 ff f0 stwu r1,-16(r1) c096b3d8: 7c 00 01 46 wrteei 0 -c096b3dc: 7d 20 18 29 lwarx r9,0,r3,1 +c096b3dc: 7d 20 18 28 lwarx r9,0,r3 c096b3e0: 35 29 00 01 addic. r9,r9,1 c096b3e4: 40 81 00 10 ble c096b3f4 <_raw_read_lock_irq+0x20> c096b3e8: 7d 20 19 2d stwcx. r9,0,r3
@@ -2528073,7 +2528073,7 @@ c096b414: 94 21 ff f0 stwu r1,-16(r1 c096b418: 7c 6a 1b 78 mr r10,r3 c096b41c: 7c 60 00 a6 mfmsr r3 c096b420: 7c 00 01 46 wrteei 0 -c096b424: 7d 20 50 29 lwarx r9,0,r10,1 +c096b424: 7d 20 50 28 lwarx r9,0,r10 c096b428: 35 29 00 01 addic. r9,r9,1 c096b42c: 40 81 00 10 ble c096b43c <_raw_read_lock_irqsave+0x28> c096b430: 7d 20 51 2d stwcx. r9,0,r10
@@ -2528091,7 +2528091,7 @@ c096b458: 4b ff ff f4 b c096b44c c096b45c <_raw_spin_lock>: c096b45c: 94 21 ff f0 stwu r1,-16(r1) c096b460: 39 40 00 01 li r10,1 -c096b464: 7d 20 18 29 lwarx r9,0,r3,1 +c096b464: 7d 20 18 28 lwarx r9,0,r3 c096b468: 2c 09 00 00 cmpwi r9,0 c096b46c: 40 82 00 10 bne c096b47c <_raw_spin_lock+0x20> c096b470: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528110,7 +2528110,7 @@ c096b49c <_raw_spin_lock_irq>: c096b49c: 94 21 ff f0 stwu r1,-16(r1) c096b4a0: 7c 00 01 46 wrteei 0 c096b4a4: 39 40 00 01 li r10,1 -c096b4a8: 7d 20 18 29 lwarx r9,0,r3,1 +c096b4a8: 7d 20 18 28 lwarx r9,0,r3 c096b4ac: 2c 09 00 00 cmpwi r9,0 c096b4b0: 40 82 00 10 bne c096b4c0 <_raw_spin_lock_irq+0x24> c096b4b4: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528131,7 +2528131,7 @@ c096b4e4: 7c 6a 1b 78 mr r10,r3 c096b4e8: 7c 60 00 a6 mfmsr r3 c096b4ec: 7c 00 01 46 wrteei 0 c096b4f0: 39 00 00 01 li r8,1 -c096b4f4: 7d 20 50 29 lwarx r9,0,r10,1 +c096b4f4: 7d 20 50 28 lwarx r9,0,r10 c096b4f8: 2c 09 00 00 cmpwi r9,0 c096b4fc: 40 82 00 10 bne c096b50c <_raw_spin_lock_irqsave+0x2c> c096b500: 7d 00 51 2d stwcx. r8,0,r10
@@ -2528149,7 +2528149,7 @@ c096b528: 4b ff ff f4 b c096b51c c096b52c <_raw_write_lock_nested>: c096b52c: 94 21 ff f0 stwu r1,-16(r1) c096b530: 39 40 ff ff li r10,-1 -c096b534: 7d 20 18 29 lwarx r9,0,r3,1 +c096b534: 7d 20 18 28 lwarx r9,0,r3 c096b538: 2c 09 00 00 cmpwi r9,0 c096b53c: 40 82 00 10 bne c096b54c <_raw_write_lock_nested+0x20> c096b540: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528167,7 +2528167,7 @@ c096b568: 4b ff ff f4 b c096b55c c096b56c <_raw_write_lock>: c096b56c: 94 21 ff f0 stwu r1,-16(r1) c096b570: 39 40 ff ff li r10,-1 -c096b574: 7d 20 18 29 lwarx r9,0,r3,1 +c096b574: 7d 20 18 28 lwarx r9,0,r3 c096b578: 2c 09 00 00 cmpwi r9,0 c096b57c: 40 82 00 10 bne c096b58c <_raw_write_lock+0x20> c096b580: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528186,7 +2528186,7 @@ c096b5ac <_raw_write_lock_irq>: c096b5ac: 94 21 ff f0 stwu r1,-16(r1) c096b5b0: 7c 00 01 46 wrteei 0 c096b5b4: 39 40 ff ff li r10,-1 -c096b5b8: 7d 20 18 29 lwarx r9,0,r3,1 +c096b5b8: 7d 20 18 28 lwarx r9,0,r3 c096b5bc: 2c 09 00 00 cmpwi r9,0 c096b5c0: 40 82 00 10 bne c096b5d0 <_raw_write_lock_irq+0x24> c096b5c4: 7d 40 19 2d stwcx. r10,0,r3
@@ -2528207,7 +2528207,7 @@ c096b5f4: 7c 6a 1b 78 mr r10,r3 c096b5f8: 7c 60 00 a6 mfmsr r3 c096b5fc: 7c 00 01 46 wrteei 0 c096b600: 39 00 ff ff li r8,-1 -c096b604: 7d 20 50 29 lwarx r9,0,r10,1 +c096b604: 7d 20 50 28 lwarx r9,0,r10 c096b608: 2c 09 00 00 cmpwi r9,0 c096b60c: 40 82 00 10 bne c096b61c <_raw_write_lock_irqsave+0x2c> c096b610: 7d 00 51 2d stwcx. r8,0,r10