diff mbox series

[v4,1/1] drm/i915/gt: Initialize reserved and unspecified MOCS indices

Message ID 20200729102539.134731-2-ayaz.siddiqui@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/gt: Initialize reserved and unspecified MOCS indices | expand

Commit Message

Siddiqui, Ayaz A July 29, 2020, 10:25 a.m. UTC
In order to avoid functional breakage of mis-programmed applications that
have grown to depend on unused MOCS entries, we are programming
those entries to be equal to fully cached ("L3 + LLC") entry.

These reserved and unspecified entries should not be used as they may be
changed to less performant variants with better coherency in the future
if more entries are needed.

V2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
with desired value.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Tomasz Lis <tomasz.lis@intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Francisco Jerez <currojerez@riseup.net>
Cc: Mathew Alwin <alwin.mathew@intel.com>
Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
Cc: Spruit Neil R <neil.r.spruit@intel.com>
Cc: Zhou Cheng <cheng.zhou@intel.com>
Cc: Benemelis Mike G <mike.g.benemelis@intel.com>

Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

Comments

Siddiqui, Ayaz A July 31, 2020, 7:23 a.m. UTC | #1
> -----Original Message-----
> From: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>
> Sent: Wednesday, July 29, 2020 3:56 PM
> To: intel-gfx@lists.freedesktop.org
> Cc: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>; Chris Wilson <chris@chris-
> wilson.co.uk>; De Marchi, Lucas <lucas.demarchi@intel.com>; Lis, Tomasz
> <tomasz.lis@intel.com>; Roper, Matthew D <matthew.d.roper@intel.com>;
> Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Francisco Jerez
> <currojerez@riseup.net>; Mathew, Alwin <alwin.mathew@intel.com>; Mcguire,
> Russell W <russell.w.mcguire@intel.com>; Spruit, Neil R
> <neil.r.spruit@intel.com>; Zhou, Cheng <cheng.zhou@intel.com>; Benemelis,
> Mike G <mike.g.benemelis@intel.com>
> Subject: [PATCH v4 1/1] drm/i915/gt: Initialize reserved and unspecified MOCS
> indices
> 
> In order to avoid functional breakage of mis-programmed applications that have
> grown to depend on unused MOCS entries, we are programming those entries to
> be equal to fully cached ("L3 + LLC") entry.
> 
> These reserved and unspecified entries should not be used as they may be
> changed to less performant variants with better coherency in the future if more
> entries are needed.
> 
> V2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
> programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
> with desired value.
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Tomasz Lis <tomasz.lis@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Francisco Jerez <currojerez@riseup.net>
> Cc: Mathew Alwin <alwin.mathew@intel.com>
> Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
> Cc: Spruit Neil R <neil.r.spruit@intel.com>
> Cc: Zhou Cheng <cheng.zhou@intel.com>
> Cc: Benemelis Mike G <mike.g.benemelis@intel.com>
> 
> Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
>  drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 

I'm getting a false failure with this patch , which I tested locally and its passing
with this patch. I think that this failure is blocking merge of this patch.
Can Someone please let me know how to proceed in this case for merging?

Regards
-Ayaz
  
> diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c
> b/drivers/gpu/drm/i915/gt/intel_mocs.c
> index 632e08a4592b..f5dde723f612 100644
> --- a/drivers/gpu/drm/i915/gt/intel_mocs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
> @@ -234,11 +234,17 @@ static const struct drm_i915_mocs_entry
> broxton_mocs_table[] = {
>  		   L3_1_UC)
> 
>  static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
> -	/* Base - Error (Reserved for Non-Use) */
> -	MOCS_ENTRY(0, 0x0, 0x0),
> -	/* Base - Reserved */
> -	MOCS_ENTRY(1, 0x0, 0x0),
> 
> +	/* NOTE:
> +	 * Reserved and unspecified MOCS indices have been set to (L3 + LCC).
> +	 * These reserved entries should never be used, they may be changed
> +	 * to low performant variants with better coherency in the future if
> +	 * more entries are needed. We are programming index
> I915_MOCS_PTE(1)
> +	 * only, __init_mocs_table() take care to program unused index with
> +	 * this entry.
> +	 */
> +	MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
> +		   L3_3_WB),
>  	GEN11_MOCS_ENTRIES,
> 
>  	/* Implicitly enable L1 - HDC:L1 + L3 + LLC */ @@ -265,6 +271,7 @@
> static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
>  	MOCS_ENTRY(61,
>  		   LE_1_UC | LE_TC_1_LLC,
>  		   L3_3_WB),
> +
>  };
> 
>  static const struct drm_i915_mocs_entry icl_mocs_table[] = {
> --
> 2.26.2
Joonas Lahtinen Oct. 12, 2020, 2:53 p.m. UTC | #2
Quoting Ayaz A Siddiqui (2020-07-29 13:25:39)
> In order to avoid functional breakage of mis-programmed applications that
> have grown to depend on unused MOCS entries, we are programming
> those entries to be equal to fully cached ("L3 + LLC") entry.
> 
> These reserved and unspecified entries should not be used as they may be
> changed to less performant variants with better coherency in the future
> if more entries are needed.
> 
> V2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
> programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
> with desired value.
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Tomasz Lis <tomasz.lis@intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Francisco Jerez <currojerez@riseup.net>
> Cc: Mathew Alwin <alwin.mathew@intel.com>
> Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
> Cc: Spruit Neil R <neil.r.spruit@intel.com>
> Cc: Zhou Cheng <cheng.zhou@intel.com>
> Cc: Benemelis Mike G <mike.g.benemelis@intel.com>
> 
> Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Acked-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>

Regards, Joonas

> ---
>  drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c b/drivers/gpu/drm/i915/gt/intel_mocs.c
> index 632e08a4592b..f5dde723f612 100644
> --- a/drivers/gpu/drm/i915/gt/intel_mocs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
> @@ -234,11 +234,17 @@ static const struct drm_i915_mocs_entry broxton_mocs_table[] = {
>                    L3_1_UC)
>  
>  static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
> -       /* Base - Error (Reserved for Non-Use) */
> -       MOCS_ENTRY(0, 0x0, 0x0),
> -       /* Base - Reserved */
> -       MOCS_ENTRY(1, 0x0, 0x0),
>  
> +       /* NOTE:
> +        * Reserved and unspecified MOCS indices have been set to (L3 + LCC).
> +        * These reserved entries should never be used, they may be changed
> +        * to low performant variants with better coherency in the future if
> +        * more entries are needed. We are programming index I915_MOCS_PTE(1)
> +        * only, __init_mocs_table() take care to program unused index with
> +        * this entry.
> +        */
> +       MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
> +                  L3_3_WB),
>         GEN11_MOCS_ENTRIES,
>  
>         /* Implicitly enable L1 - HDC:L1 + L3 + LLC */
> @@ -265,6 +271,7 @@ static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
>         MOCS_ENTRY(61,
>                    LE_1_UC | LE_TC_1_LLC,
>                    L3_3_WB),
> +
>  };
>  
>  static const struct drm_i915_mocs_entry icl_mocs_table[] = {
> -- 
> 2.26.2
>
Lucas De Marchi Oct. 12, 2020, 4:55 p.m. UTC | #3
On Fri, Jul 31, 2020 at 12:23:57AM -0700, Siddiqui, Ayaz A wrote:
>
>
>> -----Original Message-----
>> From: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>
>> Sent: Wednesday, July 29, 2020 3:56 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>; Chris Wilson <chris@chris-
>> wilson.co.uk>; De Marchi, Lucas <lucas.demarchi@intel.com>; Lis, Tomasz
>> <tomasz.lis@intel.com>; Roper, Matthew D <matthew.d.roper@intel.com>;
>> Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Francisco Jerez
>> <currojerez@riseup.net>; Mathew, Alwin <alwin.mathew@intel.com>; Mcguire,
>> Russell W <russell.w.mcguire@intel.com>; Spruit, Neil R
>> <neil.r.spruit@intel.com>; Zhou, Cheng <cheng.zhou@intel.com>; Benemelis,
>> Mike G <mike.g.benemelis@intel.com>
>> Subject: [PATCH v4 1/1] drm/i915/gt: Initialize reserved and unspecified MOCS
>> indices
>>
>> In order to avoid functional breakage of mis-programmed applications that have
>> grown to depend on unused MOCS entries, we are programming those entries to
>> be equal to fully cached ("L3 + LLC") entry.
>>
>> These reserved and unspecified entries should not be used as they may be
>> changed to less performant variants with better coherency in the future if more
>> entries are needed.
>>
>> V2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
>> programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
>> with desired value.
>>
>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>> Cc: Tomasz Lis <tomasz.lis@intel.com>
>> Cc: Matt Roper <matthew.d.roper@intel.com>
>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>> Cc: Francisco Jerez <currojerez@riseup.net>
>> Cc: Mathew Alwin <alwin.mathew@intel.com>
>> Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
>> Cc: Spruit Neil R <neil.r.spruit@intel.com>
>> Cc: Zhou Cheng <cheng.zhou@intel.com>
>> Cc: Benemelis Mike G <mike.g.benemelis@intel.com>
>>
>> Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
>> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
>> ---
>>  drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++++----
>>  1 file changed, 11 insertions(+), 4 deletions(-)
>>
>
>I'm getting a false failure with this patch , which I tested locally and its passing
>with this patch. I think that this failure is blocking merge of this patch.
>Can Someone please let me know how to proceed in this case for merging?

If it's a false failure, you can go ahead and merge it. Better to reply
to the CI email how is it unrelated.

If you are not sure, you can re-trigger CI by going to the patchwork
page and asking it to test revision 5 again:
https://patchwork.freedesktop.org/series/78012/

Lucas De Marchi

>
>Regards
>-Ayaz
>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c
>> b/drivers/gpu/drm/i915/gt/intel_mocs.c
>> index 632e08a4592b..f5dde723f612 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_mocs.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
>> @@ -234,11 +234,17 @@ static const struct drm_i915_mocs_entry
>> broxton_mocs_table[] = {
>>  		   L3_1_UC)
>>
>>  static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
>> -	/* Base - Error (Reserved for Non-Use) */
>> -	MOCS_ENTRY(0, 0x0, 0x0),
>> -	/* Base - Reserved */
>> -	MOCS_ENTRY(1, 0x0, 0x0),
>>
>> +	/* NOTE:
>> +	 * Reserved and unspecified MOCS indices have been set to (L3 + LCC).
>> +	 * These reserved entries should never be used, they may be changed
>> +	 * to low performant variants with better coherency in the future if
>> +	 * more entries are needed. We are programming index
>> I915_MOCS_PTE(1)
>> +	 * only, __init_mocs_table() take care to program unused index with
>> +	 * this entry.
>> +	 */
>> +	MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
>> +		   L3_3_WB),
>>  	GEN11_MOCS_ENTRIES,
>>
>>  	/* Implicitly enable L1 - HDC:L1 + L3 + LLC */ @@ -265,6 +271,7 @@
>> static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
>>  	MOCS_ENTRY(61,
>>  		   LE_1_UC | LE_TC_1_LLC,
>>  		   L3_3_WB),
>> +
>>  };
>>
>>  static const struct drm_i915_mocs_entry icl_mocs_table[] = {
>> --
>> 2.26.2
>
Chris Wilson Oct. 13, 2020, 10:49 a.m. UTC | #4
Quoting Lucas De Marchi (2020-10-12 17:55:03)
> On Fri, Jul 31, 2020 at 12:23:57AM -0700, Siddiqui, Ayaz A wrote:
> >
> >
> >> -----Original Message-----
> >> From: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>
> >> Sent: Wednesday, July 29, 2020 3:56 PM
> >> To: intel-gfx@lists.freedesktop.org
> >> Cc: Siddiqui, Ayaz A <ayaz.siddiqui@intel.com>; Chris Wilson <chris@chris-
> >> wilson.co.uk>; De Marchi, Lucas <lucas.demarchi@intel.com>; Lis, Tomasz
> >> <tomasz.lis@intel.com>; Roper, Matthew D <matthew.d.roper@intel.com>;
> >> Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Francisco Jerez
> >> <currojerez@riseup.net>; Mathew, Alwin <alwin.mathew@intel.com>; Mcguire,
> >> Russell W <russell.w.mcguire@intel.com>; Spruit, Neil R
> >> <neil.r.spruit@intel.com>; Zhou, Cheng <cheng.zhou@intel.com>; Benemelis,
> >> Mike G <mike.g.benemelis@intel.com>
> >> Subject: [PATCH v4 1/1] drm/i915/gt: Initialize reserved and unspecified MOCS
> >> indices
> >>
> >> In order to avoid functional breakage of mis-programmed applications that have
> >> grown to depend on unused MOCS entries, we are programming those entries to
> >> be equal to fully cached ("L3 + LLC") entry.
> >>
> >> These reserved and unspecified entries should not be used as they may be
> >> changed to less performant variants with better coherency in the future if more
> >> entries are needed.
> >>
> >> V2: As suggested by Lucas De Marchi to utilise __init_mocs_table for
> >> programming default value, setting I915_MOCS_PTE index of tgl_mocs_table
> >> with desired value.
> >>
> >> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> >> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> >> Cc: Tomasz Lis <tomasz.lis@intel.com>
> >> Cc: Matt Roper <matthew.d.roper@intel.com>
> >> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> >> Cc: Francisco Jerez <currojerez@riseup.net>
> >> Cc: Mathew Alwin <alwin.mathew@intel.com>
> >> Cc: Mcguire Russell W <russell.w.mcguire@intel.com>
> >> Cc: Spruit Neil R <neil.r.spruit@intel.com>
> >> Cc: Zhou Cheng <cheng.zhou@intel.com>
> >> Cc: Benemelis Mike G <mike.g.benemelis@intel.com>
> >>
> >> Signed-off-by: Ayaz A Siddiqui <ayaz.siddiqui@intel.com>
> >> Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/gt/intel_mocs.c | 15 +++++++++++----
> >>  1 file changed, 11 insertions(+), 4 deletions(-)
> >>
> >
> >I'm getting a false failure with this patch , which I tested locally and its passing
> >with this patch. I think that this failure is blocking merge of this patch.
> >Can Someone please let me know how to proceed in this case for merging?
> 
> If it's a false failure, you can go ahead and merge it. Better to reply
> to the CI email how is it unrelated.

I would say the kms_frontbuffer_tracking is genuine fail as that is very
cache sensitive. And I've just pushed this to upstream, oops, so now the
problem is a little more urgent.
-Chris
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_mocs.c b/drivers/gpu/drm/i915/gt/intel_mocs.c
index 632e08a4592b..f5dde723f612 100644
--- a/drivers/gpu/drm/i915/gt/intel_mocs.c
+++ b/drivers/gpu/drm/i915/gt/intel_mocs.c
@@ -234,11 +234,17 @@  static const struct drm_i915_mocs_entry broxton_mocs_table[] = {
 		   L3_1_UC)
 
 static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
-	/* Base - Error (Reserved for Non-Use) */
-	MOCS_ENTRY(0, 0x0, 0x0),
-	/* Base - Reserved */
-	MOCS_ENTRY(1, 0x0, 0x0),
 
+	/* NOTE:
+	 * Reserved and unspecified MOCS indices have been set to (L3 + LCC).
+	 * These reserved entries should never be used, they may be changed
+	 * to low performant variants with better coherency in the future if
+	 * more entries are needed. We are programming index I915_MOCS_PTE(1)
+	 * only, __init_mocs_table() take care to program unused index with
+	 * this entry.
+	 */
+	MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
+		   L3_3_WB),
 	GEN11_MOCS_ENTRIES,
 
 	/* Implicitly enable L1 - HDC:L1 + L3 + LLC */
@@ -265,6 +271,7 @@  static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
 	MOCS_ENTRY(61,
 		   LE_1_UC | LE_TC_1_LLC,
 		   L3_3_WB),
+
 };
 
 static const struct drm_i915_mocs_entry icl_mocs_table[] = {