Commit Graph

195 Commits

Author SHA1 Message Date
vasilito 8de06ff09c Bluetooth B2: HCI scheme daemon and HciBackend transport bridge
Add scheme.rs to btusb daemon serving scheme:hciN with full SchemeSync
implementation (status, info, command, events, ACL, LE scan/connect/
disconnect). Add hci_backend.rs to btctl implementing Backend trait via
scheme filesystem reads/writes instead of stub data. Backend selection
via REDBEAR_BTCTL_BACKEND=hci env var, StubBackend remains default.

Fix daemon_main to use correct redox-scheme 0.11 API (Socket::create,
next_request/handle_sync/write_response loop) instead of non-existent
SchemeBlock.

125 btusb tests, 45 btctl tests, 2 wifictl tests passing.
2026-04-24 23:14:56 +01:00
vasilito 7c593e7dab Bluetooth B1: HCI protocol types, USB transport, daemon state machine
Add complete HCI protocol module (hci.rs) with packet types, 55+ constants,
command builders (Reset, Read BD Addr, Read Local Version, LE scan/connect),
event parsers, and structured result types. Add USB transport abstraction
(usb_transport.rs) with UsbHciTransport trait and StubTransport for testing.

Wire btusb daemon with endpoint descriptor parsing, HCI init sequence
(Reset → Read BD Addr → Read Local Version), ControllerState state machine,
and enhanced status output. Replace all expect()/unwrap() calls in btctl
and wifictl with proper error handling and graceful fallback.

91 btusb tests, 27 btctl tests, 2 wifictl tests passing.
2026-04-24 22:46:35 +01:00
vasilito 5bbb45bdf3 Fix pcid crash: pass valid INIT_NOTIFY pipe from hwd
The previous fire-and-forget fix passed hwd's own INIT_NOTIFY fd to pcid,
but that fd had CLOEXEC set (by daemon::Daemon::new), so pcid inherited
a closed fd and panicked in PipeWriter::from_raw_fd.

Fix: create a new pipe in hwd before spawning pcid. Pass the write end
as INIT_NOTIFY with CLOEXEC cleared (via pre_exec). Drop the read end
immediately — pcid's daemon.ready() will get EPIPE, which is silently
ignored by the daemon library. This gives pcid a valid fd while still
being fully non-blocking from hwd's perspective.
2026-04-24 21:54:51 +01:00
vasilito d91247fd75 Fix initfs hang: make hwd spawn pcid fire-and-forget instead of blocking
Root cause: hwd used daemon::Daemon::spawn(pcid) which blocks waiting
for pcid's readiness signal. But pcid only signals readiness after
completing full PCI enumeration. On real Intel hardware with complex
ACPI tables, enumeration can hang (unresponsive device, AML deadlock),
causing pcid to never signal readiness, hwd to never signal its own
readiness, and init to stall the entire initfs phase.

Fix: replace blocking daemon::Daemon::spawn with std::process::Command::spawn
(fire-and-forget). hwd signals its own readiness immediately, allowing
init to continue the initfs phase regardless of pcid's enumeration progress.
pcid runs independently and registers the pci scheme when ready.

Also: promote pcid enumeration completion log from debug to info level.
2026-04-24 20:44:53 +01: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 a81be44b67 Update IRQ plan doc with all waves complete, add lspci runtime-mode observability (Wave 5) 2026-04-24 14:45:40 +01:00
vasilito d4572549cc Harden all PCI/IRQ driver paths: remove panic-grade calls across pcid, virtio-core, and 10 consumer drivers (IRQ Waves 1-4 complete) 2026-04-24 14:45:29 +01:00
vasilito bd6bb9a5d5 Fix daemon EPIPE and audiod ENODEV for clean boot on all hardware
Suppress EPIPE in SchemeDaemon::ready_with_fd() to eliminate broken pipe
errors from gpiod, i2cd, ucsid at boot. Handle ENODEV gracefully in audiod
when /scheme/audiohw is absent. Both fixes verified: QEMU boots to login
prompt with zero non-fatal errors, patch applies cleanly on clean rebuild.
2026-04-24 10:05:18 +01:00
vasilito cf7256dc52 Fix IOAPIC/HPET/NMI, PS/2 driver, and remove duplicate VT service entries
- IOAPIC: enable full IOAPIC initialization on AMD/Intel bare metal,
  dual GSI 0/2 timer mapping for platform compatibility, NMI handler
  uses raw COM1 PIO writes to avoid mutex deadlock
- HPET: counter validation, graceful fallback to PIT when HPET missing
- PS/2: fix 0xFE RESEND handling in all MouseState variants, add
  controller flush/self-test retry/aux port test from Linux 7.0
