On Wed, Aug 10, 2022 at 12:42 PM Computer Enthusiastic <computer.enthusiastic@xxxxxxxxx> wrote: > > Hello, > > The "supend to ram" issue (system freeze when resuming after suspend > to ram or disk hibernation) is still affecting the nouveau kernel > module from linux version 5 and above with nvidia GeForce 9600M GT and > other nvidia graphic card with the same chipset [1][2][3]. > > I've been successfully using the "work in progress" patch by Karol > Herbst [4] to solve the "supend to ram" issue since it was proposed > for an apparent different issue ("[GT216][Linux 5.16.4] Long stalls in > dma_fence_default_wait") [5] whose root cause is probably the same. > > I send this message to bring to your attention the aforementioned > patch [4] (below in the message as text) to evaluate it for the next > steps for possible inclusion in the upstream kernel version. > I think it might be better to CC Ben and Lyude, who _might_ have a good idea on what's the proper patch, but maybe the patch is fine as it is? > Thanks. > > [1] https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/issues/547 > [2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=989705#5 > [3] https://bugzilla.kernel.org/show_bug.cgi?id=213617 > [4] https://gitlab.freedesktop.org/drm/nouveau/-/issues/156#note_1385770 > [5] https://gitlab.freedesktop.org/drm/nouveau/-/issues/156 > > ----- %= ----- %= ----- %= > > From 70271cb0aa30e4523d39c3942e84b16fe18338f5 Mon Sep 17 00:00:00 2001 > From: Karol Herbst <kherbst@xxxxxxxxxx> > Date: Mon, 16 May 2022 17:40:20 +0200 > Subject: [PATCH] nouveau WIP > > --- > drivers/gpu/drm/nouveau/nouveau_bo.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c > b/drivers/gpu/drm/nouveau/nouveau_bo.c > index 05076e530e7d..b6343741eda6 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -820,6 +820,7 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, > int evict, > if (ret == 0) { > ret = nouveau_fence_new(chan, false, &fence); > if (ret == 0) { > + nouveau_fence_wait(fence, false, false); > ret = ttm_bo_move_accel_cleanup(bo, > &fence->base, > evict, false, > -- > 2.35.3 >