config: consolidate PCI driver spawning on pcid-spawner (drop driver-manager stub)
Root cause of the duplication: a stalled migration. driver-manager (new
Red Bear framework) was written and packaged, but never wired in — its
00_driver-manager.service ran cmd="pcid-spawner" (the legacy binary),
and redbear-mini.toml already notes it is 'not yet ready'. Meanwhile the
base recipe's 00_pcid-spawner.service (oneshot_async) is the live
spawner. Both services ran pcid-spawner async, so pcid-spawner launched
TWICE in mini/full, racing to spawn the same drivers.
Consolidation (user directive: consolidate on pcid-spawner for now,
revisit driver-manager later):
- drop the unused driver-manager = {} package (source recipe kept for
the future migration),
- remove the duplicate 00_driver-manager.service,
- point 13_driver-params.service requires_weak at the real
00_pcid-spawner.service,
- base recipe's oneshot_async pcid-spawner is now the sole PCI driver
spawner — no more double launch.
driver-manager is intentionally left out of configs until its driver
config migration is completed (documented in the file).
This commit is contained in:
@@ -6,7 +6,11 @@
|
||||
redbear-quirks = {}
|
||||
pciids = {}
|
||||
fatd = {}
|
||||
driver-manager = {}
|
||||
# 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.
|
||||
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
@@ -478,8 +482,11 @@ priority = 70
|
||||
command = ["/usr/bin/redbear-usbaudiod"]
|
||||
"""
|
||||
|
||||
# Profiles that include this fragment should start `driver-manager` instead of
|
||||
# `pcid-spawner`; the manager performs the PCI bind/channel handoff itself.
|
||||
# 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).
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
path = "/etc/firmware-fallbacks.d/00-amdgpu.toml"
|
||||
@@ -508,19 +515,11 @@ data = """
|
||||
pattern = "i915/adlp_dmc_ver2_16.bin"
|
||||
chain = ["i915/adlp_dmc_ver2_14.bin", "i915/adlp_dmc_ver2_12.bin"]
|
||||
"""
|
||||
[[files]]
|
||||
path = "/etc/init.d/00_driver-manager.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "PCI driver spawner"
|
||||
requires_weak = [
|
||||
"00_base.target",
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "pcid-spawner"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
# 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.
|
||||
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
@@ -786,7 +785,7 @@ path = "/etc/init.d/13_driver-params.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Driver parameter scheme"
|
||||
requires_weak = ["00_driver-manager.service"]
|
||||
requires_weak = ["00_pcid-spawner.service"]
|
||||
|
||||
[service]
|
||||
cmd = "/usr/bin/driver-params"
|
||||
|
||||
Reference in New Issue
Block a user