diff mbox

firmware/guc: Remove USES_GUC_SUBMISSION for suspend/resume

Message ID 1529687156-27632-1-git-send-email-anusha.srivatsa@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Srivatsa, Anusha June 22, 2018, 5:05 p.m. UTC
In the guc_ctl_debug_flags, the ads struct is programmed only
when USES_GUC_SUBMISSION is satisfied. But, this has to be
programmed for all suspend/resume cases.
Remove the condition and program the ads struct for
both huc loading and guc submission.

This issue was noticed when CI threw errors for enable_guc=2
(load huc; disable submission)

Credits to: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Spotswood <john.a.spotswood@intel.com>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
---
 drivers/gpu/drm/i915/intel_guc.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

Comments

Daniele Ceraolo Spurio June 22, 2018, 5:25 p.m. UTC | #1
Commit title is slightly misleading, as the USES_GUC_SUBMISSION is not 
removed from a suspend/resume path. the firmware tag is also confusing 
since this fixes an i915 bug. Maybe something like "drm/i915/guc: Remove 
USES_GUC_SUBMISSION for ads programming" would be clearer

On 22/06/18 10:05, Anusha Srivatsa wrote:
> In the guc_ctl_debug_flags, the ads struct is programmed only
> when USES_GUC_SUBMISSION is satisfied. But, this has to be
> programmed for all suspend/resume cases.
> Remove the condition and program the ads struct for
> both huc loading and guc submission.
> 
> This issue was noticed when CI threw errors for enable_guc=2
> (load huc; disable submission)
> 

Do we need a fixes: tag? Not sure we want this backported since GuC is 
off by default.

> Credits to: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: John Spotswood <john.a.spotswood@intel.com>
> Cc: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_guc.c | 9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
> index 1aff30b..b1d1a10 100644
> --- a/drivers/gpu/drm/i915/intel_guc.c
> +++ b/drivers/gpu/drm/i915/intel_guc.c
> @@ -207,6 +207,7 @@ static u32 guc_ctl_debug_flags(struct intel_guc *guc)
>   {
>   	u32 level = intel_guc_log_get_level(&guc->log);
>   	u32 flags = 0;
> +	u32 ads = 0;
>   
>   	if (!GUC_LOG_LEVEL_IS_ENABLED(level))
>   		flags |= GUC_LOG_DEFAULT_DISABLED;
> @@ -217,12 +218,10 @@ static u32 guc_ctl_debug_flags(struct intel_guc *guc)
>   		flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<
>   			 GUC_LOG_VERBOSITY_SHIFT;
>   
> -	if (USES_GUC_SUBMISSION(guc_to_i915(guc))) {
> -		u32 ads = intel_guc_ggtt_offset(guc, guc->ads_vma)
> -			>> PAGE_SHIFT;
> +	ads = intel_guc_ggtt_offset(guc, guc->ads_vma) <<

You've flipped the shift here. With that fixed:

Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

> +			PAGE_SHIFT;
>   
> -		flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
> -	}
> +	flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
>   
>   	return flags;
>   }
>
John Spotswood June 22, 2018, 5:34 p.m. UTC | #2
On Fri, 2018-06-22 at 10:25 -0700, Daniele Ceraolo Spurio wrote:
> Commit title is slightly misleading, as the USES_GUC_SUBMISSION is
> not 
> removed from a suspend/resume path. the firmware tag is also
> confusing 
> since this fixes an i915 bug. Maybe something like "drm/i915/guc:
> Remove 
> USES_GUC_SUBMISSION for ads programming" would be clearer
> 
> On 22/06/18 10:05, Anusha Srivatsa wrote:
> > 
> > In the guc_ctl_debug_flags, the ads struct is programmed only
> > when USES_GUC_SUBMISSION is satisfied. But, this has to be
> > programmed for all suspend/resume cases.
> > Remove the condition and program the ads struct for
> > both huc loading and guc submission.
> > 
> > This issue was noticed when CI threw errors for enable_guc=2
> > (load huc; disable submission)
> > 
> Do we need a fixes: tag? Not sure we want this backported since GuC
> is 
> off by default.
> 
> > 
> > Credits to: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com
> > >
> > Cc: John Spotswood <john.a.spotswood@intel.com>
> > Cc: Oscar Mateo <oscar.mateo@intel.com>
> > Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> > Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
> > ---
> >   drivers/gpu/drm/i915/intel_guc.c | 9 ++++-----
> >   1 file changed, 4 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_guc.c
> > b/drivers/gpu/drm/i915/intel_guc.c
> > index 1aff30b..b1d1a10 100644
> > --- a/drivers/gpu/drm/i915/intel_guc.c
> > +++ b/drivers/gpu/drm/i915/intel_guc.c
> > @@ -207,6 +207,7 @@ static u32 guc_ctl_debug_flags(struct intel_guc
> > *guc)
> >   {
> >   	u32 level = intel_guc_log_get_level(&guc->log);
> >   	u32 flags = 0;
> > +	u32 ads = 0;
> >   
> >   	if (!GUC_LOG_LEVEL_IS_ENABLED(level))
> >   		flags |= GUC_LOG_DEFAULT_DISABLED;
> > @@ -217,12 +218,10 @@ static u32 guc_ctl_debug_flags(struct
> > intel_guc *guc)
> >   		flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<
> >   			 GUC_LOG_VERBOSITY_SHIFT;
> >   
> > -	if (USES_GUC_SUBMISSION(guc_to_i915(guc))) {
> > -		u32 ads = intel_guc_ggtt_offset(guc, guc->ads_vma)
> > -			>> PAGE_SHIFT;
> > +	ads = intel_guc_ggtt_offset(guc, guc->ads_vma) <<
> You've flipped the shift here. With that fixed:
> 
> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 

With Daniele's recommended changes:

Reviewed-by:  John Spotswood <john.a.spotswood@intel.com>

> > 
> > +			PAGE_SHIFT;
> >   
> > -		flags |= ads << GUC_ADS_ADDR_SHIFT |
> > GUC_ADS_ENABLED;
> > -	}
> > +	flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
> >   
> >   	return flags;
> >   }
> >
Srivatsa, Anusha June 22, 2018, 5:38 p.m. UTC | #3
>-----Original Message-----

