Commit Graph

33 Commits

Author SHA1 Message Date
vasilito 233ccc41f4 docs: record P6-A completion + endpoint-indexing bug-class audit (2026-07-20)
acmd global-index fix + serial-state/SEND_BREAK (f505d18a89), ecmd/usbaudiod
address-vs-index fix (08097d5a2d), usbhidd per-config reset (94a99f02).
bot.rs assigned to UAS workstream. Multi-port IAD remains open.
2026-07-20 21:10:19 +09:00
vasilito cd9b225e39 docs: scope USB P7-B — real work is SEL/PEL timeout computation, not register writes
Upstream xhci_calculate_lpm_timeout needs SuperSpeed endpoint companion
SEL/PEL parsing across the hub tree + tier policy + XHCI_LPM_SUPPORT
vendor quirk. Defaults-only timeout writes would be speculative and can
break device links. P7-B assigned a dedicated workstream.
2026-07-20 19:27:00 +09:00
vasilito 1aae92524f docs: re-scope USB P7-A EHCI task — no generic EHCI HW LPM exists in Linux 7.1
Audit: set_usb2_hw_lpm is xHCI-only upstream; EHCI PM is vendor-specific
TDI PHY LPM only. Correct EHCI power path is legacy L2 port suspend
(host-agnostic); deferred until a concrete device need arises.
2026-07-20 19:24:32 +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 865beb82d5 docs: reconcile USB plan P6 preamble with P1-D driver reality
P6 claimed acmd/ecmd/usbaudiod were 32-line stubs; P1-D (2026-07-08)
resolved that they are real implementations. Verified 2026-07-20:
redbear-acmd 186 LoC (line coding, DTR/RTS, scheme), redbear-ecmd 314,
redbear-usbaudiod 367. P6-A remaining scope is CTS/DSR flow control,
break signaling, and multi-port modem support; NCM/audio/serial-chip
families remain missing entirely.
2026-07-20 09:42:24 +09:00
vasilito a6c7d1d9c6 docs: 'reactor startup race' root cause = startup latency under load
Correct the P3-A runtime-validation note and matrix row: the
intermittent apparent boot freeze is startup latency under load (guest
clock ~10-15x slower than wall), not a deadlock or an xhcid bug. A short
50-60s test timeout occasionally cuts the spawn+enumerate sequence,
producing a 'frozen' log while the guest is still running — proven by
18 boots (one apparent short-timeout loss), a 12s log-quiet 'freeze'
the guest resumed from, and every >=180s run enumerating fully. No fix
required beyond adequate test timeouts; no speculative kernel-deadlock
fix was implemented.
2026-07-19 23:13:46 +09:00
vasilito 6446d440bf usb: hub-child enumeration proven end-to-end in QEMU + tighten hub test
The usb-kbd behind the QEMU usb-hub now enumerates fully: debounce ->
port reset -> enable -> second debounce -> pre-attach -> attach ->
ATTACH 5.2 -> slot 3 -> addressed -> descriptors read -> HID class match
-> 'Loading subdriver "USB HID" for port 5.2' (class 3.1 proto 1,
keyboard boot protocol).

Root cause of the final stall: an unconditional SetPortFeature
(PORT_INDICATOR) for every connected+enabled port NAK-hung on QEMU's
indicator-less hub (no control-transfer timeout), blocking the flow
before the post-enable debounce. Now gated on
wHubCharacteristics.HUB_CHAR_PORTIND like Linux has_indicators.

test-usb-hub-qemu.sh: check #5 now requires the hub-child subdriver
line ('Loading subdriver "USB HID" for port <root>.<child>') so a
root-port HID (tablet) can no longer satisfy it — closes a false-
positive hole. Timeout raised to 360s for slow TT-path driver bring-up.

Docs (plan P3-A runtime validation + matrix): full hub + hub-child
chain recorded as QEMU-proven; remaining items (intermittent reactor
startup race, slow TT-path Evaluate Context) noted.
2026-07-19 19:55:27 +09:00
vasilito e55e0f186b docs: P3-A runtime validation — hub chain proven, hub-child gap recorded
USB-IMPLEMENTATION-PLAN.md P3-A: record the 2026-07-19 QEMU runtime
validation (test-usb-hub-qemu.sh) — full usbhubd chain proven
(descriptor, EP1 change detection, initial scan, debounce, reset to
port-enable), the five latent bugs it surfaced and that were fixed
(scheme attach bootstrap, bitmap off-by-one, missing initial scan,
unbounded EP1 wait, debounce clear deadlock), QEMU's ClearPortFeature
stall handled gracefully by P2-C recovery, and the remaining gap:
hub-child device enumeration (usb-kbd to HID driver) blocked on
xhcid's hub-child attach path (debug-level; TT/route investigation)
plus an intermittent xhcid IRQ-reactor startup race.

