kellito 9846f288b4 v5.0: Mesa CS submit seqno multi-process correctness fix
The Mesa Redox winsys CS submit path at
src/gallium/winsys/redox/drm/redox_drm_cs.c:156 faked the seqno with
'result.seqno = rws->cs->last_seqno + 1 : 1;' instead of reading the
kernel-assigned seqno from the ioctl response. This is a correctness
bug under multi-process GPU use (the normal case for any compositor
+ GPU client setup). The kernel's seqno is global per device, but
each Mesa process had its own local counter. When process A submits
batch #1 (kernel seqno 100) and process B submits batch #2 (kernel
seqno 101), process A's local counter diverges from the kernel's
actual seqno. Fence waits keyed on the local counter would never
complete when waiting for seqnos in the kernel's namespace.

Fix (three coordinated changes):

### 1. redox-drm kernel side (local/recipes/gpu/redox-drm/)

Following the standard DRM bidirectional-ioctl pattern that
DrmAmdgpuCsWire already uses:

a) driver.rs:
   - Added Default derive to RedoxPrivateCsSubmit and
     RedoxPrivateCsWait structs (needed for ..Default::default() at
     construction sites).
   - Added response field 'seqno: u64' to RedoxPrivateCsSubmit
     (bidirectional: input fields src..byte_count, output seqno).
   - Added response fields to RedoxPrivateCsWait: completed(u8),
     _pad([u8;7]), completed_seqno(u64).
   - Updated size tests: Submit 32->40 bytes, Wait 16->32 bytes.
   - Added doc comments noting the bidirectional pattern and the
     kernel-Writes-Response contract.

b) scheme.rs:
   - CS_SUBMIT handler writes resp.seqno back into req.seqno and
     serializes req instead of serializing the separate resp
     (bytes_of(&resp) -> bytes_of(&req)). This is the kernel
     returning the response in the same struct.
   - CS_WAIT handler similarly copies result fields into req.
   - req made mutable for in-place mutation before serialization.
   - All other places that construct these structs use
     ..Default::default() for the new response fields.

c) drivers/amd/mod.rs, intel/mod.rs, virtio/mod.rs:
   - Each cs_submit and cs_wait construction site now uses
     ..Default::default() for the new response fields. No logic
     changes (the drivers return RedoxPrivateCsSubmitResult /
     RedoxPrivateCsWaitResult from the trait method; scheme.rs
     copies the response into the bidirectional struct).

### 2. Mesa winsys source (local/recipes/libs/mesa/source/)

Merge the separate input/result wire structs into bidirectional
structs so the kernel's response is read back from the same struct
the caller passed to drmIoctl:

a) redox_drm_cs.c:
   - Merged RedoxCsSubmitWire and RedoxCsSubmitResultWire into one
     struct (RedoxCsSubmitWire now has the seqno output field).
   - Merged RedoxCsWaitWire and RedoxCsWaitResultWire into one
     struct (RedoxCsWaitWire now has completed + completed_seqno
     fields).
   - Removed 'result.seqno = rws->cs->last_seqno + 1 : 1;' fake.
     Instead, reads 'submit.seqno' and 'wait.completed_seqno' from
     the same struct after drmIoctl returns.
   - Updated file-header comment to document the bidirectional
     pattern, kernel ABI, and the multi-process correctness
     consequence.

b) Patches the durability:
   - Added 'mesa/26-cs-submit-bidirectional-seqno.patch' to the
     patches list in local/recipes/libs/mesa/recipe.toml.
   - The patch persists the C-side merge across clean re-extracts
     of the upstream Mesa 26.1.4 tarball.

Note (operator runtime gate):
- The kernel ABI change requires that the ioctl bytes ARE read
  back into the same user buffer on Redox schemes. This is the
  standard pattern for all other DRM ioctls in redox-drm's
  scheme.rs (DrmGemCreateWire, DrmAmdgpuCsWire, DrmCreateDumbWire
  etc.). Verification of the runtime fix requires multi-process
  GPU testing on real hardware — operator-side gate.
- Per AGENTS.md NO-FALLBACK policy: this fixes a real correctness
  bug. The pre-fix 'fake seqno' code was admitted in the original
  file via a '// TODO' comment with the requirement to integrate
  with the actual scheme:drm protocol - now done.

