From 33ab2bbd73cb4fe52ab050b02e2e5f08f84bcd20 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Sat, 9 May 2026 01:32:44 +0100 Subject: [PATCH] fix: wire driver-manager service ordering --- config/redbear-device-services.toml | 19 ++++------ config/redbear-full.toml | 52 ++++++++++++++++++++++++++-- config/redbear-greeter-services.toml | 2 +- config/redbear-legacy-base.toml | 8 +++-- config/redbear-mini.toml | 23 ++++++++---- 5 files changed, 78 insertions(+), 26 deletions(-) diff --git a/config/redbear-device-services.toml b/config/redbear-device-services.toml index 5412757645..277499b867 100644 --- a/config/redbear-device-services.toml +++ b/config/redbear-device-services.toml @@ -6,6 +6,7 @@ redbear-quirks = {} pciids = {} fatd = {} +driver-manager = {} # Firmware fallback chain configs [[files]] @@ -346,15 +347,6 @@ chain = ["i915/adlp_dmc_ver2_14.bin", "i915/adlp_dmc_ver2_12.bin"] [[files]] path = "/lib/drivers.d/30-graphics.toml" data = """ -[[driver]] -name = "vesad" -description = "VESA BIOS display driver" -priority = 60 -command = ["/usr/lib/drivers/vesad"] - -[[driver.match]] -class = 0x03 - [[driver]] name = "redox-drm" description = "DRM/KMS display driver (AMD + Intel)" @@ -511,14 +503,15 @@ chain = ["i915/adlp_dmc_ver2_14.bin", "i915/adlp_dmc_ver2_12.bin"] path = "/etc/init.d/00_driver-manager.service" data = """ [unit] -description = "PCI driver spawner" +description = "Red Bear driver manager" requires_weak = [ "00_base.target", ] [service] -cmd = "pcid-spawner" -type = "oneshot" +cmd = "/usr/bin/driver-manager" +args = ["--hotplug"] +type = "oneshot_async" """ # Firmware fallback chain configs @@ -590,7 +583,7 @@ data = """ description = "Evdev input daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] diff --git a/config/redbear-full.toml b/config/redbear-full.toml index f6c60913a7..0cbf05b726 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -37,6 +37,9 @@ dbus = {} redbear-firmware = {} firmware-loader = {} +# Intel Wi-Fi bounded driver path +redbear-iwlwifi = {} + # NUMA topology discovery (userspace daemon) numad = {} @@ -174,6 +177,50 @@ path = "/usr/lib/fonts" data = "/usr/share/fonts" symlink = true +[[files]] +path = "/lib/drivers.d/30-graphics.toml" +data = """ +[[driver]] +name = "redox-drm" +description = "DRM/KMS display driver (AMD + Intel + VirtIO)" +priority = 60 +command = ["/usr/bin/redox-drm"] +depends_on = ["pci", "firmware", "iommu"] + +[[driver.match]] +class = 0x03 +""" + +[[files]] +path = "/lib/drivers.d/60-wifi.toml" +data = """ +[[driver]] +name = "redbear-iwlwifi" +description = "Intel Wi-Fi driver" +priority = 45 +command = ["/usr/lib/drivers/redbear-iwlwifi", "--full-init"] +depends_on = ["pci", "firmware"] + +[[driver.match]] +vendor = 0x8086 +class = 0x02 +subclass = 0x80 +""" + +[[files]] +path = "/etc/init.d/00_firmware-loader.service" +data = """ +[unit] +description = "Firmware loading scheme" +requires_weak = [ + "00_base.target", +] + +[service] +cmd = "/usr/bin/firmware-loader" +type = { scheme = "firmware" } +""" + [[files]] path = "/etc/init.d/05_boot-essential.target" data = """ @@ -190,8 +237,7 @@ data = """ [unit] description = "IOMMU DMA remapping daemon" requires_weak = [ - "12_boot-late.target", - "00_pcid-spawner.service", + "00_base.target", ] [service] @@ -373,7 +419,7 @@ data = """ [unit] description = "Red Bear greeter service" requires_weak = [ - "00_pcid-spawner.service", + "00_driver-manager.service", "12_dbus.service", "13_redbear-sessiond.service", "13_seatd.service", diff --git a/config/redbear-greeter-services.toml b/config/redbear-greeter-services.toml index 76f32d1f4b..5a52eff0e3 100644 --- a/config/redbear-greeter-services.toml +++ b/config/redbear-greeter-services.toml @@ -66,7 +66,7 @@ data = """ [unit] description = "Red Bear greeter service (experimental — Phase 3 user session bring-up)" requires_weak = [ - "00_pcid-spawner.service", + "00_driver-manager.service", "12_dbus.service", "13_redbear-sessiond.service", "13_seatd.service", diff --git a/config/redbear-legacy-base.toml b/config/redbear-legacy-base.toml index 57f902994c..5c6c810320 100644 --- a/config/redbear-legacy-base.toml +++ b/config/redbear-legacy-base.toml @@ -43,9 +43,13 @@ type = "oneshot_async" path = "/etc/init.d/00_pcid-spawner.service" data = """ [unit] -description = "PCI driver spawner" +description = "PCI driver spawner compatibility alias" +requires_weak = [ + "00_driver-manager.service", +] [service] -cmd = "pcid-spawner" +cmd = "echo" +args = ["pcid-spawner compatibility alias: driver-manager owns PCI driver spawning"] type = "oneshot" """ diff --git a/config/redbear-mini.toml b/config/redbear-mini.toml index c2099ac1ea..8644dce214 100644 --- a/config/redbear-mini.toml +++ b/config/redbear-mini.toml @@ -27,8 +27,9 @@ redbear-release = {} redbear-hwutils = {} redbear-quirks = {} -# Device driver infrastructure (pcid-spawner is built by the base recipe; -# driver-manager requires driver config migration and is not yet ready) +# Device driver infrastructure: driver-manager is started by +# redbear-device-services.toml, with 00_pcid-spawner.service retained only as a +# compatibility dependency alias for older service units. ehcid = {} ohcid = {} uhcid = {} @@ -118,7 +119,7 @@ data = """ [unit] description = "Network stack (non-blocking on live-mini)" requires_weak = [ - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -318,7 +319,7 @@ data = """ description = "udev compatibility shim" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -333,7 +334,7 @@ data = """ description = "Evdev input daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -348,7 +349,7 @@ data = """ description = "Wi-Fi control daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -404,7 +405,7 @@ data = """ description = "IOMMU DMA remapping daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -484,6 +485,14 @@ data = """ # redbear-live-mini: no display driver matched; class 0x03 devices are skipped """ +[[files]] +path = "/lib/drivers.d/30-graphics.toml" +data = """ +# redbear-mini is text-only; keep driver-manager from attempting GPU binding in +# this profile. redbear-full replaces this fragment with the DRM/KMS binding. +driver = [] +""" + # INIT_SKIP removed — all daemons are now enabled for boot. # Individual hardware daemons that fail in QEMU will exit cleanly # rather than blocking boot via the oneshot_async service type.