evidence · 3.0 KiB

mainline-display-api-compile.md

Committed at docs/evidence/mainline-display-api-compile.md. This is what grounds the requirements that cite it.

Open raw source

Mainline DRM forward-port API compile check

Result

On 2026-09-29, the copied Canaan DRM/DSI, universal panel, and LT9611 objects compiled and linked as external modules against prepared Linux 7.3.0-rc5 headers. The source pin in nix/kernel-mainline-src.nix is 72d3fcf802c45d00b300f25b848a93c3a2bd7c7e (v7.3-rc5). This is a narrow object/config check; the full candidate kernel, DTB, and boot-files builds are separately proven by docs/evidence/mainline-display-nix-build.md. No part of these host checks proves physical probe or display/touch operation.

Reproducible check

tools/mainline-display-object-check.sh stages the DRM sources and external-module Makefiles from nix/patches/mainline/drm/, copies the prepared kernel build output into this checkout’s ignored .scratch/ directory, and invokes Kbuild. The successful run used the matching outputs from the full build and held the shared build slot:

flock /tmp/k230-nix-build.lock bash -c \
  'MAINLINE_KERNEL_DEV=/nix/store/2awaim3qqiwrmqi4gbg9fghwsw9c8r6h-linux-riscv64-unknown-linux-gnu-7.3.0-rc5-dev/lib/modules/7.3.0-rc5 \
   MAINLINE_KERNEL_SRC=/nix/store/vzv8v6pfxa2yxnzhiywmjwmp8aykmlj3-linux-mainline-k230-drm-src \
   tools/mainline-display-object-check.sh'

The script applies the candidate DRM and input symbols to a copy of the prepared .config, then runs olddefconfig against the patched source. Effective config included DRM=y, DRM_CANAAN=y, DRM_CANAAN_DSI=y, DRM_PANEL_CANAAN_UNIVERSAL=y, DRM_LONTIUM_LT9611=y, DRM_CLIENT_SETUP=y, DRM_FBDEV_EMULATION=y, DRM_MIPI_DSI=y, DRM_DISPLAY_HELPER=y, DRM_BRIDGE_CONNECTOR=y, INPUT_TOUCHSCREEN=y, and TOUCHSCREEN_GOODIX_BERLIN_I2C=y. The complete stdout/stderr log is docs/evidence/mainline-display-api-compile.log.

The first complete-kernel attempt reached the final vmlinux link and found that drm_bridge_connector_init was not linked. The pinned source builds this helper only with CONFIG_DRM_BRIDGE_CONNECTOR inside DRM_DISPLAY_HELPER; Canaan Kconfig now selects both, following upstream bridge-driver practice. The corrected external-module check resolved both symbols to y and emitted no unresolved drm_bridge_connector_init warning. The complete in-tree build then succeeded. Both attempts are kept in docs/evidence/mainline-display-full-build-failure.log and docs/evidence/mainline-display-full-build.log.

Output and limits

Kbuild produced canaan-drm.ko, canaan_dsi.ko, panel-canaan-universal.ko, and lontium-lt9611-k230.ko. It emitted missing-prototype warnings for existing port functions and modpost warnings for symbols unavailable to these separately built external modules, including the in-tree Canaan component and PHY symbols and HDMI helper symbols. Those warnings were allowed by KBUILD_MODPOST_WARN=1; they are why this external module check alone is not an in-tree link proof. The corrected command exited 0, and the complete in-tree kernel build separately links these components. No board, serial port, display, or touch test was performed.