Scarthgap delayed framebuffer availability colibri imx8

Dear support team,

We are about switching a custom yocto build from Kirkstone to Scarthgap release. We’ve been able to migrate successfully but still have a delay during boot until Framebuffer / dpu-core is available.

With kirkstone, the dpu-core was loaded after about 1.8s and framebuffer was available after 2.1s.

Now with scarthgap, the dpu-core is loaded after 8.3s.

I’ve also tried to use plymouth and initramfs but wasn’t able to solve the problem (because the graphic drivers also we’re not available there). I would like to solve the issues without initramfs - if possible.

Following the dmesg-output until framebuffer is available (for scarthgap). Also below a part of my dts file for configuring the display.

root@colibri-imx8x-07202877:~# uname -a
Linux colibri-imx8x-07202877 6.6.119-7.5.0-devel #1 SMP PREEMPT Mon Jan  5 09:23:13 UTC 2026 aarch64 GNU/Linux


root@colibri-imx8x-07202877:~# dmesg
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd042]
[    0.000000] Linux version 6.6.119-7.5.0-devel (oe-user@oe-host) (aarch64-tdx-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Mon Jan  5 09:23:13 UTC 2026
[    0.000000] KASLR enabled
[    0.000000] Machine model: Toradex Colibri iMX8DX on Altostar SoM Carrier Board
[    0.000000] earlycon: lpuart32 at MMIO32 0x000000005a090000 (options '')
[    0.000000] printk: bootconsole [lpuart32] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x00000000a3600000, size 416 MiB
[    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x00000000a3600000..0x00000000bd5fffff (425984 KiB) map reusable linux,cma
[    0.000000] OF: reserved mem: 0x0000000084000000..0x0000000085ffffff (32768 KiB) nomap non-reusable decoder-boot@84000000
[    0.000000] OF: reserved mem: 0x0000000086000000..0x00000000861fffff (2048 KiB) nomap non-reusable encoder-boot@86000000
[    0.000000] OF: reserved mem: 0x0000000092000000..0x00000000920fffff (1024 KiB) nomap non-reusable decoder-rpc@92000000
[    0.000000] OF: reserved mem: 0x0000000094400000..0x0000000094afffff (7168 KiB) nomap non-reusable encoder-rpc@94400000
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080200000-0x00000000bfffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x0000000083ffffff]
[    0.000000]   node   0: [mem 0x0000000084000000-0x00000000861fffff]
[    0.000000]   node   0: [mem 0x0000000086200000-0x0000000091ffffff]
[    0.000000]   node   0: [mem 0x0000000092000000-0x00000000920fffff]
[    0.000000]   node   0: [mem 0x0000000092100000-0x00000000943fffff]
[    0.000000]   node   0: [mem 0x0000000094400000-0x0000000094afffff]
[    0.000000]   node   0: [mem 0x0000000094b00000-0x00000000bfffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[    0.000000] On node 0, zone DMA: 512 pages in unavailable ranges
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.4
[    0.000000] percpu: Embedded 20 pages/cpu s42408 r8192 d31320 u81920
[    0.000000] pcpu-alloc: s42408 r8192 d31320 u81920 alloc=20*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] CPU features: kernel page table isolation forced ON by KASLR
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: root=PARTUUID=72be3b80-02 ro rootwait console=ttyLP3,115200 vt.global_cursor_default=0 splash earlycon video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off
[    0.000000] Unknown kernel command line parameters "splash", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 257544
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] software IO TLB: area num 2.
[    0.000000] software IO TLB: mapped [mem 0x000000009f600000-0x00000000a3600000] (64MB)
[    0.000000] Memory: 338096K/1046528K available (11968K kernel code, 1252K rwdata, 3788K rodata, 3712K init, 471K bss, 282448K reserved, 425984K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000]  Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 512 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GICv3: GICv3 features: 16 PPIs
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000051b00000
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer(s) running at 8.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 440795202120 ns
[    0.000001] sched_clock: 56 bits at 8MHz, resolution 125ns, wraps every 2199023255500ns
[    0.008891] Console: colour dummy device 80x25
[    0.013062] Calibrating delay loop (skipped), value calculated using timer frequency.. 16.00 BogoMIPS (lpj=32000)
[    0.023262] pid_max: default: 32768 minimum: 301
[    0.028045] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.035257] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.044964] RCU Tasks: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[    0.053458] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=2.
[    0.062766] rcu: Hierarchical SRCU implementation.
[    0.067336] rcu:     Max phase no-delay instances is 1000.
[    0.074047] EFI services will not be available.
[    0.078612] smp: Bringing up secondary CPUs ...
[    0.083660] Detected VIPT I-cache on CPU1
[    0.083741] GICv3: CPU1: found redistributor 1 region 0:0x0000000051b20000
[    0.083794] CPU1: Booted secondary processor 0x0000000001 [0x410fd042]
[    0.083921] smp: Brought up 1 node, 2 CPUs
[    0.105075] SMP: Total of 2 processors activated.
[    0.109756] CPU features: detected: 32-bit EL0 Support
[    0.114900] CPU features: detected: CRC32 instructions
[    0.120066] CPU: All CPU(s) started at EL2
[    0.124100] alternatives: applying system-wide alternatives
[    0.131145] devtmpfs: initialized
[    0.152278] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.161738] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.182231] pinctrl core: initialized pinctrl subsystem
[    0.188109] DMI not present or invalid.
[    0.192498] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.199136] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
[    0.206032] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.213773] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.222112] thermal_sys: Registered thermal governor 'step_wise'
[    0.222120] thermal_sys: Registered thermal governor 'user_space'
[    0.227793] thermal_sys: Registered thermal governor 'power_allocator'
[    0.233904] cpuidle: using governor menu
[    0.244524] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.251121] ASID allocator initialised with 32768 entries
[    0.256781] imx mu driver is registered.
[    0.260381] imx rpmsg driver is registered.
[    0.315577] /bus@56000000/dpu@56180000: Fixed dependency cycle(s) with /display@disp1
[    0.323201] /display@disp1: Fixed dependency cycle(s) with /bus@56000000/dpu@56180000
[    0.333151] /display@disp1: Fixed dependency cycle(s) with /panel-dpi
[    0.339356] /panel-dpi: Fixed dependency cycle(s) with /display@disp1
[    0.346202] Modules: 2G module region forced by RANDOMIZE_MODULE_REGION_FULL
[    0.352935] Modules: 0 pages in range for non-PLT usage
[    0.352940] Modules: 518944 pages in range for PLT usage
[    0.359047] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.370802] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
[    0.377058] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
[    0.383834] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
[    0.390092] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.396863] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    0.403120] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
[    0.409895] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
[    0.419985] iommu: Default domain type: Translated
[    0.424470] iommu: DMA domain TLB invalidation policy: strict mode
[    0.430945] SCSI subsystem initialized
[    0.434567] usbcore: registered new interface driver usbfs
[    0.439879] usbcore: registered new interface driver hub
[    0.445171] usbcore: registered new device driver usb
[    0.452893] mc: Linux media interface: v0.10
[    0.456890] videodev: Linux video capture interface: v2.00
[    0.462367] pps_core: LinuxPPS API ver. 1 registered
[    0.467251] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.476390] PTP clock support registered
[    0.480789] scmi_core: SCMI protocol bus registered
[    0.485814] Advanced Linux Sound Architecture Driver Initialized.
[    0.493462] imx-scu system-controller: NXP i.MX SCU Initialized
[    0.527997] /system-controller/pinctrl: Fixed dependency cycle(s) with /system-controller/pinctrl/lpspi2cs2grp
[    0.537701] /system-controller/pinctrl: Fixed dependency cycle(s) with /system-controller/pinctrl/hog1grp
[    0.547248] /system-controller/pinctrl: Fixed dependency cycle(s) with /system-controller/pinctrl/hog0grp
[    0.556802] /system-controller/pinctrl: Fixed dependency cycle(s) with /system-controller/pinctrl/extio0grp
[    0.566973] imx8qxp-pinctrl system-controller:pinctrl: initialized IMX pinctrl driver
[    0.578547] clocksource: Switched to clocksource arch_sys_counter
[    0.612779] NET: Registered PF_INET protocol family
[    0.617562] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.626219] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
[    0.634311] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.641988] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.649769] TCP bind hash table entries: 8192 (order: 6, 262144 bytes, linear)
[    0.657195] TCP: Hash tables configured (established 8192 bind 8192)
[    0.663365] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.669891] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[    0.677040] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.683057] RPC: Registered named UNIX socket transport module.
[    0.688657] RPC: Registered udp transport module.
[    0.693337] RPC: Registered tcp transport module.
[    0.698025] RPC: Registered tcp-with-tls transport module.
[    0.703501] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.709959] PCI: CLS 0 bytes, default 64
[    0.715572] Initialise system trusted keyrings
[    0.719927] workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.726770] NFS: Registering the id_resolver key type
[    0.731534] Key type id_resolver registered
[    0.735664] Key type id_legacy registered
[    0.739679] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.746351] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.753920] Key type asymmetric registered
[    0.757819] Asymmetric key parser 'x509' registered
[    0.762727] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    0.770072] io scheduler mq-deadline registered
[    0.774590] io scheduler kyber registered
[    0.778609] io scheduler bfq registered
[    0.914235] mxs-dma 5b810000.dma-apbh: initialized
[    0.920267] Bus freq driver module loaded
[    0.987317] Serial: 8250/16550 driver, 6 ports, IRQ sharing disabled
[    1.001186] 5a060000.serial: ttyLP0 at MMIO 0x5a060010 (irq = 57, base_baud = 5000000) is a FSL_LPUART
[    1.011636] 5a090000.serial: ttyLP3 at MMIO 0x5a090010 (irq = 58, base_baud = 5000000) is a FSL_LPUART
[    1.020984] printk: console [ttyLP3] enabled
[    1.029467] printk: bootconsole [lpuart32] disabled
[    1.091324] fec 5b040000.ethernet eth0: registered PHC device 0
[    1.102401] usbcore: registered new interface driver usb-storage
[    1.108966] i2c_dev: i2c /dev entries driver
[    1.113581] mxc-jpeg 58400000.jpegdec: choose slot 0
[    1.120248] mxc-jpeg 58400000.jpegdec: decoder device registered as /dev/video0 (81,0)
[    1.128419] mxc-jpeg 58450000.jpegenc: choose slot 0
[    1.134940] mxc-jpeg 58450000.jpegenc: encoder device registered as /dev/video1 (81,1)
[    1.152129] sdhci: Secure Digital Host Controller Interface driver
[    1.158457] sdhci: Copyright(c) Pierre Ossman
[    1.163498] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.172543] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    1.180148] usbcore: registered new interface driver usbhid
[    1.185756] usbhid: USB HID core driver
[    1.193576] hw perfevents: enabled with armv8_cortex_a35 PMU driver, 7 counters available
[    1.203155] mmc0: SDHCI controller on 5b010000.mmc [5b010000.mmc] using ADMA
[    1.209713] NET: Registered PF_PACKET protocol family
[    1.215408] Key type dns_resolver registered
[    1.228664] Loading compiled-in X.509 certificates
[    1.254471] mmc0: new HS400 MMC card at address 0001
[    1.260637] mmcblk0: mmc0:0001 Q2J54A 3.59 GiB
[    1.267657] gpio gpiochip0: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.276696]  mmcblk0: p1 p2 p3
[    1.280854] gpio gpiochip1: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.280984] mmcblk0boot0: mmc0:0001 Q2J54A 16.0 MiB
[    1.291975] gpio gpiochip2: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.304613] mmcblk0boot1: mmc0:0001 Q2J54A 16.0 MiB
[    1.305815] gpio gpiochip3: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.310883] mmcblk0rpmb: mmc0:0001 Q2J54A 512 KiB, chardev (241:0)
[    1.320744] gpio gpiochip4: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.335805] gpio gpiochip5: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.347007] gpio gpiochip6: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.358116] gpio gpiochip7: Static allocation of GPIO base is deprecated, use dynamic allocation.
[    1.370638] imx-lpi2c 5a800000.i2c: use pio mode
[    1.376782] i2c i2c-0: LPI2C adapter registered
[    1.382883] imx-lpi2c 5a810000.i2c: use pio mode
[    1.388336] rtc-ds1307: probe of 1-0068 failed with error -5
[    1.394078] i2c i2c-1: LPI2C adapter registered
[    1.415886] sdhci-esdhc-imx 5b020000.mmc: Got CD GPIO
[    1.432457] clk: Disabling unused clocks
[    1.441450]  mu_a1: failed to power off resource 214 ret -22
[    1.442522] ALSA device list:
[    1.450123]   No soundcards found.
[    1.451386] mmc1: SDHCI controller on 5b020000.mmc [5b020000.mmc] using ADMA
[    1.468789] EXT4-fs (mmcblk0p2): mounted filesystem 3d0c9a2d-b8a0-421c-9c72-aa7949fc1cb7 ro with ordered data mode. Quota mode: disabled.
[    1.481258] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    1.491418] devtmpfs: mounted
[    1.495829] Freeing unused kernel memory: 3712K
[    1.501078] Run /sbin/init as init process
[    1.505297]   with arguments:
[    1.505351]     /sbin/init
[    1.505383]     splash
[    1.505390]   with environment:
[    1.505396]     HOME=/
[    1.505402]     TERM=linux
[    1.665812] systemd[1]: System time before build time, advancing clock.
[    1.690974] systemd[1]: Inserted module 'autofs4'
[    1.725268] NET: Registered PF_INET6 protocol family
[    1.732107] Segment Routing with IPv6
[    1.735888] In-situ OAM (IOAM) with IPv6
[    1.775190] systemd[1]: systemd 255.21^ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
[    1.807361] systemd[1]: Detected architecture arm64.
[    1.836325] systemd[1]: Hostname set to <colibri-imx8x-07202877>.
[    2.475577] systemd[1]: Queued start job for default target Graphical Interface.
[    2.512083] systemd[1]: Created slice Slice /system/getty.
[    2.537849] systemd[1]: Created slice Slice /system/modprobe.
[    2.561066] systemd[1]: Created slice Slice /system/serial-getty.
[    2.584768] systemd[1]: Created slice User and Session Slice.
[    2.607171] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    2.630795] systemd[1]: Expecting device /dev/mmcblk0p3...
[    2.650649] systemd[1]: Expecting device /dev/ttyLP3...
[    2.670998] systemd[1]: Reached target Remote File Systems.
[    2.694766] systemd[1]: Reached target Slice Units.
[    2.714788] systemd[1]: Reached target Swaps.
[    2.781856] systemd[1]: Listening on RPCbind Server Activation Socket.
[    2.806879] systemd[1]: Reached target RPC Port Mapper.
[    2.828997] systemd[1]: Listening on Syslog Socket.
[    2.851402] systemd[1]: Listening on initctl Compatibility Named Pipe.
[    2.883231] systemd[1]: Journal Audit Socket was skipped because of an unmet condition check (ConditionSecurity=audit).
[    2.895849] systemd[1]: Listening on Journal Socket (/dev/log).
[    2.919766] systemd[1]: Listening on Journal Socket.
[    2.944002] systemd[1]: Listening on Network Service Netlink Socket.
[    2.967927] systemd[1]: Listening on udev Control Socket.
[    2.991552] systemd[1]: Listening on udev Kernel Socket.
[    3.015633] systemd[1]: Listening on User Database Manager Socket.
[    3.067001] systemd[1]: Mounting Huge Pages File System...
[    3.108412] systemd[1]: Mounting POSIX Message Queue File System...
[    3.123478] systemd[1]: Mounting Kernel Debug File System...
[    3.151326] systemd[1]: Kernel Trace File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/tracing).
[    3.169690] systemd[1]: Mounting Temporary Directory /tmp...
[    3.199509] systemd[1]: Starting Create List of Static Device Nodes...
[    3.255246] systemd[1]: Starting Load Kernel Module configfs...
[    3.303402] systemd[1]: Starting Load Kernel Module drm...
[    3.314903] systemd[1]: Starting Load Kernel Module fuse...
[    3.367397] systemd[1]: Starting RPC Bind...
[    3.387552] systemd[1]: Starting File System Check on Root Device...
[    3.395966] fuse: init (API version 7.39)
[    3.441042] systemd[1]: Starting Journal Service...
[    3.507552] systemd[1]: Starting Load Kernel Modules...
[    3.543876] systemd[1]: Starting Generate network units from Kernel command line...
[    3.567481] systemd-journald[107]: Collecting audit messages is disabled.
[    3.576569] galcore: loading out-of-tree module taints kernel.
[    3.593564] module built by  at Fri Apr 17 08:42:05 UTC 2026
[    3.602149] Galcore version 6.4.11.p2.745085
[    3.619686] systemd[1]: Starting Coldplug All udev Devices...
[    3.687546] systemd[1]: Starting Virtual Console Setup...
[    3.752895] systemd[1]: Started RPC Bind.
[    3.771969] systemd[1]: Started Journal Service.
[    3.834125] [drm] Initialized vivante 1.0.0 20170808 for 80000000.imx8_gpu0_ss on minor 0
[    4.185437] EXT4-fs (mmcblk0p2): re-mounted 3d0c9a2d-b8a0-421c-9c72-aa7949fc1cb7 r/w.
[    4.361454] systemd-journald[107]: Received client request to flush runtime journal.
[    5.734365] fec 5b040000.ethernet end0: renamed from eth0
[    7.228958] EXT4-fs (mmcblk0p3): mounted filesystem 8e200f00-69d3-434e-92d0-087910153976 r/w with ordered data mode. Quota mode: disabled.
[    7.650560] random: crng init done
[    8.155717] caam 31400000.crypto: device ID = 0x0a16040000000100 (Era 9)
[    8.185375] caam 31400000.crypto: job rings = 2, qi = 0
[    8.194612] amphion-vpu-core 2d040000.vpu-core: [0] = decoder
[    8.299729] amphion-vpu-core 2d050000.vpu-core: [1] = encoder
[    8.319417] dpu-core 56180000.dpu: driver probed
[    8.487871] imx8_media_dev: module is from the staging directory, the quality is unknown, you have been warned.
[    8.731346] CAN device driver interface
[    8.789899] fxl6408 0-0043: No cache defaults, reading back from HW
[    8.895257] sgtl5000 0-000a: sgtl5000 revision 0x11
[    8.910006] mxs_phy 5b100000.usbphy: supply phy-3p0 not found, using dummy regulator
[    9.080556] usb3503 0-0008: switched to HUB mode
[    9.110565] usb3503 0-0008: usb3503_probe: probed in hub mode
[    9.152033] imx8q-pcie-phy 5f1a0000.pcie-phy: phy impedance ratio is not specified.
[    9.178963] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    9.198969] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops 0xffffffea7a07f150)
[    9.270880] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops 0xffffffea7a07ed58)
[    9.352720] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops 0xffffffea7a07ed58)
[    9.357399] panel-simple panel-dpi: supply power not found, using dummy regulator
[    9.411610] imx-drm display-subsystem: bound display@disp1 (ops imx_lmuxd_ops [lcdif_mux_display])
[    9.436215] fsl-se secure-enclave-0: i.MX secure-enclave: she0 interface to firmware, configured.
[    9.456101] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4
[    9.483109] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[    9.508868] imx6q-pcie 5f010000.pcie: host bridge /bus@5f000000/pcie@5f010000 ranges:
[    9.520078] fsl-se secure-envlave-1: Fail to read FIPS fuse
[    9.522427] nvmem imx-scu-ocotp0: cell mac raw len 6 unaligned to nvmem word size 4
[    9.536363] fsl-se secure-envlave-1: Failed to fetch SoC Info.
[    9.554817] fsl-se secure-envlave-1: failed[-EPROBE_DEFER] to fetch SoC Info
[    9.556947] imx6q-pcie 5f010000.pcie:       IO 0x007ff80000..0x007ff8ffff -> 0x0000000000
[    9.572899] Console: switching to colour frame buffer device 160x50
[    9.584517] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device

