Re: [PATCH v2 00/13] Convert Ingenic to a generic board v2

From: Paul Cercueil
Date: Wed Aug 19 2020 - 11:35:18 EST


Hi Zhou,

Le mer. 19 août 2020 à 22:12, Zhou Yanjie <zhouyanjie@xxxxxxxxxxxxxx> a écrit :
Hi Paul,

I have some good news and some bad news.

Good news is:

I tested this series of patches on CU1000-Neo & CU1830-Neo, and it can boot normally and log in to debian normally.

Bad news is:

1. Because we dropped arch/mips/jz4740/setup.c, so it did not return MACH_INGENIC_XXXX correctly, which caused the correction of the L2 cache probe in arch/mips/mm/sc-mips.c to fail, causing JZ4770/X1000 to detect the L2 cache capacity incorrect.

It's properly detected here on JZ4770. The detection code was just moved to arch/mips/generic/board-ingenic.c.

2. When I did some heavy work (compiled docker source code after logging in with ssh), the following message appeared:

Chances are that these messages are related. Stuff like that tends to appear in -rc1 and get fixed afterwards.

Cheers,
-Paul

message1:

[ 4694.290776] warn_alloc: 25 callbacks suppressed
[ 4694.290791] containerd-shim: page allocation failure: order:4, mode:0x40cc0(GFP_KERNEL|__GFP_COMP), nodemask=(null)
[ 4694.315266] CPU: 0 PID: 19817 Comm: containerd-shim Not tainted 5.8.0-00013-g192f2fd7b678 #15
[ 4694.317993] Stack : 80ae0000 80a50000 80860000 809b8fb0 809e4a30 850dfcb4 00000000 ffffffff
[ 4694.320818] 80a50000 80a576c7 809c4374 00004d69 80ad348c 00000001 850dfc58 7750292a
[ 4694.322695] 00000000 00000000 809c4374 ffff00fe 850dffe0 00001400 00000199 00000000
[ 4694.325083] ffffffff 866f7600 80a50000 878bd778 80a50000 80000000 809c2b50 00000000
[ 4694.326957] 00040cc0 00000000 000001d2 00000000 80a53220 7750292a 0000a098 80ad0000
[ 4694.327750] ...
[ 4694.340943] Call Trace:
[ 4694.341181] [<8001ae08>] show_stack+0x6c/0x12c
[ 4694.355233] [<800f64b0>] warn_alloc+0xa8/0x130
[ 4694.361283] [<800f6dfc>] __alloc_pages_nodemask+0x8a4/0x8d8
[ 4694.362839] [<80103110>] ____cache_alloc+0x324/0x8fc
[ 4694.367439] [<801038e4>] __kmalloc+0x78/0xd8
[ 4694.376798] [<80195b28>] proc_sys_call_handler+0xf4/0x1d8
[ 4694.377229] [<80195c44>] proc_sys_read+0x14/0x20
[ 4694.384090] [<80116274>] vfs_read+0xac/0x108
[ 4694.385654] [<801165d4>] ksys_read+0x80/0xe0
[ 4694.395277] [<8001ec8c>] syscall_common+0x34/0x58
[ 4694.394544] Mem-Info:
[ 4694.396828] active_anon:661 inactive_anon:942 isolated_anon:0
[ 4694.396828] active_file:10515 inactive_file:9667 isolated_file:0
[ 4694.396828] unevictable:0 dirty:2003 writeback:0
[ 4694.396828] slab_reclaimable:1609 slab_unreclaimable:3103
[ 4694.396828] mapped:2182 shmem:156 pagetables:207 bounce:0
[ 4694.396828] free:1635 free_pcp:7 free_cma:0
[ 4694.405770] Node 0 active_anon:2644kB inactive_anon:3768kB active_file:42060kB inactive_file:38668kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:8728kB dirty:8048kB writeback:0kB shmem:624kB writeback_tmp:0kB all_unreclaimable? no
[ 4694.408349] Normal free:6484kB min:1376kB low:1720kB high:2064kB reserved_highatomic:0KB active_anon:2644kB inactive_anon:3768kB active_file:42064kB inactive_file:38724kB unevictable:0kB writepending:8060kB present:131072kB managed:118804kB mlocked:0kB kernel_stack:584kB pagetables:828kB bounce:0kB free_pcp:32kB local_pcp:32kB free_cma:0kB
[ 4694.409607] lowmem_reserve[]: 0 0 0
[ 4694.410382] Normal: 117*4kB (UM) 406*8kB (UM) 149*16kB (UME) 12*32kB (UME) 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 6484kB
[ 4694.418673] 20618 total pagecache pages
[ 4694.423125] 226 pages in swap cache
[ 4694.423912] Swap cache stats: add 535090, delete 534864, find 234586/366812
[ 4694.431304] Free swap = 774396kB
[ 4694.431900] Total swap = 786428kB
[ 4694.432480] 32768 pages RAM
[ 4694.432537] 0 pages HighMem/MovableOnly
[ 4694.441338] 3067 pages reserved
[ 4694.441770] 0 pages cma reserved

