nouveau.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2
@ 2025-08-13  0:10 Timur Tabi
  2025-08-13  0:10 ` [PATCH v3 2/3] drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr Timur Tabi
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Timur Tabi @ 2025-08-13  0:10 UTC (permalink / raw)
  To: Lyude Paul, Danilo Krummrich, nouveau; +Cc: stable

Function nvkm_gsp_fwsec_v2() sets 'ret' if the kmemdup() call fails, but
it never uses or returns 'ret' after that point.  We always need to release
the firmware regardless, so do that and then check for error.

Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
Cc: stable@vger.kernel.org # v6.7+
Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c
index 52412965fac1..5b721bd9d799 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c
@@ -209,11 +209,12 @@ nvkm_gsp_fwsec_v2(struct nvkm_gsp *gsp, const char *name,
 	fw->boot_addr = bld->start_tag << 8;
 	fw->boot_size = bld->code_size;
 	fw->boot = kmemdup(bl->data + hdr->data_offset + bld->code_off, fw->boot_size, GFP_KERNEL);
-	if (!fw->boot)
-		ret = -ENOMEM;
 
 	nvkm_firmware_put(bl);
 
+	if (!fw->boot)
+		return -ENOMEM;
+
 	/* Patch in interface data. */
 	return nvkm_gsp_fwsec_patch(gsp, fw, desc->InterfaceOffset, init_cmd);
 }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v3 2/3] drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr
  2025-08-13  0:10 [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Timur Tabi
@ 2025-08-13  0:10 ` Timur Tabi
  2025-08-13  0:10 ` [PATCH v3 3/3] drm/nouveau: remove unused memory target test Timur Tabi
  2025-08-25 20:28 ` [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Danilo Krummrich
  2 siblings, 0 replies; 4+ messages in thread
From: Timur Tabi @ 2025-08-13  0:10 UTC (permalink / raw)
  To: Lyude Paul, Danilo Krummrich, nouveau

The 'tag' parameter is passed by value and is not actually used after
being incremented, so remove the increment.  It's the function that calls
gm200_flcn_pio_imem_wr that is supposed to (and does) increment 'tag'.

Fixes: 0e44c2170876 ("drm/nouveau/flcn: new code to load+boot simple HS FWs (VPR scrubber)")
Reviewed-by: Philipp Stanner <phasta@kernel.org>
Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c b/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
index b7da3ab44c27..6a004c6e6742 100644
--- a/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
+++ b/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
@@ -103,7 +103,7 @@ gm200_flcn_pio_imem_wr_init(struct nvkm_falcon *falcon, u8 port, bool sec, u32 i
 static void
 gm200_flcn_pio_imem_wr(struct nvkm_falcon *falcon, u8 port, const u8 *img, int len, u16 tag)
 {
-	nvkm_falcon_wr32(falcon, 0x188 + (port * 0x10), tag++);
+	nvkm_falcon_wr32(falcon, 0x188 + (port * 0x10), tag);
 	while (len >= 4) {
 		nvkm_falcon_wr32(falcon, 0x184 + (port * 0x10), *(u32 *)img);
 		img += 4;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v3 3/3] drm/nouveau: remove unused memory target test
  2025-08-13  0:10 [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Timur Tabi
  2025-08-13  0:10 ` [PATCH v3 2/3] drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr Timur Tabi
@ 2025-08-13  0:10 ` Timur Tabi
  2025-08-25 20:28 ` [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Danilo Krummrich
  2 siblings, 0 replies; 4+ messages in thread
From: Timur Tabi @ 2025-08-13  0:10 UTC (permalink / raw)
  To: Lyude Paul, Danilo Krummrich, nouveau

The memory target check is a hold-over from a refactor.  It's harmless
but distracting, so just remove it.

Fixes: 2541626cfb79 ("drm/nouveau/acr: use common falcon HS FW code for ACR FWs")
Signed-off-by: Timur Tabi <ttabi@nvidia.com>
---
 drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c b/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
index 6a004c6e6742..7c43397c19e6 100644
--- a/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
+++ b/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c
@@ -249,9 +249,11 @@ int
 gm200_flcn_fw_load(struct nvkm_falcon_fw *fw)
 {
 	struct nvkm_falcon *falcon = fw->falcon;
-	int target, ret;
+	int ret;
 
 	if (fw->inst) {
+		int target;
+
 		nvkm_falcon_mask(falcon, 0x048, 0x00000001, 0x00000001);
 
 		switch (nvkm_memory_target(fw->inst)) {
@@ -285,15 +287,6 @@ gm200_flcn_fw_load(struct nvkm_falcon_fw *fw)
 	}
 
 	if (fw->boot) {
-		switch (nvkm_memory_target(&fw->fw.mem.memory)) {
-		case NVKM_MEM_TARGET_VRAM: target = 4; break;
-		case NVKM_MEM_TARGET_HOST: target = 5; break;
-		case NVKM_MEM_TARGET_NCOH: target = 6; break;
-		default:
-			WARN_ON(1);
-			return -EINVAL;
-		}
-
 		ret = nvkm_falcon_pio_wr(falcon, fw->boot, 0, 0,
 					 IMEM, falcon->code.limit - fw->boot_size, fw->boot_size,
 					 fw->boot_addr >> 8, false);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2
  2025-08-13  0:10 [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Timur Tabi
  2025-08-13  0:10 ` [PATCH v3 2/3] drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr Timur Tabi
  2025-08-13  0:10 ` [PATCH v3 3/3] drm/nouveau: remove unused memory target test Timur Tabi
@ 2025-08-25 20:28 ` Danilo Krummrich
  2 siblings, 0 replies; 4+ messages in thread
From: Danilo Krummrich @ 2025-08-25 20:28 UTC (permalink / raw)
  To: Timur Tabi; +Cc: Lyude Paul, nouveau, stable

On 8/13/25 2:10 AM, Timur Tabi wrote:
> Function nvkm_gsp_fwsec_v2() sets 'ret' if the kmemdup() call fails, but
> it never uses or returns 'ret' after that point.  We always need to release
> the firmware regardless, so do that and then check for error.
> 
> Fixes: 176fdcbddfd2 ("drm/nouveau/gsp/r535: add support for booting GSP-RM")
> Cc: stable@vger.kernel.org # v6.7+
> Signed-off-by: Timur Tabi <ttabi@nvidia.com>

For this and patch 2 and 3:

Applied to drm-misc-fixes, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-08-25 20:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-13  0:10 [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Timur Tabi
2025-08-13  0:10 ` [PATCH v3 2/3] drm/nouveau: remove unused increment in gm200_flcn_pio_imem_wr Timur Tabi
2025-08-13  0:10 ` [PATCH v3 3/3] drm/nouveau: remove unused memory target test Timur Tabi
2025-08-25 20:28 ` [PATCH v3 1/3] drm/nouveau: fix error path in nvkm_gsp_fwsec_v2 Danilo Krummrich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).