All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lyude Paul <lyude@redhat.com>
To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Cc: "Timur Tabi" <ttabi@nvidia.com>,
	"Dave Airlie" <airlied@redhat.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Ben Skeggs" <bskeggs@nvidia.com>, "Kees Cook" <kees@kernel.org>,
	"Simona Vetter" <simona@ffwll.ch>,
	"David Airlie" <airlied@gmail.com>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Mel Henning" <mhenning@darkrefraction.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Lyude Paul" <lyude@redhat.com>
Subject: [PATCH v3 0/3] drm/nouveau/gsp/r570: Fix runtime PM
Date: Wed,  1 Jul 2026 14:17:32 -0400	[thread overview]
Message-ID: <20260701182857.190713-1-lyude@redhat.com> (raw)

Runtime PM has been kind of unreliable with GSP for a while. It works
well enough to shut the GPU off and turn it back on, but more often then
not it ends up leaving the GPU in a broken state on resume - which makes
it impossible to really do anything else with it.

Recently however, I discovered that it's been failing much harder on
some ampere systems. This lead me down a rabbit hole that lead me to
figure out one of our previous fixes for runtime PM wasn't correct.
After fixing that and combining it with some fixes we had tried in the
past without success, I finally managed to get nouveau to handle runtime
PM with the GSP perfectly. These are those fixes.

Patch-series wide changes since V2:
* Drop the patch for switching oldLevel from LEVEL_3 to LEVEL_4. If I'm
  understanding OpenRM correctly, LEVEL_3 corresponds to PCI D3 power
  state and is intended for use on systems with ACPI. To be clear, I
  mean ACPI support generally - it doesn't appear to specifically refer to
  laptop-specific ACPI handles like _DSM or the like.

  In an unexpected twist, it appears LEVEL_4 actually corresponds to APM
  (as in "Advanced Power Management", e.g. pre-ACPI)! After re-testing
  my local setups I wasn't able to find any significant behavior
  difference between LEVEL_3 and LEVEL_4, so let's be conservative and
  leave this be for now.

  It still may be worth looking into the future why I've seen OpenRM
  specifically call-out APM suspend being requested in debug builds
  instead of S3. I wouldn't expect APM to actually work with modern
  Nvidia hardware, but it's always possible there's some other reason
  they still use this

Tested on a Lenovo P16 G1 (100 runtime PM cycles!), and RTX4000.

Previous version of the patch series:

  https://patchwork.freedesktop.org/series/169457/

Lyude Paul (3):
  Revert "nouveau/gsp: fix suspend/resume regression on r570 firmware"
  drm/nouveau/gsp/r570: Never enter Gcoff state
  drm/nouveau/gsp/r570: Add missing state flags to GSP resume arguments

 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c    | 2 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c     | 2 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c    | 8 ++++----
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c     | 3 ++-
 .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h    | 8 ++++++++
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h           | 2 +-
 6 files changed, 17 insertions(+), 8 deletions(-)


base-commit: cff96362794a5c1f3adb013b4a46c7233149a629
-- 
2.54.0


WARNING: multiple messages have this Message-ID (diff)
From: Lyude Paul <lyude@redhat.com>
To: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Cc: Dave Airlie <airlied@redhat.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Ben Skeggs <bskeggs@nvidia.com>, Kees Cook <kees@kernel.org>,
	Simona Vetter <simona@ffwll.ch>,
	Maxime Ripard <mripard@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>
Subject: [PATCH v3 0/3] drm/nouveau/gsp/r570: Fix runtime PM
Date: Wed,  1 Jul 2026 14:17:32 -0400	[thread overview]
Message-ID: <20260701182857.190713-1-lyude@redhat.com> (raw)

Runtime PM has been kind of unreliable with GSP for a while. It works
well enough to shut the GPU off and turn it back on, but more often then
not it ends up leaving the GPU in a broken state on resume - which makes
it impossible to really do anything else with it.