HARDWARE-VALIDATION-MATRIX.md: hub row to QEMU-validated for the
enumeration chain, with the hub-child gap noted.
2026-07-19 11:17:21 +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 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 c97a8c759c docs: remove dangling archived doc refs
Updated the live USB and threading plans to reference the restored live copies instead of deleted archived paths.
2026-07-13 19:28:13 +03:00
vasilito 54aac15bae docs: correct USB plan — all class drivers functional, 12+ quirks enforced
Corrected three outdated claims in the USB plan that resulted
from the original 2026-07-07 audit:

1. '3 class drivers are 32-line stubs' — WRONG.
   redbear-acmd: 133 lines, CDC ACM serial (fully implemented)
   redbear-ecmd: 261 lines, CDC ECM Ethernet (fully implemented)
   redbear-usbaudiod: 308 lines, USB Audio (fully implemented)

2. 'xHCI quirks: 0' — WRONG. 12+ quirks enforced at runtime
   (NO_64BIT_SUPPORT, ZERO_64B_REGS, BROKEN_STREAMS,
    HW_LPM_DISABLE, LPM_SUPPORT, U2_DISABLE_WAKE, etc.)

3. 'Only ehcid implements UsbHostController' — WRONG. All 4 do.

Updated: P1-D section (3 empty stubs → RESOLVED), P6 status,
quirks count in status table.
2026-07-09 01:21:49 +03:00
vasilito 5657194179 docs: update USB plan — P0+P1 resolved, all 4 controllers implement trait
Corrected outdated claim that 'only ehcid implements UsbHostController.'
Verified all xhcid, uhcid, ohcid implement it. Marked critical risks
as resolved (usbscsid unwrap, xhcid panic sites). P0+P1 complete.
2026-07-09 01:08:06 +03:00
vasilito 1bc5f8ac88 docs: USB v3 plan + runbook — first-class-citizen roadmap
v3 USB-IMPLEMENTATION-PLAN supersedes v2 (archived).  Comprehensive
audit-driven roadmap with 9 phases (P1–P9) to make USB a first-class
citizen in Red Bear OS:

  P1: Trait unification (all 4 controllers implement UsbHostController)
      + panic hardening (usbscsid 0 panics, xhcid <20 unwraps)
      + remove 3 empty stubs (usbaudiod, acmd, ecmd)
  P2: xHCI core — 51-quirk table, HCCPARAMS2 parsing, 36-code error
      recovery (babble, transaction error, stall, split)
  P3: Hub driver — full enumeration (wHubDelay, power timing, USB 3 SS)
      + interrupt-driven change detection + port LED
  P4: Storage — UAS protocol, multi-LUN, SYNCHRONIZE_CACHE, UNMAP, mass-storage
      quirks applied at runtime
  P5: HID — report descriptor parser, usage→evdev mapping, LED sync, quirks,
      multi-touch
  P6: Class driver completeness — CDC ACM, CDC NCM, USB Audio, USB-serial
      (FTDI/CP210x/PL2303/CH341), compliance test driver
  P7: Power management — USB 2.0 LPM, USB 3.0 U1/U2/U3, runtime PM autosuspend
  P8: Validation — hardware matrix ≥10 rows + 6 new QEMU scripts
      + error-injection tests
  P9: Modern USB scope ADR (host-only; already written in v2 §12)

Linux 7.1 is the implementation of excellence — every feature has a
concrete cross-reference (file:line) and a 'port line-by-line' strategy
when implementation detail is in doubt.

USB-VALIDATION-RUNBOOK v3 replaces v2 (archived): test matrix with
per-phase exit gates, operator runbook for failures.

Stale items cleared:
  - v2 active plan archived as USB-IMPLEMENTATION-PLAN-v2-2026-07.md
  - v2 active runbook archived as USB-VALIDATION-RUNBOOK-2026-07.md
  - archived/README.md supersession table extended
