[Intel-gfx] [PATCH] drm/i915: Update write_domains on active list after flush.

Adam Lantos hege at playma.org
Tue Feb 9 11:58:43 CET 2010


Hi,

On Sun, Feb 7, 2010 at 6:39 PM, Adam Lantos <hege at playma.org> wrote:
> On Sun, Feb 7, 2010 at 4:20 PM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>> Before changing the status of a buffer with a pending write we will await
>> upon a new flush for that buffer. So we can take advantage of any flushes
>> posted whilst the buffer is active and pending processing by the GPU, by
>> clearing its write_domain and updating its last_rendering_seqno -- thus
>> saving a potential flush in deep queues and improves flushing behaviour
>> upon eviction for both GTT space and fences.
>>
>> In order to reduce the time spent searching the active list for matching
>> write_domains, we move those to a separate list whose elements are
>> the buffers belong to the active/flushing list with pending writes.
>>
>> Orignal patch by Chris Wilson <chris at chris-wilson.co.uk>, forward-ported
>> by me.
>>
>> In addition to better performance, this also fixes a real bug. Before
>> this changes, i915_gem_evict_everything didn't work as advertised. When
>> the gpu was actually busy and processing request, the flush and subsequent
>> wait would not move active and dirty buffers to the inactive list, but
>> just to the flushing list. Which triggered the BUG_ON at the end of this
>> function. With the more tight dirty buffer tracking, all currently busy and
>> dirty buffers get moved to the inactive list by one i915_gem_flush operation.
>>
>> I've left the BUG_ON I've used to prove this in there.
>>
>> References:
>>  Bug 25911 - 2.10.0 causes kernel oops and system hangs
>>  http://bugs.freedesktop.org/show_bug.cgi?id=25911
>>
>>  Bug 26101 - [i915] xf86-video-intel 2.10.0 (and git) triggers kernel oops
>>              within seconds after login
>>  http://bugs.freedesktop.org/show_bug.cgi?id=26101
>>
>> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>> ---
>>
>> Same patch rebased to apply to .32-stable (and linus mainlin, too).
>> Compile-tested only.
>
> This patch seems to fix the BUG_ON in my case. However, I still have
> lots of these:
>

It's been running for almost two days without errors, thanks. This
patch should be in -rc8 :)

Tested-by: Adam Lantos <hege at playma.org>

cheers,
 Adam



More information about the Intel-gfx mailing list