On Thu, 8 Sep 2011 14:00:20 +0200, Daniel Vetter <[email protected]> wrote: > Quoting Chris Wilson's more concise description: > > "Ah I think I see the problem. As you point out we only mask the current > interrupt received, so that if we have a task pending (and so IMR != 0) we > actually unmask the pending interrupt and so could receive it again before the > tasklet is finally kicked off by the grumpy scheduler." > > We need the hw to issue PM interrupts A, B, A while the scheduler is hating us > and refuses to run the rps work item. On receiving PM interrupt A we hit the > WARN because > > dev_priv->pm_iir == PM_A | PM_B > > Also add a posting read as suggested by Chris to ensure proper ordering of the > writes to PMIMR and PMIIR. Just in case somebody weakens write ordering. > > Signed-off-by: Daniel Vetter <[email protected]> > Reviewed-by: Ben Widawsky <[email protected]>
Reviewed-by: Chris Wilson <[email protected]> The bug Daniel found here is not that we do the reg write two lines too early, but that we were writing the wrong value into the IMR. The effect was to unmask an already pending IRQ and so we could hit the WARN. Other than the WARN, the only other side-effect would be that we would kick off more work functions than required - the bug should not be affecting system stability... -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