2026-07-07 05:21:35 +03:00
vasilito c5a229a7cd redbear-power: fix all remaining clippy warnings (16→0)
Manual fixes: unnecessary_sort_by→sort_by_key, ptr_arg Vec→slice,
needless_range_loop→iter_mut, question_mark let-else, while_let_loop,
manual_checked_ops, collapsible-if in match arms, identical if-blocks
merged with ||, vec_init_then_push allow on motherboard panel.
Zero behavioral changes. 220 tests pass.
2026-07-07 05:17:46 +03:00
vasilito bd1016a202 docs: P1 verified + P5 USB scope ADR
P1 USB 3.x hub correctness verified against codebase:
  - packet-size handling (bytes vs shift exponent) in baseline
  - HubDescriptorV2/V3 separate reading paths in usbhubd
  - Slot context hub bit + port count correctly set
  - SET_HUB_DEPTH issued for USB 3 hubs
  - TTT not applicable to USB 3 (TT is USB 2.0 split-transaction)
  - TODOs about interface_desc/alternate_setting on USB 3 hubs
    are safe — passing None matches upstream behavior

  P5 Modern USB Scope Decision (ADR):
  - Host-only for foreseeable future
  - Explicitly excluded: device mode, OTG, USB-C PD, alt-modes,
    USB4, Thunderbolt, xHCI DbC
  - Reviewed per release branch cut
2026-07-07 04:54:32 +03:00
vasilito 97a1ad301f docs+scripts: mark P0-A4/P2-A done, strengthen storage test
test-usb-storage-qemu.sh:
  - Require [PASS] STORAGE_WRITE + STORAGE_READBACK + STORAGE_RESTORE
    (previously only checked STORAGE_READBACK)
  - Expect each check individually, fail fast on any FAIL

  USB-IMPLEMENTATION-PLAN.md v2:
  - P0-A4: marked done (bounds check committed)
  - P2-A: marked done (write+readback proof already in checker)
2026-07-07 04:48:31 +03:00
vasilito 05bb9095ce docs: USB-IMPLEMENTATION-PLAN.md v2 — mark P0-A1 done + P0-A2..B2 handoff
Update §5 phases table: P0-A1  committed (base fork cbd40e0d, parent
a2998c2d).

Update §6 validation table: test-xhci-irq-qemu.sh now greps for actual
reactor log lines (not fictitious strings).

Update §7 durability log: base fork now has two USB commits (one from
P0-A1), not one.  The "first USB-focused commit since dd08b76" is
now cbd40e0d.

Add §11 — implementation handoff appendix with per-phase concrete
targets: upstream commit SHAs, files to touch per phase, git-landing
rules, validation scripts to write, and dependency graph (P0-B2 depends
on P0-B1; P0-A2 through P0-A4 are independent of B; P0-B1 is unblocked).
2026-07-07 00:44:31 +03:00
vasilito b5205e162d docs: USB-IMPLEMENTATION-PLAN.md v2 — source-anchored audit and P0-P5 phases
Replace v1 (now archived/USB-IMPLEMENTATION-PLAN-v1-2026-04.md) with a
comprehensive v2 that re-audits every daemon against local/sources/base/
HEAD, aligns with Redox 0.x USB HEAD (Jan-Jul 2026), and reorganizes
phases around bare-metal correctness gaps.

Key v1→v2 corrections:
- xHCI interrupts are *not* restored in production (main.rs:141 hardcodes
  Polling).  This was the biggest v1 overstatement.  P0-A1 now fixes it.
- uhcid/ohcid are 35-line stubs, not "ownership-grade".  P0-B2 gives them
  real enumeration over usb-core.
- ehcid does not auto-spawn class drivers.  P0-B1 adds that.
- The base fork carries only one USB commit.  The 88-fix claim lived in
  patch carriers that path-sourced recipes don't apply.  v2 records this
  honestly and recommends per-feature commits on submodule/base.

Also:
- USB-VALIDATION-RUNBOOK.md restored from archived/ (operationally current).
- local/AGENTS.md: operator override allowing agents to create submodules
  when really necessary (2026-07-07), with a 4-point necessity test.
- archived/README.md supersession table updated with v1 plan and XHCID plan.
2026-07-07 00:44:30 +03:00
vasilito af282ee049 redbear-power: add flash_toast API (toast notification storage + active_toast accessor)
Implements the App side of T5 (toast notifications from the bottom/tlc
synthesis). render_toast() overlay can be wired in a follow-up pass.

