Commit Graph

486 Commits

Author SHA1 Message Date
vasilito 687e7f9589 base: bump submodule — ihdad DSP graceful failure (c836fffb) 2026-07-23 06:35:54 +09:00
vasilito e0e22aa58e submodules: syscall 2396d8c + kernel 00da9847 + base b5f84b44 — LPIT→MWAIT Modern Standby wiring + _REG + ACPI gaps
- syscall: AcpiVerb::SetLpiHint (verb 7)
- kernel: idle_loop consumes LPIT MWAIT hint (firmware-optimal s2idle C-state)
- base: _REG opregion connect, LPIT GAS-offset parse fix, thermal _ACx,
  PM timer, HW-reduced ACPI detection, general GPE _Lxx/_Exx dispatch
2026-07-22 22:10:53 +09:00
vasilito c0410449cb base: bump submodule — acpid GPE _Lxx/_Exx dispatch + PM timer (0485ae66)
Also: redox-drm DPCD AUX stub replaced with real implementation.

- redox-drm/intel/display.rs: read_dpcd skeleton (hardcoded
  vec![0x12,0x0A,0x84,0x01]) replaced with real native AUX channel
  read. aux_read() implements the DP AUX protocol: native read cmd
  (0x9) + 20-bit address + len-1 written to DP_AUX_CH_DATA, SEND_BUSY
  + message size + MTL POWER_REQUEST to DP_AUX_CH_CTL, DONE/error
  polling, ACK reply check, payload extract. Per zero-stub policy.
  Reference: Linux intel_dp_aux.c + intel_dp_aux_regs.h, VESA DP 1.4.

- redox-drm/intel/backlight.rs: remove leftover fake_mmio_size test
  artifact.

- Plan doc: Phase 3.3 marked code-complete (GMBUS EDID real, DPCD
  AUX real; modeset proof needs host). ACPICA assessment updated with
  GPE _Lxx/_Exx dispatch and PM timer.
2026-07-22 19:15:05 +09:00
vasilito 07ba337133 base: bump submodule — acpid thermal zone methods (94d1b92d)
Also: btusb firmware download command sequence + plan doc updates.

- btintel.rs extended: firmware_download_commands() generates the
  full HCI command sequence for SFI firmware download (CSS header +
  PKey + Signature + payload fragments). RSA and ECDSA header types
  supported. secure_send_commands() splits data into 252-byte
  fragments with type prefix. extract_boot_param() finds the
  CMD_WRITE_BOOT_PARAMS record in firmware data. 5 new unit tests
  (160 total pass).

- acpid/scheme.rs: ThermalZone handle kind for per-zone ACPI thermal
  data. /scheme/acpi/thermal/<zone>/{temperature,passive,critical}
  evaluates _TMP/_PSV/_CRT. thermald can now read real thresholds.

- Plan doc: Phase 7.1 updated with download command sequence.
  ACPICA assessment updated with thermal zone methods.
2026-07-22 17:32:41 +09:00
vasilito 1f3d999785 base: bump submodule — acpid wake arming + sleep states (7071c452)
Also: btusb btintel firmware loading module + plan doc updates.

- btintel.rs (241 lines): Intel BT firmware loading infrastructure.
  IntelVersion parse from HCI event, bootloader/operational detection,
  MFG enter/exit commands, firmware fragment splitting (252-byte
  chunks), SFI/DDC filename tables for Intel BT devices (0037, 0a2b,
  0aa7, 0aaa, 0036, 0025, 0026, 0029, 0032, 0033), CSS header length
  detection (RSA 644B / ECDSA 644B). 4 unit tests. Ported from Linux
  drivers/bluetooth/btintel.c.

- Plan doc: Phase 7.1 marked partial (btintel module done, HCI
  transport wiring remains). ACPICA assessment updated with
  _DSW/_PSW wake arming and sleep state discovery.
