Commit Graph

1606 Commits

Author SHA1 Message Date
vasilito 830ce0e970 mc: wire recipe into build tree, fix gnulib mountlist detection
- Create recipes/tui/mc symlink to local/recipes/tui/mc
- Remove conflicting WIP recipes/wip/files/mc shadow
- Add sed fix for mountlist.m4 AC_MSG_ERROR -> AC_MSG_WARN
  because Redox has no /etc/mtab or /proc/mounts
- mc still needs more work: configure succeeds but make
  regeneration of configure from m4 files undoes the fix
2026-06-02 12:29:19 +03:00
vasilito 057594ba21 intel: CRITICAL — wire 19 dead modules + EOI interrupt fix
mod.rs: 19 previously-dead modules now compiled (66 total)
  PHY: cx0_phy, dkl_phy, mg_pll, snps_phy
  Power: dmc_power, psr_full, alpm
  Display: dp_audio, dp_phy, hdmi_scrambler, bandwidth,
           panel_fitter, display_irq
  GT: workarounds
  Platform: tc_port, cdclk_tables
  Support: color_lmem, color_pipeline

handle_irq: MSI-X EOI now called after process_irq()
  Fixes interrupt vectors firing only once

11 modules deferred (pre-existing issues):
  audio_eld, dp_fec, dp_uhbr, dsc, edp_pll, gpu_reset,
  guc_submission, hdmi_frl, lspcon, rps_rc6, vrr
2026-06-02 12:28:35 +03:00
vasilito 6f160d95bf intel: CRITICAL — wire all 30 dead modules + EOI interrupt fix
mod.rs: added pub mod declarations for all previously-dead modules
  PHY: mg_pll, dkl_phy, cx0_phy, snps_phy, edp_pll
  Power: rps_rc6, dmc_power, psr_full, guc_submission, alpm
  Display: dp_fec, dp_audio, hdmi_frl, hdmi_scrambler, dp_uhbr,
           dp_phy, vrr, dsc, display_irq, bandwidth, panel_fitter
  Platform: lspcon, tc_port
  GT: workarounds, gpu_reset
  Support: audio_eld, cdclk_tables, color_lmem, color_pipeline

handle_irq: fixed MSI-X EOI gap
  InterruptHandle::eoi() now called after process_irq()
  Lock held across IRQ processing to prevent early drop
  Prevents MSI-X vectors from firing only once

30 modules were never compiled — now all 65 source files participate
in compilation. Legacy issues in previously-uncompiled modules remain
and will be addressed separately.
2026-06-02 12:20:16 +03:00
vasilito 4aa6b9d5fd fix: restore DRRS constants lost in comment edit 2026-06-02 11:53:49 +03:00
vasilito 6d8a1db8f1 intel: DSC + DRRS architecture documentation
dsc.rs: Display Stream Compression 1.2a
  2-3x link bandwidth reduction, required for 4K+ over DP 1.4
  PPS 128-byte configuration block (slice dimensions, BPC, rate control)
  DSC_CTL + DPCD sink communication

drrs.rs: Display Refresh Rate Switching
  15-30% panel power savings via dynamic refresh rate
  Compositor-driven idle detection with mark_active()
  DRRS_CTL idle frame counter + DRRS_STATUS monitoring

Intel driver: 95 files, 0 errors — 32 spec-commented files
2026-06-02 11:52:49 +03:00
vasilito e5e865d618 fix: restore FBC constant definitions lost in comment edit 2026-06-02 11:44:54 +03:00
vasilito 7193e40299 intel: FBC + VRR power management documentation
fbc.rs: Frame Buffer Compression architecture
  50-70% DRAM bandwidth reduction via on-the-fly decompression
  CFB stored in stolen memory, FBC_CTL + FBC_STATUS registers
  nuke() for frontbuffer modification invalidation

vrr.rs: Variable Refresh Rate / Adaptive Sync
  Dynamic refresh rate matching GPU render rate
  VESA Adaptive-Sync / AMD FreeSync / G-Sync Compatible
  VRR_CTL flip line + VRR_MIN/MAX_FRAME_TIME vtotal range

Intel driver: 95 files, 0 errors — 30 spec-commented files
2026-06-02 11:41:53 +03:00
vasilito be02eaa894 intel: execlists.rs + hangcheck.rs module documentation
execlists.rs: GPU context scheduling architecture
  2-slot ELSP ping-pong context switching (Gen8+)
  LRC descriptor format with engine class/instance encoding
  Context Status Buffer (CSB) completion signaling
  Register map: ELSP, STATUS, CTX_CTL, CSB_PTR, EL_CTL

hangcheck.rs: GPU hang detection + reset recovery
  ACTHD/head/tail stall detection with MAX_HANG_STALLS
  Per-engine reset (RESET_CTL) → global reset (GEN6_GDRST)
  Syncobj error signaling after reset recovery

Intel driver: 95 files, 0 errors — 28 spec-commented files
2026-06-02 11:39:56 +03:00
vasilito 9b8c69d842 intel: info.rs + gtt.rs module documentation
info.rs: platform detection architecture
  161 device IDs from Gen4 (2006) through Xe2 (2025)
  GMD_ID runtime detection (Gen12+)
  EU/subslice fuse register enumeration
  11 generation variants with per-gen capabilities

