Skip to content

Latest commit

 

History

History
67 lines (40 loc) · 11 KB

linux-6.18-support.md

File metadata and controls

67 lines (40 loc) · 11 KB

Linux 6.18 boot-fundamentals audit

Historical record. The dates, candidate identity, "current" claims, next steps and permissions below belong to this recorded boundary. See current state for the latest physically observed result.

Current hardware result: owner-observed M1 runtime success confirms Linux 6.18, native PID1, increasing BEAT/uptime, working sleep, proc/sysfs mounts, CPU0, D08 RAM visibility, framebuffer diagnostics and stopped-watchdog status. M1 core achieved. Exact flashed hash and unreported diagnostic fields remain unverified. Earlier dated statements below are historical.

Y2B-240 hardware result: the owner reports solid green, which the implemented state machine reaches through initramfs /init running as PID1. M1's Linux 6.18 plus PID1 boot objective is achieved. No heartbeat/checkerboard success is claimed. Y2B-245 / D14 is the offline follow-up for readable runtime diagnostics.

Hardware update 2026-09-08: Y2B-240 provides strong owner-observed evidence of the reviewed Linux 6.18 candidate reaching PID1 with static DT RAM and inherited framebuffer output. Timed heartbeat/stability validation remains unproven.

Y2E-150 adds an explicitly temporary board diagnostic overlay to audited v6.18: early AP watchdog stop plus guarded writes to LK-inherited RGB565 memory. Upstream MT6582 watchdog support exists, but normal probe cannot cover decompression. This is not full native display support. See D12/D13.

Date: 2026-09-08. Y2E-125, extended by Y2E-130. Status: source support CONFIRMED; Y2 execution UNKNOWN. Target remains upstream Linux 6.18 LTS, not 6.12 or a forward-ported Android kernel.

Pinned upstream tag: v6.18; tag object f7b88edb52c8dd01b7e576390d658ae6eef0e134; peeled commit 7d0a66e4bb9081d75c82ec4957c50034cb0ea449. This is a reproducible architecture baseline, not a final selection of the 6.18.y patch release. The kernel.org release page identifies the longterm series; that does not certify Y2 support. Successful source files/URLs/hashes are in linux-6.18-sources.tsv. Failed/rate-limited requests remain explicitly recorded privately; claims below use retrieved primary source.

Existing support in v6.18

Fundamental Exact source evidence Implication for Y2
CPU / SoC mt6582.dtsi defines four Cortex-A7 CPUs and mt6582 compatibility; proc-v7.S provides ARMv7 support. A real MT6582 CPU0 foundation exists.
Platform selection Kconfig supports ARCH_MULTI_V7 and selects GIC/MTK_TIMER. mediatek.c omits mt6582 from its compatible list. Do not invent an mt6589 root compatible. devtree.c provides GENERIC_DT fallback; time.c has default OF clock/timer initialization. A legacy machine-ID 6582 port is not inherently required.
Interrupts Cortex-A7 GIC at 0x10211000 / 0x10212000 plus additional CPU-interface ranges; sysirq at 0x10200100. irq-mtk-sysirq.c matches mt6577-sysirq fallback in the dtsi. GIC and polarity-controller mechanisms exist; board behavior untested.
Timer MT6577-compatible GPT, actual reg 0x10008000, length 0x80, SPI 112 active-low; timer-mediatek.c registers this compatible. GPT is the starting timer. The dtsi node name is timer@11008000 but its reg says 0x10008000: derive MMIO from reg, and retain this inconsistency for review.
UART Four disabled UART nodes at 0x11002000 through 0x11005000, SPI 51–54; mt6582-uart / mt6577-uart. 8250_mtk.c implements normal and earlycon paths. Y2E-140 installed evidence selects UART0 at 0x11002000 / SPI51; D10 corrects the sole serial0/ttyS0 node and reruns offline validation. Physical pads, inherited routing and measured baud remain U10a. Evidence.
Initial clocks dtsi supplies fixed 13 MHz system, 32 kHz RTC and 26 MHz UART clocks. Minimal timer/UART scaffolding, not a full clock/reset/power implementation or independent clock measurement on Y2.
Watchdog dtsi 0x10007000, mt6582-wdt / mt6589-wdt; mtk_wdt.c matches the latter. Driver path exists; inherited state and experiment policy are unverified.
Secondary CPUs mt6582 CPU nodes lack enable-method; platsmp.c does not establish mt6582 CPU-release semantics. Use CPU0 initially. Four CPU nodes do not prove working SMP.
eMMC No MMC node in mt6582.dtsi; mtk-sd.c has no mt6582/mt6589/mt6577 match. Audited clock/pinctrl directories contain no mt6582-named implementation. Persistent storage needs additional research. A sibling compatible is not proof of hardware support. Start with initramfs.