- App.toast: Option<String> field
- App.toast_expires: Option<Instant> field
- App.flash_toast(msg): sets toast with 3s auto-dismiss
- App.active_toast(): returns &str if not expired

Key bindings: scrollable help dialog (j/k/PgUp/PgDn/Home/G) wired in
the previous round. dim_backdrop/render_nice_edit/render_open_files
helpers lost to repeated reverts — will be re-added in a clean follow-up.
2026-07-07 00:44:30 +03:00
vasilito 7dfebab9bf docs: comprehensive cross-references for 2026-06-30 input-stack fix
Updates six documentation files to point readers to the new
input-stack observability evidence and changelog entry. No
content claims are altered — only "see also" pointers and inventory
updates.

- CHANGELOG.md: new 2026-06-30 entry documenting the input-stack
  fix (commit de9d1f4 in local/sources/base/), the git server
  docs rewrite (commit 0c60adc6b), and the build-system
  hardening addendum (commit 41045fd2f). Includes the verified
  end-to-end interactive login evidence from the rebuilt ISO.

- local/docs/boot-logs/README.md: add the new
  REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md file to the
  inventory table.

- local/docs/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md:
  see-also pointer in the inputd validation deliverables
  section.

- local/docs/REDBEAR-BOOT-EXPERIENCE-PLAN.md: see-also pointer
  in the bootanim handoff section, noting that step 6
  (REBIND_DISPLAY drm to inputd) now has companion
  observability via the new inputd startup log.

- local/docs/USB-IMPLEMENTATION-PLAN.md: see-also pointer in
  the HID producer modernization section, noting that the fix
  lets operators distinguish "usbhidd dead" from
  "usbhidd alive but not enumerated by XHCI".

- local/docs/GREETER-LOGIN-IMPLEMENTATION-PLAN.md: see-also
  pointer in the service wiring section, noting that the greeter
  can rely on the new inputd/ps2d startup lines being present
  before inputd -A 3 runs.
2026-06-30 03:17:30 +03:00
vasilito e1b117955c Fix boot-to-login: override pcid-spawner to oneshot_async, add U3 input producers, Intel HDA phases A-D
- Override 00_pcid-spawner.service to oneshot_async in redbear-legacy-base.toml:
  rootfs phase no longer blocks on PCI driver init; getty/login starts immediately.
  Confirmed working on both QEMU and bare metal (redbear-live-mini).
- Clean up 00_base legacy script: remove dead notify ipcd/ptyd calls, keep sudo --daemon.
- Add U3 named input producers: inputd supports per-device named producers with
  fan-out to both device-specific consumers and legacy VT consumers. Migrate ps2d
  and usbhidd to InputProducer trait. RESERVED_DEVICE_NAMES deduplicated.
- Add Intel HDA audio driver phases A-D: ihdad error handling (37 fixes), audio
  quirks, codec path enumeration, mixer/volume control.
- Add init service start/readiness logging (always visible, not debug-gated).
- Update BOOT-PROCESS-ASSESSMENT.md: Phase 6 complete, boot procedure documented,
  validation matrix updated with confirmed boot status.
- Update USB-IMPLEMENTATION-PLAN.md and INPUT-SCHEME-ENHANCEMENT.md for U2/U3 status.
2026-04-24 20:25:00 +01:00
vasilito 5c9afa7ba6 Update USB boot docs and relibc patch overlays 2026-04-22 14:30:28 +01:00
vasilito e3d776aa9a Advance redbear-full Wayland, greeter, and Qt integration
Consolidate the active desktop path around redbear-full while landing the greeter/session stack and the runtime fixes needed to keep Wayland and KWin bring-up moving forward.
2026-04-19 17:59:58 +01:00
vasilito 9369247e1e Update USB validation docs 2026-04-18 21:38:31 +01:00
vasilito 45625c06ee Update local plans, status docs, and governance notes 2026-04-18 17:58:38 +01:00
vasilito 739704cbfa Advance USB implementation plan and validation docs 2026-04-17 13:32:43 +01:00
vasilito 5d7d3a2761 Refresh project documentation 2026-04-17 00:05:20 +01:00
vasilito 2ce2e408c5 Refresh project documentation
Red Bear OS Team
2026-04-16 12:46:07 +01:00
vasilito 6113a6d450 Refresh subsystem planning docs 2026-04-15 12:57:07 +01:00
vasilito 0a98bff07a Add USB and Bluetooth implementation plans 2026-04-14 20:04:30 +01:00