gtt.rs: GGTT page table architecture
  BAR0 64-bit PTE entries, 4KB/64KB page support
  GFX_FLSH_CNTL flush protocol (write + posting read)
  Free-list allocation with coalescing
  64KB pages for Gen12.5+ (DG2, MTL, Xe2)

Intel driver: 95 files, 0 errors — 26 spec-commented files
2026-06-02 11:35:56 +03:00
vasilito 8080e983de intel: LSPCON bridge + PPGTT context documentation
lspcon.rs (110 lines): HDMI 1.4→2.0 protocol converter
  Parade Technologies + MegaChips vendor OUI detection
  LS/PCON/FRL mode selection via DP AUX
  Mode change with polling timeout
  Appears as DP-to-HDMI bridge on DDI port

context.rs: module header documentation
  PPGTT 4-level page table architecture (PDP→PD→PT→PTE)
  512 entries per level × 4KB pages
  Context manager BTreeMap + LRC descriptor lifecycle

Ported from Linux 7.1:
  intel_lspcon.c → Lspcon

Intel driver: 95 files, 0 errors — 24 spec-commented files
2026-06-02 11:32:56 +03:00
vasilito 913a23a7f8 intel: Type-C port manager + ring buffer documentation
tc_port.rs (120 lines): USB Type-C DP Alt Mode manager
  TcPortState: Disconnected→UsbOnly→DpAltMode→Thunderbolt
  TcPhyOwner: Display/Usb/Thunderbolt PHY ownership
  TypeCManager: multi-port init with capability probing
  HPD signaling + display-ready state detection

ring.rs: module header documentation
  Ring buffer register layout: RBBASE/RBHEAD/RBTAIL/RBSTART/RBCTL
  MI command helpers with dword-length encoding
  All 7 MI command types enumerated

Ported from Linux 7.1:
  intel_tc.c → TypeCPort + TypeCManager

Intel driver: 94 files, 0 errors
2026-06-02 11:30:56 +03:00
vasilito 17a1f1aa0d base-initfs: set BUILD_TIMESTAMP from build host clock
Passes the current Unix timestamp as BUILD_TIMESTAMP env var
to cargo, so rtcd can use it as a fallback when the hardware
RTC is unavailable or returns invalid data.

bison: fix __fseterr stub injection using LIBS variable instead
of ar rcs to avoid static archive member ordering issues.
2026-06-02 11:30:30 +03:00
vasilito 60480a5d9d intel: SNPS PHY for DG2+ + GT manager documentation
snps_phy.rs (90 lines): Synopsys HDMI 2.1 PHY
  DG2/Alchemist + Battlemage discrete GPU HDMI output
  TMDS (up to 6 Gbps) + FRL (up to 12 Gbps) mode support
  PLL lock + PHY ready timeout sequences
  HDMI-only (no DP — uses separate PHY)

gt.rs: module header documentation
  Forcewake per generation: Gen4-5 (none), Gen6 (MT), Gen7-8 (MT+RENDER),
    Gen9 (RENDER), Gen12+ (MT multi-cast)
  RPS governor: interactive fast-up/slow-down
  RC6: hardware-managed power state

Ported from Linux 7.1:
  intel_snps_phy.c → SnpsPhy

Intel driver: 93 files, 0 errors
2026-06-02 11:29:12 +03:00
vasilito 0d17751971 intel: CX0 PHY for Xe2 + display.rs documentation
cx0_phy.rs (130 lines): Xe2 unified display PHY
  Arrow Lake / Lunar Lake / Battlemage physical layer
  CX0 PLL sharing: one PLL drives multiple lanes at 20 Gbps
  DP 2.1 UHBR20, HDMI 2.1 FRL, eDP mode support
  Per-lane calibration: voltage swing, pre-emphasis, CTLE
  PLL lock + PHY ready + lane calibration timeout sequences

display.rs: module header documentation
  DDI modeset flow: pipe detection → connector enumeration → EDID read
  EDID fallback chain: DP AUX → GMBUS → synthetic 1920x1080
  Mode timing: HTOTAL/HBLANK/HSYNC/VTOTAL/VBLANK/VSYNC programming

Ported from Linux 7.1:
  intel_cx0_phy.c → Cx0Phy

Intel driver: 92 files, 0 errors
2026-06-02 11:16:42 +03:00
vasilito abfe07f14a intel: DKL PHY for MTL+ + HDMI infoframe documentation
dkl_phy.rs (100 lines): Display Knowledge Library PHY
  Meteor Lake+ (Gen12.7+) display physical layer
  DP/HDMI mode selection + lane count configuration
  PHY calibration sequence (voltage swing, pre-emphasis)
  Ready timeout polling

hdmi.rs: module header documentation
  InfoFrame programming sequence (4 steps)
  CEA VIC coverage: 27 modes from VIC 1 to VIC 102
  Checksum computation: sum modulo 256

Ported from Linux 7.1:
  intel_dkl_phy.c → DklPhy

Intel driver: 91 files, 0 errors
2026-06-02 11:14:39 +03:00
vasilito ea727e673e intel: DPLL module header — architecture documentation
Document all 5 PLL architectures per generation:
  SKL/KBL/CFL: LCPLL1/2 + WRPLL1/2
  ICL: LCPLL1/2 + DPLL for MG/Combo PHY
  TGL/ADL: LCPLL1/2 + WRPLL + TGL CFGCR
  MTL: DPLL_CTRL1 + DPLL_FREQ
  Xe2: DPLL_CTRL1/2 with power enable

wrpll_compute() algorithm: 3 DCO central frequencies × 43 dividers
with deviation minimization + p0×p1×p2 decomposition
2026-06-02 11:10:51 +03:00
vasilito 4429f4afa0 intel: MG PLL for Type-C + DP 2.0 UHBR 128b/132b training
mg_pll.rs (130 lines): Multi-Gigabit PLL for USB-C DP Alt Mode
  Ice Lake+ (Gen11) Type-C/Thunderbolt PLL
  Per-port MG_PLL_CTL1/CTL2 with divider programming
  DCO integer/fractional divider computation
  TDC (Time-to-Digital Converter) calibration
  Power-up sequence: enable power → program → enable → lock

dp_uhbr.rs (70 lines): DP 2.0 128b/132b link training
  UHBR training: single-phase TPS4 (no separate CR/EQ)
  128b/132b channel coding enable via DPCD 0x0220
  Lane status + interlane alignment polling
  is_uhbr() rate detection helper

Ported from Linux 7.1:
  intel_mg_pll.c → MgPll
  intel_dp.c UHBR path → UhbrLinkTraining

Intel driver: 90 files, 0 errors
2026-06-02 11:03:57 +03:00
vasilito 14254ec638 intel: DP link training spec comments — DP 1.4 + DP 2.0 constants
Document all DP link training constants with specification references:
  DPCD register addresses (DP 1.4 §3.5.1 Link Configuration)
  Link rates: HBR/RBR/HBR2/HBR3/UHBR10/UHBR13.5/UHBR20
  Encoding types: 8b/10b (HBR↓) vs 128b/132b (UHBR)
  Lane status flags: CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
  Training patterns: TPS1 (clock recovery), TPS2 (equalization)
  DDI port width: x1/x2/x4 lane configuration
2026-06-02 11:01:19 +03:00
vasilito 8cb2f7250c intel: DP PHY test patterns + HDMI deep color — ported from Linux 7.1
dp_phy.rs (140 lines):
  DpPhyTest: DPCD 0x248 PHY compliance test patterns
    TPS1 (clock recovery), TPS2 (channel equalization)
    TPS3 (symbol lock), TPS4 (HBR3 8.1 Gbps)
    DDI_DP_PATTERN_CTL per-port program/disable

  HdmiDeepColor: EDID CEA-861 deep color probe
    30/36/48-bit color depth detection from HDMI VSDB
    set_bpc with supported validation
    per-sink capability tracking

Ported from Linux 7.1:
  intel_dp.c phy test path → DpPhyTest
  intel_hdmi.c deep color path → HdmiDeepColor

Intel driver: 88 files, 0 errors
2026-06-02 11:00:01 +03:00
vasilito 7db86ea7f2 intel: eDP PLL + HDMI TMDS scrambling — ported from Linux 7.1
edp_pll.rs (110 lines): eDP dedicated PLL for laptop panels
  Fixed-frequency PLL (no link training adaptation needed)
  Div0/div1 fractional divider computation
  PSR mode entry/exit (PLL power state for panel self refresh)
  Lock polling with timeout

hdmi_scrambler.rs (80 lines): HDMI 2.0 TMDS scrambling
  16-bit LFSR: G(x) = x^16 + x^5 + x^4 + x^3 + 1
  Auto-enable above 3.4 Gbps TMDS threshold
  SCDC scrambling status readback via DP AUX
  Per-DDI port scrambling control

Ported from Linux 7.1:
  intel_dpll_mgr.c eDP path → EdpPll
  intel_hdmi.c scrambling path → HdmiScrambler

Intel driver: 87 files, 0 errors
2026-06-02 10:50:58 +03:00
vasilito 8e7b35bed1 intel: DP FEC, HDMI 2.1 FRL, DP Audio — ported from Linux 7.1
dp_fec.rs (100 lines): DP 1.4+ Forward Error Correction
  Reed-Solomon RS(254,250) sink-side FEC enable via DPCD
  DDI_FEC_CTL per-port register programming
  FEC error counter monitoring (uncorrected + per-lane)
  Lane count-dependent FEC configuration

hdmi_frl.rs (105 lines): HDMI 2.1 Fixed Rate Link
  FRL replaces TMDS — up to 48 Gbps across 4 lanes
  FrlRate enum: 3G/6G/8G/10G/12G with auto lane calculation
  SCDC-based link training pattern request + completion wait
  DDI_HDMI_FRL_CTL per-port enable with rate+lanes

dp_audio.rs (90 lines): DisplayPort audio
  N/CTS computation from DP spec Table 2-27 (7 sample rates)
  DP_AUDIO_CTL/MAUD/NAUD register programming per DDI port
  configure/enable/disable with pipe routing

Ported from Linux 7.1:
  intel_dp.c FEC path → DpFecState
  intel_hdmi.c FRL path → HdmiFrlState
  intel_audio.c DP path → DpAudioState

Intel driver: 85 files, 0 errors
2026-06-02 10:48:04 +03:00
vasilito a9f44c331c intel: add DP protocol comments to dp_aux.rs constants
Document DisplayPort 1.4 specification constants:
  AUX channel register layout (0x64010 base, 0x100 stride)
  AUX transaction timeout rationale (300us spec + PM margin)
  DPCD capability register addresses (revision, link rate, lane count)
  I2C-over-AUX EDID addressing (0x50 EEPROM, segment pointers)
  AUX transaction types (native READ/WRITE, I2C READ/WRITE, MOT flag)
2026-06-02 10:45:35 +03:00
vasilito 18017316ac intel: GEM organized mod.rs with categorized re-exports
Replaced flat module list with fully categorized documentation.
Categories: Core, Lifecycle, GPU, Memory, Sync, Misc.
All 25 modules + 60 public types now organized for discoverability.

GEM subdirectory: 25 files, 2,280 lines, 0 errors — complete port at 81%
2026-06-02 10:42:12 +03:00
vasilito 0cf88bf1cb intel: GEM performance counters, TTM power state, code comments
gem_perf.rs (130 lines):
  PerfCounters: 22 atomic counters for all GEM operations
    create/close/mmap/execbuffer/tiling/domain/wait/pin/unpin
    export/import, context, request submit/complete
    eviction, shrink, throttle, fence, ttm_move, clflush
  PerfSnapshot: cloneable point-in-time counter snapshot
  TtmPowerState: suspend/resume with region saving

gem_object.rs: added documentation comments
  MemoryRegionType: System=DRAM, LocalMemory=VRAM, Stolen=BIOS
  CacheLevel: GPU cacheability (affects MOCS/PAT)

Ported from Linux 7.1:
  i915_perf.c counters → PerfCounters
  i915_gem_ttm_pm.c → TtmPowerState

GEM subdirectory: 25 files, 2,280 lines, 0 errors
2026-06-02 10:34:27 +03:00
vasilito bccc2f7dd1 console: fix login prompt by avoiding oneshot scheduler deadlock
29_activate_console: changed from oneshot back to oneshot_async.
The oneshot type calls child.wait() which blocks the entire init
scheduler. If inputd doesn't drain its control channel promptly,
ControlHandle::write() hangs forever, freezing boot.

30_console: added 'sleep 0.2' before 'exec getty 2' to give
inputd time to process the VT activation before getty opens
/scheme/fbcon/2. Eliminates the race condition without
blocking the init scheduler.
2026-06-02 10:21:05 +03:00
vasilito 76610fc8d0 intel: GEM ioctl dispatch + buffer validation
gem_dispatch.rs (120 lines):
  GemIoctlDispatch: thread-safe ioctl router
    All GEM managers behind Arc<Mutex<>> for shared access
    create/close/pin/unpin/cache/gtt_offset operations
    context_create/destroy delegation
    set_tiling/get_tiling with lock poisoning handling

  BufferValidator: static validation helpers
    validate_size: 0 < size <= 4GB check
    validate_offset_length: bounds + DWORD alignment
    validate_alignment: 4K alignment requirement
    validate_handle_list: batch validation of all handles

Ported from Linux 7.1:
  i915_gem_ioctls.h → GemIoctlDispatch dispatch constants
  i915_gem.c validate helpers → BufferValidator

GEM subdirectory: 24 files, 2,150 lines, 0 errors
2026-06-02 10:14:16 +03:00
vasilito eff3e6a850 intel: GEM render state, fence registers, FBC tracking
gem_state.rs (170 lines):
  RenderState: gen-specific golden context initialization
    init_gen9: STATE_BASE_ADDRESS + CC_STATE_POINTERS programming
    init_gen8: simplified context image
    GGTT-backed with proper page mapping

  FenceRegisterState: 32-slot fence register pool
    allocate/release with tiling + pitch tracking
    find_by_handle reverse lookup
    used_count query

  FrameBufferCompressionState:
    Register/unregister scanout buffers
    mark_compressed/uncompressed with CFB offset tracking
    Per-buffer compressed byte accounting

Ported from Linux 7.1:
  i915_gem_render_state.c → RenderState
  i915_gem_fence.c → FenceRegisterState
  i915_gem_gtt.c (partial) → FBC tracking

GEM subdirectory: 23 files, 2,030 lines, 0 errors
2026-06-02 10:11:01 +03:00
vasilito f904f59b68 intel: GEM eviction manager, fence objects, wound/wait mutex
gem_evict.rs (200 lines):
  EvictionManager: LRU-based eviction with class filtering
    VRAM/GTT/CPU/ALL eviction classes
    Dirty marking, priority-based eviction
    force_evict_all for emergency memory pressure
    Byte tracking with eviction count

  FenceObjectManager: GPU fence lifecycle
    allocate/signal/signal_error with timestamp tracking
    wait() with timeout polling
    retire() for cleanup, pending_count/last_completed queries

  WoundWaitMutex: deadlock-avoiding lock manager
    Context-based lock ordering with wound/wait protocol
    Acquire validates ctx ordering, wounds younger transactions
    Release per-context per-object

