Documents the two R7 audit findings and the comprehensive plan to
fully utilize the R0-R22 quirks-and-bugs subsystem.
Findings
- cb_intel_ntb_bar_fix was a no-op stub (cleared PCI_COMMAND_MEMORY
and restored it; the device never observed the transient clear).
Replaced with the real Linux quirk_intel_ntb reads at config
offsets 0xD0 and 0xD1. 3 new unit tests. 131/131 redox-driver-sys
tests pass.
- redbear-quirks install script copied only 8 of 30 TOML files,
leaving all R11-R21 data tables inert at runtime. Replaced the
explicit list with a glob.
Utilization plan
- Audit of every other cb_* callback (all justified, no other stubs).
- Full consumer-wiring matrix showing what's wired, what's not, and
the concrete step for each pending consumer.
- Initialization-path wiring from bootloader SMBIOS through kernel
to acpid/pcid/xhcid/usbhidd/evdevd/network/storage/audio/drm.
- 15-task implementation order with estimates (22-32 days sequential,
parallelizable to 2-3 devs in 4-6 weeks).
- Updated test count: 131 host-buildable redox-driver-sys + 13 acpid
dmi + 12 pcid + 7 usbhidd + 4 evdevd + 3 iwlwifi = 170 total.
After the 15 tasks land, every lookup function in redox-driver-sys
has at least one production consumer; the data tables drive real
kernel/userspace behavior; and the R0-R22 infrastructure is fully
automatically made to work on real hardware.
The previous count of 161 in the doc was an error
caused by summing test counts from different build
contexts (host-buildable redox-driver-sys + target
test-runs in consumer trees). The correct counts:
- 128 host-buildable unit tests in redox-driver-sys
(Linux source-of-truth conventions; can run on
any dev machine)
- 13 dmi unit tests in acpid (target-only)
- 12 quirks.rs unit tests in pcid (target-only)
- 7 hid + usb unit tests in usbhidd (target-only)
- 4 hid unit tests in evdevd (target-only, plus
pre-existing test errors out of scope)
- 3 wifi unit tests in redbear-iwlwifi (target-only)
- Plus consumer-side QuirkAction tests in
redox-driver-sys that may run on either target.
The headline '161' was the result of an arithmetic
slip; the corrected figure is 128 in the host-
buildable tree (redox-driver-sys) and ~167 across
all trees including the consumer targets.
This session lands three more phases of the R11-R22
plan on top of R11 (already shipped):
- R12 (87ea8a9ac): DrmPanelOrientation enum +
lookup function + 36-entry 50-drm-panel.toml.
Consumer wiring in redox-drm is deferred until
Phase 4 KDE rotation lands.
- R13 (00e1c9ea1): PlatformDmiQuirkFlags (7 bits) +
PlatformSubsystem enum + 31-entry 80-platform-x86.toml
covering touchscreen / tablet_mode / hotkey /
accelerometer / battery for 2026 hardware.
- R14 (5caab8578): CpuBugFlags (27 bits matching
Linux X86_BUG_*) + CpuId struct + 14-entry
90-cpu-bugs.toml. Kernel-side consumer deferred.
QUIRKS-SYSTEM.md updates:
- Recent Activity (2026-06) table: 3 new rows
(R12, R13, R14) with commit SHAs and summaries.
- Test count progression: 155 → 158 (one new
unit test per phase, all 3 host-buildable).
- Headline: 'R11+R12+R13+R14 RESOLVED' added.
Total data file additions: 4 files, 99 DMI rules.
Consumer wiring is a follow-up:
- acpid: R11 AcpiQuirkFlags (osi_setup calls)
- redox-drm: R12 DrmPanelOrientation (rotation)
- inputd / thermald / redbear-upower: R13
PlatformDmiQuirkFlags (subsystem dispatch)
- kernel context-switch path: R14 CpuBugFlags
(mitigation engine)
R15 (timekeeping / TSC sync) is the next phase. The
audit estimated 3-4 days; the data side is small
(TSC sync status from CPUID), and the consumer is
kernel-side.
R11 lands in two commits this session:
- 5d06b0fa0 (redox-driver-sys): AcpiQuirkFlags (13 bits),
DmiAcpiQuirkRule, DMI_ACPI_QUIRK_RULES,
load_dmi_acpi_quirks, apply_dmi_acpi_quirk_rules,
ACPI_FLAG_NAMES, [[dmi_acpi_quirk]] TOML parser.
+2 unit tests. 122/122 redox-driver-sys tests pass.
- e3c41b834 (redbear-quirks): Four ACPI DMI TOML files
with 18 DMI rules from Linux 7.1 sources
(drivers/acpi/{osi,sleep,button,battery}.c).
QUIRKS-SYSTEM.md updates:
- Recent Activity (2026-06) table: two new rows with
commit SHAs and one-line summaries.
- Test count progression: 153 → 155 across the new
redox-driver-sys tests.
- Headline: 'R11 (ACPI DMI rules) RESOLVED' added.
R12 (ACPI consumer wiring) is the next priority.
R12 is a 1-day task: wire load_dmi_acpi_quirks() into
acpid / acpi-handlers so the matched flags drive
acpi_osi_setup(), acpi_old_suspend_ordering(),
LID_INIT_DISABLED/OPEN, and battery quirk handler
flags. The infrastructure is now ready for this; the
consumer side is the only missing piece.
This session landed four more audit items:
- Blocker 3 (9f250dbe, base fork): usbhidd HID/USB wiring
- Gap 10 (a24cfe64c, evdevd recipe): evdevd HID registration
- Gap 11: redox-drm GPU wiring (was already resolved; the
audit's 'Gap 11 PENDING' was based on a misread of
src/drivers/mod.rs:161 — full.quirks() IS the lookup)
- Gap 12 (1561767ac, redbear-iwlwifi recipe): Wi-Fi NIC quirks
- Gap 15 (98982cc2f, amdgpu recipe): extract pci_*_quirk_flags
out of redox_stubs.c into a new redox_quirk_bridge.c TU
QUIRKS-SYSTEM.md updates:
- Recent Activity (2026-06) table: adds four rows with commit
SHAs and one-line summaries.
- Blocker status block: Blocker 3 promoted to RESOLVED.
- New Gap status block: 4/4 gaps RESOLVED.
- Test count progression: 140 → 153 across the four new
unit test suites.
- Cross-Cutting Consumer Wiring Checklist: rows for evdevd,
redox-drm, iwlwifi, amdgpu promoted from PENDING to
RESOLVED (or ALREADY RESOLVED for redox-drm).
- Implementation Order: Gap 15 + Gap 10-12 entries marked
RESOLVED with commit SHAs and dates.
- Headline: '5/5 P0 critical blockers RESOLVED, 4/4
medium-low gaps RESOLVED'.
R11 is the next priority. With all blockers + gaps landed,
the data tables are live at every consumer site. R11 is
data-only work (mining ~60 ACPI DMI rules into
quirks.d/45-acpi-osi.toml through 48-acpi-battery.toml)
and becomes the first phase to ship user-visible benefit
on real hardware.
The Blocker 1 commit lands in the base fork (commit 676af02e on
redbear-working). This commit:
1. Bumps the three submodule pointers to the new commits that
the gitea force-pushes landed this session (one per fork).
2. Updates QUIRKS-SYSTEM.md to reflect the new state.
In QUIRKS-SYSTEM.md:
- Recent Activity (2026-06) table: adds a row for Blocker 1
with the commit SHA + summary.
- Blocker status block: Blocker 1 promoted to RESOLVED, Blocker
4 re-tagged as reduced to a 1-2 day follow-up (the loop is
mechanically unblocked now that Blocker 1 is in), Blocker 3
flagged as the next priority.
- Test count progression: extends to 140 (12 new pcid unit
tests).
- Blocker 1 section: new 'Status: RESOLVED 2026-06-07' block
with the three pieces (PcidConfigWriter, build_device_info,
apply_pci_quirks), the wiring location, the test coverage,
and the clean check / clippy result.
- Cross-Cutting Consumer Wiring Checklist: pcid row promoted
from PENDING to RESOLVED, with the commit SHA + test count.
The '3 of 5' line below becomes '4 of 5'.
- Adjusted Phase Estimates: R17 and R19 drop from 5-7 days to
2-3 days (the Blocker 1 dependency is gone). New total is
42-62 days (was 47-72); the +2-day remainder is Blocker 3
plus the xhcid QuirkAction follow-up.
- Recommended Implementation Order: Blocker 1 step promoted
from PENDING to RESOLVED, with the new commit SHA and
test count inline.
No other sections changed. The 15 medium/low gaps from the
R1-R10 audit remain PENDING; the next session will land
Blocker 3 (usbhidd HID/USB wiring) as the only remaining P0
critical blocker.
Documents the three-commit chain (bootloader 259a621 + kernel
a4ba465 + acpid fa91cee4) that lands end-to-end SMBIOS delivery
into userspace and updates the audit doc to reflect that Blocker 2
and Blocker 4 are no longer P0 critical blockers.
1. Top of the document: new 'Recent Activity (2026-06)' table
listing every commit this audit/cleanup cycle landed, with
a one-line summary per commit and a Blocker status block.
2. Blocker 2 (acpid DMI producer) section: status updated to
RESOLVED 2026-06-07 with a per-commit report. Documents
- bootloader: find_smbios() searches UEFI Configuration
Tables for SMBIOS3_TABLE_GUID, copies EPS + table to
page-aligned buffers, exposes them via four new u64
KernelArgs fields;
- kernel: new SmbiosScheme serves
/scheme/kernel.smbios/{eps,table} to userspace;
- acpid: new dmi.rs module walks the SMBIOS table, splits
each structure into formatted area + 1-based string
area, fills 9 DmiInfo fields, exposes
/scheme/acpi/dmi and /scheme/acpi/dmi/{field}.
Net effect: every compiled-in DMI rule and every
[[dmi_system_quirk]] / [[dmi_xhci_system_quirk]] TOML
entry now fires against real firmware data, not synthetic
fixtures.
3. Blocker 4 (xhcid full lookup) section: status updated to
RESOLVED with the partial-scope note that DMI lookup is
in but QuirkAction iteration awaits Blocker 1. Documents
the graceful-degradation path: when /scheme/acpi/dmi is
absent, the call falls through to non-DMI rules only.
4. Cross-Cutting Consumer Wiring Checklist: every P0/P1/P2/P3
row now has a 'Status (2026-06-07)' column showing
resolved vs pending. The section heading notes that 3 of
5 P0 critical blockers are RESOLVED, leaving 2 (Blocker 1
+ Blocker 3) as the next priority.
5. Adjusted Phase Estimates: R11 estimate drops from 5-7
days back to 2-3 days (Blocker 2 + Blocker 5 already
resolved; R11 is now data-only). Net total estimate
drops from 65-100 days to 47-72 days. R17, R18, R19
still carry the Blocker 1 / Blocker 3 surcharge since
those blockers are still pending.
6. Recommended Implementation Order: each blocker entry
now shows RESOLVED/PARTIAL/PENDING. R11 status note
updated to call out the chain completion. R12 and R13
prerequisite notes now say DONE 2026-06-07 instead of
'MUST FIX FIRST'.
7. Phase R11 / R12 / R13 entries: 'Infrastructure' notes
updated to point to the resolved commit ids and the
remaining acpid-side work (DMI-rule ownership for
_OSI override dispatch, ec timing consumer, etc.).
The 'three of five' P0 resolution is the headline result:
R11 (ACPI DMI rules) is now data-only and is the next
phase to ship user-visible benefit on real hardware.
Phase R10 audit (2026-06-07) identified that DmiInfo and DmiMatchRule
were missing the bios_vendor and bios_date fields that Linux SMBIOS
Type 0 (BIOS Information) provides. Many DMI-based quirk rules in
Linux drivers/acpi/osi.c, drivers/acpi/ec.c, and drivers/platform/x86/
match on BIOS vendor or BIOS release date for firmware-version
workarounds.
Changes:
- dmi.rs: add bios_vendor: Option<String> and bios_date: Option<String>
to both DmiInfo and DmiMatchRule structs
- dmi.rs: extend is_empty() and matches() to consider the new fields
- dmi.rs: extend parse_dmi_data() to handle bios_vendor and bios_date
keys in /scheme/acpi/dmi text format
- dmi.rs: extend all 8 compiled-in DmiPciQuirkRule literals and 3
DmiInfo test fixtures with the new fields
- toml_loader.rs: extend parse_dmi_match_rule() to parse bios_vendor
and bios_date from [[dmi_system_quirk]] match tables
- toml_loader.rs: extend all 4 DmiInfo test fixtures
- dmi.rs: 5 new unit tests (bios_vendor match, bios_date match,
combined match, parse_dmi_data, is_empty with bios fields)
- toml_loader.rs: 1 new integration test (TOML bios_vendor+date
parse and match, miss, and absent cases)
- QUIRKS-SYSTEM.md: mark Blocker 5 as RESOLVED
Tests: 120/120 pass (was 114, +6 new).
Clippy: +2 warnings (same map_or pattern as existing 7 DMI fields,
follows existing convention; not a new defect).
Source-of-truth: drivers/firmware/dmi_scan.c (dmi_decode_table) and
include/linux/mod_devicetable.h (dmi_system_id).
Depends on Blocker 2 (acpid DMI producer at /scheme/acpi/dmi) for
runtime data; the fields are now in place and will activate when
acpid is updated to populate the new keys.
Synthesize three parallel audit reports (bg_714f844f gap audit,
bg_1219aaa3 consumer audit, bg_c8826a88 adjacent-tech audit) into a
single R1-R10 audit section that captures the current consumer-wiring,
dormant-feature, and adjacent-technology state of the hardware quirks
system after R0-R10 implementation (commits 86902d481, 5e44191c9,
b56b810c0, b324cf67e, 6f1df4f04 on 0.2.3).
Five critical blockers identified:
1. PciConfigWriter production impl missing (QuirkAction dead code)
2. acpid does not serve DMI/SMBIOS at /scheme/acpi/dmi
3. usbhidd has zero HID/USB quirk consumption
4. xhcid does not call lookup_xhci_controller_quirks_full
5. DmiInfo/DmiMatchRule missing bios_vendor + bios_date fields
Fifteen medium/low gaps catalogued (TOML hot-reload, amdgpu stubs,
evdevd/redox-drm/iwlwifi wiring, etc.).
Comprehensive R11-R22 plan specifies for each phase:
- Infrastructure prerequisites (including the 5 blockers above)
- Data sources (compiled-in vs TOML vs DMI vs SMBIOS)
- Consumer drivers that must call lookup functions
- Test coverage expectations
- Runtime verification harness
Cross-cutting consumer wiring checklist ranks the work by priority (P0
through P3). Adjusted phase estimates reflect that the 5 blockers add
~20 days to the 44-68 day baseline, for a 65-100 day total.
Recommended implementation order: Blocker 5 -> Blocker 2 -> Blocker 1 ->
Blocker 3 -> Blocker 4, then Phases R11-R22 incrementally.
Adds:
- local/recipes/system/redbear-quirks/source/quirks.d/40-hid.toml:
967-line runtime override file with all 191 HID quirk entries
(mirrors the compiled-in hid_table.rs; lets operators override,
extend, or disable flags without rebuilding the driver)
- local/docs/QUIRKS-SYSTEM.md: 103-line R10 implementation report
covering scope completed (items 1-6, 8 of the 8-item R10 plan),
item 7 (consumer wiring) deferred to input-stack maturity,
entry-count audit (191 not 500), flag-count audit (24 defined,
9 used), bit-position audit (gaps at 0/8/9/15/24-27 for removed
upstream flags), test progression (106 -> 114, +8 R10 tests)
Follows the commit pattern of R6 (5e44191c9) and R7-R9 (b56b810c0)
where the structural Rust code is committed first, then the runtime
data and docs update are committed as a follow-up.
Phase R7 (xHCI closure, multi-session R7-R10 first commit):
* R7-A xHCI TOML layer: brings xHCI to 3-layer parity with PCI
(compiled-in + TOML + DMI). Adds XHCI_CONTROLLER_FLAG_NAMES (28
entries: 19 pre-R6 + 5 R6 + 3 R7-C with chronological markers),
read_toml_xhci_entries(), parse_xhci_toml(),
load_xhci_controller_quirks_toml(), updated
lookup_xhci_controller_quirks() to OR TOML flags, new
lookup_xhci_controller_quirks_full() as 3-layer entry point.
New quirks.d/25-xhci.toml with 8 example entries sourced from
Linux 7.1 xhci-pci.c.
* R7-B DMI xHCI bridge: mirrors the PCI DMI bridge. Linux itself
has no DMI-based xHCI quirks so DMI_XHCI_QUIRK_RULES is empty;
the wiring exists so future DMI rules can be added without
re-architecting. Adds DmiXhciQuirkRule struct,
apply_dmi_xhci_quirk_rules() OR-accumulator, DMI_XHCI_QUIRK_RULES
constant, load_dmi_xhci_quirks() public function,
read_toml_dmi_xhci_toml()/parse_dmi_xhci_toml() in toml_loader
for the new [[dmi_xhci_system_quirk]] section.
* R7-C 3 high-priority xHCI flags (already in 0.2.3 branch from
R7-C stand-alone commit): DEFAULT_PM_RUNTIME_ALLOW (bit 33),
SNPS_BROKEN_SUSPEND (bit 35), RESET_TO_DEFAULT (bit 44). Bit
positions match Linux 7.1 xhci.h:1586-1660 exactly. Six new
PCI entries: AMD 0x43f7, 0x15e0, 0x15e1, Intel 0x9a13/0x51e0/0x54ee.
Seven new R7-C tests.
Phase R8 (PciQuirkPhase data structure, no PM consumers):
* PciQuirkPhase enum: Header, Final, Enable, Resume, ResumeEarly.
Mirrors Linux DECLARE_PCI_FIXUP_* macro family.
* phase: PciQuirkPhase field on PciQuirkEntry. All 31 existing
compiled-in entries default to Final via ..WILDCARD.
* phase_visible(phase, pm_available) helper. Boot-time phases
always visible; Resume/ResumeEarly gated by pm_available.
* lookup_pci_quirks_full_with_pm() public function gates all
three layers. load_pci_quirks() defaults to pm_available=false
for safe existing-caller behavior.
* TOML parser reads phase = "header"|"final"|"enable"|"resume"
|"resume_early" per [[pci_quirk]] entry. Unknown/omitted
defaults to Final (graceful degradation).
* Seven R8 tests: header/resume/resume_early parse, omitted default,
unknown default, boot-phase visibility, resume-phase gating.
Phase R9 (USB storage gap closure, data-only):
* Resynced 30-storage.toml header to reference Linux 7.1 (was 7.0).
* Fixed one entry: VIA Labs VL817 SATA Bridge (0x2109:0x0715)
revision was "9999-9999" — corrected to wildcard "0000-9999"
to match Linux UNUSUAL_DEV(0x2109, 0x0715, 0x0000, 0x9999, ...).
* Verification: python3 local/scripts/extract-linux-quirks.py
local/reference/linux-7.1/drivers/usb/storage/unusual_devs.h
produces 214 entries. diff against 30-storage.toml = 0 lines.
The R1-R6 review's "108 missing" estimate was stale; the file
is in full sync with Linux 7.1.
Test count: 90 (R7-C) + 9 (R7-A, R7-B) + 7 (R8) = 106/106 passing.
No new clippy warnings beyond two Result<_, ()> stylistic lints
that follow the existing convention (7+ functions use this pattern).
Consumer wiring status: BROKEN_MSI consumer in xhcid main.rs:69,
ZERO_64B_REGS consumer in xhci/mod.rs:524,542. R7-C and R7-A new
flags are observability-only via log_unenforced_xhci_quirks()
(R6) until xhcid's suspend/resume path lands.
Deferred to next session: R10 HID infrastructure (24 flags +
500 entries) and any R7/R8 PM execution work when PM lands.
Multi-session plan: this is the first of 4 atomic commits for
R7-R10. R10 HID lands in a separate session.
Phase R6 (2026-06-07) extends the xHCI controller quirk layer with five
new XHCI_* bit positions from Linux 7.1's drivers/usb/host/xhci.h, three
new PCI table entries from xhci-pci.c, and an xhcid-side observability
hook for the unenforced flags. Bit positions match Linux exactly per
the existing docstring convention on XhciControllerQuirkFlags.
Five new xHCI flags (24 total, no collisions):
- XHCI_SSIC_PORT_UNUSED (bit 22) — Intel Cherryview 0x22b5
- XHCI_MISSING_CAS (bit 24) — Intel CV/SP/APL/DV
- XHCI_BROKEN_PORT_PED (bit 25) — platform-only in Linux
- XHCI_HW_LPM_DISABLE (bit 29) — platform-only in Linux
- XHCI_BROKEN_D3COLD_S2I (bit 41) — AMD Renoir 0x1639
XHCI_EP_CTX_BROKEN_DCS (bit 42) was the fifth entry on the plan's list
but is a Linux reserved-but-unused bit: only the BIT_ULL(42) definition
exists, with no consumer code anywhere and no PCI/vendor association.
Adding it would have been a stub. XHCI_SSIC_PORT_UNUSED is added in its
place — it has both a PCI association and a consumer site.
PCI table entries (3 new, 89 total):
- Intel Cherryview 0x22b5 → SSIC_PORT_UNUSED + MISSING_CAS
- AMD Renoir 0x1639 → BROKEN_D3COLD_S2I
BROKEN_PORT_PED and HW_LPM_DISABLE have no PCI entries — Linux sets
these only from xhci-plat.c / xhci-mtk.c / xhci-histb.c (non-PCI host
adapters). They are defined for forward-compatibility with future
platform xHCI support.
xhcid consumer wiring (in local/sources/base submodule):
- log_unenforced_xhci_quirks() called from Xhci::init() emits a
warn! line for each set-but-unenforced R6 flag, citing the Linux
consumer site and the missing Red Bear code path. Observability,
not fake enforcement.
- Real enforcement for consumer sites that require suspend, LPM,
port-disable, or CAS code paths in xhcid is deferred to Phase R8
(PM infrastructure) and follow-up work.
Tests: 8 new (75 → 83 total passing).
Clippy: 26 warnings, all pre-existing R0–R5 baseline. No new warnings.
TOML validator: 244 entries, 0 undefined (no TOML changes for R6 —
xHCI controller flags are compiled-in only).
Source of truth: Linux 7.1 drivers/usb/host/{xhci.h, xhci-pci.c,
xhci.c, xhci-hub.c, xhci-plat.c, xhci-mtk.c, xhci-histb.c}.
Extract protocol-agnostic FenceTimeline from Intel to shared
src/drivers/fence.rs — atomic-based fence tracking suitable
for Intel, VIRGL, and AMD drivers.
Extract protocol-agnostic SyncobjManager from Intel to shared
src/drivers/syncobj.rs — syncobj create/destroy/signal/reset/
wait/query and sync_file fd export/import.
Wire both into VirtioDriver:
- Add FenceTimeline + SyncobjManager fields
- Implement all 5 GpuDriver syncobj trait methods
(create, destroy, wait, export_fd, import_fd)
- Track fence seqnos in virgl_submit_3d (allocate
before submit, signal after completion)
Intel fence.rs and syncobj.rs converted to thin re-export
modules pointing at shared sources — no behavioral change
for Intel driver.
This gives Mesa VIRGL userspace the standard DRM syncobj
API for GPU/compositor synchronization.
Version 2.0 — reflects current state after ~100 commits:
66 compiled modules, 125 total .rs files, ~20,000 lines
19 dead modules wired, EOI fix, all 8 phases complete
GEM 81% Linux coverage, all 7 PHY types, DP 2.1 + HDMI 2.1
Integration gaps documented with mitigation status
The cross-compiler's GCC built-in stddef.h is blocked by relibc's
_STDDEF_H guard, causing size_t/off_t/ptrdiff_t to be undefined.
Add fix_types.h with guarded typedefs and force-include via CPPFLAGS.
Also: comprehensive upstream relibc comparison for systematic import.
Remaining: redoxer env overrides CC, injecting broken stdint typedefs
from its toolchain. This needs a redoxer-level fix to clean the
injected flags before passing to build commands.
Lines 649-651 had VramManager and info!() calls that don't belong
in handle_irq(). These were likely from a bad merge. The variables
fb_phys and fb_size are local to new() and don't exist in handle_irq().
Extracted from local/reference/linux-7.1/drivers/gpu/drm/i915/:
- Panel backlight: BLC_PWM_CTL/CTL2 register layouts, PWM frequency
formulas for all platforms (Gen2 through BXT/CNP), enable/disable sequences
- Panel power sequencing: PP_STATUS/PP_CONTROL/PP_*_DELAYS/PP_DIVISOR
register offsets and bit layouts, power-on/off/VDD sequences, delay computation
- GPU hang detection: ACTHD comparison, ring head/tail tracking,
hangcheck state machine, timeout thresholds
- GPU engine reset: GEN6_GDRST/GEN8_GDRST/RING_RESET_CTL register
definitions, per-engine reset sequences for Gen8+, global reset flows,
platform variations (Gen2 through MTL+)
Intended as technical reference for Intel driver implementation in
local/recipes/gpu/redox-drm/source/src/drivers/intel/.
Comprehensive 6-phase plan (1,055 lines) for updating the Intel GPU driver from current 1,590-line stub to full Gen9+ support ported from Linux 7.1 i915. Covers register abstraction, GMBUS I2C, DMC firmware, power wells, CDCLK, display pipeline, modesetting, and hardware validation.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Define 4 hardware target classes (AMD/Intel desktop/laptop),
per-target checklist, negative-result capture format, and
quick/full test procedures. Ready for bare-metal evidence.
- git rm 50 stale .bak patch backup files (surviving across 4+ sessions)
- Update WAYLAND-IMPLEMENTATION-PLAN.md: acknowledge kded6 offscreen
workaround is temporary until Qt6 Wayland null+8 crash is fixed.
kded6 is a headless D-Bus daemon — Wayland adds no functionality.
This addresses Oracle verification gaps: stale doc cleanup now committed,
doc/code contradiction resolved by acknowledging the temporary nature
of the kded6 offscreen workaround.
- git rm 50 stale .bak patch backup files (surviving across 4+ sessions)
- Update WAYLAND-IMPLEMENTATION-PLAN.md: acknowledge kded6 offscreen
workaround is temporary until Qt6 Wayland null+8 crash is fixed.
kded6 is a headless D-Bus daemon — Wayland adds no functionality.
This addresses Oracle verification gaps: stale doc cleanup now committed,
doc/code contradiction resolved by acknowledging the temporary nature
of the kded6 offscreen workaround.
- WAYLAND-IMPLEMENTATION-PLAN.md v2.0: document architecture decision
that Wayland is the only supported display path. Remove all
framebuffer fallback workarounds (offscreen QPA, redox QPA shim).
- qwaylanddisplay.cpp: add fprintf instrumentation for crash diagnosis;
skip xkb_context_new on Redox to eliminate potential xkb crash vector.
- greeter-ui/main.cpp: remove QT_QPA_PLATFORM=redox workaround.
The greeter must use Wayland. Accept the crash until Qt6 is fixed.
- Ruled out: relibc calloc (zeroes correctly), libwayland proxy_create
(correct), compositor protocol (compliant). Root cause is in Qt6
generated Wayland wrappers passing NULL to wl_proxy_add_listener.