Commit Graph

948 Commits

Author SHA1 Message Date
vasilito eade2a0cbc outer: bump local/sources/{kernel,ninja-build} submodules
kernel (2 commits):
- drop -Z json-target-spec (redundant with --target)
- add MWAIT idle_loop for deeper C-states on modern CPUs (Phase G)

ninja-build (1 commit):
- add Redox subprocess fork/exec and GetLoadAverage support
2026-06-30 15:59:47 +03:00
vasilito a84a99cc24 build-cache: package groups in config + installer local fork (Phase 3)
- config/redbear-full.toml: 9 package groups defined (graphics-core,
  input-stack, dbus-services, firmware-stack, qt6-core, qt6-extras,
  kf6-frameworks, desktop-session, kde-desktop)
- Cargo.toml: switch redox_installer from upstream git to local fork
  (path = "local/sources/installer") to use package group support
- Cargo.lock: remove installer git source entry
- local/sources/installer: bump to package groups commit

Groups are resolved transparently by Config::from_file() — the cookbook
repo binary sees expanded packages automatically.
2026-06-30 15:59:36 +03:00
vasilito ac46660d2e build-cache: content-hash-based caching + binary store restore (Phase 1-2)
Phase 1 — Hash-based cache invalidation:
- DepHashes struct: BLAKE3 hash of each build dep stored in dep_hashes.toml
- collect_current_dep_hashes(): reads blake3 from dep .toml metadata
- dep_hashes_changed(): compares stored vs current hashes
- Replaces mtime comparison as primary cache invalidation check
- Mtime fallback preserved for backward compatibility (no dep_hashes.toml)
- --force-rebuild CLI flag bypasses cache entirely

Phase 2 — Binary store cache lookup:
- repo_builder publishes dep_hashes.toml alongside .pkgar/.toml in repo/
- When target/ is missing but repo/ has the package, restores stage
  artifacts by extracting pkgar, copying toml + dep_hashes.toml
- Auto-generates auto_deps.toml from repo depends field
- Only applies to non-remote, non-force-rebuild builds

See local/docs/BUILD-CACHE-PLAN.md for full architecture.
2026-06-30 15:59:20 +03:00
Red Bear OS 616a9ad8fc docs: add Phase G entry to CHANGELOG (Arrow Lake / LG Gram 2025 hardware port) 2026-06-30 14:49:34 +03:00
Red Bear OS 9381ed4fd5 outer: bump local/sources/{kernel,base} submodules to Phase G commits
Update the inner-fork submodule pointers to reflect:
- local/sources/kernel: 8cd4f69 (Phase G.1: /scheme/sys/msr/ scheme)
- local/sources/base:   c335553 (Phase G.6: /scheme/acpi/processor/)

No source changes in the outer repo. The submodules already
contain all the new code; this commit only updates the
gitlink pointers so `git diff --submodule=log` shows the
correct history.

The `local/cache/` directory deletions are normal: the
cookbook cleans cached package artifacts when source hashes
change. `local/sources/base/target` is also a build artifact.
`local/recipes/dev/ninja-build/source` is a pre-existing dirty
state from a prior session — not changed by Phase G work.

Verified by: `git diff --submodule=log` shows the new inner
commits, and CI=1 ./local/scripts/build-redbear.sh redbear-mini
builds the same 512 MB ISO with the Phase G.1 / G.2 / G.5 / G.6
code paths in effect.
2026-06-30 14:42:15 +03:00
Red Bear OS 88555c342d redbear-power: add HWP MSR constants and accessors (Phase G.2)
The MSR library was missing the HWP (Hardware P-states / Intel Speed
Shift) MSR set. Arrow Lake-H exposes HWP via:

  IA32_PM_ENABLE         (0x770) bit 0: HWP_ENABLE
  IA32_HWP_CAPABILITIES  (0x771) [31:0]: HWP range
  IA32_HWP_REQUEST       (0x774) [42:0]: min/max/desired/EPP/activity
  IA32_HWP_STATUS        (0x777): current operating point
  IA32_PERF_STATUS       (0x198): legacy current P-state
  IA32_PLATFORM_INFO     (0xCE):  max non-turbo / min ratios
  MSR_TURBO_RATIO_LIMIT   (0x1AD): per-core turbo ratios
  IA32_ENERGY_PERF_BIAS  (0x1B0): power-perf hint

