[Intel-gfx] [PATCH] drm/i915/execlists: Disable preemption under GVT
Chris Wilson
chris at chris-wilson.co.uk
Wed Jul 10 10:13:22 UTC 2019
Quoting Zhang, Xiaolin (2019-07-10 11:04:06)
> On 07/09/2019 05:12 PM, Chris Wilson wrote:
> > Preempt-to-busy uses a GPU semaphore to enforce an idle-barrier across
> > preemption, but mediated gvt does not fully support semaphores.
> >
> > v2: Fiddle around with the flags and settle on using has-semaphores for
> > the core bits so that we retain the ability to preempt our own
> > semaphores.
> Chris,
> With this patch, vgpu guest can boot up successfully with BAT test passed.
> But I want to point out there is other GPU hang issue pop up after vgpu
> guest boot issue addressed. I am not pretty sure is it related or not.
> Basically it is easy to trigger with glxears with vblank_mode 0 and the
> GPU hang time is random and the call trace is below: (guest kernel log
> is attached in case it is useful.).
> [ 1192.680497] Asynchronous wait on fence i915:compiz[1866]:b30 timed
> out (hint:intel_atomic_commit_ready+0x0/0x50 [i915])
> [ 1193.512989] hangcheck rcs0
> [ 1193.513650] hangcheck Awake? 4
> [ 1193.514299] hangcheck Hangcheck: 9986 ms ago
> [ 1193.515071] hangcheck Reset count: 0 (global 0)
> [ 1193.515854] hangcheck Requests:
> [ 1193.516410] hangcheck RING_START: 0x00000000
> [ 1193.517138] hangcheck RING_HEAD: 0x00003198
> [ 1193.517876] hangcheck RING_TAIL: 0x00003198
> [ 1193.518611] hangcheck RING_CTL: 0x00000000
> [ 1193.519380] hangcheck RING_MODE: 0x00000200 [idle]
> [ 1193.520149] hangcheck RING_IMR: fffffefe
> [ 1193.520799] hangcheck ACTHD: 0x00000000_000a6650
> [ 1193.521545] hangcheck BBADDR: 0x00000000_00000000
> [ 1193.522321] hangcheck DMA_FADDR: 0x00000000_00000000
> [ 1193.523392] hangcheck IPEIR: 0x00000000
> [ 1193.524171] hangcheck IPEHR: 0x00000000
> [ 1193.525050] hangcheck Execlist status: 0x00040012 00000003, entries 6
> [ 1193.526049] hangcheck Execlist CSB read 5, write 5, tasklet
> queued? no (enabled)
> [ 1193.527154] hangcheck Active[0: ring:{start:dff03000,
> hwsp:dff661c0, seqno:00012175}, rq: 1b:12178- prio=4097 @ 11649ms:
> glxgears[2160]
> [ 1193.528852] hangcheck Pending[0] ring:{start:dff03000,
> hwsp:dff661c0, seqno:00012175}, rq: 1b:12178- prio=4097 @ 11649ms:
> glxgears[2160]
> [ 1193.532515] hangcheck Pending[1] ring:{start:dff39000,
Based on the above, that would be gvt not responding to the ELSP. Enable
tracing and force a dump, you should see the ELSP write with no
corresponding ack, and the above shows the engine idle.
Perhaps most intriguing is RING_START/CTL being off, but that can happen
when idle so ~o~
-Chris
More information about the Intel-gfx
mailing list