diff options
Diffstat (limited to 'Documentation/gpu')
| -rw-r--r-- | Documentation/gpu/drm-kms-helpers.rst | 12 | ||||
| -rw-r--r-- | Documentation/gpu/drm-mm.rst | 84 | ||||
| -rw-r--r-- | Documentation/gpu/i915.rst | 35 | ||||
| -rw-r--r-- | Documentation/gpu/rfc/i915_parallel_execbuf.h | 122 | ||||
| -rw-r--r-- | Documentation/gpu/rfc/i915_scheduler.rst | 4 | ||||
| -rw-r--r-- | Documentation/gpu/todo.rst | 17 | 
6 files changed, 77 insertions, 197 deletions
| diff --git a/Documentation/gpu/drm-kms-helpers.rst b/Documentation/gpu/drm-kms-helpers.rst index 389892f36185..ec2f65b31930 100644 --- a/Documentation/gpu/drm-kms-helpers.rst +++ b/Documentation/gpu/drm-kms-helpers.rst @@ -151,6 +151,18 @@ Overview  .. kernel-doc:: drivers/gpu/drm/drm_bridge.c     :doc: overview +Display Driver Integration +-------------------------- + +.. kernel-doc:: drivers/gpu/drm/drm_bridge.c +   :doc: display driver integration + +Special Care with MIPI-DSI bridges +---------------------------------- + +.. kernel-doc:: drivers/gpu/drm/drm_bridge.c +   :doc: special care dsi +  Bridge Operations  ----------------- diff --git a/Documentation/gpu/drm-mm.rst b/Documentation/gpu/drm-mm.rst index 8126beadc7df..e0538083a2c0 100644 --- a/Documentation/gpu/drm-mm.rst +++ b/Documentation/gpu/drm-mm.rst @@ -28,56 +28,53 @@ UMA devices.  The Translation Table Manager (TTM)  =================================== -TTM design background and information belongs here. +.. kernel-doc:: drivers/gpu/drm/ttm/ttm_module.c +   :doc: TTM -TTM initialization ------------------- +.. kernel-doc:: include/drm/ttm/ttm_caching.h +   :internal: -    **Warning** -    This section is outdated. +TTM device object reference +--------------------------- -Drivers wishing to support TTM must pass a filled :c:type:`ttm_bo_driver -<ttm_bo_driver>` structure to ttm_device_init, together with an -initialized global reference to the memory manager.  The ttm_bo_driver -structure contains several fields with function pointers for -initializing the TTM, allocating and freeing memory, waiting for command -completion and fence synchronization, and memory migration. +.. kernel-doc:: include/drm/ttm/ttm_device.h +   :internal: -The :c:type:`struct drm_global_reference <drm_global_reference>` is made -up of several fields: +.. kernel-doc:: drivers/gpu/drm/ttm/ttm_device.c +   :export: -.. code-block:: c +TTM resource placement reference +-------------------------------- -              struct drm_global_reference { -                      enum ttm_global_types global_type; -                      size_t size; -                      void *object; -                      int (*init) (struct drm_global_reference *); -                      void (*release) (struct drm_global_reference *); -              }; - - -There should be one global reference structure for your memory manager -as a whole, and there will be others for each object created by the -memory manager at runtime. Your global TTM should have a type of -TTM_GLOBAL_TTM_MEM. The size field for the global object should be -sizeof(struct ttm_mem_global), and the init and release hooks should -point at your driver-specific init and release routines, which probably -eventually call ttm_mem_global_init and ttm_mem_global_release, -respectively. +.. kernel-doc:: include/drm/ttm/ttm_placement.h +   :internal: + +TTM resource object reference +----------------------------- + +.. kernel-doc:: include/drm/ttm/ttm_resource.h +   :internal: -Once your global TTM accounting structure is set up and initialized by -calling ttm_global_item_ref() on it, you need to create a buffer -object TTM to provide a pool for buffer object allocation by clients and -the kernel itself. The type of this object should be -TTM_GLOBAL_TTM_BO, and its size should be sizeof(struct -ttm_bo_global). Again, driver-specific init and release functions may -be provided, likely eventually calling ttm_bo_global_ref_init() and -ttm_bo_global_ref_release(), respectively. Also, like the previous -object, ttm_global_item_ref() is used to create an initial reference -count for the TTM, which will call your initialization function. +.. kernel-doc:: drivers/gpu/drm/ttm/ttm_resource.c +   :export: + +TTM TT object reference +----------------------- + +.. kernel-doc:: include/drm/ttm/ttm_tt.h +   :internal: + +.. kernel-doc:: drivers/gpu/drm/ttm/ttm_tt.c +   :export: -See the radeon_ttm.c file for an example of usage. +TTM page pool reference +----------------------- + +.. kernel-doc:: include/drm/ttm/ttm_pool.h +   :internal: + +.. kernel-doc:: drivers/gpu/drm/ttm/ttm_pool.c +   :export:  The Graphics Execution Manager (GEM)  ==================================== @@ -504,3 +501,6 @@ Scheduler Function References  .. kernel-doc:: drivers/gpu/drm/scheduler/sched_main.c     :export: + +.. kernel-doc:: drivers/gpu/drm/scheduler/sched_entity.c +   :export: diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst index 204ebdaadb45..b7d801993bfa 100644 --- a/Documentation/gpu/i915.rst +++ b/Documentation/gpu/i915.rst @@ -183,26 +183,23 @@ Frame Buffer Compression (FBC)  Display Refresh Rate Switching (DRRS)  ------------------------------------- -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c     :doc: Display Refresh Rate Switching (DRRS) -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_dp_set_drrs_state +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c +   :functions: intel_drrs_enable -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_edp_drrs_enable +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c +   :functions: intel_drrs_disable -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_edp_drrs_disable +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c +   :functions: intel_drrs_invalidate -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_edp_drrs_invalidate +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c +   :functions: intel_drrs_flush -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_edp_drrs_flush - -.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp.c -   :functions: intel_dp_drrs_init +.. kernel-doc:: drivers/gpu/drm/i915/display/intel_drrs.c +   :functions: intel_drrs_init  DPIO  ---- @@ -474,6 +471,14 @@ Object Tiling IOCTLs  .. kernel-doc:: drivers/gpu/drm/i915/gem/i915_gem_tiling.c     :doc: buffer object tiling +Protected Objects +----------------- + +.. kernel-doc:: drivers/gpu/drm/i915/pxp/intel_pxp.c +   :doc: PXP + +.. kernel-doc:: drivers/gpu/drm/i915/pxp/intel_pxp_types.h +  Microcontrollers  ================ @@ -498,6 +503,8 @@ GuC  .. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c     :doc: GuC +.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.h +  GuC Firmware Layout  ~~~~~~~~~~~~~~~~~~~ diff --git a/Documentation/gpu/rfc/i915_parallel_execbuf.h b/Documentation/gpu/rfc/i915_parallel_execbuf.h deleted file mode 100644 index 8cbe2c4e0172..000000000000 --- a/Documentation/gpu/rfc/i915_parallel_execbuf.h +++ /dev/null @@ -1,122 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright © 2021 Intel Corporation - */ - -#define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2 /* see i915_context_engines_parallel_submit */ - -/** - * struct drm_i915_context_engines_parallel_submit - Configure engine for - * parallel submission. - * - * Setup a slot in the context engine map to allow multiple BBs to be submitted - * in a single execbuf IOCTL. Those BBs will then be scheduled to run on the GPU - * in parallel. Multiple hardware contexts are created internally in the i915 - * run these BBs. Once a slot is configured for N BBs only N BBs can be - * submitted in each execbuf IOCTL and this is implicit behavior e.g. The user - * doesn't tell the execbuf IOCTL there are N BBs, the execbuf IOCTL knows how - * many BBs there are based on the slot's configuration. The N BBs are the last - * N buffer objects or first N if I915_EXEC_BATCH_FIRST is set. - * - * The default placement behavior is to create implicit bonds between each - * context if each context maps to more than 1 physical engine (e.g. context is - * a virtual engine). Also we only allow contexts of same engine class and these - * contexts must be in logically contiguous order. Examples of the placement - * behavior described below. Lastly, the default is to not allow BBs to - * preempted mid BB rather insert coordinated preemption on all hardware - * contexts between each set of BBs. Flags may be added in the future to change - * both of these default behaviors. - * - * Returns -EINVAL if hardware context placement configuration is invalid or if - * the placement configuration isn't supported on the platform / submission - * interface. - * Returns -ENODEV if extension isn't supported on the platform / submission - * interface. - * - * .. code-block:: none - * - *	Example 1 pseudo code: - *	CS[X] = generic engine of same class, logical instance X - *	INVALID = I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE - *	set_engines(INVALID) - *	set_parallel(engine_index=0, width=2, num_siblings=1, - *		     engines=CS[0],CS[1]) - * - *	Results in the following valid placement: - *	CS[0], CS[1] - * - *	Example 2 pseudo code: - *	CS[X] = generic engine of same class, logical instance X - *	INVALID = I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE - *	set_engines(INVALID) - *	set_parallel(engine_index=0, width=2, num_siblings=2, - *		     engines=CS[0],CS[2],CS[1],CS[3]) - * - *	Results in the following valid placements: - *	CS[0], CS[1] - *	CS[2], CS[3] - * - *	This can also be thought of as 2 virtual engines described by 2-D array - *	in the engines the field with bonds placed between each index of the - *	virtual engines. e.g. CS[0] is bonded to CS[1], CS[2] is bonded to - *	CS[3]. - *	VE[0] = CS[0], CS[2] - *	VE[1] = CS[1], CS[3] - * - *	Example 3 pseudo code: - *	CS[X] = generic engine of same class, logical instance X - *	INVALID = I915_ENGINE_CLASS_INVALID, I915_ENGINE_CLASS_INVALID_NONE - *	set_engines(INVALID) - *	set_parallel(engine_index=0, width=2, num_siblings=2, - *		     engines=CS[0],CS[1],CS[1],CS[3]) - * - *	Results in the following valid and invalid placements: - *	CS[0], CS[1] - *	CS[1], CS[3] - Not logical contiguous, return -EINVAL - */ -struct drm_i915_context_engines_parallel_submit { -	/** -	 * @base: base user extension. -	 */ -	struct i915_user_extension base; - -	/** -	 * @engine_index: slot for parallel engine -	 */ -	__u16 engine_index; - -	/** -	 * @width: number of contexts per parallel engine -	 */ -	__u16 width; - -	/** -	 * @num_siblings: number of siblings per context -	 */ -	__u16 num_siblings; - -	/** -	 * @mbz16: reserved for future use; must be zero -	 */ -	__u16 mbz16; - -	/** -	 * @flags: all undefined flags must be zero, currently not defined flags -	 */ -	__u64 flags; - -	/** -	 * @mbz64: reserved for future use; must be zero -	 */ -	__u64 mbz64[3]; - -	/** -	 * @engines: 2-d array of engine instances to configure parallel engine -	 * -	 * length = width (i) * num_siblings (j) -	 * index = j + i * num_siblings -	 */ -	struct i915_engine_class_instance engines[0]; - -} __packed; - diff --git a/Documentation/gpu/rfc/i915_scheduler.rst b/Documentation/gpu/rfc/i915_scheduler.rst index cbda75065dad..d630f15ab795 100644 --- a/Documentation/gpu/rfc/i915_scheduler.rst +++ b/Documentation/gpu/rfc/i915_scheduler.rst @@ -135,8 +135,8 @@ Add I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT and  drm_i915_context_engines_parallel_submit to the uAPI to implement this  extension. -.. kernel-doc:: Documentation/gpu/rfc/i915_parallel_execbuf.h -        :functions: drm_i915_context_engines_parallel_submit +.. kernel-doc:: include/uapi/drm/i915_drm.h +        :functions: i915_context_engines_parallel_submit  Extend execbuf2 IOCTL to support submitting N BBs in a single IOCTL  ------------------------------------------------------------------- diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst index 12e61869939e..6613543955e9 100644 --- a/Documentation/gpu/todo.rst +++ b/Documentation/gpu/todo.rst @@ -353,23 +353,6 @@ converted, except for struct drm_driver.gem_prime_mmap.  Level: Intermediate -Use DRM_MODESET_LOCK_ALL_* helpers instead of boilerplate ---------------------------------------------------------- - -For cases where drivers are attempting to grab the modeset locks with a local -acquire context. Replace the boilerplate code surrounding -drm_modeset_lock_all_ctx() with DRM_MODESET_LOCK_ALL_BEGIN() and -DRM_MODESET_LOCK_ALL_END() instead. - -This should also be done for all places where drm_modeset_lock_all() is still -used. - -As a reference, take a look at the conversions already completed in drm core. - -Contact: Sean Paul, respective driver maintainers - -Level: Starter -  Rename CMA helpers to DMA helpers  --------------------------------- |