Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^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