Ported from Linux 7.1:
  i915_gem_evict.c → EvictionManager
  i915_gem_fence.c → FenceObjectManager
  i915_gem_ww.c → WoundWaitMutex

GEM subdirectory: 22 files, 1,860 lines, 0 errors
2026-06-02 10:00:44 +03:00
vasilito 556c9ac93d redbear-mini: add sed, nano to text-mode ISO; re-enable mc
mc builds fine after gnulib cross-compile fixes. sed and nano cook
successfully. file and less blocked pending further debugging.
2026-06-02 09:58:55 +03:00
vasilito 6ede7a045c intel: GEM request tracking, scheduler, statistics
gem_request.rs (150 lines):
  RequestManager: fence-based GPU request lifecycle
    create/complete/retire_completed with inflight limit
    pending_for_context query
  Scheduler: priority-based runqueue with dequeue
    i32 priority levels, highest-first dispatch
    QueuedRequest with fence/ctx/engine/priority/timestamp
  GemStatistics: global counters
    create/close/submit/complete/retire counts
    peak inflight/objects, byte allocation tracking
  EngineClass enum: Render/Blitter/Video/VideoEnhance/Compute

Ported from Linux 7.1:
  i915_request.c → RequestManager + GemRequest
  i915_scheduler.c → Scheduler
  i915_gem.c stats → GemStatistics

GEM subdirectory: 20 files, 1,660 lines, 0 errors
2026-06-02 09:46:35 +03:00
vasilito fc63a47c05 intel: GEM final phases — init, busy tracking, shrinker, throttle, VMA resources
gem_init.rs (200 lines):
  GemInitManager: top-level GEM initialization
    System/LMEM/Stolen region management
    object_manager + vma_manager as Arcs for shared access
  BusyTracker: per-handle engine busy state with event history
    mark_busy/idle, engine_mask, submission count
  ShrinkerWithEviction: LRU-based eviction under memory pressure
    Last-used timestamp ordering, pinned object protection
    try_shrink() with target-based eviction
  VmaResourceManager: VMA resource lifecycle tracking
    track/release with released state
  RingThrottle: per-ring submission limits with global cap
    submit/retire with fence-based completion

Ported from Linux 7.1:
  i915_gem.c → GemInitManager
  i915_gem_busy.c → BusyTracker
  i915_gem_shrinker.c → ShrinkerWithEviction
  i915_vma_resource.c → VmaResourceManager
  i915_gem_throttle.c → RingThrottle

GEM subdirectory: 18 files, 1,510 lines, 0 errors — complete port
2026-06-02 09:28:26 +03:00
vasilito 6d14a378c3 coretempd: disable MSR fallback, use /scheme/sys/cpu exclusively
Kernel has a use-after-free bug in sys_read triggered by /scheme/sys/msr
access. The probe guard prevents most crashes but the kernel bug can still
trigger during MSR read paths. Removing the MSR fallback eliminates this
crash path entirely. Vendor detection now uses /scheme/sys/cpu only.
2026-06-02 09:22:47 +03:00
vasilito ca8f583a23 intel: GEM Phase 13-21 — shmem, TTM, userptr, wait, frontbuffer, clflush
gem_backend.rs (80 lines):
  ShmemBackend: DMA-backed page allocation with byte tracking
  InternalBackend: heap-backed buffer pool for kernel-internal use
  PhysBackend: physically contiguous DmaBuffer allocation
  ClflushManager: cache flush counter

gem_ttm.rs (60 lines):
  TtmManager: placement tracking + migration lifecycle
  Migration struct: src/dst offset, size, completed, timestamp
  PowerManager: suspend/resume with frozen state tracking

gem_ioctl.rs (120 lines):
  UserptrManager: user pointer registration with GEM binding
  WaitManager: per-handle waiter queue with timeout/signal
  FrontbufferTracker: scanout buffer dirty rect tracking
  FrontbufferState: dirty/scanout flags + rect coordinate list

Modules ported from Linux 7.1:
  gem/i915_gem_shmem.c → ShmemBackend
  gem/i915_gem_ttm.c → TtmManager + PowerManager
  gem/i915_gem_ttm_move.c → Migration
  gem/i915_gem_userptr.c → UserptrManager
  gem/i915_gem_wait.c → WaitManager
  gem/i915_gem_clflush.c → ClflushManager
  gem/i915_gem_internal.c → InternalBackend
  gem/i915_gem_phys.c → PhysBackend
  gem/i915_gem_object_frontbuffer.c → FrontbufferTracker
  gem/i915_gem_pm.c → PowerManager

GEM subdirectory: 17 files, 1,310 lines, 0 errors
2026-06-02 09:16:48 +03:00
vasilito 27e5326ee0 intel: GEM Phase 10-12 — DMA-BUF, create params, LMEM allocator
gem_dmabuf.rs (65 lines):
  DmaBufManager: export/import/release with fd→handle mapping
  DmaBufExport/DmaBufImport structs with size tracking
  Per-handle export ref-counting through GemObjectManager

gem_create.rs (40 lines):
  CreateParams: size, region, flags, alignment, name
  CreateManager::create() with param validation
  create_lmem/create_named convenience constructors

