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