Add:
- hwp_enabled(cpu)        → reads MSR 0x770 bit 0
- hwp_capabilities(cpu)   → reads MSR 0x771, returns
                            (lowest, most_efficient, guaranteed, highest)
- read_hwp_request(cpu)   → reads MSR 0x774
- read_hwp_status(cpu)    → reads MSR 0x777

The TUI can now show a live "HWP active" indicator, the HWP range
percentages, and the current HWP request value. The HWP range
is computed once at startup; updates need only a re-read of
MSR 0x774 (8 bytes, ~microseconds).

The phase-G.1 kernel MSR scheme (commit 8cd4f69) provides the
in-memory storage for these reads. On real hardware, the kernel
will write the actual MSR values; on QEMU they default to zero
which makes the TUI display "HWP inactive" without erroring.
2026-06-30 12:57:04 +03:00
Red Bear OS d24d0e2174 cpufreqd: add HWP (Hardware P-states / Intel Speed Shift) detection
Phase G.2 of the ACPI/Arrow Lake port. The LG Gram 2025 (Core Ultra 7
255H, Arrow Lake-H) uses Intel HWP for P-state control — legacy
IA32_PERF_CTL writes are silently ignored when HWP is active.

The previous cpufreqd always wrote IA32_PERF_CTL (MSR 0x199), which
on Arrow Lake-H had zero effect. We now:

1. Detect HWP at startup by reading IA32_PM_ENABLE (MSR 0x770) bit 0
2. If HWP is active:
   a. Read IA32_HWP_CAPABILITIES (MSR 0x771) for the
      min/max/guaranteed/efficient performance range
   b. Translate the governor's P-state index into the HWP
      "Desired Performance" field + EPP hint
   c. Write IA32_HWP_REQUEST (MSR 0x774) instead of IA32_PERF_CTL
3. If HWP is not active, fall back to the legacy IA32_PERF_CTL path
   (preserves backward compatibility for older CPUs)

The kernel's new /scheme/sys/msr/ scheme (Phase G.1) provides the
in-memory storage backing the MSR reads/writes. On the real LG Gram
2025 hardware, the kernel's MSR scheme will be wired to the actual
hardware MSRs (Phase G+ work); the cpufreqd interface is unchanged.

HWP layout (Intel SDM Vol 3B §14.4.4):
  [7:0]    Minimum Performance
  [15:8]   Maximum Performance
  [23:16] Desired Performance
  [31:24] Energy-Performance Preference (EPP)
  [42:32] Activity Window (0 = auto)
  [42]    Package Control

EPP follows the same index as desired perf: 0 = performance,
255 = power-save. We map the linear P-state index to both the
"Desired Performance" and EPP so the H/W sees a single hint that
the OS wants both the performance and energy level it implies.

Includes:
- PstateMode enum (LegacyPerfCtl | Hwp) for compile-time dispatch
- detect_pstate_mode() reads MSR 0x770
- read_hwp_capabilities() reads MSR 0x771, returns (min, max,
  guaranteed, efficient) bytes
- hwp_request_for() maps P-state index to IA32_HWP_REQUEST u64
- apply_pstate() dispatches to the right MSR based on ci.mode
- The /scheme/cpufreq/state output now tags each CPU with [HWP] or
  [legacy] for observability

Hardware test plan: on the LG Gram 2025, "performance" governor
should pin IA32_HWP_REQUEST.Desired = hwp_max with EPP=0; "powersave"
should pin it to hwp_min with EPP=255; "ondemand" should ramp
between. Reading IA32_PERF_STATUS (MSR 0x198) via /scheme/sys/msr
should reflect the new operating point within ~1ms.
2026-06-30 12:53:57 +03:00
Red Bear OS 7a24b854c3 docs: Phase E — _TTS/_WAK hooks and DMAR opt-in
- CHANGELOG.md: added Phase E entry describing the new
  transition_to_s_state / wake_from_s_state / enter_sleep_state
  methods on AcpiContext, and the opt-in DMAR init with hard
  cap. Includes the final gap-closure status table showing
  9 closed, 1 closed-in-part, 2 still open (both require
  hardware-specific work).

