[Nouveau] [PATCH v2] pmu: use nvkm_msec instead of do while
Emil Velikov
emil.l.velikov at gmail.com
Sat Nov 14 14:44:40 PST 2015
On 14 November 2015 at 19:51, Karol Herbst <nouveau at karolherbst.de> wrote:
> I hit this while loop in an error state of the gpu
>
> v2: unlock mutex only if reply == true
>
> Signed-off-by: Karol Herbst <nouveau at karolherbst.de>
> ---
> drm/nouveau/nvkm/subdev/pmu/base.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drm/nouveau/nvkm/subdev/pmu/base.c b/drm/nouveau/nvkm/subdev/pmu/base.c
> index 81a5583..eb248fd 100644
> --- a/drm/nouveau/nvkm/subdev/pmu/base.c
> +++ b/drm/nouveau/nvkm/subdev/pmu/base.c
> @@ -100,9 +100,16 @@ nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2],
> }
>
> /* acquire data segment access */
> - do {
> + nvkm_wr32(device, 0x10a580, 0x00000001);
> + if (nvkm_msec(device, 2000,
> + if (nvkm_rd32(device, 0x10a580) == 0x00000001)
> + break;
> nvkm_wr32(device, 0x10a580, 0x00000001);
> - } while (nvkm_rd32(device, 0x10a580) != 0x00000001);
> + ) < 0) {
> + if (reply)
> + mutex_unlock(&subdev->mutex);
> + return -EBUSY;
> + }
As you're here might as well use the new nvkm_wait_Xsec macros ?
-Emil
More information about the Nouveau
mailing list