---------------------------------------------------------

message2:

[ 4426.473667] warn_alloc: 27 callbacks suppressed
[ 4426.473681] kswapd0: page allocation failure: order:0, mode:0xa20(GFP_ATOMIC), nodemask=(null)
[ 4426.475946] CPU: 0 PID: 439 Comm: kswapd0 Not tainted 5.8.0-00013-g192f2fd7b678 #15
[ 4426.478136] Stack : 80ae0000 80a50000 80860000 809b8fb0 809e4a30 87c0dccc 00000000 ffffffff
[ 4426.478301] 80a50000 80a576c7 809c4374 000001b7 80ad348c 00000001 87c0dc70 b7c290ba
[ 4426.478464] 00000000 00000000 809c4374 00000000 0000000f 00000000 0000019f 00000000
[ 4426.478626] bff4ffd7 1c5e5f3c 80ae0000 31672d33 80a50000 00000000 809c2b50 00000000
[ 4426.478787] 00000a20 00000000 00000000 00000000 00000002 804d392c 00000000 80ad0000
[ 4426.478940] ...
[ 4426.481390] Call Trace:
[ 4426.483842] [<8001ae08>] show_stack+0x6c/0x12c
[ 4426.485555] [<800f64b0>] warn_alloc+0xa8/0x130
[ 4426.487275] [<800f6dfc>] __alloc_pages_nodemask+0x8a4/0x8d8
[ 4426.487382] [<800f6f80>] page_frag_alloc+0x74/0x144
[ 4426.489534] [<805fc1a4>] __napi_alloc_skb+0x88/0x118
[ 4426.491769] [<8052ed8c>] stmmac_napi_poll_rx+0x434/0xa94
[ 4426.494354] [<80613eb0>] net_rx_action+0x11c/0x310
[ 4426.496414] [<807ecd0c>] __do_softirq+0x10c/0x258
[ 4426.498395] [<800320c0>] __irq_exit_rcu+0x68/0xbc
[ 4426.500365] [<80032324>] irq_exit+0x10/0x1c
[ 4426.501844] [<804876b4>] plat_irq_dispatch+0x8c/0xb8
[ 4426.504076] [<800154f8>] handle_int+0x138/0x144
[ 4426.505883] [<8005280c>] arch_local_irq_enable+0x4/0xc
[ 4426.508289] Mem-Info:
[ 4426.510576] active_anon:770 inactive_anon:1763 isolated_anon:0
[ 4426.510576] active_file:5581 inactive_file:15166 isolated_file:0
[ 4426.510576] unevictable:0 dirty:1262 writeback:880
[ 4426.510576] slab_reclaimable:1187 slab_unreclaimable:3016
[ 4426.510576] mapped:3478 shmem:315 pagetables:186 bounce:0
[ 4426.510576] free:453 free_pcp:16 free_cma:0
[ 4426.512469] Node 0 active_anon:3080kB inactive_anon:7052kB active_file:22324kB inactive_file:60664kB unevictable:0kB isolated(anon):0kB isolated(file):0kB mapped:13912kB dirty:5048kB writeback:3520kB shmem:1260kB writeback_tmp:0kB all_unreclaimable? no
[ 4426.512938] Normal free:1812kB min:5472kB low:5816kB high:6160kB reserved_highatomic:0KB active_anon:3080kB inactive_anon:7052kB active_file:22324kB inactive_file:60664kB unevictable:0kB writepending:8568kB present:131072kB managed:118804kB mlocked:0kB kernel_stack:544kB pagetables:744kB bounce:0kB free_pcp:64kB local_pcp:64kB free_cma:0kB
[ 4426.515643] lowmem_reserve[]: 0 0 0
[ 4426.516400] Normal: 11*4kB (U) 59*8kB (UE) 75*16kB (U) 3*32kB (U) 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 1812kB
[ 4426.517399] 21378 total pagecache pages
[ 4426.518507] 306 pages in swap cache
[ 4426.519259] Swap cache stats: add 533859, delete 533553, find 134676/266712
[ 4426.520752] Free swap = 777212kB
[ 4426.521331] Total swap = 786428kB
[ 4426.521911] 32768 pages RAM
[ 4426.521973] 0 pages HighMem/MovableOnly
[ 4426.523072] 3067 pages reserved
[ 4426.523474] 0 pages cma reserved

