From b3387601115e1ee461c73e5d762b5c5d83b607d4 Mon Sep 17 00:00:00 2001 From: vasilito Date: Thu, 23 Jul 2026 17:53:20 +0900 Subject: [PATCH] =?UTF-8?q?config:=20driver-manager=20cutover=20=E2=80=94?= =?UTF-8?q?=20retire=20pcid-spawner=20from=20the=20boot=20path?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator-ratified cutover (the D5/C-phase gate): - redbear-device-services.toml: driver-manager added to [packages] (was 'intentionally not included'); /lib/drivers.d/70-wifi.toml staged (redbear-iwlwifi --daemon); stale pre-cutover comments replaced with the single-spawner invariant for driver-manager. - redbear-mini.toml: /etc/init.d override now stages 00_driver-manager.service (--hotplug, gated !disabled) instead of 00_pcid-spawner.service; all requires_weak references switched to 00_driver-manager.service. - redbear-full.toml, redbear-greeter-services.toml: same requires_weak switch for iommu, greeter, SDDM. - base submodule bump (c72d4247): init.d/init.initfs.d service gates — pcid-spawner services start only when /etc/driver-manager.d/disabled exists (operator fallback, never deleted); driver-manager services run by default. make lint-config: OK — no init service path violations. --- config/redbear-device-services.toml | 46 ++++++++++++++++++---------- config/redbear-full.toml | 6 ++-- config/redbear-greeter-services.toml | 2 +- config/redbear-mini.toml | 25 ++++++++------- local/sources/base | 2 +- 5 files changed, 49 insertions(+), 32 deletions(-) diff --git a/config/redbear-device-services.toml b/config/redbear-device-services.toml index ec70161f9c..92628382b5 100644 --- a/config/redbear-device-services.toml +++ b/config/redbear-device-services.toml @@ -6,11 +6,10 @@ redbear-quirks = {} pciids = {} fatd = {} -# driver-manager intentionally not included: it is the intended future -# replacement for pcid-spawner but is not yet ready (driver config migration -# pending) and was previously packaged-but-unused — its service launched -# pcid-spawner instead of driver-manager. Consolidated on pcid-spawner for -# now; the recipe source is kept for when the migration is completed. +driver-manager = {} +# driver-manager owns the boot-time PCI match/claim/spawn path since the +# cutover. pcid-spawner stays built into base and staged, gated behind +# /etc/driver-manager.d/disabled as the operator fallback. # Firmware fallback chain configs [[files]] @@ -656,11 +655,24 @@ priority = 70 command = ["/usr/bin/redbear-usbaudiod"] """ -# PCI driver spawning is performed by pcid-spawner (the base recipe's -# 00_pcid-spawner.service, oneshot_async). driver-manager is the intended -# future replacement but is not yet ready; do NOT create a separate -# 00_driver-manager.service here — it previously duplicated pcid-spawner -# (two async instances of the same spawner racing to spawn drivers). +[[files]] +path = "/lib/drivers.d/70-wifi.toml" +data = """ +[[driver]] +name = "redbear-iwlwifi" +description = "Intel Wi-Fi driver (iwlwifi port)" +priority = 50 +command = ["/usr/lib/drivers/redbear-iwlwifi", "--daemon"] + +[[driver.match]] +vendor = 0x8086 +class = 0x02 +subclass = 0x80 +""" + +# PCI driver spawning is performed by driver-manager since the cutover +# (00_driver-manager.service, oneshot_async, --hotplug). pcid-spawner +# stays staged as the fallback behind /etc/driver-manager.d/disabled. # Firmware fallback chain configs [[files]] path = "/etc/firmware-fallbacks.d/00-amdgpu.toml" @@ -711,10 +723,12 @@ pattern = "i915/adlp_dmc_ver2_16.bin" chain = ["i915/adlp_dmc_ver2_14.bin", "i915/adlp_dmc_ver2_12.bin"] """ -# There must be exactly one PCI driver spawner service in the image: the -# base recipe's 00_pcid-spawner.service (oneshot_async). Do not add a -# second, differently-named service that also launches pcid-spawner — two -# async instances race to spawn the same drivers. +# There must be exactly one PCI driver spawner service active in the image: +# since the cutover that is 00_driver-manager.service (oneshot_async). +# pcid-spawner remains staged behind /etc/driver-manager.d/disabled as the +# operator fallback. Do not add a second, differently-named service that +# also spawns PCI drivers — two async instances race to spawn the same +# drivers. # Firmware fallback chain configs [[files]] @@ -827,7 +841,7 @@ data = """ description = "Evdev input daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -1127,7 +1141,7 @@ path = "/etc/init.d/13_driver-params.service" data = """ [unit] description = "Driver parameter scheme" -requires_weak = ["00_pcid-spawner.service"] +requires_weak = ["00_driver-manager.service"] [service] cmd = "/usr/bin/driver-params" diff --git a/config/redbear-full.toml b/config/redbear-full.toml index 63f93fe734..f4216f7516 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -262,7 +262,7 @@ data = """ description = "IOMMU DMA remapping daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -444,7 +444,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", @@ -495,7 +495,7 @@ data = """ [unit] description = "SDDM display manager (Wayland)" 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-mini.toml b/config/redbear-mini.toml index 0b1ca12058..d0750776a0 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 owns the boot-time PCI +# match/claim/spawn path since the cutover; pcid-spawner stays staged as +# the fallback behind /etc/driver-manager.d/disabled) ehcid = {} ohcid = {} uhcid = {} @@ -125,7 +126,7 @@ data = """ [unit] description = "Network stack (non-blocking on live-mini)" requires_weak = [ - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -184,7 +185,7 @@ data = """ description = "USB device hotplug daemon (auto-spawns class drivers)" requires_weak = [ "00_base.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -343,7 +344,7 @@ data = """ description = "udev compatibility shim" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -358,7 +359,7 @@ data = """ description = "Evdev input daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -373,7 +374,7 @@ data = """ description = "Wi-Fi control daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -431,7 +432,7 @@ data = """ description = "IOMMU DMA remapping daemon" requires_weak = [ "12_boot-late.target", - "00_pcid-spawner.service", + "00_driver-manager.service", ] [service] @@ -572,14 +573,16 @@ type = "oneshot" """ [[files]] -path = "/etc/init.d/00_pcid-spawner.service" +path = "/etc/init.d/00_driver-manager.service" data = """ [unit] -description = "PCI driver spawner (non-blocking on live-mini)" +description = "Driver manager (non-blocking on live-mini)" [service] -cmd = "pcid-spawner" +cmd = "driver-manager" +args = ["--hotplug"] type = "oneshot_async" +ConditionPathExists = "!/etc/driver-manager.d/disabled" """ [[files]] diff --git a/local/sources/base b/local/sources/base index e30f24997c..c72d4247a6 160000 --- a/local/sources/base +++ b/local/sources/base @@ -1 +1 @@ -Subproject commit e30f24997c3d0857f4521ec902a0604ca433f7c8 +Subproject commit c72d4247a66a764b0f06fe62d661ced415538ae2