search for: nvkm_error

Displaying 20 results from an estimated 173 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 +...