Commit Graph

2066 Commits

Author SHA1 Message Date
vasilito 4b76070a77 docs: build round 1 — redox-driver-sys Once regression (sole blocker, fixed) 2026-07-24 14:28:44 +09:00
vasilito 1125c008bc redox-driver-sys: import Once (fix redox-target build break)
d945483915 added a per-thread IOPL guard using std::sync::Once in a
#[cfg(target_os = "redox")] thread_local! (pci.rs:20) but did not import Once,
so redox-driver-sys fails to compile for x86_64-unknown-redox with E0425
"cannot find type Once" — breaking redox-drm (the /scheme/drm/card0 provider)
and driver-manager in the redbear-full build. Add the cfg-gated import.

Found while driving the redbear-full desktop build.
2026-07-24 14:24:44 +09:00
vasilito a998946c1c docs: mark SDDM greeter conflict resolved in bring-up tracker 2026-07-24 13:35:28 +09:00
vasilito 9f528397a8 full: SDDM-only greeter — gate off competing display managers
Operator confirmed "SDDM is the only greeter". Disable the two competing
display entry points that would contend with SDDM for the single-owner
GPU/card0: 20_greeter (redbear-greeterd, an alternative greeter) and 20_display
(redbear-session-launch, a boot-time auto-KDE-session that bypasses the
greeter). Gated reversibly via condition_path_exists on a sentinel
(/etc/redbear/enable-legacy-greeter) the image does not install — definitions
preserved, re-enable with a single touch. 21_sddm remains ungated. Post-login
session launch is SDDMs job via SessionDir=/usr/share/wayland-sessions.
2026-07-24 13:34:57 +09:00
vasilito 016043c79b docs: Phase 9.2 WMI foundation landed (0ca545d3) 2026-07-24 13:34:23 +09:00
vasilito ad3321a5ce redbear-info: pcid-spawner → driver-manager label; plan P2-1 done
redbear-info's integration check list still labeled the PCI spawner as
'pcid-spawner' and pointed at /usr/bin/pcid-spawner (deleted). Updated
to 'driver-manager' with /usr/bin/driver-manager and a note about
/scheme/driver-manager/bound. Plan v3.2 marks P2-1 done (pcid AER +
pciehp producers validated in QEMU).
2026-07-24 13:32:45 +09:00
vasilito 275e9eedf7 docs: full-target runtime wiring audit — SDDM greeter conflict
SDDM greeter renders on redbear-compositor (per /etc/sddm.conf CompositorCommand);
KWin is the post-login session compositor. Runtime chain (driver-manager →
redox-drm → card0 → sddm → redbear-compositor → greeter) is coherent, BUT three
display entry points (20_display redbear-session-launch, 20_greeter
redbear-greeterd, 21_sddm) all fire oneshot_async and would contend for the
single-owner GPU/card0. For a clean SDDM path the first two must be disabled
(operator sign-off required).
2026-07-24 13:31:06 +09:00
vasilito 5705c46e9b base: bump submodule — WMI subsystem (0ca545d3) 2026-07-24 13:30:48 +09:00
vasilito 343a3cde9e docs: redbear-full SDDM bring-up campaign tracker
Phase status for making redbear-full compile + run to the SDDM Wayland greeter:
build-system llvm fix, Mesa EGL gate persisted, VirGL priority (all done);
Rust components (redox-drm, redbear-compositor) compile-verified; remaining =
full C/C++ cook campaign (mesa/qt6/kf6/kwin/sddm) + Qt6 null+8 runtime validation
+ boot. Records upstream cherry-pick candidates and component homes.
2026-07-24 13:22:47 +09:00
vasilito a00c13e5c7 drivers: redox-drm wins virtio-gpu bind for the VirGL desktop path
driver-manager had a priority tie for QEMU virtio-gpu (vendor 0x1AF4, class
0x03): redox-drm (generic class @60) vs virtio-gpud (@60). If virtio-gpud won,
it registered display.virtio-gpu (VT scanout only) and never provided
/scheme/drm/card0, starving KWin/the compositor. redox-drm had priority-61
entries for Intel and AMD but none for VirtIO. Add a priority-61 redox-drm entry
for vendor 0x1AF4 class 0x03 (subclass omitted — QEMU virtio-gpu is subclass
0x80) so the VirGL path deterministically binds redox-drm and gets a real DRM
card0. virtio-gpud remains as fallback.
2026-07-24 13:19:23 +09:00
vasilito 74d5e01bb4 mesa: persist Redox EGL/DRI gate as a tracked patch
The meson gate that enables EGL on Redox — adding "redox" to
system_has_kms_drm (meson.build:159, so with_dri→with_egl/gbm) and to the
_GNU_SOURCE platform list (:1208) — existed only as an in-place edit in the
untracked extracted source/ tree. Any clean re-extract lost it and reverted to
"Feature egl cannot be enabled". Capture it as local/patches/mesa/08-*.patch and
wire it into recipe.toml so EGL/GBM/llvmpipe build reproducibly. Source tree
reverted to pristine so the patch is the sole, tracked change.
2026-07-24 13:18:20 +09:00
vasilito f6b09ff713 build: stop re-cooking llvm21/toolchain on every relibc/base bump
The relibc-consumer invalidation (correctly) force-deletes every pkgar+target
when relibc rebuilds or its pkgar is missing, to prevent stale-ABI skew. But it
swept up heavy, ABI-inert toolchain packages (llvm21, clang21, lld21, rust)
identically to a 200KB daemon — forcing a 1-2h LLVM re-cook on EVERY base/relibc
bump, which cripples Mesa/KDE iteration.