- local/docs/ACPI-FORK-SYNC-STRATEGY-2026-06-30.md: added
  Phase E outcome section with the changes applied and
  out-of-scope items.
2026-06-30 07:16:39 +03:00
Red Bear OS cab9655a8b docs: comprehensive Phase D updates — CHANGELOG, strategy, improvement plan, boot-logs README
- CHANGELOG.md: added comprehensive 2026-06-30 entry covering
  the full ACPI fork-sync (Phases A-D) and the redbear-sessiond
  consumer port. Lists the 7 critical gaps that are now fully closed
  and the 2 still open (DMAR + _WAK infrastructure).

- local/docs/ACPI-FORK-SYNC-STRATEGY-2026-06-30.md: added Phase D
  outcome section with the Linux 7.1 cross-reference findings
  (acpi_enter_sleep_state pattern), the changes applied to acpid
  and redbear-sessiond, and the final gap-closure table.

- local/docs/ACPI-IMPROVEMENT-PLAN.md: updated "Current Truthful
  Status" to reflect that acpid now follows the Linux 7.1 sleep
  pattern with _PTS/_SST evaluation, thermal/power enumeration
  works, AML mutex is real, parse_lnk_irc validates ranges, and
  S5 works end-to-end. S1-S4 paths still need _WAK + wakeup
  vector + P-state preservation (Gap #4b scaffolded but not
  implemented). DMAR init still disabled (Gap #2 needs real-HW
  investigation).

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

Also:
- Removed scratch file local/docs/ACPI-FIX-PLAN-2026-06-30.md
  (superseded by the longer ACPI-FORK-SYNC-STRATEGY-2026-06-30.md).
2026-06-30 06:38:51 +03:00
Red Bear OS 5f1da52502 redbear-sessiond: port ACPI shutdown watcher to new Fd-based scheme
Phase D of the ACPI fork-sync plan (continuation).

Phase B replaced the `/scheme/kernel.acpi/kstop` filesystem file with
a single Fd-based call() interface. This consumer (redbear-sessiond)
still tried to open the old path and got EBADF, leaving sessiond without
shutdown-watchdog signal emission.

The new implementation:

- Opens `/scheme/kernel.acpi` and uses `openat("kstop", ...)` to
  get the kstop sub-handle. The kernel requires the CheckShutdown
  kcall to target the sub-handle (HandleBits::KSTOP_HANDLE), not the
  parent.
- Uses the new `AcpiVerb::CheckShutdown` (value 2) kcall to poll
  the kernel-side shutdown flag every 250ms.
- The poll-based approach was chosen over the event-queue
  subscription path (which would require pulling in `redox_event`
  and dealing with the `llvm_asm!` macro deprecation). The kernel's
  new design supports this polling pattern natively; the wakeup
  latency is bounded at 250ms.

Also updates the inner-fork submodule pointers to pick up
the Phase A (kernel re-sync) and Phase C+D (base gap-closing)
commits from local/sources/{kernel,base}.

Files:

- local/recipes/system/redbear-sessiond/source/src/acpi_watcher.rs:
  rewrote wait_for_shutdown_edge() to use the new Fd interface.

- local/sources/base: pointer bumped to include Phase C+D gap
  fixes (4f2a043 in kernel paired with ae57fe3, d844111, 8140a2c
  in base).

- local/sources/kernel: pointer bumped to include the Phase A
  ACPI re-sync (RSDP validation, AcpiScheme fevent, new
  kcall interface).

Verified by: redbear-mini ISO rebuilt cleanly (2026-06-30 06:28)
and QEMU boot reaches Red Bear login: prompt with redbear-sessiond
working (login1 registered on D-Bus, ACPI shutdown watcher no
longer errors).
2026-06-30 06:33:11 +03:00
vasilito 2382aa496f fix: prefix.mk — patch sysroot+redoxer cstdlib for strtold
Previously only gcc-install was patched. Recipes use sysroot copy
which is a copy of relibc-install (NOT gcc-install), so the cstdlib
strtold fix never propagated to the actual compilation environment.
Patch both sysroot and redoxer toolchain copies.
2026-06-30 03:57:51 +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 ded5331006 docs: verify ps2d/inputd startup-log fix on rebuilt mini ISO
Update REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md with the actual
runtime verification evidence captured at 2026-06-30T00:06:16Z:

