[Intel-gfx] [PATCH v13 2/6] drm/i915: Implement dynamic GuC WOPCM offset and size calculation
Joonas Lahtinen
joonas.lahtinen at linux.intel.com
Wed Mar 14 12:35:07 UTC 2018
Quoting Jackie Li (2018-03-14 02:32:50)
> Hardware may have specific restrictions on GuC WOPCM offset and size. On
> Gen9, the value of the GuC WOPCM size register needs to be larger than the
> value of GuC WOPCM offset register + a Gen9 specific offset (144KB) for
> reserved GuC WOPCM. Fail to enforce such a restriction on GuC WOPCM size
> will lead to GuC firmware execution failures. On the other hand, with
> current static GuC WOPCM offset and size values (512KB for both offset and
> size), the GuC WOPCM size verification will fail on Gen9 even if it can be
> fixed by lowering the GuC WOPCM offset by calculating its value based on
> HuC firmware size (which is likely less than 200KB on Gen9), so that we can
> have a GuC WOPCM size value which is large enough to pass the GuC WOPCM
> size check.
>
> This patch updates the reserved GuC WOPCM size for RC6 context on Gen9 to
> 24KB to strictly align with the Gen9 GuC WOPCM layout. It also adds support
> to verify the GuC WOPCM size aganist the Gen9 hardware restrictions. To
> meet all above requirements, let's provide dynamic partitioning of the
> WOPCM that will be based on platform specific HuC/GuC firmware sizes.
>
> v2:
> - Removed intel_wopcm_init (Ville/Sagar/Joonas)
> - Renamed and Moved the intel_wopcm_partition into intel_guc (Sagar)
> - Removed unnecessary function calls (Joonas)
> - Init GuC WOPCM partition as soon as firmware fetching is completed
>
> v3:
> - Fixed indentation issues (Chris)
> - Removed layering violation code (Chris/Michal)
> - Created separat files for GuC wopcm code (Michal)
> - Used inline function to avoid code duplication (Michal)
>
> v4:
> - Preset the GuC WOPCM top during early GuC init (Chris)
> - Fail intel_uc_init_hw() as soon as GuC WOPCM partitioning failed
>
> v5:
> - Moved GuC DMA WOPCM register updating code into intel_wopcm.c
> - Took care of the locking status before writing to GuC DMA
> Write-Once registers. (Joonas)
>
> v6:
> - Made sure the GuC WOPCM size to be multiple of 4K (4K aligned)
>
> v8:
> - Updated comments and fixed naming issues (Sagar/Joonas)
> - Updated commit message to include more description about the hardware
> restriction on GuC WOPCM size (Sagar)
>
> v9:
> - Minor changes variable names and code comments (Sagar)
> - Added detailed GuC WOPCM layout drawing (Sagar/Michal)
> - Refined macro definitions to be reader friendly (Michal)
> - Removed redundent check to valid flag (Michal)
> - Unified first parameter for exported GuC WOPCM functions (Michal)
> - Refined the name and parameter list of hardware restriction checking
> functions (Michal)
>
> v10:
> - Used shorter function name for internal functions (Joonas)
> - Moved init-ealry function into c file (Joonas)
> - Consolidated and removed redundant size checks (Joonas/Michal)
> - Removed unnecessary unlikely() from code which is only called once
> during boot (Joonas)
> - More fixes to kernel-doc format and content (Michal)
> - Avoided the use of PAGE_MASK for 4K pages (Michal)
> - Added error log messages to error paths (Michal)
>
> v11:
> - Replaced intel_guc_wopcm with more generic intel_wopcm and attached
> intel_wopcm to drm_i915_private instead intel_guc (Michal)
> - dynamic calculation of GuC non-wopcm memory start (a.k.a WOPCM Top
> offset from GuC WOPCM base) (Michal)
> - Moved WOPCM marco definitions into .c source file (Michal)
> - Exported WOPCM layout diagram as kernel-doc (Michal)
>
> v12:
> - Updated naming, function kernel-doc to align with new changes (Michal)
>
> v13:
> - Updated the ordering of s-o-b/cc/r-b tags (Sagar)
> - Corrected one tense error in comment (Sagar)
> - Corrected typos and removed spurious comments (Joonas)
>
> Bspec: 12690
>
> Signed-off-by: Jackie Li <yaodong.li at intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Sagar Arun Kamble <sagar.a.kamble at intel.com>
> Cc: Sujaritha Sundaresan <sujaritha.sundaresan at intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: John Spotswood <john.a.spotswood at intel.com>
> Cc: Oscar Mateo <oscar.mateo at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Reviewed-by: Sagar Arun Kamble <sagar.a.kamble at intel.com> (v8)
> Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com> (v9)
> Reviewed-by: Michal Wajdeczko <michal.wajdeczko at intel.com> (v11)
> Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com> (v12)
Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Regards, Joonas
More information about the Intel-gfx
mailing list