Here is the code from device-tree file:

&{/} {
	panel_dpi: panel-dpi {
		compatible = "panel-dpi";
		backlight = <&backlight>;
		data-mapping = "rgb24";
		width-mm = <261>;
		height-mm = <163>;
		power-supply = <&reg_module_3v3>;

		panel-timing {
			clock-frequency = <83500000>;
			hactive = <1280>;
			vactive = <800>;
			hsync-len = <128>;
			hfront-porch = <72>;
			hback-porch = <200>;
			vsync-len = <6>;
			vfront-porch = <3>;
			vback-porch = <22>;
			pixelclk-active = <1>;
		};

		port {
			lcd_panel_in: endpoint {
				remote-endpoint = <&display_lcdfif_out>;
			};
		};
	};
};	

&display_lcdif {
	#address-cells = <1>;
	#size-cells = <0>;
	fsl,interface-pix-fmt = "rgb24";
	status = "okay";

	port@0 {
		reg = <0>;

		lcd_display_in: endpoint {
			remote-endpoint = <&dpu_disp1_lcdif>;
		};
	};

	port@1 {
		reg = <1>;

		display_lcdfif_out: endpoint {
			remote-endpoint = <&lcd_panel_in>;
		};
	};
};

&dpu1 {
	#address-cells = <1>;
	#size-cells = <0>;

	port@1 {
		reg = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		dpu_disp1_lcdif: endpoint@3 {
			reg = <3>;
			remote-endpoint = <&lcd_display_in>;
		};
	};
};

