On Thu, May 25, 2023 at 2:31 AM Ben Skeggs <skeg...@gmail.com> wrote:
>
> From: Ben Skeggs <bske...@redhat.com>
>
> Turns out, we're currently tearing down the disp core channel *before*
> the satellite channels (wndw, etc) during suspend.
>
> This makes RM return NV_ERR_NOT_SUPPORTED on attempting to reallocate
> the core channel on resume for some reason, but we probably shouldn't
> be doing it on HW either.
>
> Tear down children in the reverse of allocation order instead.
>
> Signed-off-by: Ben Skeggs <bske...@redhat.com>
> ---
>  drivers/gpu/drm/nouveau/nvkm/core/object.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nvkm/core/object.c 
> b/drivers/gpu/drm/nouveau/nvkm/core/object.c
> index 301a5e5b5f7f..7c554c14e884 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/core/object.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/core/object.c
> @@ -185,7 +185,7 @@ nvkm_object_fini(struct nvkm_object *object, bool suspend)
>
>         nvif_debug(object, "%s children...\n", action);
>         time = ktime_to_us(ktime_get());
> -       list_for_each_entry(child, &object->tree, head) {
> +       list_for_each_entry_reverse(child, &object->tree, head) {
>                 ret = nvkm_object_fini(child, suspend);
>                 if (ret && suspend)
>                         goto fail_child;
> --
> 2.40.1
>

Reviewed-by: Karol Herbst <kher...@redhat.com>

Reply via email to