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

Dear collin,

I get the same issue with the recent tdx-reference-image

root@colibri-imx8x-07202950:~# dmesg | grep -aiP "dpu|fb|deferred|display"
[    9.205829] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops 0xffffffd54ea7f0c8)
[    9.312759] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops 0xffffffd54ea7ecd0)
[    9.372784] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops 0xffffffd54ea7ecd0)
[    9.432497] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[    9.456176] imx-drm display-subsystem: [drm] Cannot find any crtc or sizes
[    9.504319] dpu-core 56180000.dpu: driver probed
[   10.214866] [drm] Initialized mxsfb-drm 1.0.0 20160824 for 5a180000.lcdif on minor 2
[   10.392796] mxsfb 5a180000.lcdif: [drm] fb0: mxsfb-drmdrmfb frame buffer device
root@colibri-imx8x-07202950:~# tdx-info

Software summary
------------------------------------------------------------
Bootloader:               U-Boot
Kernel version:           6.6.129-7.6.0 #1 SMP PREEMPT Thu Mar 26 15:16:22 UTC 2026
Kernel command line:      root=PARTUUID=d5dc4635-02 ro rootwait console=tty1 console=ttyLP3,115200
Distro name:              NAME="TDX Wayland with XWayland"
Distro version:           VERSION_ID=7.6.0-build.14
Distro variant:           -
Hostname:                 colibri-imx8x-07202950
------------------------------------------------------------

Hardware info
------------------------------------------------------------
HW model:                 Toradex Colibri iMX8DX on Colibri Evaluation Board V3
Toradex version:          0052 V1.0D
Serial number:            07202950
Processor arch:           aarch64
------------------------------------------------------------

Thanks

Marco

Dear @mbehr ,

Thank you for checking. In the meantime we have had a look into the config files. With the delay of the DPU this could be the source of the issue at hand. Looking at the differences, it could be due to the panel driver.

~/projects/toradex/toradex_6.6.x-imx$ curl https://artifacts.toradex.com:443/artifactory/tdxref-oe-prod-frankfurt/scarthgap-7.x.y/release/14/colibri-imx8x/tdx-xwayland/tdx-reference-multimedia-image/oedeploy/kernel-config |grep -C4 PANEL_SIMPLE
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
  0      0   0      0   0      0      0      0                              0# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set
# CONFIG_DRM_PANEL_DSI_CM is not set
CONFIG_DRM_PANEL_LVDS=m
CONFIG_DRM_PANEL_SIMPLE=m
CONFIG_DRM_PANEL_EDP=m
# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
100 208.6k 100 208.6k   0      0  1.33M      0                              0
~/projects/toradex/toradex_6.6.x-imx$ curl https://artifacts.toradex.com:443/artifactory/tdxref-oe-prod-frankfurt/kirkstone-6.x.y/release/21/colibri-imx8x/tdx-xwayland/tdx-reference-multimedia-image/oedeploy/kernel-config |grep -C4 PANEL_SIMPLE
  % Total    % Received % Xferd  Average Speed  Time    Time    Time   Current
                                 Dload  Upload  Total   Spent   Left   Speed
  0      0   0      0   0      0      0      0                              0# CONFIG_DRM_PANEL_BOE_HIMAX8279D is not set
CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
# CONFIG_DRM_PANEL_DSI_CM is not set
CONFIG_DRM_PANEL_LVDS=m
CONFIG_DRM_PANEL_SIMPLE=y
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
100 199.0k 100 199.0k   0      0  1.12M      0                              0

With the old BSP PANEL_SIMPLE was built in, whilst with the new one it is a module. Potentially the driver is now waiting for the panel to be up. You should be able to test this quite easily, by setting the following in the kernel config:

CONFIG_DRM_PANEL_SIMPLE=y

Best regards,
Collin

Hi Collin,

unfortunately that didn’t solve the delay. I also set more drivers to builtin but it didn’t change anything.

CONFIG_DRM_PANEL_SIMPLE=y
CONFIG_PWM_IMX27=y
CONFIG_DRM_MXSFB=y
CONFIG_DRM_IMX95_DPU=y
CONFIG_DRM_IMX8QXP_PIXEL_COMBINER=y

after booting:

