[02/32] debugfs: Wake up GPU before doing any reclocking

Submitted by Karol Herbst on Nov. 17, 2017, 12:04 a.m.

Details

Message ID 20171117000436.2432-3-karolherbst@gmail.com
State New
Headers show
Series "Updated State of my clk patches" ( rev: 1 ) in Nouveau

Not browsing as part of any series.

Commit Message

Karol Herbst Nov. 17, 2017, 12:04 a.m.
Fixes various reclocking related issues on prime systems.

Signed-off-by: Karol Herbst <karolherbst@gmail.com>
---
 drm/nouveau/nouveau_debugfs.c | 4 ++++
 1 file changed, 4 insertions(+)

Patch hide | download patch | download mbox

diff --git a/drm/nouveau/nouveau_debugfs.c b/drm/nouveau/nouveau_debugfs.c
index 963a4dba..9109b69c 100644
--- a/drm/nouveau/nouveau_debugfs.c
+++ b/drm/nouveau/nouveau_debugfs.c
@@ -160,7 +160,11 @@  nouveau_debugfs_pstate_set(struct file *file, const char __user *ubuf,
 		args.ustate = value;
 	}
 
+	ret = pm_runtime_get_sync(drm->dev);
+	if (IS_ERR_VALUE(ret) && ret != -EACCES)
+		return ret;
 	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_USER, &args, sizeof(args));
+	pm_runtime_put_autosuspend(drm->dev);
 	if (ret < 0)
 		return ret;
 

Comments

On 17/11/17 02:04, Karol Herbst wrote:
> Fixes various reclocking related issues on prime systems.

Is that the only place that was not covered? Could you check if other
places would need this code too?

In any case, this patch is (assuming you are calling the right functions
to prevent the GPU from sleeping):
Signed-off-by: Martin Peres <martin.peres@free.fr>
> 
> Signed-off-by: Karol Herbst <karolherbst@gmail.com>
> ---
>  drm/nouveau/nouveau_debugfs.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drm/nouveau/nouveau_debugfs.c b/drm/nouveau/nouveau_debugfs.c
> index 963a4dba..9109b69c 100644
> --- a/drm/nouveau/nouveau_debugfs.c
> +++ b/drm/nouveau/nouveau_debugfs.c
> @@ -160,7 +160,11 @@ nouveau_debugfs_pstate_set(struct file *file, const char __user *ubuf,
>  		args.ustate = value;
>  	}
>  
> +	ret = pm_runtime_get_sync(drm->dev);
> +	if (IS_ERR_VALUE(ret) && ret != -EACCES)
> +		return ret;
>  	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_USER, &args, sizeof(args));
> +	pm_runtime_put_autosuspend(drm->dev);
>  	if (ret < 0)
>  		return ret;
>  
>
On Wed, Nov 22, 2017 at 1:21 AM, Martin Peres <martin.peres@free.fr> wrote:
> On 17/11/17 02:04, Karol Herbst wrote:
>> Fixes various reclocking related issues on prime systems.
>
> Is that the only place that was not covered? Could you check if other
> places would need this code too?
>

I had quite a discussion with Ben about this and all the other cases
should be handled implicitly already. There are some follow patches to
fix some of those cases as well. Like having the therm subdev moved in
order.

> In any case, this patch is (assuming you are calling the right functions
> to prevent the GPU from sleeping):
> Signed-off-by: Martin Peres <martin.peres@free.fr>
>>
>> Signed-off-by: Karol Herbst <karolherbst@gmail.com>
>> ---
>>  drm/nouveau/nouveau_debugfs.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/drm/nouveau/nouveau_debugfs.c b/drm/nouveau/nouveau_debugfs.c
>> index 963a4dba..9109b69c 100644
>> --- a/drm/nouveau/nouveau_debugfs.c
>> +++ b/drm/nouveau/nouveau_debugfs.c
>> @@ -160,7 +160,11 @@ nouveau_debugfs_pstate_set(struct file *file, const char __user *ubuf,
>>               args.ustate = value;
>>       }
>>
>> +     ret = pm_runtime_get_sync(drm->dev);
>> +     if (IS_ERR_VALUE(ret) && ret != -EACCES)
>> +             return ret;
>>       ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_USER, &args, sizeof(args));
>> +     pm_runtime_put_autosuspend(drm->dev);
>>       if (ret < 0)
>>               return ret;
>>
>>
>
> _______________________________________________
> Nouveau mailing list
> Nouveau@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau