[Intel-gfx] force wake reference counting (another try)

Ben Widawsky ben at bwidawsk.net
Wed Apr 13 08:35:54 CEST 2011


On Wed, Apr 13, 2011 at 06:52:15AM +0100, Chris Wilson wrote:
> On Tue, 12 Apr 2011 18:31:51 -0700, Ben Widawsky <ben at bwidawsk.net> wrote:
> > I think we have no other option since the first thing that
> > i915_driver_irq_handler() does is read IIR, which according to the limited
> > knowledge I have requires forcewake.
> 
> That makes no sense at all. :(
>
> But then I'm only a lowly sw engineer,
> -Chris

This was my initial thought as well, but as I was saying on IRC... my
only guess is they assumed that the time to service the interrupt is
less than the time it takes to powerdown, and that the GT must be awake
to send an interrupt. My other guess is I've got this all wrong.

However if we go with the former:
x = interrupt latency
y = interrupt servicing
z = time before the GT powers down
they assume (x + y) < z

And we need to remember that y is only enough time to get in and set the
forceawake bit before the GT has powered down. So this actually seems
like a reasonable thing to assume since I think powerdown time is in
microsecond granularity.

To what Keith said just above this, it does seem there are some
registers in the <0x40000 range which are special, but I don't see IIR
there. I am surprised by this as well, and I'd suggest we try to find
people to verify it.

Ben



More information about the Intel-gfx mailing list