From: Dave Airlie <airlied@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.org, dakr@kernel.org
Subject: [PATCH 6/6] nouveau: set wpr boost flags like open driver does.
Date: Wed, 29 Jul 2026 14:15:30 +1000 [thread overview]
Message-ID: <20260729041653.3985549-7-airlied@gmail.com> (raw)
In-Reply-To: <20260729041653.3985549-1-airlied@gmail.com>
From: Dave Airlie <airlied@redhat.com>
I think this might just boot GSP faster, but maybe it has some
other effects. This is only set on Turing/Ampere/Ada.
This corresponds to what the openrm drivers does.
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
.../drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 3 +++
.../drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 17 +++++++++++++++++
.../nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h | 7 +++++++
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 2 ++
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 2 ++
5 files changed, 31 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c
index 77a5a1882472..6f1a934a6afe 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c
@@ -1740,6 +1740,9 @@ r535_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend)
sr->sysmemAddrOfSuspendResumeData = gsp->sr.radix3.lvl0.addr;
sr->sizeOfSuspendResumeData = len;
+ if (gsp->rm->api->gsp->set_sr_boost_flags)
+ gsp->rm->api->gsp->set_sr_boost_flags(gsp, sr, gsp->wpr_meta.data);
+
ret = rm->api->fbsr->suspend(gsp, suspend == NVKM_RUNTIME_SUSPEND);
if (ret) {
nvkm_gsp_mem_dtor(&gsp->sr.meta);
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c
index 857eda1e7439..5ff886485774 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c
@@ -290,10 +290,27 @@ r570_gsp_libos_init(struct nvkm_gsp *gsp)
return 0;
}
+static void
+r570_gsp_set_wpr_boost_flags(struct nvkm_gsp *gsp, void *data)
+{
+ GspFwWprMeta *meta = data;
+ meta->flags = GSP_FW_FLAGS_CLOCK_BOOST;
+}
+
+static void
+r570_gsp_set_sr_boost_flags(struct nvkm_gsp *gsp, void *sr_ptr, void *meta_ptr)
+{
+ GspFwWprMeta *meta = meta_ptr;
+ GspFwSRMeta *sr = sr_ptr;
+ sr->flags = meta->flags;
+}
+
const struct nvkm_rm_api_gsp
r570_gsp = {
.libos_init = r570_gsp_libos_init,
.set_rmargs = r570_gsp_set_rmargs,
+ .set_wpr_boost_flags = r570_gsp_set_wpr_boost_flags,
+ .set_sr_boost_flags = r570_gsp_set_sr_boost_flags,
.set_system_info = r570_gsp_set_system_info,
.get_static_info = r570_gsp_get_static_info,
.xlat_mc_engine_idx = r570_gsp_xlat_mc_engine_idx,
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h
index 23c30cbdefff..895ed3b85c31 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h
@@ -494,6 +494,13 @@ typedef struct
#define GSP_FW_WPR_META_REVISION 1
+#define GSP_FW_FLAGS 8:0
+#define GSP_FW_FLAGS_CLOCK_BOOST BIT(0)
+#define GSP_FW_FLAGS_RECOVERY_MARGIN_PRESENT BIT(1)
+#define GSP_FW_FLAGS_PPCIE_ENABLED BIT(2)
+#define GSP_FW_FLAGS_MULTI_GPU_NVLE_ENABLED BIT(3)
+#define GSP_FW_FLAGS_SCAN_RECOVERY_MARGIN BIT(4)
+
typedef struct {
NvU64 sharedMemPhysAddr;
NvU32 pageTableEntryCount;
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
index b71ba74eec12..e8231a589e56 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h
@@ -48,6 +48,8 @@ struct nvkm_rm_api {
const struct nvkm_rm_api_gsp {
int (*libos_init)(struct nvkm_gsp *);
void (*set_rmargs)(struct nvkm_gsp *, bool resume);
+ void (*set_wpr_boost_flags)(struct nvkm_gsp *, void *meta);
+ void (*set_sr_boost_flags)(struct nvkm_gsp *, void *sr, void *meta);
int (*set_system_info)(struct nvkm_gsp *);
int (*get_static_info)(struct nvkm_gsp *);
bool (*xlat_mc_engine_idx)(u32 mc_engine_idx, enum nvkm_subdev_type *, int *inst);
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
index 11a37963bd4e..5cb65fc0dc9f 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c
@@ -224,6 +224,8 @@ tu102_gsp_wpr_meta_init(struct nvkm_gsp *gsp)
meta->magic = GSP_FW_WPR_META_MAGIC;
meta->revision = GSP_FW_WPR_META_REVISION;
+ if (gsp->rm->api->gsp->set_wpr_boost_flags)
+ gsp->rm->api->gsp->set_wpr_boost_flags(gsp, meta);
meta->sysmemAddrOfRadix3Elf = gsp->radix3.lvl0.addr;
meta->sizeOfRadix3Elf = gsp->fb.wpr2.elf.size;
--
2.55.0
prev parent reply other threads:[~2026-07-29 4:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-29 4:15 nouveau/gsp: some r570 additions and refactoring Dave Airlie
2026-07-29 4:15 ` [PATCH 1/6] nouveau/gsp: refactor libos entry handling for r535 Dave Airlie
2026-07-29 4:15 ` [PATCH 2/6] nouveau/gsp: make libos init per-gsp version Dave Airlie
2026-07-29 4:32 ` sashiko-bot
2026-07-29 4:15 ` [PATCH 3/6] nouveau/gsp: add logging entries for r570 Dave Airlie
2026-07-29 4:33 ` sashiko-bot
2026-07-29 4:15 ` [PATCH 4/6] nouveau/gsp: refactor the chan allocation arguments into a struct Dave Airlie
2026-07-29 4:15 ` [PATCH 5/6] nouveau/gsp: add some more fields to r570 system info Dave Airlie
2026-07-29 4:29 ` sashiko-bot
2026-07-29 4:15 ` Dave Airlie [this message]
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=20260729041653.3985549-7-airlied@gmail.com \
--to=airlied@gmail.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=nouveau@lists.freedesktop.org \
/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.