---------------------------------------------------------

message3:

[ 292.077309] CPU 0 Unable to handle kernel paging request at virtual address 00000104, epc == 801e7f30, ra == 801e7f24
[ 292.087904] Oops[#1]:
[ 292.090169] CPU: 0 PID: 5 Comm: kworker/0:0 Not tainted 5.9.0-rc1-00016-g8d1e63c37d0d-dirty #1
[ 292.098768] Workqueue: events cache_reap
[ 292.102675] $ 0 : 00000000 00000001 808f3bf4 00000122
[ 292.107887] $ 4 : 808f3bf8 00000100 0000003c 87c02080
[ 292.113099] $ 8 : 87c01000 8581e301 00000001 00000000
[ 292.118311] $12 : 87c3dc7c 0000000a 810021c4 00000100
[ 292.123523] $16 : 85855600 8100218c 86284600 80790000
[ 292.128735] $20 : 0000003c 00000000 8100219c fffffffe
[ 292.133946] $24 : 00000122 87c02090
[ 292.139158] $28 : 87c3c000 87c3dc48 807b0000 801e7f24
[ 292.144371] Hi : 00000000
[ 292.147237] Lo : 000c6bf4
[ 292.150109] epc : 801e7f30 free_block+0x68/0x198
[ 292.154887] ra : 801e7f24 free_block+0x5c/0x198
[ 292.159660] Status: 10001402 KERNEL EXL
[ 292.163569] Cause : 4080800c (ExcCode 03)
[ 292.167563] BadVA : 00000104
[ 292.170430] PrId : 00d00100 (Ingenic XBurst)
[ 292.174776] Process kworker/0:0 (pid: 5, threadinfo=50ecb211, task=a81ea849, tls=00000000)
[ 292.183016] Stack : 87c2e020 87c50cd0 8079e358 00000000 87c01000 801e8b14 87c50cd0 87c2e050
[ 292.191353] 87c50cd0 8014930c 87c3dc7c 87c50ca0 807a0000 87c3dc7c 87c3dc7c 018070a3
[ 292.199689] 80790000 86284600 801e8618 00000000 00000100 00000122 00000000 8100219c
[ 292.208025] fffffffe 801e8544 00000003 00000000 00000000 87c3dce0 808f3bf4 00000000
[ 292.216361] 87c01000 801e8618 87c06300 00000000 00000000 87c3dce0 87c01000 85855a80
[ 292.224697] ...
[ 292.227132] Call Trace:
[ 292.229569] [<801e7f30>] free_block+0x68/0x198
[ 292.234003] [<801e8b14>] ___cache_free+0x1f8/0x2e8
[ 292.238781] [<801e8544>] kfree+0x48/0x6c
[ 292.242693] [<801e8618>] kmem_freepages+0xb0/0x124
[ 292.247471] [<801e86e0>] slab_destroy+0x48/0x7c
[ 292.251989] [<801e8778>] slabs_destroy+0x64/0x94
[ 292.256593] [<801e8b4c>] ___cache_free+0x230/0x2e8
[ 292.261372] [<801e8544>] kfree+0x48/0x6c
[ 292.265283] [<801e8618>] kmem_freepages+0xb0/0x124
[ 292.270062] [<801e86e0>] slab_destroy+0x48/0x7c
[ 292.274580] [<801e8778>] slabs_destroy+0x64/0x94
[ 292.279185] [<801e8d90>] drain_array.isra.59.constprop.61+0xb4/0xdc
[ 292.285437] [<801e8f84>] cache_reap+0x64/0x120
[ 292.289869] [<80137204>] process_one_work+0x1b8/0x25c
[ 292.294907] [<80137588>] worker_thread+0x294/0x3c4
[ 292.299684] [<8013cfe0>] kthread+0x148/0x150
[ 292.303941] [<8010506c>] ret_from_kernel_thread+0x14/0x1c
[ 292.309324] Code: 8c430008 8c450004 24440004 <aca30004> ac650000 8c430014 ac4f0004 ac580008 8d0a0014
[ 292.319053]
[ 292.320591] ---[ end trace 2a1f2afba7a08ca1 ]---
[ 292.325197] Kernel panic - not syncing: Fatal exception
[ 292.330409] Rebooting in 10 seconds..

these three kinds of message appear at random. Sometimes they will appear at the beginning of the compilation, and sometimes they will appear after tens of minutes of compilation.

Thanks and best regards!

在 2020/8/12 上午8:14, Paul Cercueil 写道:
Hi,

Changes since V1:

- the get_system_type() now will simply return the "system_type"
variable if non-NULL, and the various boards can set this pointer
should they want to set a custom value. The .get_system_type
callback that v1 added to the struct mips_machine is gone.

- the board-ingenic.c has been modified accordingly.

- patch [06/13] is new, it makes sure that the kernel's command line is
initialized properly and includes the parameters passed by the
bootloader.

- the cu1830-neo board defconfig has now been regenerated in patch
[12/13].

Cheers,
-Paul

Paul Cercueil (13):
MIPS: cpu-probe: Set Ingenic's writecombine to _CACHE_CACHABLE_WA
MIPS: cpu-probe: Mark XBurst CPU as having vtagged caches
MIPS: cpu-probe: ingenic: Fix broken BUG_ON
MIPS: Kconfig: add MIPS_GENERIC_KERNEL symbol
MIPS: generic: Allow boards to set system type
MIPS: generic: Init command line with fw_init_cmdline()
MIPS: generic: Support booting with built-in or appended DTB
MIPS: generic: Add support for zboot
MIPS: generic: Increase NR_IRQS to 256
MIPS: generic: Add support for Ingenic SoCs
MIPS: jz4740: Drop folder
MIPS: configs: Regenerate configs of Ingenic boards
MAINTAINERS: Update paths to Ingenic platform code

MAINTAINERS | 4 +-
arch/mips/Kbuild.platforms | 1 -
arch/mips/Kconfig | 43 ++++--
arch/mips/configs/ci20_defconfig | 4 +-
arch/mips/configs/cu1000-neo_defconfig | 16 +-
arch/mips/configs/cu1830-neo_defconfig | 15 +-
arch/mips/configs/gcw0_defconfig | 2 +-
arch/mips/configs/qi_lb60_defconfig | 5 +-
arch/mips/configs/rs90_defconfig | 4 +-
arch/mips/generic/Kconfig | 8 +-
arch/mips/generic/Makefile | 1 +
arch/mips/generic/Platform | 1 +
arch/mips/generic/board-ingenic.c | 108 +++++++++++++
arch/mips/generic/init.c | 11 +-
arch/mips/generic/proc.c | 5 +
arch/mips/include/asm/mach-generic/irq.h | 2 +-
.../asm/mach-jz4740/cpu-feature-overrides.h | 50 ------
arch/mips/include/asm/mach-jz4740/irq.h | 13 --
arch/mips/include/asm/pgtable-bits.h | 5 -
arch/mips/{jz4740 => ingenic}/Kconfig | 16 +-
arch/mips/jz4740/Makefile | 9 --
arch/mips/jz4740/Platform | 3 -
arch/mips/jz4740/setup.c | 145 ------------------
arch/mips/kernel/cpu-probe.c | 8 +-
24 files changed, 186 insertions(+), 293 deletions(-)
create mode 100644 arch/mips/generic/board-ingenic.c
delete mode 100644 arch/mips/include/asm/mach-jz4740/cpu-feature-overrides.h
delete mode 100644 arch/mips/include/asm/mach-jz4740/irq.h
rename arch/mips/{jz4740 => ingenic}/Kconfig (91%)
delete mode 100644 arch/mips/jz4740/Makefile
delete mode 100644 arch/mips/jz4740/Platform
delete mode 100644 arch/mips/jz4740/setup.c