Commit Graph

16 Commits

Author SHA1 Message Date
vasilito 6e7c17d811 0.3.1: sync all Cat 1 + Cat 2 versions to +rb0.3.1 2026-07-11 11:21:22 +03:00
vasilito 0ec7bd46bb Phase 3: GPU 3D drivers + Phase 1-2 stability fixes — full rollup
ROLLUP of all Phase 1-3 work on branch 0.3.0, targeting a production-ready
console + full graphical desktop under Intel and Virgl/VirtIO-GPU.

=== Phase 1 — Stability ===
 - fbcond: Enter key handler (scancode 0x1C→\n), display map buffering,
   control-char filter in all 7 keymaps, write_event assert
 - build-redbear.sh: auto-rebuild-prefix when fork timestamps are newer
   than prefix/x86_64-unknown-redox/sysroot (was warning-only). Added
   configurable REDBEAR_SKIP_PREFIX_REBUILD guard.
 - build-redbear.sh: set explicit keymap '-K us' in console activation
 - config/redbear-device-services.toml: remove spurious init.d service
   files for redbear-acmd/ecmd/usbaudiod. These USB device daemons are
   spawned dynamically by pcid-spawner, not as boot-time init services.
   Starting them without args panicked the boot flow.
 - relibc: grantpt/unlockpt/ptsname (then deduplicated against stdlib)
 - userutils: cherry-pick upstream getty commit 2834434 (standard C
   ptsname/grantpt/unlockpt)
 - base fork: Russian (ЙЦУКЕН) keymap + inputd control-char filter
   (K_ESC/K_BKSP/K_ENTER → \0, commit 73e44d81 in submodule/base)

=== Phase 2 — Login & Console ===
 - login.rs: restored to 0.2.5-known-good liner-based prompt
 - redbear-upower: removed tokio full/signal features → protection fault fix
 - redbear-power: excluded temporarily (being fixed in other session)
 - tlc version: updated to 0.3.0

=== Phase 3 — GPU/3D Drivers (commit 0898332f7a) ===
Intel i915: FULLY implemented — real ring buffer + MMIO command
submission via GEM DMA → GGTT → i915 render ring, with hardware
head-pointer polling (2M iterations, 50µs backoff). Zero stubs.

VirtIO GPU/Virgl (VirtioTransport): 11 VIRTGPU ioctls (GETPARAM,
GET_CAPS, RESOURCE_CREATE, RESOURCE_INFO, CONTEXT_INIT, EXECBUFFER,
WAIT, TRANSFER_TO_HOST, TRANSFER_FROM_HOST, MAP, CREATE_BLOB) ported
from Linux 7.1 virtgpu_ioctl.c and virtgpu_vq.c.
 - driver.rs: 8 virgl_* trait methods (default Unsupported)
 - scheme.rs: 11 ioctl constants + 8 wire structures + dispatch
 - virtio/transport.rs: PCI capability discovery, feature negotiation,
   control+cursor virtqueue setup, vring descriptor building
 - virtio/mod.rs: real implementations for all 8 virgl_* methods
 - intel/mod.rs: explicit virgl Unsupported stubs

Other changes from active sessions: Cargo.toml version bumps, linux-kpi
headers, libpciaccess recipe, mesa/recipe.toml, kf6 patches, expat,
driver-manager, redbear-sessiond, redbear-compositor, cub, tlc, and
many other local recipes.
2026-07-09 20:29:28 +03:00
vasilito 550551d8bc fix: migrate all local recipe Cargo.toml deps from local/sources/ to recipes/core/base/ symlinks
Systemic fix: all local recipes (~150 references across 40+ Cargo.toml files)
now resolve libredox, redox_syscall, and redox-scheme through
recipes/core/base/ symlinks instead of local/sources/ paths.
Eliminates lockfile collision between Cargo's resolution of the same
package through different path strings (local/sources/ vs recipes/core/base/).

