On Thu, May 25, 2023 at 2:31 AM Ben Skeggs <skeggsb@xxxxxxxxx> wrote: > > From: Ben Skeggs <bskeggs@xxxxxxxxxx> > > 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 <bskeggs@xxxxxxxxxx> > --- > 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 <kherbst@xxxxxxxxxx>