The Prestigio tablet DTS is an upstream consumer of the SoC description. Its 1 GiB memory and UART choices are tablet settings, not Y2 evidence. No Y2 board description is established in these inputs. Panel, audio/DAC, controls, USB, charging, radios and complete clock/pinctrl support are outside the proof delivered here.

DT kernel behind an ATAG bootloader

The ARM boot protocol accepts tags or FDT through r2 and requires initialized RAM, suitable CPU/cache state and quiesced DMA. boot-chain.md traces stock LK's r0=0, r1=6582, r2=0x80000100, entry 0x80008000, with ATAGs.

ARM Kconfig and compressed/head.S support ARM_APPENDED_DTB for old loaders. The DTB belongs immediately after zImage inside KERNEL, not in an assumed Android DT section. This lets a DT-based upstream kernel run behind a loader that still supplies ATAGs; it does not require a legacy Android board-file port.

ARM_ATAG_DTB_COMPAT uses atags_to_fdt.c, which accepts LK's two-word CORE tag and transfers standard MEM, CMDLINE, INITRD2 and SERIAL data. It does not translate vendor framebuffer/modem reservations. MEM can replace /memory/reg; default command-line policy replaces DT bootargs, while EXTEND appends loader arguments after DT arguments. A small DT memory range or clean DT command line therefore does not automatically win.

Y2E-130 now selects static DT memory with ARM_ATAG_DTB_COMPAT=n. LK's tags remain physically present but their RAM, command line and initrd properties are not imported. Controlled DT /chosen/bootargs uses ordinary command-line precedence; /chosen/linux,initrd-start/end use LK's fixed destination and the actual inner compressed payload length. See the initial RAM policy; no config was authored in the research phase.

Y2E-130 memory and decompressor audit

Ten exact v6.18 files were retrieved from the official Torvalds Gitiles tree and hashed, including compressed/kernel head.S, both linker scripts, compressed Makefile and OF/ARM memory initialization. The full RAM policy gives exact formulas, symbols and primary-source links. File-size-only reasoning is insufficient: the in-place zImage relocates itself, includes the appended DTB, compensates for kernel BSS and uses a stack plus 64 KiB malloc workspace. The linker requires appended-DTB file alignment and exposes the sizes needed for an offline verifier.

D08 admits 24 MiB low RAM plus 512 KiB at 0x84000000, with all loading/decompression below 0x81800000. Static OF memory scanning and chosen initrd properties support this sparse physical map; non-LPAE page tables occupy 0x80004000..0x80008000. This is source-supported design, not a demonstrated execution or measured working-set claim. If a minimal build exceeds the declared caps, it must be reduced or returned for research review, never automatically given more RAM.

Current decision boundary

The memory/import architecture is fixed sufficiently for a small offline implementation task after its precise issue is written. Target remains upstream Linux 6.18; retain preloader/LK, use appended DTB plus external initramfs and CPU0. Y2E-130 created no artifact or implementation issue.

The ARM boot requirement to quiesce DMA remains a separate unsatisfied launch condition (U07c). DT exclusions cannot enforce bus-master isolation. Installed loader/security, physical console and backup/recovery/power controls also remain gates. No hardware boot is authorized by closing the bounded memory-policy research.

M1 offline implementation result

The first candidate compiles as Linux 6.18.0-y2-m1 using Clang/LLD 20.1.8. The precise baseline is upstream v6.18 plus one Kconfig visibility patch, needed because hidden ARM_VIRT_EXT otherwise defaults to y for CPU_V7. No C/assembly driver or board-file patch was required for this offline build. D08 remains static DT, appended DTB, no ATAG conversion and CPU0. All real ELF/DT/compression/package checks and two-clean-build byte comparisons pass.

Successful compilation proves that this configuration and artifact layout can be produced. It does not prove GIC/GPT/UART operation on this board, sufficient runtime memory, installed unsigned-image acceptance, inherited-state safety or recovery readiness. Those remain in the hardware launch gates. No device was touched.

Y2E-145 first-experiment limit

The existing v6.18 artifact and D08 map are unchanged and retain their offline validation. Normal package LK watchdog evidence indicates a nominal 10-second interval; upstream kernel compilation and a disabled watchdog driver cannot guarantee a 60-second runtime. A minimal watchdog policy requires a separate reviewed decision after installed-handoff confirmation. No watchdog, USB observation, RAM logging or peripheral feature was added in this research. Hardware launch remains NO-GO.