<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/drivers/gpu/drm/i915/intel_ringbuffer.h, branch linux-4.1.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.1.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-4.1.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2015-08-03T16:29:09Z</updated>
<entry>
<title>drm/i915: Snapshot seqno of most recently submitted request.</title>
<updated>2015-08-03T16:29:09Z</updated>
<author>
<name>Tomas Elf</name>
<email>tomas.elf@intel.com</email>
</author>
<published>2015-07-09T14:30:57Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=e639564b6050d71ca2b4e575685b6f7d3642d18a'/>
<id>urn:sha1:e639564b6050d71ca2b4e575685b6f7d3642d18a</id>
<content type='text'>
commit 94f7bbe1509731bdef651d7fb235b2c31fb23be8 upstream.

The hang checker needs to inspect whether or not the ring request list is empty
as well as if the given engine has reached or passed the most recently
submitted request. The problem with this is that the hang checker cannot grab
the struct_mutex, which is required in order to safely inspect requests since
requests might be deallocated during inspection. In the past we've had kernel
panics due to this very unsynchronized access in the hang checker.

One solution to this problem is to not inspect the requests directly since
we're only interested in the seqno of the most recently submitted request - not
the request itself. Instead the seqno of the most recently submitted request is
stored separately, which the hang checker then inspects, circumventing the
issue of synchronization from the hang checker entirely.

This fixes a regression introduced in

commit 44cdd6d219bc64f6810b8ed0023a4d4db9e0fe68
Author: John Harrison &lt;John.C.Harrison@Intel.com&gt;
Date:   Mon Nov 24 18:49:40 2014 +0000

    drm/i915: Convert 'ring_idle()' to use requests not seqnos

v2 (Chris Wilson):
- Pass current engine seqno to ring_idle() from i915_hangcheck_elapsed() rather
than compute it over again.
- Remove extra whitespace.

Issue: VIZ-5998
Signed-off-by: Tomas Elf &lt;tomas.elf@intel.com&gt;
Reviewed-by: Chris Wilson &lt;chris@chris-wilson.co.uk&gt;
[danvet: Add regressing commit citation provided by Chris.]
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>drm/i915: add frontbuffer tracking to FBC</title>
<updated>2015-03-17T21:29:56Z</updated>
<author>
<name>Paulo Zanoni</name>
<email>paulo.r.zanoni@intel.com</email>
</author>
<published>2015-02-13T19:23:46Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=dbef0f15b5c83231dacb214dbf9a6dba063ca21c'/>
<id>urn:sha1:dbef0f15b5c83231dacb214dbf9a6dba063ca21c</id>
<content type='text'>
Kill the blt/render tracking we currently have and use the frontbuffer
tracking infrastructure.

Don't enable things by default yet.

v2: (Rodrigo) Fix small conflict on rebase and typo at subject.
v3: (Paulo) Rebase on RENDER_CS change.
v4: (Paulo) Rebase.
v5: (Paulo) Simplify: flushes don't have origin (Daniel).
            Also rebase due to patch order changes.

Signed-off-by: Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;
Signed-off-by: Paulo Zanoni &lt;paulo.r.zanoni@intel.com&gt;
Reviewed-by: Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Rename 'flags' to 'dispatch_flags' for better code reading</title>
<updated>2015-02-25T21:43:29Z</updated>
<author>
<name>John Harrison</name>
<email>John.C.Harrison@Intel.com</email>
</author>
<published>2015-02-13T11:48:10Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=8e004efc16541e7f6e35673449195db5d1f92f40'/>
<id>urn:sha1:8e004efc16541e7f6e35673449195db5d1f92f40</id>
<content type='text'>
There is a flags word that is passed through the execbuffer code path all the
way from initial decoding of the user parameters down to the very final dispatch
buffer call. It is simply called 'flags'. Unfortuantely, there are many other
flags words floating around in the same blocks of code. Even more once the GPU
scheduler arrives.

This patch makes it more obvious exactly which flags word is which by renaming
'flags' to 'dispatch_flags'. Note that the bit definitions for this flags word
already have an 'I915_DISPATCH_' prefix on them and so are not quite so
ambiguous.