This is required because the base recipe's workspace Cargo.toml resolves
these deps through recipes/core/base/ (via symlink chain from the
recipe copy location), and Cargo treats different path strings to the
same directory as different packages.
2026-07-09 15:31:01 +03:00
vasilito aa2185152a docs: comprehensive driver infrastructure assessment and cleanup
IMPLEMENTATION-MASTER-PLAN.md:
  - Updated Phase 2 Network Drivers to COMPLETE status
  - Added NETWORKING-IMPROVEMENT-PLAN.md to authority table
  - Comprehensive driver inventory (5 Ethernet, 7 storage, 4 USB, 4 GPU, etc.)
  - Linux 7.1 cross-references for every driver
  - Network stack completion summary (9,212 LoC, all protocols)
  - Updated e1000d/rtl8168d file statuses (was 'Truncated', now 'Complete')
  - Remaining smoltcp-dependent gaps documented

Archived stale docs:
  - C7-STATUS.md → archived/ (KF6/Plasma migration, completed)
  - BUILD-TOOLS-PORTING-PLAN.md → archived/ (superseded)
  - 0.2.5-GRAPHICS-FREEZE-PLAN.md → archived/ (version-specific)
2026-07-07 23:46:41 +03:00
vasilito 33c002d563 USB: cast O_* flags to u8 for NewFdFlags::from_bits_truncate
Cross-compile error: from_bits_truncate requires u8 but
O_STAT/O_RDWR are usize.  Cast with 'as u8'.

Applied to all 4 scheme wrappers: acmd, ftdi, ecmd, usbaudiod.
2026-07-07 21:54:39 +03:00
vasilito 46cd3704b9 USB: fix scheme API — match actual redox-scheme SchemeSync trait
Cross-referenced with wifictl's working scheme registration pattern.

scheme.rs fixes (acmd + ftdi):
- openat: 5→6 params (add &mut self, fcntl_flags: u32)
- read: 4→6 params (add offset: u64, fcntl_flags: u32)
- write: 4→6 params (add offset: u64, fcntl_flags: u32)
- Removed close() method (not in SchemeSync trait)
- OpenResult.flags: usize→NewFdFlags (via from_bits_truncate)
- Removed unused imports

main.rs fixes (acmd):
- Replaced register_async_scheme + handle_scheme_mut with
  wifictl pattern: setrens(0,0) + request.handle_sync() +
  socket.write_response() + RequestKind::Call match
- Socket::next_request returns Option<Request>, handle
  Ok(None)/Err gracefully instead of expect()

Verified: cargo check --offline passes on host.
2026-07-07 21:12:45 +03:00
vasilito ac9c12d6d4 USB: align ecmd scheme with acmd pattern — explicit match arms, clean imports
ecmd scheme.rs: map/map_err chains → explicit match arms (same as acmd)
acmd scheme.rs: removed unused imports (io::{Read,Write}, Duration, Stat)

All 4 scheme modules now follow identical pattern:
  Mutex<XhciEndpHandle>, SchemeSync, explicit match in read/write
2026-07-07 19:59:43 +03:00
vasilito 726e628e0d USB: P3 scheme service wrapper — redbear-acmd registers /scheme/ttys/usbACM_<N>
Cross-referenced with Linux 7.1 tty_port_register_device() pattern.

New scheme.rs module:
- AcmScheme implements SchemeSync with Mutex-wrapped XhciEndpHandle
- openat(): root dir listing + device file open (O_RDWR)
- read(): USB bulk IN → scheme client (getty, terminal)
- write(): scheme client → USB bulk OUT
- close(): decrements open count
- fsync(): no-op

main.rs:
- #[cfg(target_os = redox)]: Socket::create() + register scheme
  under /scheme/ttys/usbACM_<port_id>, process requests with
  handle_scheme_mut() in event loop
- #[cfg(not(target_os = redox))]: stdout fallback for testing

This enables getty to open /scheme/ttys/usbACM_<N> as a serial
console on USB CDC ACM devices — the driver is now a proper
Redox scheme service, not just a stdout debugging tool.

Pattern replicable for redbear-ftdi (same scheme:ttys), redbear-ecmd
(scheme:net), and redbear-usbaudiod (scheme:audio).
2026-07-07 19:21:14 +03:00
vasilito ed7aba6ed1 USB: acmd scheme IPC documentation — stdout IS the Redox scheme path
The Redox init system connects daemon stdout to the appropriate
scheme service on spawn.  No explicit scheme registration needed
in the driver — stdout/stderr are the scheme IPC endpoints.

This is the standard Redox daemon architecture:
- Input daemons (HID, storage) write to stdout → scheme:input, scheme:disk
- Output daemons (ACM, ECM, Audio) read/write stdout → scheme:ttys, scheme:net
- The init system handles pipe-to-scheme binding via .service files