Thanks,
Marco

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I understand you’re experiencing a significant delay in framebuffer availability when migrating from Kirkstone to Scarthgap on your Colibri iMX8X. The delay increasing from ~2.1s to ~8.3s for dpu-core loading is indeed concerning for applications requiring early display output.

Analysis of Your Setup

Your device tree configuration for the Colibri iMX8X with parallel RGB display appears correct based on the official documentation (1). The i.MX 8X SoC has one single display controller with two independent outputs which may be routed to two LVDS/DSI PHYs as well as parallel RGB (1).

Potential Solutions

1. Device Tree Overlays Approach

Since BSP 5.x and newer, most display interfaces don’t enable in the Linux Device Tree by default (1). You should consider using Device Tree Overlays (DTO) which were introduced in BSP 5 (2). This approach allows you to modify the device tree without recompiling the complete device tree (2).

For your parallel RGB setup, you can:

  • Check if there are pre-built overlays available on your boot partition (2):
$ ls /boot/overlays
  • Enable overlays by editing the overlays.txt file on the boot partition (2):
fdt_overlays=colibri-imx8x_parallel-rgb_overlay.dtbo

2. Kernel Command Line Optimization

Your current kernel command line includes display-related parameters. You might want to review these settings:

video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off

3. Early Display Configuration