>From: Ceraolo Spurio, Daniele

>Sent: Friday, June 22, 2018 10:26 AM

>To: Srivatsa, Anusha <anusha.srivatsa@intel.com>; intel-

>gfx@lists.freedesktop.org

>Cc: Spotswood, John A <john.a.spotswood@intel.com>; Mateo Lozano, Oscar

><oscar.mateo@intel.com>

>Subject: Re: [PATCH] firmware/guc: Remove USES_GUC_SUBMISSION for

>suspend/resume

>

>Commit title is slightly misleading, as the USES_GUC_SUBMISSION is not removed

>from a suspend/resume path. the firmware tag is also confusing since this fixes

>an i915 bug. Maybe something like "drm/i915/guc: Remove

>USES_GUC_SUBMISSION for ads programming" would be clearer

Sure.
Makes sense.

>On 22/06/18 10:05, Anusha Srivatsa wrote:

>> In the guc_ctl_debug_flags, the ads struct is programmed only when

>> USES_GUC_SUBMISSION is satisfied. But, this has to be programmed for

>> all suspend/resume cases.

>> Remove the condition and program the ads struct for both huc loading

>> and guc submission.

>>

>> This issue was noticed when CI threw errors for enable_guc=2 (load

>> huc; disable submission)

>>

>

>Do we need a fixes: tag? Not sure we want this backported since GuC is off by

>default.


Hmm...so the patch - Load Guc,HuC on GLK is still not merged. 
Maybe skip the fixes tag? 


>> Credits to: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

>> Cc: John Spotswood <john.a.spotswood@intel.com>

>> Cc: Oscar Mateo <oscar.mateo@intel.com>

>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>

>> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>

>> ---

>>   drivers/gpu/drm/i915/intel_guc.c | 9 ++++-----

>>   1 file changed, 4 insertions(+), 5 deletions(-)

>>

>> diff --git a/drivers/gpu/drm/i915/intel_guc.c

>> b/drivers/gpu/drm/i915/intel_guc.c

>> index 1aff30b..b1d1a10 100644

>> --- a/drivers/gpu/drm/i915/intel_guc.c

>> +++ b/drivers/gpu/drm/i915/intel_guc.c

>> @@ -207,6 +207,7 @@ static u32 guc_ctl_debug_flags(struct intel_guc *guc)

>>   {

>>   	u32 level = intel_guc_log_get_level(&guc->log);

>>   	u32 flags = 0;

>> +	u32 ads = 0;

>>

>>   	if (!GUC_LOG_LEVEL_IS_ENABLED(level))

>>   		flags |= GUC_LOG_DEFAULT_DISABLED; @@ -217,12 +218,10

>@@ static

>> u32 guc_ctl_debug_flags(struct intel_guc *guc)

>>   		flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<

>>   			 GUC_LOG_VERBOSITY_SHIFT;

>>

>> -	if (USES_GUC_SUBMISSION(guc_to_i915(guc))) {

>> -		u32 ads = intel_guc_ggtt_offset(guc, guc->ads_vma)

>> -			>> PAGE_SHIFT;

>> +	ads = intel_guc_ggtt_offset(guc, guc->ads_vma) <<

>

>You've flipped the shift here. With that fixed:

Oops...thanks for pointing it out.

>Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>


And thanks for the review. Will re-spin the patch asap.

Anusha 
>> +			PAGE_SHIFT;

>>

>> -		flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;

>> -	}

>> +	flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;

>>

>>   	return flags;

>>   }