- Both new startup log lines appear in initfs at the exact source
  line numbers (@inputd:661, @ps2d:96), proving the fix is baked
  into the running image.
- End-to-end interactive login succeeded: operator typed root +
  password at the Red Bear login: prompt and reached a
  redbear# shell (Red Bear OS v0.2.4 "Liliya").

This conclusively confirms the diagnosis: the input chain
(ps2d -> inputd -> fbcond -> getty -> login -> shell) was working
all along. The previous "freeze" was a test-harness issue (no
keystrokes sent to the guest), not an OS bug. The new log::info!()
lines make the input stack health visible in future boot logs.
2026-06-30 03:07:49 +03:00
vasilito 41045fd2f1 docs: capture ps2d/inputd boot-log diagnosis + addendum to BUILD-SYSTEM-IMPROVEMENTS
Two documentation changes:

1. New file local/docs/boot-logs/REDBEAR-MINI-BOOT-PS2D-INPUTD-LOG-FIX.md
   captures the 2026-06-30 diagnosis of why the mini boot appeared to
   freeze at the login prompt. Records:
   - The actual root cause (test harness not injecting keystrokes, not
     an OS bug — ps2d/inputd were working silently).
   - The committed fix (de9d1f4 in local/sources/base/ adds two
     log::info!() startup messages so operators can verify the input
     stack is alive from the boot log).
   - The expected post-fix boot log lines and how to interpret them.
   - Verification status (source-inspected; clean post-fix QEMU boot
     pending due to slow bootloader streaming under -nographic).

2. Addendum appended to local/docs/BUILD-SYSTEM-IMPROVEMENTS.md
   documenting four build-system ergonomics issues observed during
   the diagnosis session:
   - #11: local/sources/base/ inner git repo origin points to
     upstream Redox instead of Red Bear gitea.
   - #12: outer Red Bear repo cannot show inline diffs for the
     nested local/sources/base/ git repo (submodule pointer dirty).
   - #13: no preflight warning for stale local-fork source (a
     4-line edit caused a 30+ min rebuild with no advance notice).
   - #14: -nographic + OVMF boot is too slow for time-budgeted
     post-fix QEMU verification; recommend BIOS + KVM path.

Both items are S-sized and could be picked up in any future hardening
session. No code changes in this commit.
2026-06-30 02:55:51 +03:00
vasilito 49363122d1 build: revert strtold workarounds — GCC cstdlib fix is the root fix
Remove per-package workarounds that were needed before the root-cause
fix in mk/prefix.mk (which adds #include <stdlib.h> to GCC's <cstdlib>
header at prefix build time). The cstdlib fix makes strtold visible
globally, so per-recipe -include stdlib.h and P1-*.patch are redundant.

Reverted:
- redox-toolchain.cmake: removed -include stdlib.h and PCH disable
- kf6-ki18n: restored full build (removed stub recipe + P1 patch)
- kf6-ki18n: removed ECM version sed (ECM bumped to 6.11.0 already)
- redbear-greeter: removed #include <stdlib.h> workarounds in source
- local/patches/kf6-ki18n/: removed unused P1 patch directory
2026-06-30 02:34:08 +03:00
vasilito 817bd6b76e build: accumulated source fixes from Redox build session 2026-06-30 02:30:39 +03:00
vasilito 5a542e1cf6 fix: root-cause strtold — patch GCC <cstdlib> at prefix build time
Add explicit #include <stdlib.h> after #include_next <stdlib.h> in
GCC 13 cstdlib. This ensures ::strtold is declared before the
using-directives execute. Previously relibc's declaration was
not visible to the C++ wrapper.

Reverted unjustified ignores: qt6-sensors, kf6-ki18n, kf6-kidletime,
kf6-kwayland, redbear-greeter — per project policy: fix, don't ignore.