For earlier framebuffer availability, consider configuring the framebuffer console to show during boot (3). The framebuffer console is initialized by the kernel early during boot up and can be used to show content rather than console messages (3).

4. Module Loading Order

The delay appears related to the DPU core loading sequence. You might want to investigate if certain modules can be loaded earlier or if there are dependency issues causing the delay in Scarthgap.

Next Steps

To provide more specific guidance, could you please clarify:

  1. Which exact version of Scarthgap BSP are you using? (e.g., BSP 7.0.0, 7.1.0)
  2. Are you using any custom device tree overlays beyond the configuration you’ve shown?
  3. What carrier board are you using with the Colibri iMX8X?

You can get detailed system information using the tdx-info command as documented at Getting Device Information with Tdx-Info | Toradex Developer Center.

The migration from Kirkstone to Scarthgap involves significant changes in the display subsystem, and the delay you’re experiencing might be related to changes in driver initialization order or dependency resolution in the newer BSP version.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

We are using BSP 7.5.0

Here is the output of tdx-info:

tdx-info

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.119-7.5.0-devel #1 SMP PREEMPT Mon Jan  5 09:23:13 UTC 2026
Kernel command line:      root=PARTUUID=72be3b80-02 ro rootwait console=ttyLP3,115200 vt.global_cursor_default=0 splash earlycon video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off
Distro name:              NAME="Altostar Linux with Wayland"
Distro version:           VERSION_ID=7.5.0-devel-20260312142421-build.0
Distro variant:           -
Hostname:                 colibri-imx8x-07202877
------------------------------------------------------------

