[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <87v7l03pqe.fsf@osv.gnss.ru>
Date: Tue, 30 Sep 2025 18:49:13 +0300
From: Sergey Organov <sorganov@...il.com>
To: linux-kernel@...r.kernel.org
Cc: Ulf Hansson <ulf.hansson@...aro.org>,
Shawn Guo <shawnguo@...nel.org>,
Fabio Estevam <festevam@...il.com>,
"Rob Herring (Arm)" <robh@...nel.org>,
Anson Huang <Anson.Huang@....com>
Subject: ARM iMX6sx board fails to boot with kernel 6.17
Hello,
I'm looking for help with the following issue.
I'm trying to upgrade kernel on my custom iMX6sx board from very old
4.9.146 to resent 6.17. The board has eMMC connected to usdhc4, and
u-boot happily starts kernel from eMMC. The kernel boot sequence,
however, hangs waiting for root file-system as it doesn't see eMMC.
I figured that if I disable DTS "gpc/pgc/pd_pu" node in imx6sx.dtsi one
way or another, the board starts to boot, so it seems that with default
configuration the kernel power or clock management renders either usdhc4
or eMMC inactive.
Two methods to effectively disable "gpc/pgc/pd_pu" I've used to
work-around the problem are:
modified arch/arm/boot/dts/nxp/imx/imx6sx.dtsi
@@ -800,7 +800,7 @@ gpc: gpc@...c000 {
interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&intc>;
clocks = <&clks IMX6SX_CLK_IPG>;
- clock-names = "ipg";
+ /*clock-names = "ipg";*/
pgc {
#address-cells = <1>;
or:
modified drivers/pmdomain/imx/gpc.c
@@ -311,7 +311,7 @@ static const struct imx_gpc_dt_data imx6sl_dt_data = {
};
static const struct imx_gpc_dt_data imx6sx_dt_data = {
- .num_domains = 4,
+ .num_domains = 1,
.err009619_present = false,
.err006287_present = false,
};
and any of the two gives kernel that boots.
I looked at DTS files in the kernel that use imx6sx.dtsi as well, but
didn't find anything specific that'd help me with the problem.
I'm not sure how to debug this further and actually fix the issue. Any
ideas, please?
Below is success boot log. Failing boot hangs at or sometimes slightly
above the "Waiting for root device /dev/mmcblk0p2..." line, and has
additional
"imx-gpc 20dc000.gpc: probe with driver imx-gpc failed with error -2"
diagnostic due to my hack to disable "gpc" DTS node by commenting-out
"ipg" clock.
The only suspect thing I see in the log is:
/soc/bus@...0000/clock-controller@...4000: Fixed dependency cycle(s) with /soc/bus@...0000/gpc@...c000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
/soc/bus@...0000/clock-controller@...4000: Fixed dependency cycle(s) with /soc/bus@...0000/gpc@...c000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
and I'm not sure if it's relevant or expected.
<boot log>
Booting Linux on physical CPU 0x0
Linux version 6.17.0-javad-4 (osv@...man) (arm-javad-linux-gnueabihf-gcc.br_real (Buildroot 2024.11-1178-g8f0639fe6f) 14.2.0, GNU ld (GNU Binutils) 2.43.1) #34 PREEMPT Tue Sep 30 01:23:27 MSK 2025
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt: Machine model: JAVAD TRE-3S
Memory policy: Data cache writeback
Zone ranges:
Normal [mem 0x0000000080000000-0x00000000bfffffff]
HighMem empty
Movable zone start for each node
Early memory node ranges
node 0: [mem 0x0000000080000000-0x00000000bfffffff]
Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
OF: reserved mem: Reserved memory: No reserved-memory node in the DT
CPU: All CPU(s) started in SVC mode.
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw panic=30 oops=panic
printk: log buffer data + meta data: 262144 + 819200 = 1081344 bytes
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
Built 1 zonelists, mobility grouping on. Total pages: 262144
mem auto-init: stack:all(zero), heap alloc:off, heap free:off
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
rcu: Preemptible hierarchical RCU implementation.
rcu: RCU event tracing is enabled.
rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 16 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 256 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76430001
rcu: srcu_init: Setting srcu_struct sizes based on contention.
Switching to timer-based delay loop, resolution 333ns
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=3000)
CPU: Testing write buffer coherency: ok
CPU0: Spectre v2: using BPIALL workaround
pid_max: default: 32768 minimum: 301
LSM: initializing lsm=capability
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
Setting up static identity map for 0x80100000 - 0x80100060
rcu: Hierarchical SRCU implementation.
rcu: Max phase no-delay instances is 400.
Memory: 1023036K/1048576K available (9216K kernel code, 1039K rwdata, 2496K rodata, 1024K init, 348K bss, 23868K reserved, 0K cma-reserved, 0K highmem)
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
posixtimers hash table entries: 512 (order: -1, 2048 bytes, linear)
futex hash table entries: 256 (4096 bytes on 1 NUMA nodes, total 4 KiB, linear).
pinctrl core: initialized pinctrl subsystem
NET: Registered PF_NETLINK/PF_ROUTE protocol family
DMA: preallocated 256 KiB pool for atomic coherent allocations
thermal_sys: Registered thermal governor 'step_wise'
cpuidle: using governor menu
/soc/bus@...0000/clock-controller@...4000: Fixed dependency cycle(s) with /soc/bus@...0000/gpc@...c000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
/soc/bus@...0000/clock-controller@...4000: Fixed dependency cycle(s) with /soc/bus@...0000/gpc@...c000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
/soc/bus@...0000/gpc@...c000: Fixed dependency cycle(s) with /soc/bus@...0000/clock-controller@...4000
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
imx6sx-pinctrl 20e0000.pinctrl: initialized IMX pinctrl driver
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
usb_phy_generic usbphynop1: dummy supplies not allowed for exclusive requests (id=vbus)
i2c i2c-0: IMX I2C adapter registered
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@...ux.it>
PTP clock support registered
clocksource: Switched to clocksource mxc_timer1
VFS: Disk quotas dquot_6.6.0
VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
NET: Registered PF_INET protocol family
IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
NET: Registered PF_UNIX/PF_LOCAL protocol family
Initialise system trusted keyrings
workingset: timestamp_bits=30 max_order=18 bucket_order=0
squashfs: version 4.0 (2009/01/31) Phillip Lougher
fuse: init (API version 7.44)
Key type asymmetric registered
Asymmetric key parser 'x509' registered
io scheduler mq-deadline registered
io scheduler kyber registered
io scheduler bfq registered
imx-sdma 20ec000.dma-controller: external firmware not found, using ROM firmware
mxs-dma 1804000.dma-controller: initialized
imx-gpc 20dc000.gpc: probe with driver imx-gpc failed with error -2
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 19, base_baud = 1500000) is a IMX
printk: console [ttymxc0] enabled
21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 20, base_baud = 1500000) is a IMX
21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 21, base_baud = 1500000) is a IMX
21f0000.serial: ttymxc3 at MMIO 0x21f0000 (irq = 22, base_baud = 1500000) is a IMX
21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 23, base_baud = 1500000) is a IMX
22a0000.serial: ttymxc5 at MMIO 0x22a0000 (irq = 24, base_baud = 1500000) is a IMX
brd: module loaded
loop: module loaded
tun: Universal TUN/TAP device driver, 1.6
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usb_ehset_test
snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc0
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 2025-09-30T13:57:32 UTC (1759240652)
i2c_dev: i2c /dev entries driver
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 (8000003f) counters available
NET: Registered PF_LLC protocol family
xt_time: kernel timezone is -0000
NET: Registered PF_INET6 protocol family
Segment Routing with IPv6
In-situ OAM (IOAM) with IPv6
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered PF_PACKET protocol family
Bridge firewalling registered
mmc0: SDHCI controller on 219c000.mmc [219c000.mmc] using ADMA
Loading compiled-in X.509 certificates
clk: Disabling unused clocks
PM: genpd: Disabling unused power domains
check access for rdinit=/init failed: -2, ignoring
Waiting for root device /dev/mmcblk0p2...
mmc0: new high speed DDR MMC card at address 0001
mmcblk0: mmc0:0001 IX2964 58.3 GiB
mmcblk0: p1 p2 p3 p4 < p5 p6 >
mmcblk0boot0: mmc0:0001 IX2964 4.00 MiB
mmcblk0boot1: mmc0:0001 IX2964 4.00 MiB
mmcblk0rpmb: mmc0:0001 IX2964 4.00 MiB, chardev (246:0)
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem 2562e8d0-a3bb-46ec-ba28-e5ed2f5fc824 r/w with ordered data mode. Quota mode: none.
VFS: Mounted root (ext4 filesystem) on device 179:2.
devtmpfs: mounted
Freeing unused kernel image (initmem) memory: 1024K
Run /sbin/init as init process
</boot log>
--
Sergey Organov
Powered by blists - more mailing lists