Also reverted kf6-ki18n to full build (stub removed).
2026-06-30 02:08:01 +03:00
vasilito 3a4c0efbc0 fix: kf6-ki18n stub — remove broken include path 2026-06-30 01:45:50 +03:00
vasilito 22dd478d7c fix: kf6-ki18n stub — add KF6::I18n cmake target 2026-06-30 01:29:42 +03:00
vasilito 2451f433f0 fix: kf6-ki18n stub — add empty libKF6I18n.so for deps 2026-06-30 00:55:50 +03:00
vasilito 286ff556c7 fix: kf6-ki18n → cmake-config-only stub (strtold blocker) 2026-06-30 00:44:47 +03:00
vasilito 67ae17a3dd build: accumulated fixes — relibc cbindgen, GCC headers, KF6 recipes
Major fixes applied:
- relibc: stddef.h → cbindgen (upstream 3be84f4b), bits_wchar-t/size-t/null
- relibc: wchar.h upstream include ordering, stdbool.h POSIX fix
- GCC: cstdlib restored, basic_string.h stold() removed (strtold workaround)
- redox-toolchain: -include stdlib.h, PCH disabled, _GLIBCXX_USE_C99_STDLIB undef
- qtdeclarative: P1-skip-tools-crosscompile.patch regenerated (hunk context)
- kf6-ki18n: P1-strtold-include.patch, CXXFLAGS, ECM version relax, qdoc sed
- ninja-build: redox.patch added to patches list
- base: DmiError::Map type fix attempts (EINVAL fallback)
- docs: gitlab→gitea URL fix, AGENTS.md updated

Remaining blocker: base-initfs DmiError::Map type drift (pre-existing issue)
2026-06-29 21:47:18 +03:00
vasilito 0c60adc6b5 docs: add canonical "Our Git Server" section (gitea.redbearos.org)
Rewrite the scattered git-server references into a single canonical
section in README.md and a comprehensive operator section in
local/AGENTS.md.

- README.md: new top-level "Our Git Server" section with connection
  details table (token field left as placeholder per session-only
  token policy).
- local/AGENTS.md: new "OUR GIT SERVER" section covering connection
  details, repo map, clone/auth/remote-setup recipes, cookbook
  auth via .netrc, push runbook, API quick reference, and a full
  operator runbook including credential-recovery and
  accidental-commit mitigation.

Tokens are explicitly NOT stored anywhere in tracked files. Clones
and authenticated operations must use credential helper, .netrc,
or REDBEAR_GITEA_TOKEN env var.

Also normalizes the lowercase-slug note (gitea normalizes RedBear-OS
to redbear-os) and the related-repos table.
2026-06-29 19:56:06 +03:00
vasilito 44d434e369 build: detect working-tree dirtiness in stale-source check
The stale-build check in build-redbear.sh compared HEAD commit hashes
against a stored fingerprint, which silently ignored uncommitted changes
in local/sources/{relibc,kernel,base,bootloader,installer}.

This meant dev iterations where a maintainer edited the working tree
without committing would not trigger a rebuild of the affected package.
The cookbook would then cook the binary from a fingerprint that
claims 'up to date' but is actually older than the working tree.

This commit extends the staleness test to also check
'git diff HEAD', 'git diff --cached HEAD', and
'git ls-files --others --exclude-standard'. The error message
distinguishes 'uncommitted changes' from 'new commits' so the
operator can tell which case triggered the rebuild.