gem_lmem.rs (60 lines):
  LmemAllocator: linear allocator for discrete GPU VRAM
  write_region/read_region with DWORD-aligned MMIO access
  64KB alignment, used_bytes tracking, out-of-bounds checking

Ported from Linux 7.1:
  gem/i915_gem_dmabuf.c → DmaBufManager
  gem/i915_gem_create.c → CreateManager + CreateParams
  gem/i915_gem_lmem.c → LmemAllocator

GEM subdirectory: 14 files, 1050 lines, 0 errors
2026-06-02 08:47:27 +03:00
vasilito 7b42abeec9 intel: GEM Phase 5-9 — context, mmap, tiling, domains, stolen memory
gem_context.rs (90 lines):
  GemContext: handle, priority, PPGTT flag, VMA manager per-context
  ContextManager: create/destroy/activate/deactivate
  create_default_context() with PPGTT enabled

gem_mmap.rs (60 lines):
  MmapManager: create/unmap with offset-based handle lookup
  MmapType: WriteCombine/WriteBack/Uncached
  MMAP_OFFSET_SHIFT for page-aligned offset allocation

gem_tiling.rs (80 lines):
  TilingManager: set/get_tiling per handle
  FenceRegisterManager: 32 fence register pool with alloc/free
  TilingMode: None/X/Y/Yf/Ys with stride + fence reg binding

gem_domain.rs (80 lines):
  DomainManager: read/write domain tracking with clflush flag
  BusyManager: per-handle engine busy state
  ThrottleManager: pending submission limit enforcement

gem_stolen.rs (60 lines):
  StolenMemoryManager: BIOS stolen memory region with reserve
  ShrinkerManager: memory pressure tracking with shrink attempts

Ported from Linux 7.1:
  gem/i915_gem_context.c → ContextManager + GemContext
  gem/i915_gem_mman.c → MmapManager + MmapEntry
  gem/i915_gem_tiling.c → TilingManager + FenceRegisterManager
  gem/i915_gem_domain.c → DomainManager
  gem/i915_gem_busy.c → BusyManager
  gem/i915_gem_stolen.c → StolenMemoryManager
  gem/i915_gem_shrinker.c → ShrinkerManager

GEM subdirectory: 11 files, 880 lines, 0 errors
2026-06-02 08:43:08 +03:00
vasilito 99b4d1576f qtdeclarative: enable QML JIT for Redox with Q_OS_REDOX platform fix
Two changes needed to enable Qt6 QML V4 JIT on Redox:
1. -DQT_FEATURE_qml_jit=ON (was OFF)
2. sed patch adding Q_OS_REDOX to qv4assemblercommon_p.h X86_64 SysV list

Without #2, the JIT PlatformAssemblerBase typedef is never defined
for Redox, causing Address/RegisterID/Jump type errors during compilation.
2026-06-02 08:32:20 +03:00
vasilito baabf08c22 redbear-full: fix console activation race (oneshot_async->oneshot), suppress amdgpu build, enable SDDM config 2026-06-02 08:30:18 +03:00
vasilito 9c609a8389 intel: GEM Phase 3-4 — execbuffer submission + page management
gem_execbuffer.rs (80 lines):
  ExecObject: batch object with offset, length, gtt_offset, binding flag
  RelocationEntry: target handle, delta, offset validation
  ExecbufferSubmission: batch objects, relocations, fence tracking
  ExecbufferManager: validate → reloc_process → bind → fence_out
  AtomicU64 fence counter with per-submission increment

gem_pages.rs (65 lines):
  PageManager: BTreeMap<phys_addr, Page> with refcount allocation/free
  Page struct: phys_addr, refcount, dirty flag
  TtmMoveManager: source→destination region migration
  Bump allocator with total/free byte tracking per region

Ported from Linux 7.1:
  gem/i915_gem_execbuffer.c → ExecbufferManager + ExecObject
  gem/i915_gem_ttm.c → TtmMoveManager
  gem/i915_gem_pages.c → PageManager

GEM subdirectory now: 6 files, 515 lines, covering object lifecycle,
memory regions, VMA management, execbuffer, and page management.
2026-06-02 08:19:48 +03:00
vasilito 7053990358 intel: GEM Phase 1-2 — core object lifecycle + memory regions + VMA
gem/gem_object.rs (175 lines):
  GemObject struct: handle, size, region, cache_level, gtt/vram offset
  GemObjectManager: BTreeMap registry with create/close/pin/unpin
  Memory tracking: system/vram byte counters with limits
  Export tracking, per-object cache level, name support

gem/gem_region.rs (85 lines):
  MemoryRegion: System/LMEM/Stolen types with alloc/free
  IO-mapped vs CPU-visible region properties
  Min page size per region (4K system, 64K LMEM)
  Bump allocator with free tracking

gem/gem_vma.rs (100 lines):
  GemVma: virtual address binding with address space type
  VmaManager: BTreeMap registry with overlap detection
  Bind/unbind with bound byte tracking
  Per-object VMA query