2026-07-22 15:50:00 +09:00
vasilito d596ea3924 bump submodule/base — pcid config-access boundary fix
Bumps base to include the pcid guard (out-of-range PCIe config offsets
return the no-response pattern / no-op instead of aborting pcid) plus
all the operator's ACPI-runtime, i2c, and ided work already on the
submodule branch. This unblocks boot past the previous pcid Invalid
opcode fault, through switchroot and the /usr driver set.

Also carries the earlier accidental commit of the initnsmgr Step 1
Send refactor (Rc<RefCell<Namespace>> -> Arc<sync::Mutex<Namespace>>),
now VALIDATED: a low-load boot progressed through all initfs units,
switchroot, and the /usr drivers via the Arc<Mutex> namespace manager
(hundreds of opens) with no regression. The residual under-load
head-of-line wedge is the known single-threaded initnsmgr issue tracked
in local/docs/INITNSMGR-CONCURRENCY-DESIGN.md (worker-offload / Design B).
2026-07-22 14:21:50 +09:00
vasilito f686cc27d5 base: bump submodule — acpid LPIT + _PRW wake + S0-idle (ACPICA port) (a12fb9fc)
Also update LG Gram plan doc: ACPICA assessment (port algorithms,
not the C library), pcid assessment (correct, no changes needed),
Phase 9.1 marked partial (LPIT + _PRW + S0-idle done; MWAIT loop
remains), status updated to reflect completed phases.
2026-07-22 12:26:38 +09:00
vasilito f2f10ae55d base: bump submodule — ided PCI native mode implementation (cf2abc64) 2026-07-22 05:28:21 +09:00
vasilito b058338efd base: bump submodule — acpi-rs stub elimination + UAS transport + virtio arch fixes
acpi-rs: all ~20 resource descriptor stubs eliminated (ACPI 6.5 §6.4),
ConnectionField/Match/Index-ref stubs in mod.rs eliminated (6571df78)

driver-manager: add pid_to_device tracking map
2026-07-22 05:06:05 +09:00
vasilito c72bd6ed5e lg-gram-16z90tp: Phase 5 + Phase 4.4 code-complete (acpid events + multitouch)
Submodule bump (base f315a9be):
- Vendored acpi-rs fork with real Opcode::Notify (upstream panicked).
- acpid Phase 5: GPE/PM1 dispatch, EC query loop, lid/button/fan
  scheme surfaces, AML notification queue, SCI IRQ subscription.
- i2c-hidd Phase 4.4: HID 1.11 descriptor parser + decoder, multi-
  touch digitizer forwarding (absolute pointer + two-finger scroll).

Parent changes:
- redbear-upower: 250 ms notification drain arm polls
  /scheme/acpi/notifications and emits Changed D-Bus signal on power
  state transitions. The existing 30 s poll stays as a safety net.
- LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md: Phase 4.4 + Phase 5
  (P5.0-P5.5) marked code-complete with status preambles, stub sweep
  notes, file mappings, and runtime-gate-still-open disclaimers.

Runtime validation (Gate 5: AC event latency, lid, power button, fan)
remains pending Phase 1 bare-metal boot.
2026-07-21 21:40:04 +09:00
vasilito 1720af1431 driver-manager: v1.5 — pcid_interface env-vars + observability flags
Third-round integrations of the driver-manager migration's D-phase.
The pcid_interface crate (in local/sources/base submodule, see
upstream commit ddcd0870) now reads REDBEAR_DRIVER_PCI_IRQ_MODE
and REDBEAR_DRIVER_DISABLE_ACCEL at connect_default time, exposing
them as PciFunctionHandle accessors. The quirk integration is
end-to-end: driver-manager emits the env vars on spawn, pcid_interface
parses them, and the child driver reads the hints from its
PciFunctionHandle.

driver-manager (16 tests, unchanged count + 3 new for observability):
- main.rs: --list-drivers prints the config table, --dry-run
  prints how many drivers would-bind/defer/blacklisted without
  spawning, --export-blacklist prints the loaded blacklist.
- policy.rs: adds blacklist_module_names() iterator for export.

