drm/nouveau: gm20b, gp10b: Fix Falcon bootstrapping
Subsystems (4)
PATCH 1/1 drm/nouveau: gm20b, gp10b: Fix Falcon bootstrapping
From: Thierry Reding <[email protected]>
The low-level Falcon bootstrapping callbacks are expected to return 0 on success or a negative error code on failure. However, the implementation on Tegra returns the ID or mask of the Falcons that were bootstrapped on success, thus breaking the calling code, which treats this as failure.
Fix this by making sure we only return 0 or a negative error code, just like the code for discrete GPUs does.
Fixes 86ce2a71539c ("drm/nouveau/flcn/cmdq: move command generation to subdevs")
Signed-off-by Thierry Reding <[email protected]>
---
Note that this is against Ben's tree, which should only hit linux-next tomorrow, so most people should not be hitting this yet.
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c | 9 +++++++-- drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-)
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +7 -2
@@ -52,8 +52,13 @@ gm20b_pmu_acr_bootstrap_falcon(struct nvkm_falcon *falcon, ret =nvkm_falcon_cmdq_send (pmu->hpq, &cmd.cmd.hdr, gm20b_pmu_acr_bootstrap_falcon_cb, &pmu->subdev,msecs_to_jiffies (1000 )); -if (ret >=0 && ret != cmd.falcon_id) - ret = -EIO ; +if (ret >=0 ) { +if (ret != cmd.falcon_id) + ret = -EIO ; +else + ret =0 ; + } +return ret; }
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c +7 -2
@@ -52,8 +52,13 @@ gp10b_pmu_acr_bootstrap_multiple_falcons(struct nvkm_falcon *falcon, u32 mask) ret =nvkm_falcon_cmdq_send (pmu->hpq, &cmd.cmd.hdr, gp10b_pmu_acr_bootstrap_multiple_falcons_cb, &pmu->subdev,msecs_to_jiffies (1000 )); -if (ret >=0 && ret != cmd.falcon_mask) - ret = -EIO ; +if (ret >=0 ) { +if (ret != cmd.falcon_mask) + ret = -EIO ; +else + ret =0 ; + } +return ret; }
Signature · 1 line
2.24.1