Files changed:
- local/recipes/gpu/redox-drm/source/src/driver.rs
- local/recipes/gpu/redox-drm/source/src/scheme.rs
- local/recipes/gpu/redox-drm/source/src/drivers/amd/mod.rs
- local/recipes/gpu/redox-drm/source/src/drivers/intel/mod.rs
- local/recipes/gpu/redox-drm/source/src/drivers/virtio/mod.rs
- local/recipes/libs/mesa/source/src/gallium/winsys/redox/drm/redox_drm_cs.c
- local/recipes/libs/mesa/recipe.toml
- local/patches/mesa/26-cs-submit-bidirectional-seqno.patch
2026-07-26 17:04:40 +09:00

Red Bear OS

Red Bear OS

A microkernel operating system written in Rust — derived from Redox OS, built for bare metal.

MIT x86_64 Status


What is Red Bear OS?

Red Bear OS is a general-purpose, Unix-like operating system with a microkernel architecture, written entirely in Rust. It is a full fork of Redox OS (baseline 0.3.1), actively developed on branch 0.3.1 with hardware enablement, multiple filesystems, a native greeter and login system, and a KDE Plasma desktop path.

We aim to stay close to upstream Redox — diverging only where necessary to add missing functionality, fix bugs, or support new hardware. The build system itself is under constant active development alongside the OS.

It ships with several first-in-class Rust-native tools found nowhere else in the OS world:

  • cub — an AUR-inspired package manager with pacman-style CLI (-S/-Q/-R) and a ratatui TUI that converts Arch Linux PKGBUILDs into Red Bear recipes on the fly
  • tlc (Twilight Commander) — a pure-Rust reimplementation of Midnight Commander; dual-panel file manager, built-in editor and viewer, 8 color themes, 1204 unit tests, zero unsafe code
  • redbear-power — interactive ratatui TUI for live CPU frequency, governor, and thermal monitoring with on-the-fly P-state control

These are joined by dozens of redbear-* system utilities — redbear-netctl (network control), redbear-info (hardware diagnostics), redbear-acmd (admin CLI), redbear-mtr, redbear-nmap, redbear-btctl, and many more — all written in Rust, all built from source alongside the OS.

Goals:

  • AMD & Intel parity — equal-priority bare-metal support for both platforms
  • KDE Plasma desktop — Wayland-based desktop environment via the KWin compositor
  • Hardware GPU acceleration — AMD (amdgpu) and Intel GPU drivers via redox-drm
  • cub package ecosystem — AUR → recipe.toml pipeline giving access to thousands of packages
  • First-class subsystems — USB, WiFi, Bluetooth, ext4, FAT, GRUB, D-Bus (none optional)
  • Power management — CPU frequency scaling, thermal monitoring, RAPL, sleep states
  • Offline-first, reproducible builds — BLAKE3-verified source archives with content-hash caching

Our Git Server

Red Bear OS lives on a self-hosted Gitea instance at https://gitea.redbearos.org. This is the canonical home — no GitHub, GitLab, or Codeberg mirror is authoritative. There is exactly one repository: all component sources (kernel, relibc, drivers, system utilities) live here as submodule branches or tracked trees in local/sources/.

Field Value
Host https://gitea.redbearos.org
User vasilito
Web UI https://gitea.redbearos.org/vasilito
Main repo https://gitea.redbearos.org/vasilito/RedBear-OS

Authentication tokens are per-session credentials — never stored in the repo. See local/AGENTS.md § Our Git Server for the full operator runbook.


Quick Start

Prerequisites

Linux x86_64 host with Rust nightly, QEMU, nasm, and standard build tools. See the Redox Build Guide for full setup.

Build & Run

# Clone (read-only)
git clone https://gitea.redbearos.org/vasilito/RedBear-OS.git
cd RedBear-OS

# Authenticated clone — supply token via env var
git clone https://vasilito:${REDBEAR_GITEA_TOKEN}@gitea.redbearos.org/vasilito/RedBear-OS.git

# Canonical build entry point
./local/scripts/build-redbear.sh redbear-mini     # Text-only target
./local/scripts/build-redbear.sh redbear-full     # Desktop-capable target

# Boot in QEMU
make qemu

local/scripts/build-redbear.sh is the only supported build entry point. It handles .config parsing, prefix staleness detection, protected-recipe authorization, pre-cooking critical packages, and source fingerprint tracking. Direct make invocations bypass these gates. See AGENTS.md § Build Commands for details.

Config Targets