driver-manager v1.5 quirks.rs (created earlier at v1.4 PciQuirkFlags
work) is in the staging area and is unchanged this round.

local/scripts/driver-manager-audit-no-stubs.py:
- Drops R4 (was: 'let _ = ...' no-op detection) because Rust's
  'let _ = expression' is idiomatic and not actually a stub.
- Adds R5 (stub-macro callbacks: unimplemented!/todo!/unreachable!
  in callback / fn bodies) to detect dead-end fallbacks.
- Audit gate now reports 0 violations across 35 files (was 34,
  pcid_interface is now in scope).

local/sources/base submodule pointer: updated to upstream commit
ddcd0870 (the pcid_interface env-var-reading commit).

Test totals: 58 tests across 4 crates, all passing.
§ 0.5 audit-no-stubs.py: 0 violations across 35 files.
2026-07-21 12:16:00 +09:00
vasilito b050b28598 lg-gram-16z90tp: review-fix round — firmware op-mode honesty + docs
Base submodule bump (6db0f481): hardware-correct DesignWare engine
(disable/program/enable ordering, abort-first polling, corrected SCL
timing, recovery, validation) and proper Intel LPSS PCI bring-up.

- iwlwifi candidate tables: remove the c-prefixed iwlmld series from
  the current Mini-MVM candidate lists — the MVM transport cannot
  drive MLD firmware, and selecting it would fail firmware boot
  instead of falling back to a compatible image (review MAJOR). c-series
  returns with the MLD op-mode (Phase 6/W). Fallback TOML chains no
  longer mix MLD and MVM series.
- redbear-iwlwifi + redbear-wifictl candidate detection now probes
  both the flat /lib/firmware/iwlwifi-* and the post-2026
  /lib/firmware/intel/iwlwifi/ layouts (review MAJOR).
- plan doc: review-fix round recorded; precision fixes — amd-mp2-i2cd
  remains registration-only until its mailbox engine lands, and the
  system-quirk flags parse but have no consumers until Phase 5.

Validation: iwlwifi 8 + wifictl 21 tests pass, base cooks for
x86_64-unknown-redox.
2026-07-21 12:06:21 +09:00
vasilito 0ddc032202 acpid hardening + initnsmgr concurrency design
- Bump submodule/base to the acpid AML-handler hardening (bounded stall,
  mutex owner-check, static _PSS/_PSD/_CST/_CPC cache, panic-free scheme
  path, observability). Proven NOT a regression: a mutex-only baseline
  wedges identically under load in a 3/3 framebuffer-ground-truth test,
  so the residual under-load boot wedge is head-of-line blocking in
  initnsmgr, not acpid.

- Add local/docs/INITNSMGR-CONCURRENCY-DESIGN.md: the concrete
  worker-offload design (Design A) that decouples the blocking openat
  from the initnsmgr dispatch loop, plus Design B (kernel O_NONBLOCK +
  deferred single-thread), a staged plan, and validation rules. Key
  finding baked in: redox_rt's Mutex is a spinlock, so the cap_fd must be
  resolved under a short lock and the openat run with the lock released.