~# dmesg | grep -aiP "dpu|display|fb|module"
[    0.097677] /bus@56000000/dpu@56180000: Fixed dependency cycle(s) with /display@disp1
[    0.097781] /display@disp1: Fixed dependency cycle(s) with /bus@56000000/dpu@56180000
[    0.099992] /display@disp1: Fixed dependency cycle(s) with /panel-dpi
[    0.100090] /panel-dpi: Fixed dependency cycle(s) with /display@disp1
[    0.100686] Modules: 2G module region forced by RANDOMIZE_MODULE_REGION_FULL
[    0.100709] Modules: 0 pages in range for non-PLT usage
[    0.100713] Modules: 518928 pages in range for PLT usage
[    0.177991] RPC: Registered named UNIX socket transport module.
[    0.177997] RPC: Registered udp transport module.
[    0.178001] RPC: Registered tcp transport module.
[    0.178005] RPC: Registered tcp-with-tls transport module.
[    0.178008] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.315705] Bus freq driver module loaded
[    2.384148] systemd[1]: Inserted module 'autofs4'
[    4.003594] systemd[1]: Starting Load Kernel Module configfs...
[    4.051061] systemd[1]: Starting Load Kernel Module drm...
[    4.083324] systemd[1]: Starting Load Kernel Module fuse...
[    4.267162] systemd[1]: Starting Load Kernel Modules...
[    4.404605] galcore: loading out-of-tree module taints kernel.
[    4.446720] module built by  at Thu Mar 12 18:57:54 UTC 2026
[    8.755382] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops 0xfffffff05ea7f7f0)
[    8.766513] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops 0xfffffff05ea7f3f8)
[    8.790474] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops 0xfffffff05ea7f3f8)
[    8.816736] imx-drm display-subsystem: bound display@disp1 (ops 0xfffffff05ea7e688)
[    8.941039] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[    8.968279] imx8_media_dev: module is from the staging directory, the quality is unknown, you have been warned.
[    9.255502] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device
[    9.346703] dpu-core 56180000.dpu: driver probed
[    9.847502] Error: Driver 'imx-lcdif-mux-display' is already registered, aborting...


~# lsmod
Module                  Size  Used by
can_raw                20480  1
can                    20480  1 can_raw
cfg80211              376832  0
cdc_acm                36864  2
bluetooth             696320  2
ecdh_generic           12288  1 bluetooth
ecc                    28672  1 ecdh_generic
rfkill                 20480  3 bluetooth,cfg80211
hid_multitouch         28672  0
onboard_usb_hub        16384  0
nls_iso8859_1          12288  1
nls_cp437              16384  1
evdev                  20480  2
cdns3                  45056  0
cdns_usb_common        20480  1 cdns3
mcp251x                24576  0
caam_jr               163840  0
caamkeyblob_desc       16384  1 caam_jr
caamhash_desc          12288  1 caam_jr
caamalg_desc           36864  1 caam_jr
crypto_engine          12288  1 caam_jr
authenc                12288  1 caam_jr
libdes                 20480  1 caam_jr
crypto_null            12288  1 authenc
aes_ce_cipher          12288  0
ghash_ce               16384  0
gf128mul               12288  1 ghash_ce
libaes                 12288  3 aes_ce_cipher,bluetooth,ghash_ce
sha2_ce                12288  0
sha256_arm64           20480  1 sha2_ce
sha1_ce                12288  0
snd_soc_simple_card    20480  0
sha1_generic           12288  1 sha1_ce
nvmem_imx_ocotp_scu    12288  1
imx_sc_thermal         12288  0
snd_soc_simple_card_utils    24576  1 snd_soc_simple_card
sec_enclave            53248  0
rng_core               16384  2 sec_enclave,caam_jr
gpio_keys              16384  0
phy_fsl_imx8q_pcie     12288  0
ci_hdrc_imx            24576  0
fsl_imx8_ddr_perf      28672  0
ci_hdrc                57344  1 ci_hdrc_imx
ulpi                   16384  1 ci_hdrc
ehci_hcd               81920  1 ci_hdrc
phy_mxs_usb            20480  1
roles                  12288  2 cdns_usb_common,ci_hdrc
usbmisc_imx            24576  1 ci_hdrc_imx
cdns3_imx              16384  0
phy_cadence_salvo      12288  1
flexcan                36864  0
gpio_fxl6408           12288  4
gpio_regmap            12288  1 gpio_fxl6408
can_dev                40960  2 mcp251x,flexcan
usb3503                12288  0
imx8qxp_adc            12288  0
snd_soc_sgtl5000       36864  1
snd_soc_fsl_sai        36864  2
snd_soc_fsl_utils      12288  1 snd_soc_fsl_sai
spi_fsl_lpspi          20480  0
imx_pcm_dma            12288  1 snd_soc_fsl_sai
imx8_media_dev         20480  0
irq_imx_irqsteer       12288  0
amphion_vpu           114688  0
caam                   28672  1 caam_jr
error                  20480  5 caamalg_desc,caamkeyblob_desc,caamhash_desc,caam,caam_jr
galcore               413696  13
fuse                  122880  1
ipv6                  425984  34
autofs4                40960  0

Hi @mbehr,

I’m quickly jumping in to help since @collin.tx is out of the office at the moment. I just checked the configs enabled on BSP 7.6.1 here on a colibri iMX8X module. I see these two relevant configs also loaded as modules:

CONFIG_IMX_IRQSTEER=y
CONFIG_DRM_IMX_LCDIF_MUX_DISPLAY=m
CONFIG_BACKLIGHT_PWM=m

As a quick test without rebuilding the kernel, you can force load these modules early on runtime:

  cat >/etc/modules-load.d/early-display.conf <<'EOF'
  irq-imx-irqsteer
  lcdif-mux-display
  panel-simple
  EOF

If this moved the DPU/display timestamps forward, then you can test setting the above configs to =y, rebuilding the kernel and applying it.