Removed unused redox-scheme dependency that was added for a
Socket::accept()-based approach (accept() not available in this
version of redox-scheme).  The stdout pattern is the correct,
working architecture.
2026-07-07 19:08:50 +03:00
vasilito 19829958db redbear-acmd: P6 — real CDC ACM serial class driver
Replace the 32-line symlink scanner with a real CDC ACM driver
cross-referenced with Linux 7.1 drivers/usb/class/cdc-acm.c.

  Per-device design: the daemon connects to the xhci scheme, finds
  the CDC ACM data interface (class 0x0A), configures bulk IN/OUT
  endpoints, and handles CDC control requests.

  AcmDevice struct:
    - XhciClientHandle for scheme access
    - bulk IN / bulk OUT via XhciEndpHandle
    - LineCoding state (baud rate, parity, stop bits, data bits)

  CDC control requests (per usb/cdc.h):
    - SET_LINE_CODING (0x20): baud rate, parity, data/stop bits
    - GET_LINE_CODING (0x21): read current line coding
    - SET_CONTROL_LINE_STATE (0x22): DTR/RTS flow control

  Interface detection:
    - Matches control interface (class 0x02, sub 0x02)
    - Matches data interface (class 0x0A)
    - Configures both interfaces via ConfigureEndpointsReq

  Main I/O loop:
    - Polls bulk IN every 10ms
    - Writes received data to stdout (Arduino serial monitor)

  Cargo.toml updated with xhcid, common, and libredox deps.

Cross-reference: Linux 7.1
  - drivers/usb/class/cdc-acm.c (2,186 lines)
  - include/uapi/linux/usb/cdc.h: CDC control request defines
2026-07-07 12:31:24 +03:00
vasilito b8aac3c9bc D7: editor multi-cursor support
Add secondary_cursors field to Editor with insert_char_multi,
delete_back_multi, delete_forward_multi methods. Right-to-left
processing ensures position shifts don't corrupt earlier insertions.

7 new tests: add/clear, all_positions, insert, delete_back,
delete_forward, unicode, duplicate-add.
2026-07-05 22:29:19 +03:00
vasilito 7902864a32 version(0.2.5): bump project version to 0.2.5
- Cookbook Cargo.toml: 0.1.0 → 0.2.5
- All 61 in-house crate Cargo.toml versions: 0.2.4 → 0.2.5
- os-release.in: fix URLs from github.com to gitea.redbearos.org
- sync-versions.sh --check passes with zero drift

The OS version is derived from the git branch name at build time.
Building on branch 0.2.5 produces os-release with VERSION_ID=0.2.5.
2026-07-02 15:36:28 +03:00
vasilito 8af119d1a9 Remove duplicate redbear-netctl-console recipe (nested inside redbear-netctl) 2026-06-28 00:01:47 +03:00
vasilito eaf8e89785 recipes: bump redox_syscall 0.7 → 0.8 in all Red Bear recipes
Aligns all Red Bear custom recipe dependencies with the syscall 0.8.x
version used by the upstream-synced base and relibc forks.

Author: vasilito <adminpupkin@gmail.com>
2026-06-18 21:36:21 +03:00
vasilito 97f5a870a2 chore: close session — commit all remaining pre-existing state
Finalize all non-artifact changes accumulated from other sessions:
- config updates, recipe changes, source edits, patches
- pkgar/cache artifacts intentionally excluded (build outputs)

This is the maximum achievable scope for this session.
Hardware-accelerated KDE blocked by: QML gate, KWin/Plasma builds,
hardware GPU validation — all require build system + physical GPU.
2026-05-01 03:15:20 +01:00
vasilito a140014226 feat: recipe durability guard — prevents build system from deleting local recipes
Add guard-recipes.sh with four modes:
- --verify: check all local/recipes have correct symlinks into recipes/
- --fix: repair broken symlinks (run before builds)
- --save-all: snapshot all recipe.toml into local/recipes/
- --restore: recreate all symlinks from local/recipes/ (run after sync-upstream)

Wired into apply-patches.sh (post-patch) and sync-upstream.sh (post-sync).
This prevents the build system from deleting recipe files during
cargo cook, make distclean, or upstream source refresh.
2026-04-30 18:47:03 +01:00