This is a lockless version of the exisiting psr_wait_for_idle().
We want to wait for PSR to idle out inside intel_pipe_update_start.
At the time of a pipe update, we should never race with any psr
enable or disable code, which is a part of crtc enable/disable. So,
we can live w/o taking any psr
The PIPEDSL freezes on PSR entry and if PSR hasn't fully exited, then
the pipe_update_start call schedules itself out to check back later.
On ChromeOS-4.4 kernel, which is fairly up-to-date w.r.t drm/i915 but
lags w.r.t core kernel code, hot plugging an external display triggers
tons of
== Series Details ==
Series: drm/i915/psr: Kill useless function pointers.
URL : https://patchwork.freedesktop.org/series/45373/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4376 -> Patchwork_9418 =
== Summary - WARNING ==
Minor unknown changes coming with
== Series Details ==
Series: drm/i915/psr: Kill useless function pointers.
URL : https://patchwork.freedesktop.org/series/45373/
State : warning
== Summary ==
$ dim sparse origin/drm-tip
Commit: drm/i915/psr: Kill useless function pointers.
At some point we introduced the function pointers
on PSR code to help with VLV/CHV separation logic
because it had a different HW implementation from PSR.
Since all converged to HSW PSR and we dropped the
VLV/CHV support, let's also kill the useless function
pointers and leave the code cleaner.
On Mon, Jun 25, 2018 at 05:36:32PM +0200, Daniel Vetter wrote:
>
> > The binding with i915 from HD-audio controller is done in an async
> > work invoked from the probe callback. It makes harder to deal with
> > EPROBEDEFER.
> >
> > IMO, a saner way would be to rather wait for the component
== Series Details ==
Series: drm/i915: Fix assert_plane() warning on bootup with external display
(rev3)
URL : https://patchwork.freedesktop.org/series/44909/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4376_full -> Patchwork_9417_full =
== Summary - WARNING ==
Minor
== Series Details ==
Series: drm/i915: Fix assert_plane() warning on bootup with external display
(rev3)
URL : https://patchwork.freedesktop.org/series/44909/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4376 -> Patchwork_9417 =
== Summary - SUCCESS ==
No regressions
What is the status of this patch?
I am hitting this issue with one of the DP 1.4 sinks where the correct
values of DPCD are present at this new offset of 0x2200 else I see
bad values for REV and Max_link_rate etc..
So we absolutely need this for DP 1.4 sinks.
Manasi
On Wed, May 16, 2018 at
On KBL, WHL RVPs, booting up with an external display connected, triggers
below warning, when the BiOS brings up the external display too.
This warning is not seen during hotplug.
[3.615226] [ cut here ]
[3.619829] plane 1A assertion failure (expected on, current
On KBL, WHL RVPs, booting up with an external display connected, triggers
below warning, when the BiOS brings up the external display too.
This warning is not seen during hotplug.
[3.615226] [ cut here ]
[3.619829] plane 1A assertion failure (expected on, current
On Sun, Jun 24, 2018 at 10:47:40PM -0700, Dhinakaran Pandiyan wrote:
> Commit 5422b37c907e ("drm/i915/psr: Kill delays when activating psr
> back.") switched from delayed work to the plain variant and while doing so
> removed the check for work_busy() before scheduling a PSR activation.
> This
On Sun, Jun 24, 2018 at 10:47:41PM -0700, Dhinakaran Pandiyan wrote:
> Depending whether PSR1 or PSR2 was configured, we print a warning if the
> corresponding control mmio indicated PSR was erroneously enabled. As
> Chris pointed out, it makes more sense to check for both the mmio's
> since we
On Thu, 2018-06-21 at 21:44 +0300, Imre Deak wrote:
> So far we got an AUX power domain reference only for the duration of
> DP
> AUX transfers. However, the following suggests that we also need
> these
> for main link functionality:
> - The specification doesn't state whether it's needed or not
Em Qua, 2018-06-20 às 14:36 -0700, Anusha Srivatsa escreveu:
> This patch addresses Interrupts from south display engine (SDE).
>
> ICP has two registers - SHOTPLUG_CTL_DDI and SHOTPLUG_CTL_TC.
> Introduce these registers and their intended values.
>
> Introduce icp_irq_handler().
>
> v2:
> -
On Mon, Jun 25, 2018 at 01:56:24PM +0100, Chris Wilson wrote:
> Quoting Tarun Vyas (2018-06-25 08:09:18)
> > The PIPEDSL freezes on PSR entry and if PSR hasn't fully exited, then
> > the pipe_update_start call schedules itself out to check back later.
> >
> > On ChromeOS-4.4 kernel, which is
== Series Details ==
Series: series starting with [1/2] drm/i915/tracepoints: Remove
i915_request_execute tracepoint
URL : https://patchwork.freedesktop.org/series/45352/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4375_full -> Patchwork_9415_full =
== Summary - WARNING
Quoting Daniel Vetter (2018-06-25 17:07:54)
> On Tue, May 29, 2018 at 09:15:22AM +0200, Daniel Vetter wrote:
> > This reverts commit c5cab0d5fc9aa1cf14c7bc7ea88c80155e46e22f.
> >
> > Jani believes the noise is gone, so let's see whether it's really
> > gone, before we drop this hack.
> >
> > Cc:
Quoting Tvrtko Ursulin (2018-06-25 18:25:46)
> From: Tvrtko Ursulin
>
> This Kconfig option was added to protect the implementation specific
> internals from user expectations but so far it was mostly hassle.
>
> Remove it so it is possible to debug request submission on any kernel
> anywhere.
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev4)
URL : https://patchwork.freedesktop.org/series/45263/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373_full -> Patchwork_9413_full =
== Summary - WARNING ==
Minor unknown changes
On Mon, 2018-06-25 at 14:10 +0300, Ville Syrjälä wrote:
> On Thu, Jun 21, 2018 at 06:26:04PM -0700, Dhinakaran Pandiyan wrote:
> >
> > On Fri, 2018-06-15 at 19:49 +0300, Ville Syrjala wrote:
> > >
> > > From: Ville Syrjälä
> > >
> > > Don't advertize non-exisiting crtcs in the encoder
== Series Details ==
Series: series starting with [RFC,1/2] drm/i915: Keep a list of probed devices
URL : https://patchwork.freedesktop.org/series/45353/
State : failure
== Summary ==
Applying: drm/i915: Keep a list of probed devices
Applying: drm/i915/tracing: Enable user interrupts while
== Series Details ==
Series: series starting with [1/2] drm/i915/tracepoints: Remove
i915_request_execute tracepoint
URL : https://patchwork.freedesktop.org/series/45352/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4375 -> Patchwork_9415 =
== Summary - WARNING ==
On Sun, 2018-06-24 at 09:54 +0100, Chris Wilson wrote:
> Quoting Dhinakaran Pandiyan (2018-06-23 05:45:06)
> >
> > commit 5422b37c907e ("drm/i915/psr: Kill delays when activating psr
> > back.") switched from delayed work to the plain variant and while
> > doing so
> > remove the check for
From: Tvrtko Ursulin
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/i915_drv.c | 12
drivers/gpu/drm/i915/i915_drv.h | 5 +
2 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index
From: Tvrtko Ursulin
Keep the user interrupt enabled while intel_engine_notify tracepoint is
enabled.
We use tracepoint (de)registration callbacks to enable user interrupts on
all devices (future proofing and avoiding ugly global pointers) and all
engines.
Premise is that if someone is
From: Tvrtko Ursulin
This Kconfig option was added to protect the implementation specific
internals from user expectations but so far it was mostly hassle.
Remove it so it is possible to debug request submission on any kernel
anywhere.
This adds around 4k to default i915.ko build but should
From: Tvrtko Ursulin
Long time ago execute was a fence and it made sense to have a tracepoint
corresponding to it. Nowadays it completely aligns either with request_
submit or request_in tracepoints and so is redundant.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/i915_request.c |
== Series Details ==
Series: series starting with [1/2] drm/i915: Block enabling FBC until flips
have been completed
URL : https://patchwork.freedesktop.org/series/45349/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4375 -> Patchwork_9414 =
== Summary - FAILURE ==
Hi Dave,
Here goes another pull request for 4.19.
Highlights here to Ice Lake Display enabling, and to preparation for
full-ppgtt enabling for older gens, and to hangcheck and gpu reset
improvements in general.
drm-intel-next-2018-06-20:
Chris is doing many reworks that allow us to get
== Series Details ==
Series: series starting with [1/2] drm/i915: Block enabling FBC until flips
have been completed
URL : https://patchwork.freedesktop.org/series/45349/
State : warning
== Summary ==
$ dim sparse origin/drm-tip
Commit: drm/i915: Block enabling FBC until flips have been
== Series Details ==
Series: series starting with [1/2] drm/i915: Block enabling FBC until flips
have been completed
URL : https://patchwork.freedesktop.org/series/45349/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
155e8eaf0d4b drm/i915: Block enabling FBC until flips have
The only time we should start FBC is when we have waited a vblank
after the atomic update. We've already forced a vblank wait by doing
wait_for_flip_done before intel_post_plane_update(), so we don't need
to wait a second time before enabling.
Removing the worker simplifies the code and removes
There is a small race window in which FBC can be enabled after
pre_plane_update is called, but before the page flip has been
queued or completed.
Signed-off-by: Maarten Lankhorst
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103167
---
drivers/gpu/drm/i915/i915_drv.h | 1 +
Quoting Tvrtko Ursulin (2018-06-25 11:42:27)
>
> On 25/06/2018 11:06, Chris Wilson wrote:
> > Due to how we only release the pining on the context state on
> > retirement and never track activity on the context vma itself, the
> > object can never be active at the point of release. Replace the
>
Quoting Chris Wilson (2018-06-25 12:00:16)
> Quoting Chris Wilson (2018-06-25 11:16:58)
> > Quoting Chris Wilson (2018-06-23 11:39:51)
> > > If we avoid cleaning up the old state immediately in
> > > intel_atomic_commit_tail() and defer it to a second task, we can avoid
> > > taking heavily
On Tue, May 29, 2018 at 09:15:22AM +0200, Daniel Vetter wrote:
> This reverts commit c5cab0d5fc9aa1cf14c7bc7ea88c80155e46e22f.
>
> Jani believes the noise is gone, so let's see whether it's really
> gone, before we drop this hack.
>
> Cc: "Saarinen, Jani"
> Cc: Martin Peres
> Signed-off-by:
On Fri, Jun 22, 2018 at 04:11:25PM +0530, Mahesh Kumar wrote:
> This patch adds a new callback function "verify_crc_source" which will
> be used during setting the crc source in control node and while opening
> data node for crc reading. This will help in avoiding setting of wrong
> string for
On Wed, Jun 20, 2018 at 11:45:25AM +0200, Takashi Iwai wrote:
> On Wed, 20 Jun 2018 10:02:42 +0200,
> Daniel Vetter wrote:
> >
> > On Wed, Jun 20, 2018 at 10:11:34AM +0300, Jani Nikula wrote:
> > > On Wed, 20 Jun 2018, Feng Tang wrote:
> > > > Hi Takashi,
> > > >
> > > > On Wed, Jun 20, 2018 at
== Series Details ==
Series: series starting with [1/2] drm/i915/execlists: Check for ce->state
before destroy
URL : https://patchwork.freedesktop.org/series/45328/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373_full -> Patchwork_9412_full =
== Summary - WARNING ==
On Fri, Jul 14, 2017 at 04:18:50PM +0100, Liviu Dudau wrote:
> From: Brian Starkey
>
> Separate out the CRC code for better compartmentalisation. Should ease
> the addition of more/different CRC sources in the future.
>
> Signed-off-by: Brian Starkey
Needs adjustements to gtkdoc I assume,
== Series Details ==
Series: series starting with [01/31] drm/i915: Defer modeset cleanup to a
secondary task
URL : https://patchwork.freedesktop.org/series/45325/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4373_full -> Patchwork_9411_full =
== Summary - FAILURE ==
Den 18.06.2018 16.17, skrev Noralf Trønnes:
This patchset adds generic fbdev emulation for drivers that supports GEM
based dumb buffers which support .gem_prime_vmap and gem_prime_mmap. An
API is begun to support in-kernel clients in general.
Notable changes since version 1:
- Rework client
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev4)
URL : https://patchwork.freedesktop.org/series/45263/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373 -> Patchwork_9413 =
== Summary - SUCCESS ==
No regressions found.
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev3)
URL : https://patchwork.freedesktop.org/series/45263/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373_full -> Patchwork_9410_full =
== Summary - WARNING ==
Minor unknown changes
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev4)
URL : https://patchwork.freedesktop.org/series/45263/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
debbcdd2c559 mm, oom: distinguish blockable mode for mmu notifiers
-:17:
On Mon 25-06-18 10:01:03, Michal Hocko wrote:
> On Fri 22-06-18 16:09:06, Felix Kuehling wrote:
> > On 2018-06-22 11:24 AM, Michal Hocko wrote:
> > > On Fri 22-06-18 17:13:02, Christian König wrote:
> > >> Hi Michal,
> > >>
> > >> [Adding Felix as well]
> > >>
> > >> Well first of all you have a
In order to make adding more options easier, expose the full set of
options to the caller.
Signed-off-by: Chris Wilson
Cc: Tvrtko Ursulin
---
lib/igt_dummyload.c| 147 +
lib/igt_dummyload.h| 42 +-
tests/drv_missed_irq.c
When using the pollable spinner, we often want to use it as a means of
ensuring the task is running on the GPU before switching to something
else. In which case we don't want to add extra delay inside the spinner,
but the current 1000 NOPs add on order of 5us, which is often larger
than the target
Quoting Tarun Vyas (2018-06-25 08:09:18)
> The PIPEDSL freezes on PSR entry and if PSR hasn't fully exited, then
> the pipe_update_start call schedules itself out to check back later.
>
> On ChromeOS-4.4 kernel, which is fairly up-to-date w.r.t drm/i915 but
> lags w.r.t core kernel code, hot
Op 01-03-18 om 18:38 schreef Liviu Dudau:
> From: Brian Starkey
>
> Add tests for the WRITEBACK_PIXEL_FORMATS, WRITEBACK_OUT_FENCE_PTR and
> WRITEBACK_FB_ID properties on writeback connectors, ensuring their
> behaviour is correct.
>
> Signed-off-by: Brian Starkey
> ---
> lib/igt_kms.c
Op 01-03-18 om 18:38 schreef Liviu Dudau:
> From: Brian Starkey
>
> Add support in igt_kms for Writeback connectors, with the ability to
> attach framebuffers and retrieve fences.
>
> Signed-off-by: Brian Starkey
> ---
> lib/igt_kms.c | 72
>
== Series Details ==
Series: series starting with [v5,1/2] drm/i915/psr: Lockless version of
psr_wait_for_idle
URL : https://patchwork.freedesktop.org/series/45319/
State : failure
== Summary ==
= CI Bug Log - changes from CI_DRM_4372_full -> Patchwork_9409_full =
== Summary - FAILURE ==
== Series Details ==
Series: drm/i915/crt: make intel_crt_reset() static again
URL : https://patchwork.freedesktop.org/series/45167/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4372_full -> Patchwork_9408_full =
== Summary - WARNING ==
Minor unknown changes coming
On Thu, Jun 21, 2018 at 06:26:04PM -0700, Dhinakaran Pandiyan wrote:
> On Fri, 2018-06-15 at 19:49 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä
> >
> > Don't advertize non-exisiting crtcs in the encoder possible_crtcs
> > bitmask.
> >
> How do we end up advertising non-existing CRTCs?
== Series Details ==
Series: series starting with [1/2] drm/i915/execlists: Check for ce->state
before destroy
URL : https://patchwork.freedesktop.org/series/45328/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373 -> Patchwork_9412 =
== Summary - SUCCESS ==
No
Quoting Chris Wilson (2018-06-25 11:16:58)
> Quoting Chris Wilson (2018-06-23 11:39:51)
> > If we avoid cleaning up the old state immediately in
> > intel_atomic_commit_tail() and defer it to a second task, we can avoid
> > taking heavily contended locks when the caller is ready to procede.
> >
== Series Details ==
Series: series starting with [01/31] drm/i915: Defer modeset cleanup to a
secondary task
URL : https://patchwork.freedesktop.org/series/45325/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373 -> Patchwork_9411 =
== Summary - SUCCESS ==
No
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev3)
URL : https://patchwork.freedesktop.org/series/45263/
State : success
== Summary ==
= CI Bug Log - changes from CI_DRM_4373 -> Patchwork_9410 =
== Summary - SUCCESS ==
No regressions found.
Quoting Tvrtko Ursulin (2018-06-25 11:51:30)
>
> On 25/06/2018 10:48, Chris Wilson wrote:
> > In the next patch, we will begin processing the CSB from inside the
> > submission path (underneath an irqsoff section, and even from inside
> > interrupt handlers). This means that updating the
On 25/06/2018 10:48, Chris Wilson wrote:
In the next patch, we will begin processing the CSB from inside the
submission path (underneath an irqsoff section, and even from inside
interrupt handlers). This means that updating the execlists->port[] will
no longer be serialised by the tasklet but
== Series Details ==
Series: series starting with [01/31] drm/i915: Defer modeset cleanup to a
secondary task
URL : https://patchwork.freedesktop.org/series/45325/
State : warning
== Summary ==
$ dim sparse origin/drm-tip
Commit: drm/i915: Defer modeset cleanup to a secondary task
Okay!
On 25/06/2018 11:06, Chris Wilson wrote:
Due to how we only release the pining on the context state on
retirement and never track activity on the context vma itself, the
object can never be active at the point of release. Replace the
conditional transfer of ownership onto an active-reference
On 25/06/2018 11:06, Chris Wilson wrote:
As we may cancel the ce->state allocation during context pinning (but
crucially after we mark ce as operational), that means we may be asked
to destroy a nonexistent ce->state. Given the choice in handing a
complex error path on pinning, and just
On Wed, Jun 13, 2018 at 02:48:49PM -0700, clinton.a.tay...@intel.com wrote:
> From: Clint Taylor
>
> On GLK NUC platforms the HDMI retiming buffer needs additional disabled
> time to correctly sync to a faster incoming signal.
>
> When measured on a scope the highspeed lines of the HDMI clock
== Series Details ==
Series: series starting with [01/31] drm/i915: Defer modeset cleanup to a
secondary task
URL : https://patchwork.freedesktop.org/series/45325/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
a3ac02da008c drm/i915: Defer modeset cleanup to a secondary task
== Series Details ==
Series: mm, oom: distinguish blockable mode for mmu notifiers (rev3)
URL : https://patchwork.freedesktop.org/series/45263/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
c36cf27f4057 mm, oom: distinguish blockable mode for mmu notifiers
-:16:
Quoting Chris Wilson (2018-06-23 11:39:51)
> If we avoid cleaning up the old state immediately in
> intel_atomic_commit_tail() and defer it to a second task, we can avoid
> taking heavily contended locks when the caller is ready to procede.
> Subsequent modesets will wait for the cleanup operation
As we may cancel the ce->state allocation during context pinning (but
crucially after we mark ce as operational), that means we may be asked
to destroy a nonexistent ce->state. Given the choice in handing a
complex error path on pinning, and just ignoring the lack of state in
destroy, choice the
Due to how we only release the pining on the context state on
retirement and never track activity on the context vma itself, the
object can never be active at the point of release. Replace the
conditional transfer of ownership onto an active-reference with an
assert that the object is idle.
Now that the submission backends are controlled via their own spinlocks,
with a wave of a magic wand we can lift the struct_mutex requirement
around GPU reset. That is we allow the submission frontend (userspace)
to keep on submitting while we process the GPU reset as we can suspend
the backend
Currently the code to reset the GPU and our state is spread widely
across a few files. Pull the logic together into a common file.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/Makefile |3 +-
drivers/gpu/drm/i915/i915_debugfs.c |2 +
In the next patch, we will make a fairly minor change to flush
outstanding resets before suspend. In order to keep churn to a minimum
in that functional patch, we fix up the comments and coding style now.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_gem.c | 50
Add a mutex into struct i915_address_space to be used while operating on
the vma and their lists for a particular vm. As this may be called from
the shrinker, we taint the mutex with fs_reclaim so that from the start
lockdep warns us if we are caught holding the mutex across an
allocation. (With
Introduce a new mutex to guard all of the vma operations within a vm (as
opposed to the BKL struct_mutex) and start by using it to guard the
fence operations for a GGTT VMA.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_debugfs.c| 2 +-
drivers/gpu/drm/i915/i915_gem.c
Using a VMA on more than one timeline concurrently is the exception
rather than the rule (using it concurrently on multiple engines). As we
expect to only use one active tracker, store the most recently used
tracker inside the i915_vma itself and only fallback to the radixtree if
we need a second
Handling such a late error in request construction is tricky, but to
accommodate future patches which may allocate here, we potentially could
err. To handle the error after already adjusting global state to track
the new request, we must finish and submit the request. But we don't
want to use the
Our goal is to remove struct_mutex and replace it with fine grained
locking. One of the thorny issues is our eviction logic for reclaiming
space for an execbuffer (or GTT mmaping, among a few other examples).
While eviction itself is easy to move under a per-VM mutex, performing
the activity
Back in commit 27af5eea54d1 ("drm/i915: Move execlists irq handler to a
bottom half"), we came to the conclusion that running our CSB processing
and ELSP submission from inside the irq handler was a bad idea. A really
bad idea as we could impose nearly 1s latency on other users of the
system, on
Avoid calling dma_fence_signal() from inside the interrupt if we haven't
enabled signaling on the request.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_irq.c | 8 ++--
drivers/gpu/drm/i915/i915_request.c | 2 +-
drivers/gpu/drm/i915/intel_ringbuffer.h | 5 ++---
3
In the next patch, we will want to be able to use more flexible request
timelines that can hop between engines. From the vma pov, we can then
not rely on the binding of this request to an engine and so can not
ensure that different requests are ordered through a per-engine
timeline, and so we must
Following the removal of the last workarounds, the only CSB mmio access
is for the old vGPU interface. The mmio registers presented by vGPU do
not require forcewake and can be treated as ordinary volatile memory,
i.e. they behave just like the HWSP access just at a different location.
We can
As the fence registers define special regions of the mappable aperture
inside the Global GTT, and we track those regions using GGTT VMA, it
makes sense to pull that bookkeeping under i915_ggtt. The advantage is
that we can then start using a local GGTT lock to handle the fence
registers (in
Currently all callers are responsible for adding the vma to the active
timeline and then exporting its fence. Combine the two operations into
i915_vma_move_to_active() to move all the extra handling from the
callers to the single site.
Signed-off-by: Chris Wilson
---
In the next patch, we will want to start skipping requests on failing to
complete their payloads. So export the utility function current used to
make requests inoperable following a failed gpu reset.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_gem.c | 25
In the next patch, we will process the CSB events directly from the
submission path, rather than only after a CS interrupt. Hence, we will
no longer have the need for a loop until the has-interrupt bit is clear,
and in the meantime can remove that small optimisation.
Signed-off-by: Chris Wilson
Taken from an idea used for FQ_CODEL, we give new request flows a
priority boost. These flows are likely to correspond with interactive
tasks and so be more latency sensitive than the long queues. As soon as
the client has more than one request in the queue, further requests are
not boosted and it
By taking advantage of the RCU protection of the task struct, we can find
the appropriate signaler under the spinlock and then release the spinlock
before waking the task and signaling the fence.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_irq.c | 33
Currently the async submission backends (guc and execlists) hold a extra
reference to the requests being processed as they are not serialised with
request retirement. If we instead, prevent the request being dropped
from the engine timeline until after submission has finished processing
the
As we are about to allow ourselves to slightly bump the user priority
into a few different sublevels, packthose internal priority lists
into the same i915_priolist to keep the rbtree compact and avoid having
to allocate the default user priority even after the internal bumping.
The downside to
In order to maximise concurrency between engines, if we queue a request
to a current idle ring, reorder its dependencies to execute that request
as early as possible and ideally improve occupancy of multiple engines
simultaneously.
Signed-off-by: Chris Wilson
---
In the next patch, we will move ownership of the fence reference to the
submission backend and will want to drop its final reference when
retiring it from the submission backend. We will also need a catch up
when parking the engine to cleanup any residual entries in the engine
timeline. In short,
Rather than have multiple locked instructions inside the notify_ring()
irq handler, move them inside the spinlock and reduce their intrinsic
locking.
Signed-off-by: Chris Wilson
---
drivers/gpu/drm/i915/i915_irq.c | 4 ++--
drivers/gpu/drm/i915/i915_request.c | 4 ++--
In the next few patches, we will want to give a small priority boost to
some requests/queues but not so much that we perturb the user controlled
order. As such we shift the user priority bits higher leaving ourselves
a few low priority bits for our bumping.
Signed-off-by: Chris Wilson
---
The kernel recently gained an augmented rbtree with the purpose of
cacheing the leftmost element of the rbtree, a frequent optimisation to
avoid calls to rb_first() which is also employed by the
execlists->queue. Switch from our open-coded cache to the library.
Signed-off-by: Chris Wilson
---
If we avoid cleaning up the old state immediately in
intel_atomic_commit_tail() and defer it to a second task, we can avoid
taking heavily contended locks when the caller is ready to procede.
Subsequent modesets will wait for the cleanup operation (either directly
via the ordered modeset wq or
Our long standing defense against a single client from flooding the
system with requests (causing mempressure and stalls across the whole
system) is to retire the old request on every allocation. (By retiring
the oldest, we try to keep returning requests back to the system in a
steady flow.) This
In the following patch, we will process the CSB events under the
timeline.lock and not serailiased by the tasklet. This also means that we
will need to protect access to common variables such as
execlists->csb_head with the timeline.lock during reset.
v2: Move sync_irq to avoid deadlocks between
In the next patch, we will start to defer retiring the request from the
engine list if it is still active on the submission backend. To preserve
the semantics that after wait-for-idle completes the system is idle and
fully retired, we need to therefore wait for the backends to idle before
calling
In the next patch, we will begin processing the CSB from inside the
submission path (underneath an irqsoff section, and even from inside
interrupt handlers). This means that updating the execlists->port[] will
no longer be serialised by the tasklet but needs to be locked by the
1 - 100 of 113 matches
Mail list logo