Displaying 20 results from an estimated 175 matches for "nvkm_error".
2016 Jan 02
0
[PATCH] gr/gf100: provide a bit more info for various errors
...p_intr(struct gf100_gr *gr)
 {
 	struct nvkm_subdev *subdev = &gr->base.engine.subdev;
 	struct nvkm_device *device = subdev->device;
+	char error[128];
 	u32 trap = nvkm_rd32(device, 0x400108);
 	int rop, gpc;
 
 	if (trap & 0x00000001) {
 		u32 stat = nvkm_rd32(device, 0x404000);
-		nvkm_error(subdev, "DISPATCH %08x\n", stat);
+
+		nvkm_snprintbf(error, sizeof(error), gf100_dispatch_error,
+			       stat & 0x3fffffff);
+		nvkm_error(subdev, "DISPATCH %08x [%s]\n", stat, error);
 		nvkm_wr32(device, 0x404000, 0xc0000000);
 		nvkm_wr32(device, 0x400108, 0x00000001)...
2016 Jan 02
0
[PATCH v2] gr/gf100: provide a bit more info for various errors
...p_intr(struct gf100_gr *gr)
 {
 	struct nvkm_subdev *subdev = &gr->base.engine.subdev;
 	struct nvkm_device *device = subdev->device;
+	char error[128];
 	u32 trap = nvkm_rd32(device, 0x400108);
 	int rop, gpc;
 
 	if (trap & 0x00000001) {
 		u32 stat = nvkm_rd32(device, 0x404000);
-		nvkm_error(subdev, "DISPATCH %08x\n", stat);
+
+		nvkm_snprintbf(error, sizeof(error), gf100_dispatch_error,
+			       stat & 0x3fffffff);
+		nvkm_error(subdev, "DISPATCH %08x [%s]\n", stat, error);
 		nvkm_wr32(device, 0x404000, 0xc0000000);
 		nvkm_wr32(device, 0x400108, 0x00000001)...
2016 Nov 04
2
[PATCH v2] gr: fallback to legacy paths during firmware lookup
...fwname = "fuc409d";
+	else if (!strcmp(fwname, "gpccs_inst"))
+		fwname = "fuc41ac";
+	else if (!strcmp(fwname, "gpccs_data"))
+		fwname = "fuc41ad";
+	else
+		fwname = NULL;
+
+	/* nope, let's just return the error we got */
+	if (!fwname) {
+		nvkm_error(subdev, "failed to load %s\n", fwname);
+		return ret;
+	}
+
+	/* yes, try to load from the legacy path */
+	nvkm_debug(subdev, "%s: falling back to legacy path\n", fwname);
+
+	snprintf(f, sizeof(f), "nouveau/nv%02x_%s", device->chipset, fwname);
+	ret = request_fi...
2015 Nov 14
1
[PATCH v2] pmu: fix queued messages while getting no IRQ
...reply[2])
+{
+	struct nvkm_subdev *subdev = &pmu->subdev;
+	struct nvkm_device *device = subdev->device;
+	unsigned long jiffies = msecs_to_jiffies(1000);
+
+	if (!wait_event_timeout(pmu->recv.wait, (pmu->recv.process == 0), jiffies)) {
+		u32 addr = nvkm_rd32(device, 0x10a4cc);
+		nvkm_error(subdev, "wait on reply timed out\n");
+
+		if (addr != nvkm_rd32(device, 0x10a4c8)) {
+			nvkm_error(subdev, "found queued message without getting an interrupt\n");
+			schedule_work(&pmu->recv.work);
+
+			if (!wait_event_timeout(pmu->recv.wait, (pmu->recv.process...
2015 Dec 02
2
[RFC PATCH 4/5] subdev/clk: print the base clocks
...&clk->subdev);
> +	bios = device->bios;
> +
> +	if (bios && !nvbios_baseclock_parse(bios, &header)) {
> +		struct nvbios_baseclock_entry base_entry, boost_entry;
> +		if (nvbios_baseclock_get_entry(bios, &header, header.base_entry, &base_entry))
> +			nvkm_error(&clk->subdev, "couldn't parse base clock\n");
> +		else if (nvbios_baseclock_get_entry(bios, &header, header.boost_entry, &boost_entry))
> +			nvkm_error(&clk->subdev, "couldn't parse boost clock\n");
> +		else
> +			nvkm_info(&clk-&...
2024 Oct 29
1
[PATCH 2/2] [v8] drm/nouveau: expose GSP-RM logging buffers via debugfs
...couldn't you have make this suggestion during one of the previous 7
versions of this patch?  I'm never going to get this patch finished if you
keep asking for cosmetic changes.
> > +	dir = debugfs_create_blob(name, 0444, gsp->dir, blob);
> > +	if (IS_ERR(dir)) {
> > +		nvkm_error(&gsp->subdev,
> > +			   "failed to create %s debugfs entry\n", name);
> > +		return NULL;
> > +	}
> > +
> > +	/*
> > +	 * For some reason, debugfs_create_blob doesn't set the size of the
> > +	 * dentry, so do that here.
> > +	 *...
2023 Dec 22
1
[PATCH 07/11] nouveau/gsp: convert gsp errors to generic errors
...default:
+               return -EINVAL;
+       }
+}
+
 static void *
 r535_gsp_msgq_wait(struct nvkm_gsp *gsp, u32 repc, u32 *prepc, int *ptime)
 {
@@ -584,8 +598,9 @@ r535_gsp_rpc_rm_alloc_push(struct nvkm_gsp_object *object, void *argv, u32 repc)
 		return rpc;
 
 	if (rpc->status) {
-		nvkm_error(&gsp->subdev, "RM_ALLOC: 0x%x\n", rpc->status);
-		ret = ERR_PTR(-EINVAL);
+		ret = ERR_PTR(r535_rpc_status_to_errno(rpc->status));
+		if (ret != -EAGAIN)
+			nvkm_error(&gsp->subdev, "RM_ALLOC: 0x%x\n", rpc->status);
 	} else {
 		ret = repc ? rpc->par...
2016 Apr 18
0
[PATCH v4 32/37] clk: only do partial reclocks as required
...nt
 nvkm_cstate_prog(struct nvkm_clk *clk, struct nvkm_pstate *pstate, int cstatei)
 {
 	struct nvkm_subdev *subdev = &clk->subdev;
@@ -188,6 +188,11 @@ nvkm_cstate_prog(struct nvkm_clk *clk, struct nvkm_pstate *pstate, int cstatei)
 		cstate = &pstate->base;
 	}
 
+	if (!cstate) {
+		nvkm_error(subdev, "failed to set cstate %d\n", cstatei);
+		return -EINVAL;
+	}
+
 	if (therm) {
 		ret = nvkm_therm_cstate(therm, pstate->fanspeed, +1);
 		if (ret && ret != -ENODEV) {
diff --git a/drm/nouveau/nvkm/subdev/clk/gf100.c b/drm/nouveau/nvkm/subdev/clk/gf100.c
index 808e1ed.....
2024 Nov 11
4
[PATCH 1/2] nouveau: handle EBUSY and EAGAIN for GSP aux errors.
...default:
@@ -601,7 +601,7 @@ r535_gsp_rpc_rm_alloc_push(struct nvkm_gsp_object *object, void *argv, u32 repc)
 
 	if (rpc->status) {
 		ret = ERR_PTR(r535_rpc_status_to_errno(rpc->status));
-		if (PTR_ERR(ret) != -EAGAIN)
+		if (PTR_ERR(ret) != -EAGAIN && PTR_ERR(ret) != -EBUSY)
 			nvkm_error(&gsp->subdev, "RM_ALLOC: 0x%x\n", rpc->status);
 	} else {
 		ret = repc ? rpc->params : NULL;
@@ -660,7 +660,7 @@ r535_gsp_rpc_rm_ctrl_push(struct nvkm_gsp_object *object, void **argv, u32 repc)
 
 	if (rpc->status) {
 		ret = r535_rpc_status_to_errno(rpc->status);
-...
2016 Jun 08
4
[PATCH 0/4] secboot: be more resilient on errors
This series fixes two cases where behavior on secure boot errors could be
improved:
1) Patch 2 propages secure-boot errors from GR init, making sure initialization
   fails as it should. Failure to do so results in a black screen during boot,
   as reported in FD bug 94990.
2) Patches 3-4 make the absence of required secure firmware files a non-fatal
   error. The previous behavior was to give up
2016 Nov 02
0
[PATCH v3 13/15] secboot: remove ls_ucode_mgr
...gt;ls_blob->addr;
-		wpr_size = mgr.wpr_size;
+		wpr_size = image_wpr_size;
 	/*
 	 * But if the WPR region is set by the bootloader, it is illegal for
 	 * the HS blob to be larger than this region.
 	 */
-	} else if (mgr.wpr_size > wpr_size) {
+	} else if (image_wpr_size > wpr_size) {
 		nvkm_error(subdev, "WPR region too small for FW blob!\n");
-		nvkm_error(subdev, "required: %dB\n", mgr.wpr_size);
+		nvkm_error(subdev, "required: %dB\n", image_wpr_size);
 		nvkm_error(subdev, "available: %dB\n", wpr_size);
 		ret = -ENOSPC;
 		goto cleanup;
 	}
 
 	/...
2017 Aug 06
1
[PATCH] drm/nouveau/mpeg: print more debug info when rejecting dma objects
...rd32(device, 0x700000 + inst);
 	u32 dma1 = nvkm_rd32(device, 0x700004 + inst);
@@ -132,8 +134,11 @@ nv31_mpeg_mthd_dma(struct nvkm_device *device, u32 mthd, u32 data)
 	u32 size = dma1 + 1;
 
 	/* only allow linear DMA objects */
-	if (!(dma0 & 0x00002000))
+	if (!(dma0 & 0x00002000)) {
+		nvkm_error(subdev, "inst %08x dma0 %08x dma1 %08x dma2 %08x\n",
+			   inst, dma0, dma1, dma2);
 		return false;
+	}
 
 	if (mthd == 0x0190) {
 		/* DMA_CMD */
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv40.c b/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv40.c
index 16de5bd94b14..b5ec7c504...
2015 Oct 12
2
fixing GDDR5 reclocking on kepler cards
this is my first patch on the list through git send-mail and I hope everything
is set up right, sorry for the noise here, but I don't want to try with an
empty mail :)
as the subject already says, this patch fixes one of the more serious issues
while reclocking gddr5 on kepler cards. It works for me and for a bunch of others
I met on IRC.
Karol Herbst (1):
  pll/gk104: fix PLL instability
2015 Nov 14
0
[PATCH] pmu: fix queued messages while getting no IRQ
...ex);
+		if (wait_event_timeout(pmu->recv.wait, (pmu->recv.process == 0), msecs_to_jiffies(1000)) != 0) {
+			reply[0] = pmu->recv.data[0];
+			reply[1] = pmu->recv.data[1];
+			mutex_unlock(&subdev->mutex);
+			return 0;
+		} else {
+			u32 addr = nvkm_rd32(device, 0x10a4cc);
+			nvkm_error(subdev, "wait on reply timed out\n");
+
+			if (addr != nvkm_rd32(device, 0x10a4c8)) {
+				nvkm_error(subdev, "found queued message without getting an interrupt\n");
+				schedule_work(&pmu->recv.work);
+				if (wait_event_timeout(pmu->recv.wait, (pmu->recv.process...
2017 Apr 10
0
[PATCH 01/11] nvkm/ramgf100: Get rid of (size, data) pairs for rammap, ramcfg, timing
...er, &rammap.size,
-				      &cnt, &ramcfg.size, &cfg);
-	if (!rammap.data || ver != 0x10 || rammap.size < 0x0e) {
+	data = nvbios_rammapEm(bios, freq / 1000, &ver, &hdr,
+				      &cnt, &len, &next->bios);
+	if (!data || ver != 0x10 || len < 0x0e) {
 		nvkm_error(subdev, "invalid/missing rammap entry\n");
 		return -EINVAL;
 	}
@@ -159,23 +160,23 @@ gf100_ram_calc(struct nvkm_ram *base, u32 freq)
 		return -EINVAL;
 	}
 
-	ramcfg.data = rammap.data + rammap.size + (strap * ramcfg.size);
-	if (!ramcfg.data || ver != 0x10 || ramcfg.size < 0x0e) {...
2016 Nov 05
0
[PATCH v2] gr: fallback to legacy paths during firmware lookup
...cmp(fwname, "gpccs_inst"))
> +		fwname = "fuc41ac";
> +	else if (!strcmp(fwname, "gpccs_data"))
> +		fwname = "fuc41ad";
> +	else
> +		fwname = NULL;
> +
> +	/* nope, let's just return the error we got */
> +	if (!fwname) {
> +		nvkm_error(subdev, "failed to load %s\n", fwname);
Due to the rename from legacy_fwname -> fwname, this can be NULL.
What about replacing the else branch above by this block?
Kind regards,
Peter
> +		return ret;
> +	}
> +
> +	/* yes, try to load from the legacy path */
> +	nvkm_...
2024 Oct 03
1
[PATCH 2/2] [v8] drm/nouveau: expose GSP-RM logging buffers via debugfs
...ze);
> +
> +	if (class != NV_GSP_MSG_EVENT_UCODE_LIBOS_CLASS_PMU) {
> +		nvkm_warn(subdev,
> +			  "received libos print from unknown class 0x%x\n",
> +			  class);
> +		return -ENOMSG;
> +	}
> +
> +	if (rpc->libos_print_buf_size > GSP_PAGE_SIZE) {
> +		nvkm_error(subdev, "libos print is too large (%u bytes)\n",
> +			   rpc->libos_print_buf_size);
> +		return -E2BIG;
> +	}
> +
> +	memcpy(gsp->blob_pmu.data, rpc->libos_print_buf, rpc->libos_print_buf_size);
> +
> +	return 0;
> +}
> +
> +/**
> + * create_...
2015 Nov 14
0
[PATCH v3] pmu: fix queued messages while getting no IRQ
...reply[2])
+{
+	struct nvkm_subdev *subdev = &pmu->subdev;
+	struct nvkm_device *device = subdev->device;
+	unsigned long jiffies = msecs_to_jiffies(1000);
+
+	if (!wait_event_timeout(pmu->recv.wait, (pmu->recv.process == 0), jiffies)) {
+		u32 addr = nvkm_rd32(device, 0x10a4cc);
+		nvkm_error(subdev, "wait on reply timed out\n");
+
+		if (addr == nvkm_rd32(device, 0x10a4c8))
+			return -ETIMEDOUT;
+
+		nvkm_error(subdev, "found queued message without getting an interrupt\n");
+		schedule_work(&pmu->recv.work);
+
+		if (!wait_event_timeout(pmu->recv.wait, (p...
2018 Jul 24
2
[PATCH] drm/nouveau/secboot/acr: fix memory leak
...oot/acr_r352.c
index d02e183..5c14d6a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/acr_r352.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/acr_r352.c
@@ -801,6 +801,7 @@ acr_r352_load(struct nvkm_acr *_acr, struct nvkm_falcon *falcon,
 		bl = acr->hsbl_unload_blob;
 	} else {
 		nvkm_error(_acr->subdev, "invalid secure boot blob!\n");
+		kfree(bl_desc);
 		return -EINVAL;
 	}
 
-- 
2.7.4
2024 Jul 29
1
[PATCH 2/2] [v6] drm/nouveau: expose GSP-RM logging buffers via debugfs
...s\n",
+		   class, rpc->libos_print_buf_size);
+
+	if (class != NV_GSP_MSG_EVENT_UCODE_LIBOS_CLASS_PMU) {
+		nvkm_warn(subdev,
+			  "received libos print from unknown class 0x%x\n",
+			  class);
+		return -ENOMSG;
+	}
+
+	if (rpc->libos_print_buf_size > GSP_PAGE_SIZE) {
+		nvkm_error(subdev, "libos print is too large (%u bytes)\n",
+			   rpc->libos_print_buf_size);
+		return -E2BIG;
+	}
+
+	memcpy(gsp->blob_pmu.data, rpc->libos_print_buf, rpc->libos_print_buf_size);
+
+	return 0;
+}
+
+/**
+ * r535_gsp_libos_debugfs_init - create logging debugfs entries
+...