Hardware info
------------------------------------------------------------
HW model:                 Toradex Colibri iMX8DX on Altostar SoM Carrier Board
Toradex version:          0052 V1.0D
Serial number:            07202877
Processor arch:           aarch64
------------------------------------------------------------

Regarding device-tree / hardware - we are using a custom hardware and a device-tree which is based on the dts file for eval-v3 board with some custom additions. We currently do not use overlays but instead provide an own complete dts file.

Thank you for providing the additional details. You’re using BSP 7.5.0 with a Colibri iMX8DX (PID 0052) on a custom carrier board. The delay in framebuffer availability from ~2.1s to ~8.3s is significant and likely related to changes in the display subsystem between Kirkstone and Scarthgap.

Analysis of Your Setup

Your device tree configuration looks correct for the Colibri iMX8X parallel RGB interface (1). The i.MX 8X SoC has one single display controller with two independent outputs which may be routed to two LVDS/DSI PHYs as well as parallel RGB (1). On the Colibri iMX8X, only the parallel RGB is available on the SODIMM edge connector (1).

Potential Solutions for BSP 7.5.0

1. Device Tree Optimization

Since you’re using a complete DTS file instead of overlays, ensure your device tree follows the current BSP 7.5.0 structure. The display configuration should include proper status settings:

