mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
drm/i915/guc: improve documentation
Add a short description of what we expect from GuC and some minor improvements to existing documentation. Also remove a comment about a difference between GuC and HuC that is not true anymore. v2: add that the GuC is not mandatory (Martin) v3: add extra newline for better text organization (Martin) Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Martin Peres <martin.peres@linux.intel.com> Acked-by: Anna Karas <anna.karas@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191014183602.3643-2-daniele.ceraolospurio@intel.com
This commit is contained in:
parent
493065e24e
commit
218151e997
@ -436,12 +436,24 @@ WOPCM Layout
|
|||||||
GuC
|
GuC
|
||||||
---
|
---
|
||||||
|
|
||||||
Firmware Layout
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
|
||||||
~~~~~~~~~~~~~~~
|
:doc: GuC
|
||||||
|
|
||||||
|
GuC Firmware Layout
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
|
||||||
:doc: Firmware Layout
|
:doc: Firmware Layout
|
||||||
|
|
||||||
|
GuC Memory Management
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
|
||||||
|
:doc: GuC Memory Management
|
||||||
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
|
||||||
|
:functions: intel_guc_allocate_vma
|
||||||
|
|
||||||
|
|
||||||
GuC-specific firmware loader
|
GuC-specific firmware loader
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -457,12 +469,6 @@ GuC-based command submission
|
|||||||
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
|
||||||
:internal:
|
:internal:
|
||||||
|
|
||||||
GuC Address Space
|
|
||||||
~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_guc.c
|
|
||||||
:doc: GuC Address Space
|
|
||||||
|
|
||||||
HuC
|
HuC
|
||||||
---
|
---
|
||||||
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_huc_fw.c
|
.. kernel-doc:: drivers/gpu/drm/i915/gt/uc/intel_huc_fw.c
|
||||||
|
@ -9,6 +9,27 @@
|
|||||||
#include "intel_guc_submission.h"
|
#include "intel_guc_submission.h"
|
||||||
#include "i915_drv.h"
|
#include "i915_drv.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: GuC
|
||||||
|
*
|
||||||
|
* The GuC is a microcontroller inside the GT HW, introduced in gen9. The GuC is
|
||||||
|
* designed to offload some of the functionality usually performed by the host
|
||||||
|
* driver; currently the main operations it can take care of are:
|
||||||
|
*
|
||||||
|
* - Authentication of the HuC, which is required to fully enable HuC usage.
|
||||||
|
* - Low latency graphics context scheduling (a.k.a. GuC submission).
|
||||||
|
* - GT Power management.
|
||||||
|
*
|
||||||
|
* The enable_guc module parameter can be used to select which of those
|
||||||
|
* operations to enable within GuC. Note that not all the operations are
|
||||||
|
* supported on all gen9+ platforms.
|
||||||
|
*
|
||||||
|
* Enabling the GuC is not mandatory and therefore the firmware is only loaded
|
||||||
|
* if at least one of the operations is selected. However, not loading the GuC
|
||||||
|
* might result in the loss of some features that do require the GuC (currently
|
||||||
|
* just the HuC, but more are expected to land in the future).
|
||||||
|
*/
|
||||||
|
|
||||||
static void gen8_guc_raise_irq(struct intel_guc *guc)
|
static void gen8_guc_raise_irq(struct intel_guc *guc)
|
||||||
{
|
{
|
||||||
struct intel_gt *gt = guc_to_gt(guc);
|
struct intel_gt *gt = guc_to_gt(guc);
|
||||||
@ -548,9 +569,15 @@ int intel_guc_resume(struct intel_guc *guc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: GuC Address Space
|
* DOC: GuC Memory Management
|
||||||
*
|
*
|
||||||
* The layout of GuC address space is shown below:
|
* GuC can't allocate any memory for its own usage, so all the allocations must
|
||||||
|
* be handled by the host driver. GuC accesses the memory via the GGTT, with the
|
||||||
|
* exception of the top and bottom parts of the 4GB address space, which are
|
||||||
|
* instead re-mapped by the GuC HW to memory location of the FW itself (WOPCM)
|
||||||
|
* or other parts of the HW. The driver must take care not to place objects that
|
||||||
|
* the GuC is going to access in these reserved ranges. The layout of the GuC
|
||||||
|
* address space is shown below:
|
||||||
*
|
*
|
||||||
* ::
|
* ::
|
||||||
*
|
*
|
||||||
|
@ -29,6 +29,12 @@ enum {
|
|||||||
/**
|
/**
|
||||||
* DOC: GuC-based command submission
|
* DOC: GuC-based command submission
|
||||||
*
|
*
|
||||||
|
* IMPORTANT NOTE: GuC submission is currently not supported in i915. The GuC
|
||||||
|
* firmware is moving to an updated submission interface and we plan to
|
||||||
|
* turn submission back on when that lands. The below documentation (and related
|
||||||
|
* code) matches the old submission model and will be updated as part of the
|
||||||
|
* upgrade to the new flow.
|
||||||
|
*
|
||||||
* GuC client:
|
* GuC client:
|
||||||
* A intel_guc_client refers to a submission path through GuC. Currently, there
|
* A intel_guc_client refers to a submission path through GuC. Currently, there
|
||||||
* is only one client, which is charged with all submissions to the GuC. This
|
* is only one client, which is charged with all submissions to the GuC. This
|
||||||
|
@ -39,9 +39,6 @@
|
|||||||
* 3. Length info of each component can be found in header, in dwords.
|
* 3. Length info of each component can be found in header, in dwords.
|
||||||
* 4. Modulus and exponent key are not required by driver. They may not appear
|
* 4. Modulus and exponent key are not required by driver. They may not appear
|
||||||
* in fw. So driver will load a truncated firmware in this case.
|
* in fw. So driver will load a truncated firmware in this case.
|
||||||
*
|
|
||||||
* The only difference between GuC and HuC firmwares is how the version
|
|
||||||
* information is saved.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct uc_css_header {
|
struct uc_css_header {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user