Target Type Description
redbear-full Desktop-capable GPU drivers + Wayland compositor + Qt 6.11.1 + KF6 6.27.0 + KWin + SDDM + greeter + D-Bus
redbear-mini Console Text-only recovery / install target with tlc, cub, and redbear-* utilities
redbear-grub Console Text-only with GRUB boot manager

Current Status

Red Bear OS boots to a login prompt in QEMU with working wired networking, D-Bus system bus, hardware detection daemons, and three filesystem backends (RedoxFS, ext4, FAT). The ISO builds successfully on branch 0.3.1. Graphics packages are frozen at latest upstream stable (Qt 6.11.1, KF6 6.27.0, Plasma 6.7.2, SDDM 0.21.0, Mesa 26.1.4, wayland-protocols 1.49).

Area Status
Boot (ACPI, x2APIC, SMP) Bare-metal proven — Ryzen Threadripper 128-thread verified
Userspace drivers (PCI, storage, net) Working in QEMU
Filesystems — RedoxFS, ext4, FAT Scheme daemons + mkfs/fsck tools
D-Bus system bus + services Working — login1, PolicyKit, UDisks, UPower
cub package manager 🟡 17-module Rust workspace; AUR → recipe pipeline; 70+ tests
tlc file manager 🟡 113 .rs files, 46k+ lines; 1497 tests; 8 skins; VFS archives; first-paint panic fixed (2026-07-24)
IRQ / PCI / MSI-X / IOMMU 🟡 QEMU-proven; shared-IRQ re-arm bug class swept across 11 drivers (2026-07-20); hardware validation open
POSIX gaps (relibc) 🟡 ~85% coverage; PATCHED-VIA-PATH-FORK — relibc changes are committed directly to local/sources/relibc/; local/patches/relibc/ holds reference and archived patches only
DRM/KMS display drivers 🟡 AMD + Intel + virtio-gpu compile; HW validation open
Mesa — llvmpipe + virgl Builds; EGL platform real, virgl auto-probe wired (DRM_IOCTL_VERSION major=0 + name + PCI info)
Mesa redox gallium winsys Source landed; BO byte count now correct; per-surface crtc_id tracking via redox_drm_surface_set_crtc; meson wires it on iris/radeonsi; compile unverified in current canonical build
3D userland (iris / radeonsi / Vulkan) 🟡 Recipe enabled; configure failed on libclc — now fixed (libclc in deps); needs canonical build-redbear.sh redbear-full to validate
Qt6 Wayland null+8 Comprehensive null guards in qtwaylandscanner (init_listener wrap) and libwayland (all wl_proxy_* entry points)
SDDM display manager + Greeter/Login Built; service + PAM + kde-wayland.desktop + greeter user all in redbear-full.toml; runtime proof needs canonical build
Qt 6.11.1 (Core, Gui, DBus, Wayland) 🟡 Builds; Wayland null+8 statically diagnosed; needs isolated runtime fix
KF6 Frameworks — 40/40 🟡 All frameworks build; KWin cooks successfully
Wayland compositor 🟡 Bounded proof; blocked by Qt6 Wayland protocol crash
KWin 🟡 Builds successfully (redox-drm + Qt6 Wayland); runtime blocked by Qt6 Wayland crash in wl_proxy_add_listener
KDE Plasma 🟡 All 38 KF6 frameworks + KWin + plasma-framework + plasma-workspace + plasma-desktop un-deferred in redbear-full.toml; runtime blocked on Qt6 Wayland null+8 fix
WiFi (Intel iwlwifi) 🟡 VFIO/passthrough bounded runtime validation framework exists
USB / Bluetooth 🟡 xHCI mature in QEMU: 51-flag quirks, capability gating, 36-code error recovery, Linux hub enumeration state machine, hub + hub-child enumeration proven, storage BOT proven; USB 2.0 HW LPM (L1) attach path implemented; endpoint-indexing bug class fixed across acmd/ecmd/usbaudiod/usbhidd; UAS/HID-parser expansion in flight; Bluetooth controller path planned

Where help is most wanted: Qt6 Wayland protocol crash — the #1 blocker for graphical desktop · AMD/Intel GPU hardware validation on bare metal · USB controller maturity · WiFi native control plane · cub AUR pipeline hardening · package maintainers for the growing recipe catalog · tlc VFS remote backends and archive support


How It Works

Red Bear OS uses a userspace driver model — all drivers run as unprivileged daemons communicating through the kernel's scheme-based IPC.

