Commit Graph

9 Commits

Author SHA1 Message Date
vasilito bcfb36633f boot cleanup: netctl --boot, keymapd missing-dir, dm typo, pci errno, firmware-loader stub
- redbear-netctl: route --boot (and other manual commands) around clap so
  CommonArgs::parse no longer aborts with 'unexpected argument --boot'
  (12_netctl.service boot-time profile application was failing).
- redbear-keymapd: a missing /etc/keymaps is normal on mini (built-in
  keymaps cover the console) — log INFO, not ERROR, on NotFound.
- driver-manager: fix 'options loadeds' plural typo; log read_dir errno on
  PCI enumeration failure instead of an opaque IoError.
- redbear-mini: ship a 05_firmware-loader.service stub so the bluetooth
  units' weak dep resolves (was 'unit not found' x2 per boot).
2026-07-31 03:23:53 +09:00
vasilito 8fbc113d9f round 14: remove LD_PRELOAD stub + firmware-loader + scheme daemons expect chains + SUPERSEDED-DOC-LOG R11-14
Round 14 audit cleanup. Six coordinated fixes across seven files
plus a documentation log update:

1. local/recipes/system/redbear-wayland-guard/ — REMOVED entirely.
   The directory contained only source/wayland_guard.c — an LD_PRELOAD
   interposer stub for three wl_proxy_* functions — with NO recipe.toml.
   This violated local/AGENTS.md STUB AND WORKAROUND POLICY ('No LD_PRELOAD
   tricks'). The correct null-guard fix lives in libwayland upstream per
   QT6-WAYLAND-NULL8-DIAGNOSIS.md (already covered by Mesa win compat).

2. recipes/system/redbear-wayland-guard — broken symlink cleaned up.

3. local/recipes/AGENTS.md — catalog entry for redbear-wayland-guard was
   wrong (claimed 'Rust' but the code was C LD_PRELOAD). Replaced with
   REMOVED note explaining the policy violation and the correct fix
   location in libwayland.

4. local/recipes/system/firmware-loader/source/src/main.rs — converted
   9 .expect() calls in the daemon init path (Socket::create, scheme_root,
   create_this_scheme_fd, syscall::call_wo notify, setrens, next_request,
   write_response) to Result propagation. get_init_notify_fd() and
   notify_scheme_ready() now return Result; run_daemon() returns Result and
   main() matches on Err to log+exit(1) cleanly. The daemon was
   crashing the entire firmware-delivery subsystem on any init failure;
   now init can fall back or restart the daemon.

5. local/recipes/system/{redbear-keymapd,redbear-ime,redbear-accessibility}/
   source/src/main.rs — three scheme daemons used the same
   Socket::create().expect() + register_sync_scheme().expect() pattern.
   Replaced all six .expect() calls with match expressions that
   log_msg('ERROR', ...) and process::exit(1). Same pattern.

6. local/docs/NETWORKING-AND-DRIVERS-SYSTEMATIC-ASSESSMENT-2026-07-27.md —
   struck through 5 references to the now-removed redbear-wayland-guard
   (line 65 missing-daemons list, line 344 table row, line 397
   implementation list, line 414 source-list, line 797 P3-8 backlog).

7. local/docs/SUPERSEDED-DOC-LOG.md — appended a 'Rounds 11-14 Source-Level
   Supersessions' table logging every lie-grade fix and stale-doc
   strike from this session. Mirrors the original deletion-log style for
   consistency, and gives operators a single place to see what was
   resolved and where. Documents the emerging pattern: lie-grade code in
   Red Bear concentrates in (a) relibc panic-site catch-alls (addressed
   rounds 9-10), (b) scheme daemon init paths using .expect() instead of
   Result (rounds 11-14), (c) Mesa DRM/Wayland stubbing (rounds 12;
   remaining work tracked in 3D-DESKTOP-COMPREHENSIVE-PLAN.md).

Not committed in this commit (operator's parallel work, to be
committed by them):
- driver-manager/* (N-tier edits)
- redbear-sessiond/manager.rs (can_* probe refinements)
- redbear-statusnotifierwatcher/* (recipe + source)
- redbear-dbus-services/* (dbus service cleanup)
- redox-driver-core/manager.rs (test-only)
- Mesa redox_drm_cs.c (CS submit fix)

7 files changed in this commit + 2 deletions.
2026-07-27 21:27:39 +09:00
vasilito 89350ed795 redbear-iwlwifi: add Wi-Fi IP datapath bridge
Phase 3 of the systematic networking plan.

The bridge lives entirely in the redbear-iwlwifi recipe. It
exposes a network.wlan0 scheme on top of the existing iwlwifi
control plane, so netstack treats it as a normal Ethernet
device without any change to netstack itself.

Components (all in local/recipes/drivers/redbear-iwlwifi):

- src/bridge/mod.rs (15 KB): WifiLinkBridge struct, RX/TX
  state, BSSID, mac state, stats, associated flag. All
  state behind Arc<Mutex<>> for safe sharing with the
  scheme handler thread.
- src/bridge/convert.rs (26 KB): wifi_to_ethernet() and
  ethernet_to_wifi() pure functions. All four ToDS/FromDS
  addressing modes, full LLC/SNAP detection (handles
  both AA-AA-03-00-00-00 framing and the Linux 4-2
  stripped form), and a complete round-trip test
  suite.
- src/bridge/callback.rs (11 KB): the unsafe extern C
  callback that ieee80211_rx_drain calls. Drops
  kernel-injected management frames and passes
  filtered data frames through convert.rs.
- src/bridge/scheme.rs (16 KB): the Redox scheme handler.
  Registers network.wlan0 with read/write/handles.
  Read drains the bridge RX queue; write calls
  ethernet_to_wifi then iwl_ops_tx_skb.

linux_port.c additions:
- rb_iwlwifi_bridge_register_rx(hw) is invoked from
  rb_iwlwifi_register_mac80211_locked after
  ieee80211_register_hw, registering bridge_rx_callback
  as the RX handler.
- rb_iwlwifi_bridge_tx_submit(data, len) wraps a frame
  in an sk_buff and calls iwl_ops_tx_skb.
- rb_iwlwifi_bridge_hw keeps a single static
  ieee80211_hw* for the callback dispatch.

main.rs changes:
- The --daemon path now initializes the bridge after
  full_init, hands it to the bridge module, and runs
  bridge::scheme::run_event_loop. The previous
  'loop { sleep(3600); }' is gone.

Verification contract built into the bridge modules:
- convert.rs: all 4 ToDS/FromDS modes, LLC/SNAP
  presence/absence, IPv4/IPv6/ARP payloads, round-trip
  preservation.
- mod.rs: push/pop/activate/deactivate state machine.
- scheme.rs: scheme read/write handshake with mock
  driver backend.

Netstack impact: zero. The netcfg scheme already
discovers network.* and creates EthernetLink on
top; wlan0 looks identical to netstack.

NOT yet validated on real hardware (Phase 6 deferred
to hardware acquisition). Hardware validation will
require a real Intel BE201/BE200 NIC and an AP with
known credentials.
2026-07-26 19:34:49 +09:00
vasilito 095055df4b redbear-keymapd, redbear-ime: migrate to SchemeSync; redox-drm: test import; base bump 2026-07-09 12:53:23 +03:00
vasilito c68ace12de feat: relibc S1 — sem_open refcounting + glibc cross-reference assessment
Phase S1 (Critical Correctness):
- sem_open/sem_close: global refcounting via BTreeMap + AtomicUsize
- sem_close: decrements refcount, munmaps only at zero
- sem_open: reuses existing mapping, O_EXCL returns EEXIST
- sem_unlink: marks entry for removal before shm_unlink
- va_list parsing: reads mode_t and value from stack after oflag
- All 11 sem_* functions verified in libc.so T

Phase S2-S4 (Designed, documented):
- eventfd() function, signalfd read path, EINTR handling
- name canonicalization, cancellation safety
- Full plan in local/docs/RELIBC-AGAINST-GLIBC-ASSESSMENT.md

Reference: glibc 2.41 cloned to local/reference/glibc/

Boot verified: greeter ready on VT 3 with refcounted semaphores
2026-05-05 21:12:08 +01:00
vasilito b723b276f5 fix: cpufreqd MSR spam, udev-shim PCI spam, scheme throttle, keymaps dir
- cpufreqd: suppress MSR errors after 1 failure (was 10)
- udev-shim: demote PCI scan failures from WARN to DEBUG
- accessibility/ime/keymapd: throttle EBADF loop with 100ms sleep
- config: create /etc/keymaps directory for keymapd
2026-05-04 14:28:19 +01:00
vasilito 48ec92b486 fix: udev-shim panic, sessiond duplicate, scheme Bad-fd handling
- udev-shim: replace .expect() with graceful errors (no more panic on Broken pipe)
- P4-initfs: remove duplicate sessiond (conflicted with config)
- accessibility/ime/keymapd: break instead of exit(1) on EBADF
- P6 driver patches rebased
- Docs: archive old reports, add implementation master plan
2026-05-04 14:04:03 +01:00
vasilito 15d0707e74 feat: USB storage read/write proof + full Red Bear OS tree sync
Add redbear-usb-storage-check in-guest binary that validates USB mass
storage read and write I/O: discovers /scheme/disk/ devices, writes a
test pattern to sector 2048, reads it back, verifies match, restores
original content. Updates test-usb-storage-qemu.sh with write-proof
verification step.

Includes all accumulated Red Bear OS work: kernel patches, relibc
patches, driver infrastructure, DRM/GPU, KDE recipes, firmware,
validation tooling, build system hardening, and documentation.
2026-05-03 23:03:24 +01:00
vasilito 2f9fcbc9ba feat: atomic patch application, colored init output, XKB bridge, USB HID hardening
Build system (src/cook/fetch.rs):
- Atomic patch application: applies patches to staging directory (cp -al),
  atomically swaps on success, discards on failure — source tree is never
  left in a partially-patched state
- normalize_patch(): strips diff --git/index/new-file-mode headers that the
  build system's patch command does not recognize
- cleanup_workspace_pollution(): removes orphaned recipes/Cargo.toml and
  recipes/Cargo.lock to prevent workspace conflicts
- Added --allow-protected CLI flag to repo binary

Input stack (local/patches/base/P3-*.patch):
- P3-ps2d-led-feedback: PS/2 LED state handling + InputProducer migration
- P3-inputd-keymap-bridge: InputProducer enum, keymap bridge query
- P3-usbhidd-hardening: HID descriptor validation, static lookup table,
  8-button mouse support, transfer retry with exponential backoff
- P3-init-colored-output: ANSI-color coded init daemon output (green OK,
  red FAILED, yellow SKIP/WARN)

XKB bridge (local/recipes/system/redbear-keymapd/source/src/xkb.rs):
- Parses X11 xkb/symbols/* format, maps XKB keycodes to PS/2 scancodes,
  80+ X11 keysym names to Unicode, 4-level key support

Patch governance (local/patches/base/absorbed/README.md):
- Documents consolidation of P0-P3 patches into redox.patch
2026-05-03 08:21:54 +01:00