OTC-Jira: VIZ-1587
Signed-off-by: John Harrison &lt;John.C.Harrison@Intel.com&gt;
[danvet: Resolve conflict with Chris' rework of the bb parsing.]
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Shift driver's HWSP usage out of reserved range</title>
<updated>2015-02-24T10:50:32Z</updated>
<author>
<name>Thomas Daniel</name>
<email>thomas.daniel@intel.com</email>
</author>
<published>2015-02-18T11:48:21Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=b07da53c79ba6480759c1ad352a96b96c7b97c7a'/>
<id>urn:sha1:b07da53c79ba6480759c1ad352a96b96c7b97c7a</id>
<content type='text'>
As of Gen6, the general purpose area of the hardware status page has shrunk and
now begins at dword 0x30.  i915 driver uses dword 0x20 to store the seqno which
is now reserved.  So shift our HWSP dwords up into the general purpose range
before this bites us.

Note that all available documentation just says this is reserved
without going into details about what it's used for.

Signed-off-by: Thomas Daniel &lt;thomas.daniel@intel.com&gt;
Reviewed-by: Dave Gordon &lt;david.s.gordon@intel.com&gt;
[danvet: Add clarification from Thomas that unfortunately Bspec is
silent on what "reserverd" precisely means.]
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Make intel_ring_setup_status_page() static</title>
<updated>2015-02-13T22:28:27Z</updated>
<author>
<name>Damien Lespiau</name>
<email>damien.lespiau@intel.com</email>
</author>
<published>2015-02-10T19:32:17Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=af75f2691870c575030bbd42adf17457afbe7242'/>
<id>urn:sha1:af75f2691870c575030bbd42adf17457afbe7242</id>
<content type='text'>
This function is only used in intel_ringbuffer.c, so restrict it to that
file. The function was moved around to avoid a forward declaration and
group it with its user.

Signed-off-by: Damien Lespiau &lt;damien.lespiau@intel.com&gt;
[danvet: Squash in fixup from Wu Fengguang.]
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Remove FIXME_lrc_ctx backpointer</title>
<updated>2015-01-27T08:50:53Z</updated>
<author>
<name>Nick Hoath</name>
<email>nicholas.hoath@intel.com</email>
</author>
<published>2015-01-15T13:10:38Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=21076372afe711072b9a447f22a098691dd0b2cb'/>
<id>urn:sha1:21076372afe711072b9a447f22a098691dd0b2cb</id>
<content type='text'>
The first pass implementation of execlists required a backpointer to the context to be held
in the intel_ringbuffer. However the context pointer is available higher in the call stack.
Remove the backpointer from the ring buffer structure and instead pass it down through the
call stack.

v2: Integrate this changeset with the removal of duplicate request/execlist queue item members.
v3: Rebase
v4: Rebase. Remove passing of context when the request is passed.

Signed-off-by: Nick Hoath &lt;nicholas.hoath@intel.com&gt;
Reviewed-by: Thomas Daniel &lt;thomas.daniel@intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Removed duplicate members from submit_request</title>
<updated>2015-01-27T08:50:52Z</updated>
<author>
<name>Nick Hoath</name>
<email>nicholas.hoath@intel.com</email>
</author>
<published>2015-01-15T13:10:37Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=72f95afa5faaf899f7344879b6ccd5f0cb271b28'/>
<id>urn:sha1:72f95afa5faaf899f7344879b6ccd5f0cb271b28</id>
<content type='text'>
Where there were duplicate variables for the tail, context and ring (engine)
in the gem request and the execlist queue item, use the one from the request
and remove the duplicate from the execlist queue item.

Issue: VIZ-4274

v1: Rebase
v2: Fixed build issues. Keep separate postfix &amp; tail pointers as these are
used in different ways. Reinserted missing full tail pointer update.

Signed-off-by: Nick Hoath &lt;nicholas.hoath@intel.com&gt;
Reviewed-by: Thomas Daniel &lt;thomas.daniel@intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: s/init()/init_hw()/ in intel_engine_cs</title>
<updated>2014-12-03T08:35:27Z</updated>
<author>
<name>Daniel Vetter</name>
<email>daniel.vetter@ffwll.ch</email>
</author>
<published>2014-11-19T23:33:04Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=ecfe00d802d47af797f09cf8c88ad5ee7aa8d11b'/>
<id>urn:sha1:ecfe00d802d47af797f09cf8c88ad5ee7aa8d11b</id>
<content type='text'>
This is (mostly, some exceptions that need fixing) the hw setup
function which starts the ring. And not the function which allocates
all the resources.

Make this clear by giving it a better name.

Signed-off-by: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Reviewed-by: Dave Gordon &lt;david.s.gordon@intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Consolidate ring freespace calculations</title>
<updated>2014-12-03T08:35:26Z</updated>
<author>
<name>Dave Gordon</name>
<email>david.s.gordon@intel.com</email>
</author>
<published>2014-11-27T11:22:49Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=ebd0fd4bef6384dd422d6480b0d5b10b7bfe829a'/>
<id>urn:sha1:ebd0fd4bef6384dd422d6480b0d5b10b7bfe829a</id>
<content type='text'>
There are numerous places in the code where the driver's idea of
how much space is left in a ring is updated using the driver's
latest notions of the positions of 'head' and 'tail' for the ring.
Among them are some that update one or both of these values before
(re)doing the calculation. In particular, there are four different
places in the code where 'last_retired_head' is copied to 'head'
and then set to -1; and two of these do not have a guard to check
that it has actually been updated since last time it was consumed,
leaving the possibility that the dummy -1 can be transferred from
'last_retired_head' to 'head', causing the space calculation to
produce 'impossible' results (previously seen on Android/VLV).

This code therefore consolidates all the calculation and updating of
these values, such that there is only one place where the ring space
is updated, and it ALWAYS uses (and consumes) 'last_retired_head' if
(and ONLY if) it has been updated since the last call.

Signed-off-by: Dave Gordon &lt;david.s.gordon@intel.com&gt;
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
<entry>
<title>drm/i915: Convert 'trace_irq' to use requests rather than seqnos</title>
<updated>2014-12-03T08:35:24Z</updated>
<author>
<name>John Harrison</name>
<email>John.C.Harrison@Intel.com</email>
</author>
<published>2014-11-24T18:49:39Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=581c26e8a26482eb9d8072a35978034e2dd16b9d'/>
<id>urn:sha1:581c26e8a26482eb9d8072a35978034e2dd16b9d</id>
<content type='text'>
Updated the trace_irq code to use requests instead of seqnos. This includes
reference counting the request object to ensure it sticks around when required.
Note that getting access to the reference counting functions means moving the
inline i915_trace_irq_get() function from intel_ringbuffer.h to i915_drv.h.

For: VIZ-4377
Signed-off-by: John Harrison &lt;John.C.Harrison@Intel.com&gt;
Reviewed-by: Thomas Daniel &lt;Thomas.Daniel@intel.com&gt;
[danvet: Resolve conflict due to shuffled merge order.]
Signed-off-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
</content>
</entry>
</feed>