Recently however, I discovered that it's been failing much harder on
some ampere systems. This lead me down a rabbit hole that lead me to
figure out one of our previous fixes for runtime PM wasn't correct.
After fixing that and combining it with some fixes we had tried in the
past without success, I finally managed to get nouveau to handle runtime
PM with the GSP perfectly. These are those fixes.

Patch-series wide changes since V2:
* Drop the patch for switching oldLevel from LEVEL_3 to LEVEL_4. If I'm
  understanding OpenRM correctly, LEVEL_3 corresponds to PCI D3 power
  state and is intended for use on systems with ACPI. To be clear, I
  mean ACPI support generally - it doesn't appear to specifically refer to
  laptop-specific ACPI handles like _DSM or the like.

  In an unexpected twist, it appears LEVEL_4 actually corresponds to APM
  (as in "Advanced Power Management", e.g. pre-ACPI)! After re-testing
  my local setups I wasn't able to find any significant behavior
  difference between LEVEL_3 and LEVEL_4, so let's be conservative and
  leave this be for now.

  It still may be worth looking into the future why I've seen OpenRM
  specifically call-out APM suspend being requested in debug builds
  instead of S3. I wouldn't expect APM to actually work with modern
  Nvidia hardware, but it's always possible there's some other reason
  they still use this

Tested on a Lenovo P16 G1 (100 runtime PM cycles!), and RTX4000.

Previous version of the patch series:

  https://patchwork.freedesktop.org/series/169457/

Lyude Paul (3):
  Revert "nouveau/gsp: fix suspend/resume regression on r570 firmware"
  drm/nouveau/gsp/r570: Never enter Gcoff state
  drm/nouveau/gsp/r570: Add missing state flags to GSP resume arguments

 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c    | 2 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c     | 2 +-
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c    | 8 ++++----
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c     | 3 ++-
 .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h    | 8 ++++++++
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h           | 2 +-
 6 files changed, 17 insertions(+), 8 deletions(-)


base-commit: cff96362794a5c1f3adb013b4a46c7233149a629
-- 
2.54.0


             reply	other threads:[~2026-07-01 18:29 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-01 18:17 Lyude Paul [this message]
2026-07-01 18:17 ` [PATCH v3 0/3] drm/nouveau/gsp/r570: Fix runtime PM Lyude Paul
2026-07-01 18:17 ` [PATCH v3 1/3] Revert "nouveau/gsp: fix suspend/resume regression on r570 firmware" Lyude Paul
2026-07-01 18:17   ` Lyude Paul
2026-07-01 18:41   ` sashiko-bot
2026-07-01 18:17 ` [PATCH v3 2/3] drm/nouveau/gsp/r570: Never enter Gcoff state Lyude Paul
2026-07-01 18:17   ` Lyude Paul
2026-07-02  0:27   ` Danilo Krummrich
2026-07-02  0:27     ` Danilo Krummrich
2026-07-02  0:30     ` David Airlie
2026-07-02  0:30       ` David Airlie
2026-07-02  0:47       ` Danilo Krummrich
2026-07-02  0:47         ` Danilo Krummrich
2026-07-02 22:46         ` John Hubbard
2026-07-02 22:46           ` John Hubbard
2026-07-01 18:17 ` [PATCH v3 3/3] drm/nouveau/gsp/r570: Add missing state flags to GSP resume arguments Lyude Paul
2026-07-01 18:17   ` Lyude Paul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260701182857.190713-1-lyude@redhat.com \
    --to=lyude@redhat.com \
    --cc=airlied@gmail.com \
    --cc=airlied@redhat.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bskeggs@nvidia.com \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kees@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mhenning@darkrefraction.com \
    --cc=mripard@kernel.org \
    --cc=nouveau@lists.freedesktop.org \
    --cc=simona@ffwll.ch \
    --cc=ttabi@nvidia.com \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.