┌─────────────────────────────────────────────────────────────────┐
│                         KERNEL (microkernel)                     │
│          schemes: memory  ·  irq  ·  event  ·  pipe  ·  debug   │
└──────────────────────────┬──────────────────────────────────────┘
                           │
     ┌─────────────────────┼─────────────────────────┐
     ▼                     ▼                         ▼
┌──────────┐   ┌──────────────────┐   ┌──────────────────────┐
│  pcid    │   │  e1000d  xhcid   │   │  vesad  redox-drm    │
│ PCI enum │   │  Intel   USB 3.0 │   │  fbdev  GPU manager  │
└──────────┘   └──────────────────┘   └──────────────────────┘
┌──────────┐   ┌──────────────────┐   ┌──────────────────────┐
│  ext4d   │   │  ps2d   evdevd   │   │  thermald  cpufreqd  │
│  fatd    │   │  KB+mouse input  │   │  thermal   CPU freq  │
└──────────┘   └──────────────────┘   └──────────────────────┘
┌──────────┐   ┌──────────────────┐   ┌──────────────────────┐
│  iommu   │   │  acpid           │   │  dbus-daemon         │
│  DMA map │   │  power mgmt      │   │  system + session    │
└──────────┘   └──────────────────┘   └──────────────────────┘

The kernel provides minimal services: memory, interrupts, and IPC. Everything else — filesystems, networking, graphics, input, power management, D-Bus — runs in userspace. Hardware quirks are handled by a data-driven system in redox-driver-sys with compiled-in tables, TOML runtime configuration, and DMI matching.


Engineering Standards

Red Bear OS operates under strict discipline. Full policies: local/AGENTS.md.

Rule
Never delete to "fix" a build If a package breaks, fix the root cause. Never remove, ignore, or comment out a package, service, or config to make a build pass.
Zero stubs No fake headers, #ifdef no-ops, or "make it compile" shortcuts. Missing functionality must be implemented properly in the right component.
Single repository All component sources live here — no per-component repos. 9 submodule/<component> branches.
Local fork model Core components (kernel, relibc, base, bootloader, installer, redoxfs, userutils) are maintained as local forks in local/sources/ with immutability guarantees; syscall and libredox are wired as Cargo path dependencies via redbear-rt consumers, not via recipes/<comp>/recipe.toml path =.
Adapt to upstream Red Bear adapts to upstream API/ABI changes — never pins, downgrades, or holds back a dependency.
Free/libre only No proprietary, source-unavailable, or redistributability-restricted dependencies. MIT licensed.

Documentation


Contributing

Red Bear OS is a full fork of Redox OS. Upstream sources are frozen and archived; all custom work lives in local/ and survives every build operation.

local/
├── sources/    # Local forks of core components (kernel, relibc, base, bootloader, …)
├── recipes/    # Custom packages — drivers, GPU stack, system daemons, branding
├── patches/    # Durable changes to upstream source trees
│   └── (orphan-patch governance: every patch must correspond to work
│        present in the matching fork source tree. `verify-patch-content.sh`
│        enforces this on every build preflight. See
│        `local/docs/legacy-obsolete-2026-07-25/PATCH-PRESERVATION-AUDIT-2026-07-12.md` for the audit
│        and AGENTS.md § "Orphan-Patch Supersession Decision Tree" for the
│        decision flow when an orphan is detected.)
├── docs/       # Integration and planning documentation
└── scripts/    # Build, test, validation, and release tooling

We're Looking For

Role What you'd work on
Package maintainers Port and maintain AUR packages through cub's pipeline; write and test recipe.toml files for Red Bear OS; improve the PKGBUILD → recipe conversion
Driver developers AMD/Intel GPU drivers, USB controller maturity, WiFi native control plane, Bluetooth
Graphics stack engineers Qt6 Wayland crash fix (the #1 desktop blocker), Mesa virgl runtime, KWin Wayland compositor
Systems/Rust engineers Kernel syscalls, relibc POSIX gaps, filesystem daemons, D-Bus services, hardware quirks
TUI/app developers tlc feature completion, cub TUI polish, redbear-power enhancements, new redbear-* utilities

Contributions are welcome with or without AI assistance — we care about quality, not how the code was produced. Pick an area from the status table above, check the relevant plan doc, and dive in.


License

MIT — same as upstream Redox OS.

S
Description
RedBear Operating System, based on RedoxOS. Licenced under MIT license.
https://redbearos.org
Readme MIT 18 GiB
Languages
C 37.5%
C++ 37.2%
JavaScript 6.7%
QML 3.4%
HTML 3.2%
Other 11.4%