On Thu 01 Jan 2026 10:17:20 PM , Christopher Snowhill wrote: > > > On Thu 01 Jan 2026 09:21:26 PM , Matthew Schwartz wrote: > > On 1/1/26 8:18 PM, Dave Airlie wrote: > > > From: Dave Airlie <[email protected]> > > > > > > The changes to always loads fwsec sb causes problems on newer GPUs > > > which don't use this path. > > > > > > Add hooks and pass through the device specific layers. > > > > > > Fixes: da67179e5538 ("drm/nouveau/gsp: Allocate fwsec-sb at boot") > > > > Closes: > > https://lore.kernel.org/nouveau/[email protected]/ > > Tested-by: Matthew Schwartz <[email protected]> > > > > Thanks, > > Matt > > Closes: > https://lore.kernel.org/all/176682185563.8256.115798774340102079@copycat/ > Tested-by: Christopher Snowhill <[email protected]> > > My thanks as well, > Christopher
Oh, dang it, it didn't auto pick the address the list sent it to as the sending account. > > > > > > Cc: <[email protected]> # v6.16+ > > > Cc: Lyude Paul <[email protected]> > > > Cc: Timur Tabi <[email protected]> > > > Signed-off-by: Dave Airlie <[email protected]> > > > --- > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c | 3 +++ > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c | 12 +++------- > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c | 3 +++ > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c | 3 +++ > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/priv.h | 23 +++++++++++++++++-- > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 15 ++++++++++++ > > > .../gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c | 3 +++ > > > 7 files changed, 51 insertions(+), 11 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c > > > index 35d1fcef520bf..b3e994386334d 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ad102.c > > > @@ -29,6 +29,9 @@ ad102_gsp = { > > > .sig_section = ".fwsignature_ad10x", > > > > > > .booter.ctor = ga102_gsp_booter_ctor, > > > + > > > + .fwsec_sb.ctor = tu102_gsp_fwsec_sb_ctor, > > > + .fwsec_sb.dtor = tu102_gsp_fwsec_sb_dtor, > > > > > > .dtor = r535_gsp_dtor, > > > .oneinit = tu102_gsp_oneinit, > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c > > > index 5037602466604..8d4f40a443ce4 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c > > > @@ -337,16 +337,10 @@ nvkm_gsp_fwsec_sb(struct nvkm_gsp *gsp) > > > } > > > > > > int > > > -nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) > > > +nvkm_gsp_fwsec_sb_init(struct nvkm_gsp *gsp) > > > { > > > - return nvkm_gsp_fwsec_init(gsp, &gsp->fws.falcon.sb, "fwsec-sb", > > > - NVFW_FALCON_APPIF_DMEMMAPPER_CMD_SB); > > > -} > > > - > > > -void > > > -nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) > > > -{ > > > - nvkm_falcon_fw_dtor(&gsp->fws.falcon.sb); > > > + return nvkm_gsp_fwsec_init(gsp, &gsp->fws.falcon.sb, "fwsec-sb", > > > + NVFW_FALCON_APPIF_DMEMMAPPER_CMD_SB); > > > } > > > > > > int > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c > > > index d201e8697226b..27a13aeccd3cb 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga100.c > > > @@ -47,6 +47,9 @@ ga100_gsp = { > > > > > > .booter.ctor = tu102_gsp_booter_ctor, > > > > > > + .fwsec_sb.ctor = tu102_gsp_fwsec_sb_ctor, > > > + .fwsec_sb.dtor = tu102_gsp_fwsec_sb_dtor, > > > + > > > .dtor = r535_gsp_dtor, > > > .oneinit = tu102_gsp_oneinit, > > > .init = tu102_gsp_init, > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c > > > index 917f7e2f6c466..a59fb74ef6315 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.c > > > @@ -158,6 +158,9 @@ ga102_gsp_r535 = { > > > > > > .booter.ctor = ga102_gsp_booter_ctor, > > > > > > + .fwsec_sb.ctor = tu102_gsp_fwsec_sb_ctor, > > > + .fwsec_sb.dtor = tu102_gsp_fwsec_sb_dtor, > > > + > > > .dtor = r535_gsp_dtor, > > > .oneinit = tu102_gsp_oneinit, > > > .init = tu102_gsp_init, > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h > > > index 86bdd203bc107..9dd66a2e38017 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h > > > @@ -7,9 +7,8 @@ enum nvkm_acr_lsf_id; > > > > > > int nvkm_gsp_fwsec_frts(struct nvkm_gsp *); > > > > > > -int nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *); > > > int nvkm_gsp_fwsec_sb(struct nvkm_gsp *); > > > -void nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *); > > > +int nvkm_gsp_fwsec_sb_init(struct nvkm_gsp *gsp); > > > > > > struct nvkm_gsp_fwif { > > > int version; > > > @@ -52,6 +51,11 @@ struct nvkm_gsp_func { > > > struct nvkm_falcon *, struct nvkm_falcon_fw *); > > > } booter; > > > > > > + struct { > > > + int (*ctor)(struct nvkm_gsp *); > > > + void (*dtor)(struct nvkm_gsp *); > > > + } fwsec_sb; > > > + > > > void (*dtor)(struct nvkm_gsp *); > > > int (*oneinit)(struct nvkm_gsp *); > > > int (*init)(struct nvkm_gsp *); > > > @@ -67,6 +71,8 @@ extern const struct nvkm_falcon_func tu102_gsp_flcn; > > > extern const struct nvkm_falcon_fw_func tu102_gsp_fwsec; > > > int tu102_gsp_booter_ctor(struct nvkm_gsp *, const char *, const struct > > > firmware *, > > > struct nvkm_falcon *, struct nvkm_falcon_fw *); > > > +int tu102_gsp_fwsec_sb_ctor(struct nvkm_gsp *); > > > +void tu102_gsp_fwsec_sb_dtor(struct nvkm_gsp *); > > > int tu102_gsp_oneinit(struct nvkm_gsp *); > > > int tu102_gsp_init(struct nvkm_gsp *); > > > int tu102_gsp_fini(struct nvkm_gsp *, bool suspend); > > > @@ -91,5 +97,18 @@ int r535_gsp_fini(struct nvkm_gsp *, bool suspend); > > > int nvkm_gsp_new_(const struct nvkm_gsp_fwif *, struct nvkm_device *, > > > enum nvkm_subdev_type, int, > > > struct nvkm_gsp **); > > > > > > +static inline int nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) > > > +{ > > > + if (gsp->func->fwsec_sb.ctor) > > > + return gsp->func->fwsec_sb.ctor(gsp); > > > + return 0; > > > +} > > > + > > > +static inline void nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) > > > +{ > > > + if (gsp->func->fwsec_sb.dtor) > > > + gsp->func->fwsec_sb.dtor(gsp); > > > +} > > > + > > > extern const struct nvkm_gsp_func gv100_gsp; > > > #endif > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c > > > index 81e56da0474a1..04b642a1f7305 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c > > > @@ -30,6 +30,18 @@ > > > #include <nvfw/fw.h> > > > #include <nvfw/hs.h> > > > > > > +int > > > +tu102_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) > > > +{ > > > + return nvkm_gsp_fwsec_sb_init(gsp); > > > +} > > > + > > > +void > > > +tu102_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) > > > +{ > > > + nvkm_falcon_fw_dtor(&gsp->fws.falcon.sb); > > > +} > > > + > > > static int > > > tu102_gsp_booter_unload(struct nvkm_gsp *gsp, u32 mbox0, u32 mbox1) > > > { > > > @@ -370,6 +382,9 @@ tu102_gsp = { > > > > > > .booter.ctor = tu102_gsp_booter_ctor, > > > > > > + .fwsec_sb.ctor = tu102_gsp_fwsec_sb_ctor, > > > + .fwsec_sb.dtor = tu102_gsp_fwsec_sb_dtor, > > > + > > > .dtor = r535_gsp_dtor, > > > .oneinit = tu102_gsp_oneinit, > > > .init = tu102_gsp_init, > > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c > > > b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c > > > index 97eb046c25d07..58cf258424218 100644 > > > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c > > > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu116.c > > > @@ -30,6 +30,9 @@ tu116_gsp = { > > > > > > .booter.ctor = tu102_gsp_booter_ctor, > > > > > > + .fwsec_sb.ctor = tu102_gsp_fwsec_sb_ctor, > > > + .fwsec_sb.dtor = tu102_gsp_fwsec_sb_dtor, > > > + > > > .dtor = r535_gsp_dtor, > > > .oneinit = tu102_gsp_oneinit, > > > .init = tu102_gsp_init, > >
signature.asc
Description: PGP signature