>>
Daniele Ceraolo Spurio June 22, 2018, 5:44 p.m. UTC | #4
On 22/06/18 10:38, Srivatsa, Anusha wrote:
> 
> 
>> -----Original Message-----
>> From: Ceraolo Spurio, Daniele
>> Sent: Friday, June 22, 2018 10:26 AM
>> To: Srivatsa, Anusha <anusha.srivatsa@intel.com>; intel-
>> gfx@lists.freedesktop.org
>> Cc: Spotswood, John A <john.a.spotswood@intel.com>; Mateo Lozano, Oscar
>> <oscar.mateo@intel.com>
>> Subject: Re: [PATCH] firmware/guc: Remove USES_GUC_SUBMISSION for
>> suspend/resume
>>
>> Commit title is slightly misleading, as the USES_GUC_SUBMISSION is not removed
>>from a suspend/resume path. the firmware tag is also confusing since this fixes
>> an i915 bug. Maybe something like "drm/i915/guc: Remove
>> USES_GUC_SUBMISSION for ads programming" would be clearer
> Sure.
> Makes sense.
> 
>> On 22/06/18 10:05, Anusha Srivatsa wrote:
>>> In the guc_ctl_debug_flags, the ads struct is programmed only when
>>> USES_GUC_SUBMISSION is satisfied. But, this has to be programmed for
>>> all suspend/resume cases.
>>> Remove the condition and program the ads struct for both huc loading
>>> and guc submission.
>>>
>>> This issue was noticed when CI threw errors for enable_guc=2 (load
>>> huc; disable submission)
>>>
>>
>> Do we need a fixes: tag? Not sure we want this backported since GuC is off by
>> default.
> 
> Hmm...so the patch - Load Guc,HuC on GLK is still not merged.
> Maybe skip the fixes tag?
> 

This fails on SKL as well and we had FW there for a while. I still think 
we can skip the tag because guc is off by default, but don't take my 
word as assurance :)

Daniele

> 
>>> Credits to: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>>> Cc: John Spotswood <john.a.spotswood@intel.com>
>>> Cc: Oscar Mateo <oscar.mateo@intel.com>
>>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
>>> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
>>> ---
>>>    drivers/gpu/drm/i915/intel_guc.c | 9 ++++-----
>>>    1 file changed, 4 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_guc.c
>>> b/drivers/gpu/drm/i915/intel_guc.c
>>> index 1aff30b..b1d1a10 100644
>>> --- a/drivers/gpu/drm/i915/intel_guc.c
>>> +++ b/drivers/gpu/drm/i915/intel_guc.c
>>> @@ -207,6 +207,7 @@ static u32 guc_ctl_debug_flags(struct intel_guc *guc)
>>>    {
>>>    	u32 level = intel_guc_log_get_level(&guc->log);
>>>    	u32 flags = 0;
>>> +	u32 ads = 0;
>>>
>>>    	if (!GUC_LOG_LEVEL_IS_ENABLED(level))
>>>    		flags |= GUC_LOG_DEFAULT_DISABLED; @@ -217,12 +218,10
>> @@ static
>>> u32 guc_ctl_debug_flags(struct intel_guc *guc)
>>>    		flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<
>>>    			 GUC_LOG_VERBOSITY_SHIFT;
>>>
>>> -	if (USES_GUC_SUBMISSION(guc_to_i915(guc))) {
>>> -		u32 ads = intel_guc_ggtt_offset(guc, guc->ads_vma)
>>> -			>> PAGE_SHIFT;
>>> +	ads = intel_guc_ggtt_offset(guc, guc->ads_vma) <<
>>
>> You've flipped the shift here. With that fixed:
> Oops...thanks for pointing it out.
> 
>> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> 
> And thanks for the review. Will re-spin the patch asap.
> 
> Anusha
>>> +			PAGE_SHIFT;
>>>
>>> -		flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
>>> -	}
>>> +	flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
>>>
>>>    	return flags;
>>>    }
>>>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index 1aff30b..b1d1a10 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -207,6 +207,7 @@  static u32 guc_ctl_debug_flags(struct intel_guc *guc)
 {
 	u32 level = intel_guc_log_get_level(&guc->log);
 	u32 flags = 0;
+	u32 ads = 0;
 
 	if (!GUC_LOG_LEVEL_IS_ENABLED(level))
 		flags |= GUC_LOG_DEFAULT_DISABLED;
@@ -217,12 +218,10 @@  static u32 guc_ctl_debug_flags(struct intel_guc *guc)
 		flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<
 			 GUC_LOG_VERBOSITY_SHIFT;
 
-	if (USES_GUC_SUBMISSION(guc_to_i915(guc))) {
-		u32 ads = intel_guc_ggtt_offset(guc, guc->ads_vma)
-			>> PAGE_SHIFT;
+	ads = intel_guc_ggtt_offset(guc, guc->ads_vma) <<
+			PAGE_SHIFT;
 
-		flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
-	}
+	flags |= ads << GUC_ADS_ADDR_SHIFT | GUC_ADS_ENABLED;
 
 	return flags;
 }