- ACPI: defer AML evaluation to avoid blocking initfs driver spawn
- VT chain: remove duplicate rootfs service files (inputd, vesad,
  fbcond, getty) that were already handled by initfs phase 1 and the
  legacy 30_console script from minimal.toml
- QEMU verified: boots to login prompt, 20 rootfs units (was 26),
  single login prompt (was double), only 1 expected error (wifictl)
2026-04-24 00:57:19 +01:00
vasilito a86e10e349 Fix KDE KIO and KXMLGui source compatibility for Redox
workerinterface.cpp: add missing include for poll-compatible wait.
kswitchlanguagedialog_p.cpp: guard locale-gen call behind
Redox build define to avoid missing binary at runtime.
2026-04-23 20:29:41 +01:00
vasilito 0ffc101b7a Fix KDE KF6 CMakeLists builds for Redox target
Ten KF6 recipe CMakeLists patches: disable missing dependencies
(qt6-qttools linguist, qt6-qtshadertools), skip unavailable tests,
and add find-module fallbacks for Redox-specific library paths.
2026-04-23 20:29:32 +01:00
vasilito 03465c051e Fix cookbook fetch, recipe parsing, and sync-upstream hardening
fetch.rs: use full commit hash for deterministic checkout. recipe.rs:
refactor recipe handling for cleaner patch application. sync-upstream:
add dry-run mode and improve rebase error recovery.
2026-04-23 20:29:21 +01:00
vasilito 87f794aa66 Add relibc eventfd MOD patch for init waitpid compatibility
Eventfd now sets correct file mode bits so init's waitpid loop
can poll on eventfd descriptors without spurious EPERM.
2026-04-23 20:29:11 +01:00
vasilito d24ab92d54 Add boot process assessment doc and service file validation script
Comprehensive assessment of init boot phases, service schema
validation, and 14-package audit table covering all hardened
boot-critical packages.
2026-04-23 20:27:13 +01:00
vasilito e39ea2b4e1 Add P2 daemon hardening patches and wire into base recipe
215 fixes across 33 Rust source files replacing unwrap/expect/panic
with graceful error handling in init, all boot-critical daemons,
and the six graphics driver packages. Fixes inverted scheduler
conditions_met() logic that prevented rootfs from mounting.
2026-04-23 20:27:03 +01:00
vasilito f33d645fef Add all I2C/GPIO/UCSI driver sources to P2 patches
Recreate 11 driver crates lost during upstream source refresh:
- i2c-interface: shared I2C types (adapter info, transfer request/response)
- i2cd: /scheme/i2c adapter registry scheme daemon
- intel-lpss-i2cd: Intel LPSS/SerialIO I2C controller (ACPI-enumerated)
- dw-acpi-i2cd: DesignWare ACPI I2C controller
- amd-mp2-i2cd: AMD MP2 I2C controller (PCI-enumerated)
- i2c-hidd: I2C HID client daemon (PNP0C50/ACPI0C50 scanning, _DSM, HID protocol)
- intel-thc-hidd: Intel THC QuickI2C transport daemon
- gpiod: /scheme/gpio controller registry scheme daemon
- intel-gpiod: Intel ACPI GPIO registrar
- i2c-gpio-expanderd: I2C GPIO expander companion bridge
- ucsid: UCSI scheme daemon (/scheme/ucsi/summary, connectors, health)

P2-acpi-i2c-resources.patch: 6726 lines (was 1265)
P2-boot-runtime-fixes.patch: 319 lines (unchanged)
Both patches verified to apply cleanly on top of redox.patch
2026-04-22 23:55:16 +01:00
vasilito 1ed0558ddb Regenerate P2 patches against current upstream (463f76b9 + redox.patch)
Both P2 patches were stale — generated against an older upstream HEAD whose
context lines shifted after redox.patch modified the same files. Regenerated
from scratch against the current upstream commit so they apply cleanly.

P2-boot-runtime-fixes: hwd I2C candidate logging, pcid-spawner initfs detach,
pcid sendfd PCI fd handoff (319 lines)
P2-acpi-i2c-resources: new acpi-resource shared decoder crate (688 lines),
acpid /scheme/acpi/resources/ endpoint, resources.rs re-export shim,
sleep.rs restore (1265 lines)
2026-04-22 23:09:41 +01:00
vasilito 6158ec5cba Add ACPI I2C resources scheme endpoint and shared acpi-resource crate
- Add /scheme/acpi/resources/<device> endpoint to acpid for _CRS evaluation
- Extract acpi-resource shared crate (917 lines) with ResourceDescriptor types
- Eliminate duplicate type definitions in 5 consumers (i2c-hidd, dw-acpi-i2cd,
  intel-thc-hidd, i2c-gpio-expanderd, ucsid)