These are build-time-only STATIC archives (BUILD_SHARED_LIBS=off; no runtime .so
of their own). Their libc/relibc symbol references are UNRESOLVED in the .a and
resolve at the CONSUMER final link — mesa links libLLVM*.a and resolves against
the freshly-built relibc there. So a relibc protocol change is absorbed by
relinking mesa (NOT on the preserve-list; stays invalidated), and recompiling
all of LLVM from scratch is unnecessary.

Add TOOLCHAIN_PRESERVE={llvm21,clang21,lld21,rust} skipped in both invalidation
branches, with escape hatch REDBEAR_FORCE_TOOLCHAIN_RECOOK=1 for a genuine
libc-ABI change. Trades a rare theoretical risk for a large repeated speedup;
the churn during driver/desktop work is Redox scheme/syscall shims the compilers
never call, so the default is safe.
2026-07-24 13:14:24 +09:00
vasilito 60597ae154 docs: input plan — Stage 5 blocker analysis (compositor + DRM)
Record the two concrete prerequisites for compositor input wiring, found by
reading the compositor source: (1) an event-loop restructure — it uses a
blocking accept loop, drains keys only reactively, and ClientState stores no
UnixStream, so no input source can push wl_keyboard to a client; (2) the
desktop cannot run without DRM/Mesa (no /scheme/drm/card0 on mini), so the
wiring is unvalidatable until the Mesa EGL/DRI port lands. Defines the exact
wiring for when those clear (read /scheme/evdev, set_vt_mode, real XKB keymap
fd, keycode = evdev - 8).
2026-07-24 13:00:10 +09:00
vasilito 6daa9dda71 docs: input plan — boot-validated on redbear-mini (2026-07-24)
P0 green (acpid compiles). Fresh redbear-mini boot confirms: no console
regression (login + shell command execution intact) and the raw tap is live
(evdevd reads consumer_raw, evdev scheme functional). Boot-log errors observed
are pre-existing and unrelated to the input stack.
2026-07-24 12:53:51 +09:00
vasilito 37c67fe64e driver-manager: consume pcid AER producer; iwlwifi daemon uses sleep loop
- AER listener path moves from /scheme/acpi/aer (no producer) to
  /scheme/pci/aer (pcid's new producer, submodule bump 5a43628d).
- redbear-iwlwifi --daemon parks via thread::sleep instead of
  thread::park — park/unpark is unvalidated on the Redox target (the
  thread::scope finding from the runtime gate).
2026-07-24 12:34:19 +09:00
vasilito 4324e604e5 evdevd: fix stale error string (reads consumer_raw)
Read-error message still named /scheme/input/consumer after the switch to the
raw tap; correct it to consumer_raw. No behaviour change.
2026-07-24 12:15:19 +09:00
vasilito b52097335a submodules: bump base — inputd exclusive input grab
Records base with the EVIOCGRAB-equivalent exclusive grab on consumer_raw.
2026-07-24 12:11:10 +09:00
vasilito 9cde33a3fd docs: Phase 6.2 Mini-MLD foundation landed (1e5c080563) 2026-07-24 12:08:42 +09:00
vasilito fdf377456f docs: input plan — implementation status + console-discipline correction
Record what landed (S1 raw evdev tap, S4-core VT graphics-mode op, S5 seatd
local package; all compile-checked, boot-validation P0-gated) and correct the
Defect-3 framing: fbcond is a byte-queue + CR/LF + special-key escapes, not a
second canonical line discipline (ptyd is the only one), and the console login
works — so the old "collapse two disciplines" console surgery is deferred as
unnecessary and risky. Grab arbitration + compositor wiring remain gated on the
Mesa desktop bring-up.
2026-07-24 12:04:17 +09:00
vasilito 9e67a7417f seatd: make it a local source package (path=source)
Flip [source] from git=jackpot51/seatd to path="source" so the already-tracked
in-tree source/ (52 files, incl. libseat/seatd-launch) is the authoritative
implementation — a first-class local Red Bear package like evdevd and
redbear-compositor, per Local Fork Supremacy and the operator decision
(INPUT-STACK-LINUX-ALIGNMENT-PLAN.md §4b). We own it and integrate upstream
into our tree rather than fetch+patch.

Does not affect redbear-mini/bare (they do not pull seatd). Making it compile
for Redox + wiring the compositor seat path remain part of the Mesa-gated
desktop bring-up.
2026-07-24 12:02:33 +09:00
vasilito 60946a3cb0 submodules: bump base — inputd VT graphics-mode control op
Records base a916a661 (inputd set_vt_mode / graphics_vts console suppression).
Part of the Linux-aligned input-stack consolidation.
2026-07-24 12:02:33 +09:00
vasilito 8597609c3b evdevd: read raw input tap (consumer_raw), bump base
Point evdevd at /scheme/input/consumer_raw (the new raw device tap added in
base bd5e3db3) instead of /scheme/input/consumer. The console consumer handed
evdevd keymapped, VT-gated events — it only received input while its own VT
was active, and the character had already been keymapped, both wrong for a
libinput/xkbcommon (Wayland) feed. The raw tap delivers the pre-keymap event
stream for every device event regardless of the active VT, matching the Linux
evdev contract.

evdevd only ever used scancode+pressed (never character), so no translation
change is needed on its side.

Bumps the base submodule pointer to include the consumer_raw tap. Part of the
Linux-aligned input-stack consolidation
(local/docs/INPUT-STACK-LINUX-ALIGNMENT-PLAN.md). Compile-checked for
x86_64-unknown-redox.
2026-07-24 11:58:14 +09:00
vasilito 1e5c080563 redbear-iwlwifi: Mini-MLD foundation — iwlmld op-mode + BZ->MLD gate
Phase 6.2 foundation. Port the Mini-MLD layer from Linux 7.1
(drivers/net/wireless/intel/iwlwifi/mld/), the MLD analog of Mini-MVM:

- linux_mld.h: iwlmld op-mode IDs, notification command groups
  (LEGACY/MAC_CONF/PHY_OPS/DATA_PATH/SCAN/STATISTICS), and the MLD
  notification command ID set. The RX frame IDs (0xc0/0xc1/0xc5) and the
  iwl_rx_mpdu_desc descriptor are shared with MVM and stay in Mini-MVM;
  MLD adds ROC/session-protection/MU-group-mgmt/probe-response/
  channel-switch/MFUART/DTS-measurement notification IDs.
- linux_mld.c: rb_iwl_mld_handle_notification() — real MLD notification
  dispatch. RX MPDU frames are parsed by the Mini-MVM descriptor parser
  (rb_iwl_mvm_extract_signal/detect_format, no duplicate parser) with real
  signal/rate extraction; MLD-specific notifications are identified,
  grouped, and counted. Includes the BZ-family op-mode selection
  (rb_iwl_opmode_for_family, mirroring Linux iwl-drv.c).
- linux_port.c: include linux_mld.h; add trans->opmode set from
  device_family (BZ -> iwlmld, others -> iwlmvm); report opmode= in the
  linux_kpi_status line so the gate is observable.
- build.rs: compile linux_mld.c.

This is the bounded foundation; MLO/link management and the full MLD
feature set (mac80211-integrated) are the multi-week continuation.
All 8 host tests pass.
2026-07-24 11:53:35 +09:00
vasilito 78aca1bb45 docs: Linux-aligned input-stack consolidation plan
Cross-referenced the console-input path against Linux/CachyOS
(local/reference/linux-7.1/drivers/{input,tty}/). Linux applies the
keymap once (vt/keyboard.c) and runs one line discipline (n_tty.c)
shared by the console tty and ptys; RedBear duplicates the keymap
(inputd + fbcond) and CR/LF (fbcond + ptyd) and runs two disciplines
bridged by getty — which is where typed characters are lost (echoed but
not executed). Plan: inputd owns the keymap and emits the full byte
stream (incl. escape sequences); fbcond becomes display-only passthrough
(no keymap, no CR/LF, no cooking); ptyd is the sole line discipline.
Staged, each stage independently bootable; validation needs the build
green (acpi-rs currently blocks it).
2026-07-24 11:04:01 +09:00
vasilito 491659b1b6 base: bump submodule — init.d final pcid-spawner sweep (2d03559d)
00_base.target, 10_evdevd, 10_smolnetd, 30_redox-drm retargeted to
driver-manager services; stale dormant-era comments updated. Eliminates
'init: unit 00_pcid-spawner.service not found' from the boot log.
2026-07-24 10:46:22 +09:00
vasilito a2e64e32f6 docs: pcid-spawner full retirement + quirks universal model pointers
- AGENTS.md + docs/README.md: pcid-spawner is retired and removed
  (2026-07-24); driver-manager owns the path unconditionally; services
  list and networking description updated.
- Migration plan v3.1 section: fallback framing replaced with the full
  retirement (crate, service files, build wiring removed; source in git
  history).
- Assessment: pcid-spawner row updated to retired; the never-delete
  constraint noted as superseded by the operator's retirement decision.
2026-07-24 10:09:49 +09:00
vasilito 4f52ee0645 base: bump submodule — acpi-rs connect_op_regions + initialize_namespace repair (3ba37444)
Repairs the broken initialize_namespace that 0c11c2b5 captured (unterminated
comment) and lands the connect_op_regions() function. Base compiles again;
_REG opregion connect is now fully wired (acpi-rs function + acpid call).
2026-07-24 10:02:54 +09:00
vasilito 41e5a917d8 base: bump submodule — acpid connect_op_regions call (c3a27717)
NOTE: aml/mod.rs still has a broken initialize_namespace from 0c11c2b5
(parallel session captured an intermediate edit via git add -A; their
repeated git reset on base is reverting my concurrent fix before it can
be committed). acpi.rs connect_op_regions() call is in; the acpi-rs
connect_op_regions() function + initialize_namespace repair still needs
to land once base edits stop being reset.
2026-07-24 09:52:04 +09:00
vasilito 40b4dcd052 build-redbear.sh: fix set -e abort when any fork is dirty
The stash loop ended with '[ any_dirty = 0 ] && echo ...' as the
function's last command — when a fork IS dirty (any_dirty=1), the
compound returns 1 and set -e kills the build silently right after the
stash phase. Only visible with REDBEAR_ALLOW_DIRTY=1 (the dirty gate
refuses earlier otherwise). Now an explicit if + return 0.
2026-07-24 09:46:20 +09:00
vasilito 6d978068f0 quirks: universal consumption model — open driver-scoped domain channel
Redesign grounded in the Linux 7.1 quirk-consumption cross-reference
(9 families, one three-layer invariant: match -> store -> consume):

- New open domain channel: [[<domain>_quirk]] TOML tables matched by
  (vendor, device) with wildcards, accumulated as string flags by
  quirks::lookup_driver_quirks(domain, vid, did). The table name IS the
  domain key — new driver domains need zero registry code (Linux Type-C
  model: driver-owned fixup tables like HDA's per-codec lists).
- lookup_audio_quirks(vid, did) as the first domain convenience API for
  ihdad's future integration.
- quirks.d/15-audio.toml converted from [[pci_quirk]] to [[audio_quirk]]
  — the audio_* flags (force_eapd, single_cmd, position_fix_lpib,
  mirroring Linux sound/pci/hda) are now carried as data instead of
  warned-and-dropped on every probe cycle.
- Docs: three-layer model in QUIRKS-SYSTEM.md + consumption contract
  (bind-time / core-runtime / driver-runtime); QUIRKS-IMPROVEMENT-PLAN.md
  v2.0 with the redesign assessment and cutover-era reality (stale
  pcid-spawner broker references removed).
- 75/75 redox-driver-sys tests pass (new domain loader test).
2026-07-24 08:55:49 +09:00
vasilito 326df7f02d config: complete pcid-spawner retirement
- base-initfs recipe: pcid-spawner removed from initfs BINS and the
  lib/pcid.d initfs staging dropped (dead pcid-spawner config).
- acid.toml, redoxer.toml: requires_weak now points at
  00_driver-manager.service.
- redbear-mini.toml: dead /etc/pcid.d/* staging removed; driver-manager
  service override no longer gated on the retired fallback flag.
- redbear-full.toml: dead legacy-format /etc/pcid.d/ihdgd.toml and
  virtio-gpud.toml removed (driver-manager's 30-graphics.toml covers
  the same drivers in the current format).
- Comments updated: no fallback exists; driver-manager owns the path
  unconditionally. Base submodule bump (0c11c2b5).
2026-07-24 08:49:08 +09:00
vasilito 5d04ddc593 base recipe: make EXISTING_BINS filtering fast (one scan, not N full-tree greps)
The driver-list filter ran `grep -R "^name = \"$bin\"$" $COOKBOOK_SOURCE`
once PER bin (~40 bins). $COOKBOOK_SOURCE is local/sources/base, whose
target/ build tree is ~8.7 GB, so each grep re-scanned gigabytes and the
whole loop scanned hundreds of GB — a very slow build phase.

Collect the workspace's crate names ONCE from Cargo.toml files (skipping
target/ via --exclude-dir), into a bash associative array, then do an
O(1) membership check per bin. Verified equivalent (same bins selected)
and near-instant: the single scan of local/sources/base completes in
~0.02s vs minutes for the per-bin recursive greps.
2026-07-24 08:30:43 +09:00
vasilito 5c9bce4b88 brush: fix minimal-backend input (persistent line buffer) + drop debug traces
Two changes to the Redox minimal input backend patch:

1. read_input_line accumulated into a *fresh* String each retry. On the
   Redox console pty, a `read_line` can return WouldBlock (or Ok(0))
   after only a partial line — the characters just typed — and those
   bytes, left in the read_line buffer, were discarded on every retry.
   Only a fully-queued line (e.g. a leftover newline) ever came through,
   so the shell echoed keystrokes but never executed the command.
   Fix: accumulate partial reads into a thread-local buffer that
   persists across retries and only yield a line once a newline arrives.

2. Removed all BRUSH-DBG / rb_dbg startup and read tracing (the "debug
   mode" output on the console). The functional Redox changes stay:
   tokio current-thread runtime and the minimal input backend selection.

Verified: brush-interactive + brush-shell compile. Runtime verification
of the interactive shell still pending a boot test.
2026-07-24 07:48:31 +09:00
vasilito 3139b4880e docs: v3.2 — QEMU gate passed, thread::scope platform quirk, staleness fix
- Plan v3.2: runtime gate PASSED (initfs ahcid bind, switchroot, rootfs
  e1000d concurrent bind with zero deferred, scheme live, resident
  hotplug loop); the four runtime-only bugs it found and their fixes;
  cookbook cargo-path-dep staleness fix verified.
- Assessment § 12: gate evidence table + runtime-only bug register.
- PACKAGE-BUILD-QUIRKS.md: new platform quirk — std::thread::scope
  hangs on the Redox target (park/unpark unvalidated); spawn+join is
  the required pattern; RwLock::write and park/scope remain unvalidated.
- Pointers bumped to v3.2.
2026-07-24 05:49:51 +09:00
vasilito 78665ede70 driver-manager: QEMU gate passed — thread::scope hang fix, initfs scheme skip, graphics split
Runtime validation of the cutover in QEMU (q35, e1000 + AHCI):

- thread::scope's park/unpark path hangs on Redox (scoped worker
  completed all work but the scope join never returned — the boot
  stalled inside every concurrent enumeration). The concurrent probe
  pool now uses plain thread::spawn + JoinHandle::join (all captures
  were already owned/Arc); the counting semaphore is Arc-based so
  guards are 'static. bound map is Mutex (RwLock write was unproven
  on target).
- initfs driver-manager no longer registers scheme:driver-manager —
  the transient initfs manager's registration survived into the
  rootfs phase and made the resident manager's registration fail
  EEXIST (which then exit(1)'d the rootfs manager).
- config: matchless [[driver]] entries now parse (serde default) —
  70-usb-class.toml's USB-class drivers (no [[driver.match]]) broke
  config loading entirely on the first gate. Includes a regression
  test for load_all with matchless entries.
- graphics: 30-graphics.toml moves from the shared
  redbear-device-services.toml to redbear-full.toml (redox-drm is a
  full-only driver; mini no longer defers it every hotplug cycle).
  vesad removed from drivers.d — it is an init-managed service, not
  a spawnable driver.

Gate evidence: initfs 'bound: 0000--00--1f.2 -> ahcid', switchroot,
rootfs 'bound: 0000--00--02.0 -> e1000d' with ZERO deferred,
scheme:driver-manager registered, resident hotplug loop (250ms),
pcid-spawner dormant on both phases.
2026-07-24 05:38:16 +09:00
vasilito 431aa55e38 docs: QEMU pre-validation gate MET — dw-i2c fd-to-init boot fix
Record that redbear-mini now boots to the Red Bear login: prompt in QEMU.
Document the root cause (dw_i2c::endpoint::serve register_sync_scheme
never returned the cap fd to init — ptyd-class deadlock on type={scheme}
services) and the fix (deliver cap fd via INIT_NOTIFY). Note follow-ups:
_REG opregion-connect is dead code (initialize_namespace never called),
and driver-manager maps class=0x03 to full-only redox-drm in mini.
2026-07-24 04:03:16 +09:00
vasilito 3855f40a54 base: bump submodule — dw-i2c endpoint fd-to-init fix (62e7651f) 2026-07-24 03:35:15 +09:00
vasilito 7c06605b0e base: bump submodule — gate GPE dispatch (374a95ac) 2026-07-24 02:01:01 +09:00
vasilito 6ce94d1c9e cookbook: track Cargo path-dep source trees in the dep-hash cache
The content-hash cache covered recipe-level PKGARs and the recipe's own
source tree, but not Cargo 'path =' dependency sources inside a crate —
the exact pattern the local fork model mandates (redox_syscall, libredox,
redox-driver-*, pcid_interface). Editing a path-dep's source left the
dependent recipe cached and stale. Observed live during the
driver-manager QEMU gate: 'cook driver-manager - cached' while
redox-driver-core sources had changed; the markers never reached the ISO.

Fix:
- New cook::cargo_path_deps module: resolves path deps from Cargo.toml
  ([dependencies], dev/build deps, target-specific deps, [patch.*]
  tables, workspace members) recursively with cycle protection, and
  hashes each resolved source tree (sorted relpath+content walk,
  excluding .git/target — same policy as SourceContentHash).
- DepHashes gains a cargo_path_deps table (serde default for backward
  compatibility; a missing field invalidates once, then re-syncs).
- The rebuild decision now ORs recipe-PKGAR changes with cargo path-dep
  tree changes; the post-build write records the new map.

Acceptance: cook -> cached; content edit in redox-driver-core ->
'DEBUG: cargo path-dep source hashes changed' + rebuild; revert ->
rebuild once -> cached. 48 tests pass (43 cookbook lib + 5 new).
2026-07-23 23:54:41 +09:00
vasilito 92b3d93de7 base: bump submodule — pcid config EOF boundary (92bf05c2) 2026-07-23 22:22:52 +09:00
vasilito e230dfaa3d redox-driver-core: real MSI-X capability parse with bounded read + base bump
read_msix_capability previously read the whole config file unbounded
(pc hang: the config char device never EOF'd at the time) and then
returned None unconditionally. Now it reads at most 256 bytes (the
standard capability chain region) and parses the chain for real:
status bit, cap list walk, MSI-X (0x11) message-control table size.

Includes base submodule bump for the pcid config EOF fix.
2026-07-23 22:19:19 +09:00
vasilito 2e9c746745 recipes: remove remaining stale duplicate manifests + driver-manager stale src/
Completes the stale-tree cleanup: redox-driver-core/Cargo.toml (left
target-less after the src/ removal, breaking cargo workspace search),
driver-manager/Cargo.toml and driver-manager/src/*.rs (Jul-10 duplicate
sources whose exec.rs predates the live tree's P0-3 removal). Live
trees are */source/.
2026-07-23 22:12:37 +09:00
vasilito f9e153f0fc base: bump submodule — initfs drivers target wires driver-manager-initfs (f2fbf7ad) 2026-07-23 20:36:20 +09:00
vasilito e91c0ca4b6 pcid/base bump + redox-driver-pci: 64-byte header reads
- base bump (b0e76065): pcid PCI 3.0 fallback no longer panics on
  extended config reads (returns 0xFFFFFFFF, drops writes).
- redox-driver-pci PciBus reads only the 64-byte standard header it
  consumes (vendor/device/class/subsystem), instead of the whole 4 KiB
  config file per device per poll cycle — safe on MCFG-less machines
  and cheaper everywhere.
2026-07-23 20:14:43 +09:00
vasilito d24b778173 docs: README pointer to v3.1 cutover 2026-07-23 18:45:42 +09:00
vasilito 9dd4ddf0ef docs: pointers to v3.1 — cutover complete, pcid-spawner gated fallback 2026-07-23 18:41:58 +09:00
vasilito a083a427b5 redox-driver-core: remove stale pre-dynid duplicate tree (live tree is source/src/)
The src/ directory held a July-10 snapshot of the crate from before
dynids, the concurrent path, and the modern-technology helpers — a
duplicate that could only mislead. The canonical tree is
local/recipes/drivers/redox-driver-core/source/src/.
2026-07-23 18:25:56 +09:00
vasilito 884f9e8e0d driver-manager: v3.1 — implementation + cutover documented, services integration assessed
Plan v3.1 records the completed P0/LDR/P2 work program and the
operator-ratified cutover (driver-manager owns the boot path in all
redbear-* configs; pcid-spawner gated as fallback). Assessment § 11
documents the OS-services integration: init ConditionPathExists gate,
live driver-params bridge, udev-shim driver-binding gap (P3), and the
correct absence of D-Bus (bridge-on-demand pattern).
2026-07-23 18:08:03 +09:00
vasilito b338760111 config: driver-manager cutover — retire pcid-spawner from the boot path
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.
2026-07-23 17:53:20 +09:00
vasilito 57811564bc base: bump submodule — init ConditionPathExists service gate (e30f2499)
init now supports systemd-style ConditionPathExists (with ! negation)
in service files, and the C0 driver-manager service file has correct
polarity. The C0 dormancy is now by design (condition gate) instead of
by parser rejection accident.
2026-07-23 16:57:53 +09:00