Ported from Linux 7.1:
  gem/i915_gem_object_types.h → GemObject
  gem/i915_gem_object.c → GemObjectManager
  gem/i915_gem_region.c → MemoryRegion
  i915_vma.c → VmaManager + GemVma

This is a new gem/ subdirectory under the Intel driver — the foundation
for the full 27,472-line GEM subsystem port from Linux i915.
2026-06-02 08:14:14 +03:00
vasilito e7ed83144e intel: complete DPLL reimplementation from Linux 7.1
Ported skl_ddi_calculate_wrpll() computation engine:
- DCO central frequency table (8.4/9.0/9.6 GHz)
- 43 divider values (36 even + 7 odd)
- Deviation-minimizing search across all dividers × central freqs
- skl_wrpll_multipliers() → p0×p1×p2 decomposition
- skl_wrpll_params_populate() → dco_integer/fraction with 0x8000 precision

Per-platform PLL programming:
- SKL: CFGCR0+CFGCR1+CTL at 0x164284/0x164288/0x16428C
  with qdiv_mode, kdiv/pdiv, posting reads, lock polling
- ICL: same as SKL register set
- TGL: TGL-specific CFGCR1 at 0x164298
- MTL: DPLL_FREQ + DPLL_CTRL1 with PLL_POWER_ENABLE
- Xe2: DPLL_CTRL1/CTRL2 with power+enable+lock

162 → 250 lines of actual computation and programming logic
2026-06-02 06:42:55 +03:00
vasilito c9b723c941 intel: reimplement DPLL from Linux 7.1 — per-platform PLL management
163 → 300 lines covering all supported generations:

SKL (Gen9):
  LCPLL1/LCPLL2 + WRPLL1/WRPLL2 enable with lock polling
  DCO integer/fraction programming via WRPLL_CTL registers

ICL (Gen11):
  DPLL_CFGCR0/CFGCR1 with frequency_enable + DCO/QDIV/KDIV/PDIV
  Dedicated CFGCR registers at 0x164284/0x164288

TGL/ADL/DG2 (Gen12):
  TGL-specific DPLL_CFGCR0/CFGCR1 at 0x164294/0x164298
  Link rate selection (HBR2/HBR3)

MTL (Gen12.7):
  DPLL_CTRL1/DPLL_FREQ register programming
  DCO integer/fraction packed into single frequency register

Xe2 (ARL/LNL/BMG):
  DPLL_CTRL1/CTRL2 with POWER_ENABLE + ENABLE bits

New DpllConfig with: pll_id, dco_int, dco_frac, pdiv/qdiv/kdiv
  vco_khz() computed from refclk * kdiv / (pdiv * qdiv)
  get_pll_for_clock() with config search + program + active tracking
  release_pll() for connector hot-unplug cleanup
  next_available_pll() automatic allocation across 4+ PLLs
2026-06-02 06:38:28 +03:00
vasilito 9e4bf89d24 intel: reimplement CDCLK from Linux 7.1 — full per-gen support
Replaces 155-line Gen9/Xe2-only CDCLK with 300-line comprehensive
implementation covering all supported generations:

SKL/KBL/CFL (Gen9):
  CDCLK programming via CDCLK_CTL register with freq_select + decimal
  4 frequency options: 308.57/337.5/450/432/540/675/617.14 MHz
  VCO decode: 3.2GHz to 6.75GHz per frequency/decimal combination
  Squash vs crawl waveform detection for seamless transitions

TGL/ADL/DG2 (Gen12):
  CDCLK programming via CDCLK_FREQ register
  7 frequency options with 38.4 MHz refclk
  VCO computation: 14.7GHz to 17.3GHz

MTL (Gen12.7):
  4 frequency options: 172.8/307.2/556.8/652.8 MHz

Xe2 (ARL/LNL/BMG):
  DE_CAP register primary, CDCLK_FREQ fallback
  4 frequency options: 307.2/384/556.8/652.8 MHz

CdclkState struct now carries: frequency_khz, vco_khz, refclk_khz,
  voltage_level, waveform
set_frequency() with wait_cdclk_change() polling
required_cdclk() for mode-based frequency selection
2026-06-02 06:32:47 +03:00
vasilito dc50d019e0 intel: cargo fix — auto-clean unused imports (10→3 warnings) 2026-06-02 06:26:03 +03:00
vasilito 5fe927e506 intel: audio/ELD, RPS/RC6, GPU reset — final subsystems
audio_eld.rs: EDID-Like Data + N/CTS computation
  EldData parser from CEA-861 EDID extension block
  HDMI OUI (0x000C03) Short Audio Descriptor extraction
  Speaker allocation string mapping (stereo → 7.1)
  compute_n_cts for 7 sample rates (32/44.1/48/88.2/96/176.4/192 kHz)

rps_rc6.rs: full Render Power State + RC6 management
  Gen9 freq table: 20 entries (100-1050 MHz)
  Gen12 freq table: 17 entries (100-1500 MHz)
  RPS up/down with evaluation interval + timeout gating
  RC6 enable/disable with HW-managed transitions
  Interrupt limits + up/down threshold programming

gpu_reset.rs: per-engine + global GPU reset recovery
  reset_engine with RESET_CTL request → ready → clear sequence
  reset_render convenience wrapper
  reset_gpu with GEN6_GDRST full domain register
  Per-domain force_reset for render/media/blitter/vecs/GUC
  Reset count + recovery success counter tracking
