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
+...