^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ===========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) drm/i915 Intel GFX Driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ===========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) The drm/i915 driver supports all (with the exception of some very early
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) models) integrated GFX chipsets with both Intel display and rendering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) blocks. This excludes a set of SoC platforms with an SGX rendering unit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) those have basic support through the gma500 drm driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Core Driver Infrastructure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) This section covers core driver infrastructure used by both the display
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) and the GEM parts of the driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Runtime Power Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) ------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) .. kernel-doc:: drivers/gpu/drm/i915/intel_runtime_pm.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) :doc: runtime pm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .. kernel-doc:: drivers/gpu/drm/i915/intel_runtime_pm.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .. kernel-doc:: drivers/gpu/drm/i915/intel_uncore.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Interrupt Handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) ------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) :doc: interrupt handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) :functions: intel_irq_init intel_irq_init_hw intel_hpd_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) :functions: intel_runtime_pm_disable_interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) .. kernel-doc:: drivers/gpu/drm/i915/i915_irq.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) :functions: intel_runtime_pm_enable_interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) Intel GVT-g Guest Support(vGPU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .. kernel-doc:: drivers/gpu/drm/i915/i915_vgpu.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) :doc: Intel GVT-g guest support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) .. kernel-doc:: drivers/gpu/drm/i915/i915_vgpu.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Intel GVT-g Host Support(vGPU device model)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) -------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) .. kernel-doc:: drivers/gpu/drm/i915/intel_gvt.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) :doc: Intel GVT-g host support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) .. kernel-doc:: drivers/gpu/drm/i915/intel_gvt.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) Workarounds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) .. kernel-doc:: drivers/gpu/drm/i915/gt/intel_workarounds.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) :doc: Hardware workarounds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) Display Hardware Handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) =========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) This section covers everything related to the display hardware including
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) the mode setting infrastructure, plane, sprite and cursor handling and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) display, output probing and related topics.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) Mode Setting Infrastructure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) ---------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) The i915 driver is thus far the only DRM driver which doesn't use the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) common DRM helper code to implement mode setting sequences. Thus it has
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) its own tailor-made infrastructure for executing a display configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) change.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) Frontbuffer Tracking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) --------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_frontbuffer.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) :doc: frontbuffer tracking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_frontbuffer.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_frontbuffer.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) Display FIFO Underrun Reporting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_fifo_underrun.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) :doc: fifo underrun handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_fifo_underrun.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) Plane Configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) -------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) This section covers plane configuration and composition with the primary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) plane, sprites, cursors and overlays. This includes the infrastructure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) to do atomic vsync'ed updates of all this state and also tightly coupled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) topics like watermark setup and computation, framebuffer compression and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) panel self refresh.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) Atomic Plane Helpers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) --------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_atomic_plane.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) :doc: atomic plane helpers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_atomic_plane.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) Output Probing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) This section covers output probing and related infrastructure like the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) hotplug interrupt storm detection and mitigation code. Note that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) i915 driver still uses most of the common DRM helper code for output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) probing, so those sections fully apply.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) Hotplug
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_hotplug.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) :doc: Hotplug
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_hotplug.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) High Definition Audio
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_audio.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) :doc: High Definition Audio over HDMI and Display Port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_audio.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) .. kernel-doc:: include/drm/i915_component.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) Intel HDMI LPE Audio Support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_lpe_audio.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) :doc: LPE Audio integration for HDMI or DP playback
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_lpe_audio.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) Panel Self Refresh PSR (PSR/SRD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) --------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_psr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) :doc: Panel Self Refresh (PSR/SRD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_psr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) Frame Buffer Compression (FBC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_fbc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) :doc: Frame Buffer Compression (FBC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_fbc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) Display Refresh Rate Switching (DRRS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) -------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) :doc: Display Refresh Rate Switching (DRRS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) :functions: intel_dp_set_drrs_state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) :functions: intel_edp_drrs_enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) :functions: intel_edp_drrs_disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) :functions: intel_edp_drrs_invalidate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) :functions: intel_edp_drrs_flush
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) :functions: intel_dp_drrs_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) DPIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dpio_phy.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) :doc: DPIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) CSR firmware support for DMC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) ----------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_csr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) :doc: csr support for dmc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_csr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) Video BIOS Table (VBT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_bios.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) :doc: Video BIOS Table (VBT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_bios.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_vbt_defs.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) Display clocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_cdclk.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) :doc: CDCLK / RAWCLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_cdclk.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) Display PLLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dpll_mgr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) :doc: Display PLLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dpll_mgr.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dpll_mgr.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) Display State Buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) --------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dsb.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) :doc: DSB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) .. kernel-doc:: drivers/gpu/drm/i915/display/intel_dsb.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) Memory Management and Command Submission
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) ========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) This sections covers all things related to the GEM implementation in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) i915 driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) Intel GPU Basics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) An Intel GPU has multiple engines. There are several engine types.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) - RCS engine is for rendering 3D and performing compute, this is named
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) `I915_EXEC_RENDER` in user space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) - BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) - VCS is a video encode and decode engine, this is named `I915_EXEC_BSD`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) in user space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) - VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) - The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) instead it is to be used by user space to specify a default rendering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) engine (for 3D) that may or may not be the same as RCS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) The Intel GPU family is a family of integrated GPU's using Unified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) Memory Access. For having the GPU "do work", user space will feed the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) GPU batch buffers via one of the ioctls `DRM_IOCTL_I915_GEM_EXECBUFFER2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) or `DRM_IOCTL_I915_GEM_EXECBUFFER2_WR`. Most such batchbuffers will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) instruct the GPU to perform work (for example rendering) and that work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) needs memory from which to read and memory to which to write. All memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) is encapsulated within GEM buffer objects (usually created with the ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) `DRM_IOCTL_I915_GEM_CREATE`). An ioctl providing a batchbuffer for the GPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) to create will also list all GEM buffer objects that the batchbuffer reads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) and/or writes. For implementation details of memory management see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) `GEM BO Management Implementation Details`_.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) The i915 driver allows user space to create a context via the ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) `DRM_IOCTL_I915_GEM_CONTEXT_CREATE` which is identified by a 32-bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) integer. Such a context should be viewed by user-space as -loosely-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) analogous to the idea of a CPU process of an operating system. The i915
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) driver guarantees that commands issued to a fixed context are to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) executed so that writes of a previously issued command are seen by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) reads of following commands. Actions issued between different contexts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) (even if from the same file descriptor) are NOT given that guarantee
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) and the only way to synchronize across contexts (even from the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) file descriptor) is through the use of fences. At least as far back as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) Gen4, also have that a context carries with it a GPU HW context;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) the HW context is essentially (most of atleast) the state of a GPU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) In addition to the ordering guarantees, the kernel will restore GPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) state via HW context when commands are issued to a context, this saves
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) user space the need to restore (most of atleast) the GPU state at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) start of each batchbuffer. The non-deprecated ioctls to submit batchbuffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) work can pass that ID (in the lower bits of drm_i915_gem_execbuffer2::rsvd1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) to identify what context to use with the command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) The GPU has its own memory management and address space. The kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) driver maintains the memory translation table for the GPU. For older
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) GPUs (i.e. those before Gen8), there is a single global such translation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) table, a global Graphics Translation Table (GTT). For newer generation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) GPUs each context has its own translation table, called Per-Process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) Graphics Translation Table (PPGTT). Of important note, is that although
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) PPGTT is named per-process it is actually per context. When user space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) submits a batchbuffer, the kernel walks the list of GEM buffer objects
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) used by the batchbuffer and guarantees that not only is the memory of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) each such GEM buffer object resident but it is also present in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) (PP)GTT. If the GEM buffer object is not yet placed in the (PP)GTT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) then it is given an address. Two consequences of this are: the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) needs to edit the batchbuffer submitted to write the correct value of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) the GPU address when a GEM BO is assigned a GPU address and the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) might evict a different GEM BO from the (PP)GTT to make address room
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) for another GEM BO. Consequently, the ioctls submitting a batchbuffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) for execution also include a list of all locations within buffers that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) refer to GPU-addresses so that the kernel can edit the buffer correctly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) This process is dubbed relocation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) Locking Guidelines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) ------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) .. note::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) This is a description of how the locking should be after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) refactoring is done. Does not necessarily reflect what the locking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) looks like while WIP.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) #. All locking rules and interface contracts with cross-driver interfaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) (dma-buf, dma_fence) need to be followed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) #. No struct_mutex anywhere in the code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) #. dma_resv will be the outermost lock (when needed) and ww_acquire_ctx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) is to be hoisted at highest level and passed down within i915_gem_ctx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) in the call chain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) #. While holding lru/memory manager (buddy, drm_mm, whatever) locks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) system memory allocations are not allowed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) * Enforce this by priming lockdep (with fs_reclaim). If we
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) allocate memory while holding these looks we get a rehash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) of the shrinker vs. struct_mutex saga, and that would be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) real bad.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) #. Do not nest different lru/memory manager locks within each other.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) Take them in turn to update memory allocations, relying on the object’s
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) dma_resv ww_mutex to serialize against other operations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) #. The suggestion for lru/memory managers locks is that they are small
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) enough to be spinlocks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) #. All features need to come with exhaustive kernel selftests and/or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) IGT tests when appropriate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) #. All LMEM uAPI paths need to be fully restartable (_interruptible()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) for all locks/waits/sleeps)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) * Error handling validation through signal injection.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) Still the best strategy we have for validating GEM uAPI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) corner cases.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) Must be excessively used in the IGT, and we need to check
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) that we really have full path coverage of all error cases.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) * -EDEADLK handling with ww_mutex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) GEM BO Management Implementation Details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) ----------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) .. kernel-doc:: drivers/gpu/drm/i915/i915_vma_types.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) :doc: Virtual Memory Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) Buffer Object Eviction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) This section documents the interface functions for evicting buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) objects to make space available in the virtual gpu address spaces. Note
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) that this is mostly orthogonal to shrinking buffer objects caches, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) has the goal to make main memory (shared with the gpu through the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) unified memory architecture) available.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) .. kernel-doc:: drivers/gpu/drm/i915/i915_gem_evict.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) Buffer Object Memory Shrinking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) ------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) This section documents the interface function for shrinking memory usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) of buffer object caches. Shrinking is used to make main memory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) available. Note that this is mostly orthogonal to evicting buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) objects, which has the goal to make space in gpu virtual address spaces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) .. kernel-doc:: drivers/gpu/drm/i915/gem/i915_gem_shrinker.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) Batchbuffer Parsing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) -------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) .. kernel-doc:: drivers/gpu/drm/i915/i915_cmd_parser.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) :doc: batch buffer command parser
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) .. kernel-doc:: drivers/gpu/drm/i915/i915_cmd_parser.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) User Batchbuffer Execution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) --------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) .. kernel-doc:: drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) :doc: User command execution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) Logical Rings, Logical Ring Contexts and Execlists
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) --------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) .. kernel-doc:: drivers/gpu/drm/i915/gt/intel_lrc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) :doc: Logical Rings, Logical Ring Contexts and Execlists
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) Global GTT views
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) .. kernel-doc:: drivers/gpu/drm/i915/i915_vma_types.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) :doc: Global GTT views
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) .. kernel-doc:: drivers/gpu/drm/i915/i915_gem_gtt.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) GTT Fences and Swizzling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) ------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) .. kernel-doc:: drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) Global GTT Fence Handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) ~~~~~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) .. kernel-doc:: drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) :doc: fence register handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) Hardware Tiling and Swizzling Details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) .. kernel-doc:: drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) :doc: tiling swizzling details
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) Object Tiling IOCTLs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) --------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) .. kernel-doc:: drivers/gpu/drm/i915/gem/i915_gem_tiling.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) .. kernel-doc:: drivers/gpu/drm/i915/gem/i915_gem_tiling.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) :doc: buffer object tiling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) Microcontrollers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) ================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) Starting from gen9, three microcontrollers are available on the HW: the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) graphics microcontroller (GuC), the HEVC/H.265 microcontroller (HuC) and the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) display microcontroller (DMC). The driver is responsible for loading the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) firmwares on the microcontrollers; the GuC and HuC firmwares are transferred
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) to WOPCM using the DMA engine, while the DMC firmware is written through MMIO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) WOPCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) WOPCM Layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) ~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) .. kernel-doc:: drivers/gpu/drm/i915/intel_wopcm.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) :doc: WOPCM Layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) GuC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) :doc: GuC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) GuC Firmware Layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) ~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) :doc: Firmware Layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) GuC Memory Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) ~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) :doc: GuC Memory Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) :functions: intel_guc_allocate_vma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) GuC-specific firmware loader
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) GuC-based command submission
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) :doc: GuC-based command submission
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) HuC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_huc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) :doc: HuC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_huc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) :functions: intel_huc_auth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) HuC Memory Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) ~~~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_huc.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) :doc: HuC Memory Management
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) HuC Firmware Layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) ~~~~~~~~~~~~~~~~~~~
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) The HuC FW layout is the same as the GuC one, see `GuC Firmware Layout`_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) DMC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) See `CSR firmware support for DMC`_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) Tracing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) This sections covers all things related to the tracepoints implemented
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) in the i915 driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) i915_ppgtt_create and i915_ppgtt_release
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) ----------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) .. kernel-doc:: drivers/gpu/drm/i915/i915_trace.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) :doc: i915_ppgtt_create and i915_ppgtt_release tracepoints
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) i915_context_create and i915_context_free
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) -----------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) .. kernel-doc:: drivers/gpu/drm/i915/i915_trace.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) :doc: i915_context_create and i915_context_free tracepoints
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) Perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) ====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) Overview
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) :doc: i915 Perf Overview
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) Comparison with Core Perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) -------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) :doc: i915 Perf History and Comparison with Core Perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) i915 Driver Entry Points
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) ------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) This section covers the entrypoints exported outside of i915_perf.c to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) integrate with drm/i915 and to handle the `DRM_I915_PERF_OPEN` ioctl.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) :functions: i915_perf_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) :functions: i915_perf_fini
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) :functions: i915_perf_register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) :functions: i915_perf_unregister
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) :functions: i915_perf_open_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) :functions: i915_perf_release
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) :functions: i915_perf_add_config_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) :functions: i915_perf_remove_config_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) i915 Perf Stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) This section covers the stream-semantics-agnostic structures and functions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) for representing an i915 perf stream FD and associated file operations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf_types.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) :functions: i915_perf_stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf_types.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) :functions: i915_perf_stream_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) :functions: read_properties_unlocked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) :functions: i915_perf_open_ioctl_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) :functions: i915_perf_destroy_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) :functions: i915_perf_read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) :functions: i915_perf_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) :functions: i915_perf_enable_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) :functions: i915_perf_disable_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) :functions: i915_perf_poll
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) :functions: i915_perf_poll_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) i915 Perf Observation Architecture Stream
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) -----------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf_types.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) :functions: i915_oa_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) :functions: i915_oa_stream_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) :functions: i915_oa_read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) :functions: i915_oa_stream_enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) :functions: i915_oa_stream_disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) :functions: i915_oa_wait_unlocked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) :functions: i915_oa_poll_wait
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) Other i915 Perf Internals
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) -------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) This section simply includes all other currently documented i915 perf internals,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) in no particular order, but may include some more minor utilities or platform
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) specific details than found in the more high-level sections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) .. kernel-doc:: drivers/gpu/drm/i915/i915_perf.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) :internal:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) :no-identifiers:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) i915_perf_init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) i915_perf_fini
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) i915_perf_register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) i915_perf_unregister
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) i915_perf_open_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) i915_perf_release
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) i915_perf_add_config_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) i915_perf_remove_config_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) read_properties_unlocked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) i915_perf_open_ioctl_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) i915_perf_destroy_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) i915_perf_read i915_perf_ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) i915_perf_enable_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) i915_perf_disable_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) i915_perf_poll i915_perf_poll_locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) i915_oa_stream_init i915_oa_read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) i915_oa_stream_enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) i915_oa_stream_disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) i915_oa_wait_unlocked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) i915_oa_poll_wait
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) Style
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) =====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) The drm/i915 driver codebase has some style rules in addition to (and, in some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) cases, deviating from) the kernel coding style.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) Register macro definition style
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) -------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) The style guide for ``i915_reg.h``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) .. kernel-doc:: drivers/gpu/drm/i915/i915_reg.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) :doc: The i915 register macro definition style guide