&display_lcdif {
    status = "okay";
};

&panel_dpi {
    status = "okay";
};

(1)

2. Early Console Configuration

For earlier display availability, consider configuring the framebuffer console. The framebuffer console is initialized by the kernel early during boot up and can be used to show content rather than console messages (2).

3. Module Loading Investigation

The dmesg shows the dpu-core loading at 8.3s, which is significantly delayed. Check if there are dependency issues in your custom DTS that might be causing this delay. Look for:

  • Missing clock configurations
  • Power domain dependencies
  • GPIO configurations for display enable signals

4. Kernel Command Line Review

Your current kernel command line disables several framebuffers:

video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off

For the Colibri iMX8X with parallel RGB, you might want to experiment with different framebuffer configurations or remove these parameters to see if they’re causing initialization delays.

Debugging Steps

  1. Compare device trees: Check the differences between your Kirkstone and Scarthgap device trees, particularly around display and power management nodes.

  2. Enable early printk: Add more verbose logging to identify what’s causing the 6+ second delay before dpu-core initialization.

  3. Check power domains: Ensure all necessary power domains for the display subsystem are properly configured and enabled early in the boot process.

  4. Review clock dependencies: Verify that all required clocks for the display pipeline are available when needed.

The significant delay suggests there might be a dependency or initialization order issue specific to the Scarthgap BSP that wasn’t present in Kirkstone. Since you’re using a custom carrier board, double-check that all display-related GPIO configurations (particularly backlight enable and power supplies) are properly defined in your device tree.

Best regards, Toradex AI Assistant.


Did you like my answer? :+1: :-1:

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

Dear @mbehr,

Thank you for contacting us.
Do you see the same problem on our Scarthgap reference multimedia image?

Important line:

[    8.319417] dpu-core 56180000.dpu: driver probed

Best regards,
Collin