- Add P2-acpi-i2c-resources.patch (48KB) with all source changes
- Update ACPI-I2C-HID-IMPLEMENTATION-PLAN.md to reflect actual codebase state
2026-04-22 22:44:30 +01:00
vasilito 015d059cb9 Add verify-overlay-integrity.sh and remove stale rbos-info symlink
Create overlay integrity verification script that checks all recipe symlinks, patch symlinks, circular references, critical local/patches/ files, and config/redbear-*.toml files. Supports --repair (calls apply-patches.sh) and --quiet (CI). Fix config name: redbear-minimal.toml not redbear-mini.toml. Remove stale dangling symlink recipes/system/rbos-info (correct name is redbear-info).
2026-04-22 22:00:52 +01:00
vasilito c8746290b8 Harden apply-patches.sh and sync-upstream.sh against local/ data loss
apply-patches.sh: add --dry-run flag, make patch conflicts fail loudly instead of silently skipping, back up WIP directories instead of rm -rf, refuse to overwrite existing config files. sync-upstream.sh: add --force flag, abort on uncommitted local/ changes unless forced, stash with -u for untracked file protection, add pre-rebase overlay integrity check, improve nuclear option and stash pop guidance.
2026-04-22 22:00:17 +01:00
vasilito 2cb285b8be acpi-i2c-hid: implement wave 1 boot-path diagnostics and service wiring 2026-04-22 21:31:19 +01:00
vasilito 5c9afa7ba6 Update USB boot docs and relibc patch overlays 2026-04-22 14:30:28 +01:00
vasilito 8b19d06b18 Add ACPI I2C-HID quirk carriers 2026-04-22 12:41:39 +01:00
vasilito cdd081c664 Integrate Red Bear boot and packaging updates 2026-04-22 10:22:09 +01:00
vasilito 3aa0145c6b Refresh KDE source compatibility patches 2026-04-21 16:15:17 +01:00
vasilito 6ee4b00707 Adjust KDE recipe patches for Qt private APIs 2026-04-21 16:15:17 +01:00
vasilito c30327aeab Consolidate relibc overlay patch chain 2026-04-21 16:15:17 +01:00
vasilito 21d8d4f989 Expose USB tools in base runtime surfaces 2026-04-21 16:15:17 +01:00
vasilito d2632f08f8 Activate the greeter VT after startup 2026-04-21 16:15:17 +01:00
vasilito 005e1adad1 Route fallback consoles through activate_console 2026-04-21 16:15:17 +01:00
vasilito 37149cf8ca Require a local RedoxFS module for GRUB builds 2026-04-21 16:15:16 +01:00
vasilito ac2792ef73 Document local-first package sourcing policy 2026-04-21 16:15:16 +01:00
vasilito a1d0a35071 Advance KDE, Qt, and Wayland recipe sources 2026-04-20 18:37:35 +01:00
vasilito 7c50fba50d Advance Red Bear runtime services and tools 2026-04-20 18:37:35 +01:00
vasilito c944c0aaa8 Update tracked configs and image helpers 2026-04-20 18:37:35 +01:00
vasilito 9f126d91d4 Expand base overlay patches and controller proofs 2026-04-20 18:37:35 +01:00
vasilito fc42011e83 Refine relibc overlay patches and test wiring 2026-04-20 18:37:35 +01:00
vasilito 1865296ed6 Update local subsystem planning docs 2026-04-20 18:37:35 +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 e778af2103 Update local docs for four compile targets 2026-04-19 17:57:29 +01:00
vasilito ef334d31f9 Expose usbctl for mini USB lifecycle checks 2026-04-19 17:57:09 +01:00
vasilito b11a422bfb Update mini USB proof entrypoints 2026-04-19 17:56:59 +01:00
vasilito 5c5fbea171 Align relibc IPC overlay docs 2026-04-19 09:26:57 +01:00
vasilito 4b40fc2826 Simplify relibc test recipe replay 2026-04-19 09:26:57 +01:00
vasilito 718b71ad2b Fix cookbook redoxer stage root selection 2026-04-19 09:26:57 +01:00
vasilito 9d1dd4ad13 Preserve base overlay carrier updates 2026-04-18 21:38:31 +01:00
vasilito d2b41aad8d Fix AMDGPU recipe glue assumptions 2026-04-18 21:38:31 +01:00
vasilito 95c632307c Document Linux borrowing guidance 2026-04-18 21:38:31 +01:00
vasilito 13bc13160d Refine subsystem planning docs 2026-04-18 21:38:31 +01:00
vasilito 9369247e1e Update USB validation docs 2026-04-18 21:38:31 +01:00