[Intel-gfx] [PATCH v8 2/7] drm/i915: Simplify MOCS table definition

Lis, Tomasz tomasz.lis at intel.com
Wed Jan 23 18:34:00 UTC 2019



On 2019-01-22 06:12, Lucas De Marchi wrote:
> Make the defines for LE and L3 caching options to contain the shifts and
> remove the zeros from the tables as shifting zeros always result in
> zero.
>
> Starting from Ice Lake the MOCS table is defined in the spec and
> contains all entries. So to simplify checking the table with the values
> set in code, the value is now part of the macro name. This allows to
> still give the most used option and sensible name, but also to easily
> cross check the table from the spec for gen >= 11.
>
> By removing the zeros we avoid maintaining a huge table since the one
> from spec contains many more entries. The new table for Ice Lake will
> be added by other patches, this only reformats the table.
>
> While at it also fix the indentation.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
That is much cleaner.
Reviewed-by: Tomasz Lis <tomasz.lis at intel.com>
-Tomasz
> ---
>   drivers/gpu/drm/i915/intel_mocs.c | 80 +++++++++++--------------------
>   1 file changed, 29 insertions(+), 51 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_mocs.c b/drivers/gpu/drm/i915/intel_mocs.c
> index 0d6b94a239d6..4ea80bb7dcc8 100644
> --- a/drivers/gpu/drm/i915/intel_mocs.c
> +++ b/drivers/gpu/drm/i915/intel_mocs.c
> @@ -36,8 +36,8 @@ struct drm_i915_mocs_table {
>   };
>   
>   /* Defines for the tables (XXX_MOCS_0 - XXX_MOCS_63) */
> -#define LE_CACHEABILITY(value)	((value) << 0)
> -#define LE_TGT_CACHE(value)	((value) << 2)
> +#define _LE_CACHEABILITY(value)	((value) << 0)
> +#define _LE_TGT_CACHE(value)	((value) << 2)
>   #define LE_LRUM(value)		((value) << 4)
>   #define LE_AOM(value)		((value) << 6)
>   #define LE_RSC(value)		((value) << 7)
> @@ -48,28 +48,28 @@ struct drm_i915_mocs_table {
>   /* Defines for the tables (LNCFMOCS0 - LNCFMOCS31) - two entries per word */
>   #define L3_ESC(value)		((value) << 0)
>   #define L3_SCC(value)		((value) << 1)
> -#define L3_CACHEABILITY(value)	((value) << 4)
> +#define _L3_CACHEABILITY(value)	((value) << 4)
>   
>   /* Helper defines */
>   #define GEN9_NUM_MOCS_ENTRIES	62  /* 62 out of 64 - 63 & 64 are reserved. */
>   
>   /* (e)LLC caching options */
> -#define LE_PAGETABLE		0
> -#define LE_UC			1
> -#define LE_WT			2
> -#define LE_WB			3
> -
> -/* L3 caching options */
> -#define L3_DIRECT		0
> -#define L3_UC			1
> -#define L3_RESERVED		2
> -#define L3_WB			3
> +#define LE_0_PAGETABLE		_LE_CACHEABILITY(0)
> +#define LE_1_UC			_LE_CACHEABILITY(1)
> +#define LE_2_WT			_LE_CACHEABILITY(2)
> +#define LE_3_WB			_LE_CACHEABILITY(3)
>   
>   /* Target cache */
> -#define LE_TC_PAGETABLE		0
> -#define LE_TC_LLC		1
> -#define LE_TC_LLC_ELLC		2
> -#define LE_TC_LLC_ELLC_ALT	3
> +#define LE_TC_0_PAGETABLE	_LE_TGT_CACHE(0)
> +#define LE_TC_1_LLC		_LE_TGT_CACHE(1)
> +#define LE_TC_2_LLC_ELLC	_LE_TGT_CACHE(2)
> +#define LE_TC_3_LLC_ELLC_ALT	_LE_TGT_CACHE(3)
> +
> +/* L3 caching options */
> +#define L3_0_DIRECT		_L3_CACHEABILITY(0)
> +#define L3_1_UC			_L3_CACHEABILITY(1)
> +#define L3_2_RESERVED		_L3_CACHEABILITY(2)
> +#define L3_3_WB			_L3_CACHEABILITY(3)
>   
>   /*
>    * MOCS tables
> @@ -96,31 +96,21 @@ struct drm_i915_mocs_table {
>   static const struct drm_i915_mocs_entry skylake_mocs_table[] = {
>   	[I915_MOCS_UNCACHED] = {
>   	  /* 0x00000009 */
> -	  .control_value = LE_CACHEABILITY(LE_UC) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(0) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> -
> +	  .control_value = LE_1_UC | LE_TC_2_LLC_ELLC,
>   	  /* 0x0010 */
> -	  .l3cc_value =    L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_UC),
> +	  .l3cc_value =    L3_1_UC,
>   	},
>   	[I915_MOCS_PTE] = {
>   	  /* 0x00000038 */
> -	  .control_value = LE_CACHEABILITY(LE_PAGETABLE) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(3) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> +	  .control_value = LE_0_PAGETABLE | LE_TC_2_LLC_ELLC | LE_LRUM(3),
>   	  /* 0x0030 */
> -	  .l3cc_value =    L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_WB),
> +	  .l3cc_value =    L3_3_WB,
>   	},
>   	[I915_MOCS_CACHED] = {
>   	  /* 0x0000003b */
> -	  .control_value = LE_CACHEABILITY(LE_WB) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(3) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> +	  .control_value = LE_3_WB | LE_TC_2_LLC_ELLC | LE_LRUM(3),
>   	  /* 0x0030 */
> -	  .l3cc_value =   L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_WB),
> +	  .l3cc_value =   L3_3_WB,
>   	},
>   };
>   
> @@ -128,33 +118,21 @@ static const struct drm_i915_mocs_entry skylake_mocs_table[] = {
>   static const struct drm_i915_mocs_entry broxton_mocs_table[] = {
>   	[I915_MOCS_UNCACHED] = {
>   	  /* 0x00000009 */
> -	  .control_value = LE_CACHEABILITY(LE_UC) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(0) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> -
> +	  .control_value = LE_1_UC | LE_TC_2_LLC_ELLC,
>   	  /* 0x0010 */
> -	  .l3cc_value =    L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_UC),
> +	  .l3cc_value = L3_1_UC,
>   	},
>   	[I915_MOCS_PTE] = {
>   	  /* 0x00000038 */
> -	  .control_value = LE_CACHEABILITY(LE_PAGETABLE) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(3) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> -
> +	  .control_value = LE_0_PAGETABLE | LE_TC_2_LLC_ELLC | LE_LRUM(3),
>   	  /* 0x0030 */
> -	  .l3cc_value =    L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_WB),
> +	  .l3cc_value = L3_3_WB,
>   	},
>   	[I915_MOCS_CACHED] = {
>   	  /* 0x00000039 */
> -	  .control_value = LE_CACHEABILITY(LE_UC) |
> -			   LE_TGT_CACHE(LE_TC_LLC_ELLC) |
> -			   LE_LRUM(3) | LE_AOM(0) | LE_RSC(0) | LE_SCC(0) |
> -			   LE_PFM(0) | LE_SCF(0),
> -
> +	  .control_value = LE_1_UC | LE_TC_2_LLC_ELLC | LE_LRUM(3),
>   	  /* 0x0030 */
> -	  .l3cc_value =    L3_ESC(0) | L3_SCC(0) | L3_CACHEABILITY(L3_WB),
> +	  .l3cc_value = L3_3_WB,
>   	},
>   };
>   



More information about the Intel-gfx mailing list