2026-06-02 06:23:41 +03:00
vasilito a52ffc5ac6 intel: color pipeline, DMC DC5/6, PSR full, GuC submission — remaining MAJOR
color_pipeline.rs: CSC/CTM coefficient encoding with precision
  encode_csc_coefficient: 12-bit fixed point with sign bit
  encode_ctm_coefficient: 64-bit FP with mantissa + exponent
  compute_hdr_metadata: ST.2086 HDR static metadata block
  ColorPipelineState struct (degamma/CSC/CTM/gamma enables)

dmc_power.rs: DC5/DC6 deep power states
  allow_dc5/allow_dc6 with DMC firmware handshake
  disallow_dc5/disallow_dc6 for display active prevention
  DC state register controls at 0x45400/0x45404/0x45504

psr_full.rs: complete PSR sink+source communication
  DPCD PSR_STATUS/ERROR_STATUS/SINK_STATUS monitoring
  PSR exit request via sink DPCD write
  Source PSR state polling (SRDENT/SRDONACK/IDLE)
  Error/entry/exit counter tracking

guc_submission.rs: GuC work queue submission protocol
  WQ head/tail ring buffer management
  doorbell trigger with per-context ID assignment
  CT message: context register/deregister, sched policy
  Timeslice + preemption timeout configuration
2026-06-02 06:19:57 +03:00
vasilito 3f4b7074ed intel: full workarounds, display IRQ handler — remaining CRITICAL
workarounds.rs: per-generation workaround tables (40+ register writes)
  wa_gen9: 7 workarounds (HDC, half-slice, cache, L3, sampler, row)
  wa_gen9_5: 8 workarounds (ICL/EHL additional L3 + common slice)
  wa_gen12: 7 workarounds with stepping A0 gating
  wa_gen12_7: 6 workarounds (MTL additional common slice bits)
  wa_xe2: 6 workarounds with stepping A0 gating (BMG-specific)
  apply_full_workarounds() dispatches per-generation

display_irq.rs: full display + GT interrupt handler
  DE pipe A/B/C vblank + vsync enable
  PORT hotplug + PCH hotplug enable
  FIFO underrun + PSR interrupt tracking
  GT render user + CSB + GuC interrupt enable
  DisplayIrqEvents struct with typed event fields
2026-06-02 06:15:10 +03:00
vasilito e2253df39a intel: bandwidth calc, ALPM, panel fitter — remaining MINOR items
bandwidth.rs: link bandwidth computation
  compute_data_rate per mode+bpp
  compute_required_lanes for DP link negotiation
  compute_dbuf_blocks per display buffer configuration

alpm.rs: Adaptive Link Power Management
  ALPM_CTL enable/disable per DP port
  Link power state monitoring via ALPM_STATUS

panel_fitter.rs: Panel fitting / scaling mode
  compute_panel_fitter for non-native resolution handling
  ScalingMode enum: None/FullScreen/Center/FullAspect
  Aspect ratio-aware destination rectangle computation
2026-06-02 06:12:38 +03:00
vasilito 483a40d318 intel: full color management, CDCLK tables, LMEM page migration
color_lmem.rs: combined color + LMEM management
  CscCoefficients struct with 12 matrix elements
  compute_csc_identity/BT601/BT709/BT2020 standard matrices
  LmemManager with alloc_region/free_region/page_migrate
  Discrete GPU detection and BAR-based address management

cdclk_tables.rs: per-generation CDCLK frequency tables
  ICL (Ice Lake): 6 entries (172-652 MHz)
  TGL (Tiger Lake): 12 entries with 19.2/38.4 MHz refclks
  MTL (Meteor Lake): 8 entries
  BMG (Battlemage): 4 entries (38400 refclk only)
  cdclk_table_for_device() auto-selects per platform
2026-06-02 06:10:16 +03:00
vasilito a9cec3954d intel: VRR + DSC — Variable Refresh Rate and Display Stream Compression
vrr.rs: Adaptive Sync / VRR support
  VRR_CTL enable with flip line configuration
  Min/max vtotal frame time programming
  Transcoder-based VRR status monitoring

dsc.rs: DSC 1.2a compression encoder
  PPS (Picture Parameter Set) computation per mode
  Slice count (1/2/4/8) and BPC (8/10/12) configuration
  DPCD sink DSC enable/disable communication
  probe_sink_caps via DP_DSC_SUPPORT register
2026-06-02 06:07:50 +03:00
vasilito fc7cceaa6b intel: DSB, watermarks, PCH — remaining CRITICAL infrastructure
dsb.rs: Display State Buffer for atomic commit batching
  Hardware batch programming via MMIO_TRIGGER
  Non-blocking commit with vblank synchronization
  MMIO write + wait_us + wait_vblank opcodes

watermark.rs: display buffer watermark computation
  Per-generation latency (3.5us Gen12+, 5us older)
  DBUF block count per mode configuration

mod.rs: wired DisplayStateBuffer alongside FBC/DRRS/PSR
  DSB available for glitch-free atomic modeset commits
2026-06-02 06:05:32 +03:00