Also adds local/scripts/lint-doc-comments.sh: a doc-comment hygiene
linter that flags agent-memo style comments (Note:, This implements...,
Changed from..., Added new..., Korean variants) so future commits
can be screened for the WHAT-not-WHY comment anti-pattern.
2026-06-29 19:34:35 +03:00
vasilito e1dfec22d5 fix: kf6-ki18n — set CXXFLAGS with -include stdlib.h 2026-06-29 18:30:51 +03:00
vasilito 63c1ebde21 fix: base — syscall::error::Error (module alias) 2026-06-29 16:05:10 +03:00
vasilito 3cdd321315 fix: base — DmiError::Map variant type mismatch 2026-06-29 15:27:17 +03:00
vasilito fd62e34140 build: redbear-greeter → ignore (strtold blocker)
GCC <cstdlib> ::strtold needs proper long double impl in relibc.
Greeter binary won't be in ISO; login falls back to console.
2026-06-29 14:46:46 +03:00
vasilito 2533484bb0 fix: redbear-greeter — include stdlib.h before Qt for strtold 2026-06-29 14:35:52 +03:00
vasilito 678d1d63de fix: prefix — also patch basic_string.h stold(strtold) 2026-06-29 14:24:15 +03:00
vasilito 4a1702309d fix: prefix — auto-patch GCC cstdlib strtold on rebuild
GCC 13 cstdlib uses ::strtold but relibc only declares it (no impl).
Remove 'using ::strtold' from C++ stdlib header at prefix build time.
2026-06-29 14:12:11 +03:00
vasilito c437bca589 build: qt6-sensors → ignore (strtold PCH issue) 2026-06-29 13:28:34 +03:00
vasilito ab297a874a fix: gitlab→gitea URL + accumulated source fixes from build 2026-06-29 11:59:31 +03:00
vasilito b1b8c3865a fix: toolchain — disable PCH (strtold missing from precompiled headers)
GCC <cstdlib> needs ::strtold. -include stdlib.h works for normal
compilation but PCH compiles without -include flags. Disabling PCH
globally prevents strtold visibility issues in all Qt/KF6 packages.
2026-06-29 11:33:21 +03:00
vasilito c33d771031 build: kf6-ki18n → ignore (strtold blocker, unblock ISO)
strtold include chain fix applied but C++ <cstdlib> still fails.
KI18n is i18n — non-critical for bootable desktop. Re-enable when
strtold root cause is resolved in relibc or GCC <cstdlib>.
2026-06-29 10:57:00 +03:00
vasilito 5427c364f0 fix: kf6-ki18n — nuke all ecm_generate_qdoc in one pass 2026-06-29 10:40:43 +03:00
vasilito d28d07389f fix: kf6-ki18n — also remove ecm_generate_qdoc from localedata 2026-06-29 10:24:36 +03:00
vasilito 508d9f98b1 fix: kf6-ki18n — disable ECMGenerateQDoc (needs Qt6Tools) 2026-06-29 10:08:43 +03:00
vasilito 0feefedf06 fix: bump ECM 6.10→6.11 for ECMGenerateQDoc module
kf6-ki18n v6.10 tarball has internal KF_VERSION 6.27 and expects
ECMGenerateQDoc which was added in ECM 6.11.
2026-06-29 09:55:54 +03:00
vasilito 1e0581b9c3 fix: kf6-ki18n — use [.] instead of \\. for TOML compat 2026-06-29 09:39:10 +03:00
vasilito c5f09c514c fix: kf6-ki18n — relax ECM requirement 6.27→6.10
KF6 tarball v6.10.0 has internal KF_VERSION 6.27.0 set by release scripts,
requiring ECM >= 6.27.0. Our ECM is 6.10.0. Relax via sed.
2026-06-29 09:22:32 +03:00
vasilito 7b9552c960 docs: QUIRKS-AUDIT — factual inventory of consumers, tombstones, DMI dup
Following a full repo-wide grep and source review of all quirks
files (mod.rs, pci_table.rs, usb_table.rs, dmi.rs, toml_loader.rs,
pci.rs, i2c-hidd/quirks.rs), this companion to QUIRKS-SYSTEM.md
documents the current ground-truth state of the subsystem as of
2026-06-29.

Findings:

- 11 Rust + 6 C consumers of the redox-driver-sys quirks engine
- 1 separate DMI quirks engine in i2c-hidd (uses RON, not TOML)
- 6 dead-code entry points that return empty flags:
  * lookup_pci_quirks_full actions (Vec::new)
  * lookup_xhci_controller_quirks_full (stub)
  * lookup_hid_quirks (stub)
  * load_dmi_acpi_quirks (stub)
  * load_platform_dmi_quirks (stub, empty PLATFORM_RULES)
  * load_drm_panel_orientation (empty PANEL_ORIENTATION_TABLE)
