> Emil Velikov <[email protected]> hat am 14. November 2015 um 23:44 > geschrieben: > > On 14 November 2015 at 19:51, Karol Herbst <[email protected]> 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 <[email protected]> > > --- > > 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 ? On a second thought, I don't want to use those timer functions at all, because they still depend on the gpu being in a sane state and I want to abort whenever something fishy is going on, too. I just want to let this while loop timeout after a second or so. > > -Emil
Karol _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
