base: PIIX4 IDE BAR quirk, vgaarb logging, archiso loop_mnt
Three improvements derived from running CachyOS 2026-06-28 in QEMU and comparing to the Red Bear OS boot sequence. drivers/pcid/src/main.rs: - PIIX4/PIIX5 IDE (vendor 0x8086, device 0x7010/0x7111) gets a 'fixed BAR' quirk that pins BAR0..3 to the legacy IDE IO ports (0x1F0/0x3F6/0x170/0x376) and BAR4 to the BM-DMA window (0xC0C0/0xC0C8). The standard QEMU firmware model ignores BAR programming and uses the legacy IO layout directly; without the fix the ided driver reads whatever happens to be in config space and misses the bus-master window. Linux applies the same quirk in drivers/ata/ata_piix.c. - Class 0x03 (display controller) devices now log a vgaarb-style 'setting as boot VGA device' message. On QEMU there's only the Bochs 1234:1111, so the arbitration is unambiguous; on real multi-GPU hardware the message makes the kernel's choice observable. Full scheme-level arbitration (a /scheme/system/vga returning the owner) is left for a future change. initfs/tools/Cargo.toml + initfs/tools/src/bin/loop_mnt.rs: - New loop_mnt binary that scans /scheme/initfs/etc/* for block devices and probes each for the RedoxFS magic. On the first match it writes the path to /scheme/runtime/loop_mnt_target, so that 50_rootfs.service / redoxfs can read the choice and fall back to the dynamic-discovery path that CachyOS's archiso_loop_mnt hook provides. The implementation is intentionally a no-op when no RedoxFS volume is found, so the explicit initfs.toml path remains the source of truth on a normal boot. init.initfs.d/45_loop_mnt.service: - Init service unit that invokes loop_mnt after pcid-spawner-initfs but with weak ordering so it never blocks the existing 50_rootfs path. Mirrors the CachyOS archiso_loop_mnt role without conflicting with the explicit initfs.toml flow. recipes/core/base-initfs/recipe.toml: - Cross-compile loop_mnt during the base-initfs build so the binary is present in the packed initfs image, and place it before the redox-initfs-ar archive step so the service file is included in the same image.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
[unit]
|
||||
description = "Archiso-style loop mount fallback (compatibility)"
|
||||
# This service only runs if a previous mount attempt failed; it's a
|
||||
# fallback for live media whose boot device couldn't be discovered by
|
||||
# the normal pcid-spawner-initfs / lived path. Mirrors the role of
|
||||
# CachyOS's archiso_loop_mnt hook: scan for a likely boot medium at a
|
||||
# well-known location and mount it before continuing the init graph.
|
||||
requires_weak = ["40_pcid-spawner-initfs.service"]
|
||||
after = ["40_pcid-spawner-initfs.service", "50_rootfs.service"]
|
||||
|
||||
[service]
|
||||
cmd = "loop_mnt"
|
||||
type = "oneshot"
|
||||
Reference in New Issue
Block a user