- 4 PciQuirkFlags bits (22-25) have no entry in PCI_FLAG_NAMES,
  so they cannot be set via /etc/quirks.d/*.toml
- DMI is consumed in two incompatible ways:
  * redox-driver-sys reads /scheme/acpi/dmi as a flat key=value file
  * i2c-hidd reads /scheme/acpi/dmi/{system_vendor,...} as per-field
    subpaths, and matches case-insensitive
- redbear-quirks stages 10 TOML files to /etc/quirks.d/; the
  TOML layer is fully live (this corrects an earlier claim
  that it was dormant)

The audit concludes that the system is correctly initialized and
utilized per its design. No redesign is needed; the existing
QUIRKS-SYSTEM.md is mostly accurate but understates how many
defined functions return empty data and how many flag names
are missing from the TOML schema.
2026-06-29 09:15:06 +03:00
vasilito 18adb41cc4 fix: ninja-build — add redox.patch to patches list
Recipe had redox.patch (fork-based subprocess + getloadavg fallback)
but wasn't declaring it in [source] patches, so cookbook never applied it.
2026-06-29 08:58:22 +03:00
vasilito ef72728368 fix: kf6-ki18n — add P1-strtold-include.patch for strtold visibility
Source comes from tar — local edits are overwritten on fetch.
Patch adds #include <stdlib.h> before Qt headers in common_helpers_p.h
so GCC <cstdlib> sees ::strtold declared.
2026-06-29 08:45:22 +03:00
vasilito cce01d0d8e fix: kf6-ki18n — include stdlib.h before Qt headers for strtold
GCC <cstdlib> needs ::strtold declared. Qt's include chain pulls in
<cstdlib> before stdlib.h. Adding #include <stdlib.h> at the top of
common_helpers_p.h fixes the 'strtold has not been declared in ::'
error. Reverted -U_GLIBCXX_USE_C99_STDLIB toolchain breakage.
2026-06-29 08:02:30 +03:00
vasilito db2d68d888 base+base-initfs: integrate CachyOS analysis improvements
Updates the local/sources/base submodule pointer to pick up the
PIIX4 IDE BAR quirk + vgaarb logging + archiso loop_mnt, and
updates the base-initfs recipe to cross-compile loop_mnt before
the redox-initfs-ar archive step.

See local/sources/base commit 2055dcd for the individual
changes.
2026-06-29 07:43:41 +03:00
vasilito 85a6a7d892 fix: undef _GLIBCXX_USE_C99_STDLIB for all Qt/KF6 via toolchain
GCC <cstdlib> uses C99 stdlib wrappers (strtold etc.) gated by this macro.
relibc declares but doesn't implement strtold. Undef at toolchain level
prevents 'using ::strtold' errors in KF6/Qt C++ builds.
2026-06-29 07:28:25 +03:00
vasilito 9d025116c2 fix: base fork — add missing 'let' for device_3 in hwd acpi.rs 2026-06-29 07:04:09 +03:00
vasilito cfc0ec078e fix: redox-toolchain.cmake — add -include stdlib.h for strtold visibility
GCC <cstdlib> needs ::strtold declared. relibc stdlib.h provides it,
but Qt include chains can pull in <cstdlib> before stdlib.h.
Adding -include stdlib.h at the toolchain level fixes all Qt/KF6 recipes.
2026-06-29 06:51:06 +03:00
vasilito d7ee730975 docs: CachyOS boot analysis reference + captured kernel log
Reference analysis for Red Bear OS integration based on running the
latest CachyOS desktop ISO (28 Jun 2026) under QEMU/KVM. Documents
the hardware-enumeration and kernel-init sequences a reference Linux
distro produces on the i440FX + PIIX machine type that Red Bear OS
also targets, with line-by-line mapping to Red Bear OS subsystems
(pcid, ided, e1000d, vesad, xhcid, hwd/acpid).

- local/docs/CACHYOS-INTEGRATION.md: Cross-cutting analysis
  (executive summary, hardware inventory, ACPI table coverage,
   PCI quirks, boot-phase ordering, init system comparison, action
   items).
- local/docs/boot-logs/cachyos-kernel-20260629-0520.log: Captured
  441-line dmesg-grade log from the CachyOS kernel boot (SeaBIOS
  handover through ACPI, PCI, USB, ATA, network enumeration and
  up to a rootfs shell prompt).
- local/docs/boot-logs/cachyos-boot-20260629-0520.md: Pointer
  document with the capture command and the rationale for the
  indirect-kernel invocation (the QEMU + CachyOS + KVM boot stalled
  at the ISOLINUX EDD probe when run from CD; bypassing with
  -kernel/-initrd and an explicit console=ttyS0 earlyprintk command
  line recovered the full log).

Sources used: https://cachyos.org/ (release info) and the on-disk
ISOLINUX + archiso boot path extracted from
cachyos-desktop-linux-260628.iso.
2026-06-29 04:49:59 +03:00