[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