[Intel-gfx] drm/i915: Check GuC load status for Host to GuC action and SLPC status

Kamble, Sagar A sagar.a.kamble at intel.com
Sun Aug 21 06:06:03 UTC 2016


Thanks for the review Deepak.

Have incorporated the changes and will send in next series.


On 8/20/2016 10:40 AM, Deepak S wrote:
>
>
> On 20/08/16 10:39 AM, Sagar Arun Kamble wrote:
>> Host to GuC actions should not be invoked when GuC isn't loaded hence
>> add early return in i915_guc_action if GuC load status is not SUCCESS.
>> Also, SLPC status has to be linked with GuC load status to make sure
>> SLPC actions get invoked when GuC is loaded.
>>
>> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble at intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_guc_submission.c | 5 +++++
>>   drivers/gpu/drm/i915/intel_drv.h           | 4 ++++
>>   2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c 
>> b/drivers/gpu/drm/i915/i915_guc_submission.c
>> index 680d9b4..27c937b 100644
>> --- a/drivers/gpu/drm/i915/i915_guc_submission.c
>> +++ b/drivers/gpu/drm/i915/i915_guc_submission.c
>> @@ -78,6 +78,8 @@ static inline bool host2guc_action_response(struct 
>> drm_i915_private *dev_priv,
>>   int i915_guc_action(struct intel_guc *guc, u32 *data, u32 len)
>>   {
>>       struct drm_i915_private *dev_priv = guc_to_i915(guc);
>> +    struct intel_guc_fw *guc_fw = &guc->guc_fw;
>> +
> remove the blank line
>>       u32 status;
>>       int i;
>>       int ret;
>> @@ -85,6 +87,9 @@ int i915_guc_action(struct intel_guc *guc, u32 
>> *data, u32 len)
>>       if (WARN_ON(len < 1 || len > 15))
>>           return -EINVAL;
>>   +    if (WARN_ON(guc_fw->guc_fw_load_status != GUC_FIRMWARE_SUCCESS))
>> +        return -ENODEV;
>> +
>>       intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
>>         dev_priv->guc.action_count += 1;
>> diff --git a/drivers/gpu/drm/i915/intel_drv.h 
>> b/drivers/gpu/drm/i915/intel_drv.h
>> index c46d619..71936dc 100644
>> --- a/drivers/gpu/drm/i915/intel_drv.h
>> +++ b/drivers/gpu/drm/i915/intel_drv.h
>> @@ -1694,8 +1694,12 @@ bool chv_phy_powergate_ch(struct 
>> drm_i915_private *dev_priv, enum dpio_phy phy,
>>     static inline int intel_slpc_active(struct drm_i915_private 
>> *dev_priv)
>>   {
>> +    struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw;
>>       int ret = 0;
>>   +    if (guc_fw->guc_fw_load_status != GUC_FIRMWARE_SUCCESS)
>> +        return 0;
>> +
> Since we are initializing ret=0, I think can do "return ret" right?
>>       if (dev_priv->guc.slpc.vma && dev_priv->guc.slpc.enabled)
>>           ret = 1;
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list