- Update INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md with the acpid
  hardening section (done vs the still-deferred #1 transport decoupling).

- Add local/patches/wip-initnsmgr/step1-send-refactor.patch: the
  compiled-but-not-yet-boot-validated Step 1 (Rc<RefCell> -> Arc<Mutex>
  Send refactor) of initnsmgr, saved durably. It is intentionally NOT in
  the base gitlink: bootstrap is the earliest-boot component and this
  must be boot-validated on an idle host (the current host is under heavy
  external load) before landing. Steps 2-5 (worker bring-up) likewise
  need an idle host.
2026-07-21 08:34:22 +09:00
vasilito 5fd2e16b8e driver-manager: v1.4 — second-round integrations
Round-two integrations of the driver-manager migration's D-phase.
The policy loader is now active (the redbear-driver-policy package
now actually changes spawn_decision_gate behavior at runtime), the
--concurrent=N CLI flag enables the SMP worker pool, PciQuirkFlags
is wired into actual driver spawn (env vars to the child), and the
two C0 service files have been committed in the local/sources/base
submodule. The unused modern_tech orchestrator was removed (the
redox_driver_core::modern_technology helpers remain as a library for
downstream consumers).

driver-manager (16 tests, was 13):
- config.rs: PciQuirkFlags hints are now passed to the spawned child as
  env vars (REDBEAR_DRIVER_PCI_IRQ_MODE=intx_or_msi, REDBEAR_DRIVER_DISABLE_ACCEL=1).
  Adds blacklist_match() consult at probe time before spawn_decision_gate.
- main.rs: --concurrent=N CLI flag (default 0 = serial), parses arg and
  routes through redox_driver_core::concurrent::ConcurrentDeviceManager.
  Loads /etc/driver-manager.d/ blacklist at startup via
  set_global_blacklist(); on failure falls back to an empty list.
- policy.rs: new file. BlacklistFile / BlacklistEntry TOML schema,
  load_dir() reads .toml/.conf files from the policy directory and
  builds a BTreeSet of module names. Missing directory returns empty
  (opt-in). Tests cover missing / valid / invalid-file paths.

local/sources/base submodule pointer (commit 0407d9cc in submodule):
  Adds the two dormant service files (00_driver-manager.service in
  init.d/ and 40_driver-manager-initfs.service in init.initfs.d/).
  Both are gated by ConditionPathExists=!/etc/driver-manager.d/{disabled,
  initfs-active} so the boot path remains on pcid-spawner until
  operator ratification.

redox-driver-core: unchanged library. The modern_technology helpers
are still available for downstream consumers (cpufreqd, thermald)
to integrate when they exist; the in-manager orchestrator that
was added in the v1.3 round has been removed because it wrote JSON
files that nothing read.

§ 0.5 audit-no-stubs.py: 0 violations across 34 files. 52 tests pass
across the three crates.
2026-07-21 07:39:45 +09:00
vasilito 075dce8b46 lg-gram-16z90tp: Phase 4.1-4.3 — I2C-HID touchpad chain (real implementations)
Base submodule bump (452452e4): the I2C transfer chain was stubbed
end-to-end and is now real code — dw-i2c DesignWare engine ported from
Linux 7.1, intel-lpss-i2cd PCI discovery for ARL-H/MTL-P, i2cd provider
routing.

Config fixes for the chain:

- drivers.d spawn paths: six entries pointed at /usr/lib/drivers/ for
  binaries staged at /usr/bin/ (i2cd, gpiod, dw-acpi-i2cd, intel-gpiod,
  i2c-gpio-expanderd, i2c-hidd) — those drivers would never spawn.
- init services: add 00_intel-lpss-i2cd.service
  (type = { scheme = "i2c-lpss" }, absolute cmd path since init PATH
  covers only /usr/bin); dw-acpi-i2cd upgraded from oneshot_async to
  type = { scheme = "dw-acpi-i2c" } now that it serves a scheme
  forever; i2c-hidd requires_weak gains 00_intel-lpss-i2cd.service so
  the touchpad adapter exists before HID probing.

Validation: base cooks for x86_64-unknown-redox; staged binary paths
verified against spawn configs; make lint-config clean.

Refs: local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md Phase 4
2026-07-21 06:04:31 +09:00
vasilito 18c892a136 mini: fix acpid AML-mutex wedge so redbear-mini logs into brush
redbear-mini now reaches a working brush login and executes commands
(framebuffer ground truth: login -> MOTD -> `user@redbear: $` ->
`echo RB=$((21*2))=OK` -> `RB=42=OK`; login ~12s, brush ~16s in QEMU
q35/KVM). This is the console-login floor of the desktop path.

Root cause was NOT in login/brush/pty/spawn (16+ prior sessions chased
those). cpufreqd reads /scheme/acpi/processor/CPUn/pss; evaluating that
AML ran `_ACQ` on an ACPI mutex whose acquire handler (a) multiplied
the millisecond timeout by 1000 (0xFFFF "wait forever" became ~18h) and
(b) tracked no owner, so a nested acquire by acpid's single AML thread
self-deadlocked. Because acpid is single-threaded and also serves the
`acpi` scheme socket, and because the single-threaded init namespace
manager does a blocking openat in its dispatch loop, a stuck acpid
froze EVERY open in the system. Fixed in submodule/base d78fd44a
(bumped here), verified against local/reference/linux-7.1 ACPICA.

Docs:
- Add local/docs/INIT-NAMESPACE-MANAGER-SCALABILITY-PLAN.md: the
  residual architectural root (initnsmgr head-of-line blocking + kernel
  ignoring O_NONBLOCK on open) that still lets one slow daemon wedge the
  whole open path, with a worker-offload / deferred-open / kernel
  O_NONBLOCK execution plan. This is the answer to "use SMP where it's
  justified": the parallelism that matters is fault isolation of the
  namespace-open path, not throughput.
- CONSOLE-TO-KDE-DESKTOP-PLAN.md v5.9: record the mini-login result and
  point at the new plan.

Note: submodule/base worktree also carries in-progress i2c/driver-manager
work (not part of this commit); the acpid fix is isolated.
2026-07-21 04:55:02 +09:00
vasilito 5bde1cd716 submodules: bump base — usbhidd multi-config endpoint indexing fix 2026-07-20 21:09:06 +09:00
vasilito a83be41585 usb: bump base fork — P7-A USB 2.0 HW LPM implemented in xhcid
base -> 2a3b0d4e: per-device USB 2.0 hardware LPM (L1) enablement at
attach in xhcid (full Linux xhci.c:4650 gate chain, BESL/HIRD params,
MEL Evaluate Context, PORTHLPMC/PORTPMSC sequence). Plan P7-A updated:
xhcid side done; ehcid USBCMD.HIRD and hardware L1 validation remain.
2026-07-20 19:22:18 +09:00
vasilito 9245ad426a irq: shared-IRQ re-arm bug-class sweep across base drivers + plan update
Bump base fork to 28afc1fe:
- ad40fffd ahcid: always re-arm the IRQ line, even for foreign interrupts
  (from the UAS workstream)
- 92924224 e1000d/ihdad/vboxd/xhcid: unconditional ack
- 28afc1fe sb16d/ac97d/rtl8139d/rtl8168d/ixgbed/ihdgd: unconditional ack
- 54e89a33 fbcond: perform the display handoff open off the console loop
  (concurrent session's root-cause fix for the '-vga std' boot freeze)

Bug class: kernel masks the IRQ line on delivery and only re-arms on the
userspace write-back; conditional acks wedged shared INTx lines forever.
Explains a class of 'works in QEMU, wedges on real hardware' failures.
Full audit + unaffected-driver rationale recorded in the IRQ plan P3
section.
2026-07-20 18:52:34 +09:00
vasilito fb3812b176 submodules: bump base and userutils fork pointers
base -> fb421083:
- fbcond: retry handoff while display driver is not ready (bounded
  250x10ms; fixes the 2026-07-20 '-vga std' boot freeze at 'Performing
  handoff' where a transient not-ready driver left the framebuffer VT
  permanently blank)
- xhcid/virtio-netd: info-level IRQ/MSI-X delivery and reactor startup
  milestones for runtime-proof observability
- usb: demote diagnostic ATTACH/HUBFLOW traces to debug!
- usbhubd: gate port-indicator SetPortFeature on hub capability

userutils -> 3b02e0b9:
- getty: harden the console<->PTY bridge against transient
  read/write/event errors (log-and-continue instead of panic; a panic
  here killed the live shell's I/O)
2026-07-20 09:05:16 +09:00
vasilito 1baf1a17fb kernel: use fork Makefile install target in recipe; bump fork pointer
The kernel fork (submodule/kernel bd1b251f) now provides a proper
'install' target honoring DESTDIR, so the recipe no longer hand-rolls
the staging copy. Fork also gains post-merge compile fixes (import
dedup + UnmapVec).
2026-07-20 09:05:00 +09:00
vasilito 1cde9f2fb6 chore: track base pointer — ipcd SO_PEERCRED double-borrow, ptyd runtime-error hardening, inputd producer-write UB fixes 2026-07-19 12:29:41 +09:00
vasilito 2959c91706 kernel + relibc fork syncs — all 9 forks pass the function gate
kernel (660e3e00): merged upstream/master (10 commits — context
timer-separation, dtb translation + tests, event read_with_timeout,
proc wakeup paths, dup2 rewrite with rollback, futex Weak
context_lock). 5 conflicts resolved by hand (futex/event/proc/fs/
aarch64-start); repo cook kernel --force-rebuild successful.

relibc (27397a8c): merged upstream/master (50 commits — socket rework,
ld_so lifecycle with mark_ready/run_fini, dynamically-linked init,
start.rs allocator-model rewrite). 4 conflicts resolved by hand
(start/exec/sys/Cargo.lock); repo cook relibc --force-rebuild
successful.

verify-fork-functions.sh --no-fetch: ALL 9 FORKS PASS.
The image build gate is fully unblocked — redbear-mini builds again.
2026-07-19 07:13:27 +09:00
vasilito ba46a4c715 base fork sync (upstream 59cf8189) + P3-B/C doc closure + hub proof script
Base fork:
- Merged upstream/main 59cf8189 (13 upstream commits) into submodule/base
  as 9bbdc2ca; 3 conflicts resolved by hand (irq_reactor.rs process_one_event
  refactor + SPURIOUS_REBOOT reapply; randd simplification + fcntl reapply;
  Makefile /dev symlink block). verify-fork-functions gate now passes for
  base. kernel (11 fns) and relibc (2 fns) remain behind upstream — tracked
  as T-7d82cf6f / T-a5699340 / T-f5b7a0ea for dedicated sessions.
- Also landed earlier: upgrade-forks.sh cd-back bug fix (7e7ef73a).

Docs:
- P3-B marked COMPLETE (premise was stale: usbhubd is interrupt-driven
  with polling fallback today).
- P3-C marked hub-side COMPLETE (PortIndicator set in event loop);
  keyboard LED sync remains P5-C scope.
- README USB/Bluetooth row upgraded from red/in-progress to reflect
  P2-A/B/C + P3-A/B/C reality.

Validation:
- New test-usb-hub-qemu.sh (P8-B): boots QEMU with usb-hub + usb-kbd
  behind it, validates usbhubd spawn, 8-port descriptor read, change-
  detection mode, HID registration behind the hub, no panics. Cannot
  run until kernel+relibc syncs unblock the image build.
2026-07-19 05:48:45 +09:00
vasilito bfd56bac7e usb: P3-A complete — Linux hub.c enumeration state machine in usbhubd
Track base pointer to bd379e07 (usbhubd debounce/reset-wait/U0-wait/
wHubDelay + SET_ISOCH_DELAY, HubDescriptorV3 device_removable fix).

USB-IMPLEMENTATION-PLAN.md: P3-A marked CORE COMPLETE with the full
Linux equivalence inventory and documented follow-ups (USB 2.0 bitmaps,
SS.Inactive warm-reset loop, multi-TT, hub LPM). Hub gap-table row
updated (249 -> ~700 LoC with Linux state machine).

HARDWARE-VALIDATION-MATRIX.md: hub row updated — enumeration core
complete with 14 unit tests; runtime hub proof tracked under P8-B.
2026-07-19 00:28:29 +09:00
vasilito efd745c073 docs: USB/quirks/low-level doc consolidation + P2-C recovery completion
Documentation pass (staleness audit across 5 docs):

USB-IMPLEMENTATION-PLAN.md:
- P2-A marked COMPLETE (canonical 51-flag table in redox-driver-sys,
  ~85 entries, real HCIVERSION reads, BROKEN_MSI pre-gate)
- P2-C marked CORE COMPLETE: full 36-code recovery matrix documented
  (maybe_recover_transfer_error scheme.rs:559-925) with Linux xhci-ring.c
  equivalences, restart_endpoint bug fixes, known simplifications, and
  remaining P8-C injection-test scope
- Gap table corrected (quirks done, error recovery core done, PM substrate)
- P7-A corrected: HLC lives in Supported Protocol capability port_info
  DWORD, NOT HCCPARAMS1 (driver bug fixed in P2-B)
- §12 rewritten: runbook is live v3, not archived; lineage consolidated

IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md:
- xHCI section rewritten: 'restored' -> hardened/gated (BROKEN_MSI
  pre-gate, quirk convergence, real HCIVERSION, handle/method agreement)
- Priority 6 refocused from 'keep path healthy' to runtime validation
  (BROKEN_MSI controller proof, event-ring under sustained load)
- 26 stale recipes/core/*/source paths -> local/sources/* fork paths
- duplicate ACPI-IMPROVEMENT-PLAN.md reference removed
- xhcid evidence class upgraded to quirk-hardened
- USB plan cross-reference added (feature ownership boundary)

QUIRKS-AUDIT.md:
- xHCI tombstone removed: lookup_xhci_controller_quirks_full is now a
  real implementation over XHCI_QUIRK_TABLE (was stub returning empty())
- 'broken TOML mappings' section marked RESOLVED (all 4 flag names now
  in PCI_FLAG_NAMES)
- Implementation-status section re-assessed: xhcid consumes 51-flag
  XhciControllerQuirkFlags in ~40 paths (was: only PciQuirkFlags)
- test inventory +38 xhci_table.rs tests

QUIRKS-SYSTEM.md:
- xhci_table.rs added to compiled-in tables inventory and file layout
- implementation status: canonical xHCI table row added (P2-A)
- driver consumption: xhcid xHCI-controller-path flag list documented

QUIRKS-IMPROVEMENT-PLAN.md:
- Task 3.1 (USB device quirks in xhcid) marked DONE (13 flags consumed)
- exit criteria 3/4/5/7 marked met; deliverables 1/3/4 completed
- reassessment summary updated for XhciControllerQuirkFlags consumption

Also: chmod +x test-xhci-irq-qemu.sh, test-msix-qemu.sh,
test-usb-storage-qemu.sh (were non-executable).

Track base pointer to 26000333 (P2-C restart_endpoint fixes).
2026-07-18 23:15:00 +09:00
vasilito 1c15425e7e chore: clean diagnostics; brush login+shell fix (validated cwd) 2026-07-18 23:08:02 +09:00
vasilito d3e5fc0a82 usb: P2-B complete — HCCPARAMS2 capability gating in xhcid
Track base pointer to d20557f7 (xHCI 1.1+ feature gating: LEC/U3C/CIC
gates, HW LPM substrate with protocol-caps HLC detection, PORTPMSC
register-target fix, bogus HCCPARAMS1-HLC accessor removed).

Mark P2-B COMPLETE in USB-IMPLEMENTATION-PLAN.md with the full gating
inventory and Linux 7.1 cross-references. Per-device L1 enablement
(BESL, MEL Evaluate Context) explicitly deferred to P3 hub work.
2026-07-18 22:34:28 +09:00
vasilito 980fb994ae redox-driver-sys: canonical xHCI quirk table (Linux 7.1 port, 51 flags)
Expand XhciControllerQuirkFlags from 7 to all 51 flags defined in
Linux 7.1 xhci.h:1587-1649, each using 1u64 << N matching the kernel
bit positions. Add XhciQuirkEntry struct with vendor/device/revision
matching and a WILDCARD constant for catch-all rules.

Create xhci_table.rs — the canonical controller quirk table ported
from Linux 7.1 xhci-pci.c:xhci_pci_quirks() (lines 251-517). Covers
~85 entries across all vendors (Fresco Logic, NEC, AMD, ATI, Intel,
ETRON, Renesas, VIA, CDNS, Phytium, ASMedia, TI, Broadcom, Cavium,
Zhaoxin). 38 unit tests verify flag assignment for every vendor family.

Update lookup_xhci_controller_quirks_full() signature to accept
revision: u8 and hci_version: u16, enabling the two table entries
that depend on hci_version (AMD_0x96_HOST, >= 0x120 spec rule).

Bugs fixed vs xhcid's prior self-contained table:
- Intel 0x9c31 duplicate removed; WildcatPoint corrected to 0x9cb1
- Panther Point corrected to 0x1e31
- VIA VL805 corrected to LPM_SUPPORT + TRB_OVERFETCH
- Phytium corrected to RESET_ON_RESUME
- ASMedia 0x1142 corrected to NO_64BIT_SUPPORT + ASMEDIA_MODIFY_FLOWCONTROL
- Intel 0x9a13 moved off RESET_TO_DEFAULT list

xhcid now consumes this canonical path via a thin re-export shim
(base submodule pointer bumped to 9fc1947d).

Reference: local/reference/linux-7.1/drivers/usb/host/xhci-pci.c
           local/reference/linux-7.1/drivers/usb/host/xhci.h
2026-07-18 21:54:12 +09:00
vasilito a927437d55 chore: track userutils pointer (shell cwd fix - brush now spawns) 2026-07-18 21:26:30 +09:00
vasilito 367e02d3f6 chore: track relibc pointer (execve ENOENT diag) 2026-07-18 20:45:22 +09:00
vasilito a66db2c77b chore: track relibc pointer (spawn diag fd2) 2026-07-18 20:33:06 +09:00
vasilito 4a556f56e7 chore: track relibc pointer (spawn ENOENT diag) 2026-07-18 20:25:24 +09:00
vasilito 6ada6661be chore: track userutils pointer (explicit shell stdio fds) 2026-07-18 18:13:47 +09:00
vasilito e0533832af chore: track userutils pointer (FD_CLOEXEC stdio clear + diag) 2026-07-18 17:56:48 +09:00
vasilito c3755d687d chore: track kernel+base pointers (drop kernel diag, add ptyd diag) 2026-07-18 17:29:36 +09:00
vasilito 05f18e5f9b chore: track kernel pointer (dup2 refresh diag) 2026-07-18 17:21:59 +09:00
vasilito 0d5043f3fc chore: track relibc pointer (non-fatal filetable refresh) 2026-07-18 16:34:46 +09:00
vasilito 13cc6fb0c3 chore: track installer pointer (collision-tracker WIP) 2026-07-18 16:08:15 +09:00
vasilito 26cdbe4ac5 chore: track kernel pointer (conservative dup2 refresh) 2026-07-18 15:58:51 +09:00
vasilito c2ca67f7d0 chore: track kernel+relibc pointers (filetable-refresh fd fix); shell back to brush 2026-07-18 14:59:12 +09:00
vasilito 7b004272a3 chore: track userutils pointer (termios cast fix) 2026-07-18 14:35:26 +09:00
vasilito 27e97a1132 chore: track userutils pointer (canonical terminal reset before shell) 2026-07-18 14:33:41 +09:00
vasilito 59357561f9 chore: track userutils pointer (blocking console fds before shell) 2026-07-18 13:05:05 +09:00
vasilito 170cbe65fb chore: track userutils pointer (skip login ns restriction test) 2026-07-18 12:52:55 +09:00
vasilito e9f37fa2ab chore: track userutils pointer (getty fwd diag) 2026-07-18 12:42:08 +09:00
vasilito a92f698849 chore: track base pointer (fbcond keyboard CR->LF) 2026-07-18 12:02:48 +09:00
vasilito 246ebdfc4b chore: track userutils pointer (login chdir-before-mkns fix) 2026-07-18 11:01:26 +09:00
vasilito 4c610e6555 chore: track base+userutils pointers (init CWD fix) + clean brush patch 2026-07-18 10:43:18 +09:00
vasilito ab2ca5399a chore: track userutils pointer (spawn diag) 2026-07-18 10:26:53 +09:00