New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 783368 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature



Sign in to add a comment

CNL WA and GuC rework for suspend/resume stability improvements

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36
Platform: CNL

Steps to reproduce the problem:
1. Stability issues observed with suspend/resume on CNL using the chromeos-4.12 kernel
2. 
3. 

What is the expected behavior?
Device resumes successfully from suspend.

What went wrong?
Multiple instability issues on resume.

Did this work before? N/A 

Chrome version: 62.0.3202.89  Channel: n/a
OS Version: 
Flash Version:
 

Comment 1 by bleung@chromium.org, Nov 11 2017

Cc: dbehr@chromium.org matthew....@intel.corp-partner.google.com nathan.d...@intel.corp-partner.google.com marc...@chromium.org bleung@chromium.org
Components: OS>Kernel>Graphics OS>Kernel>Power

Comment 2 by bleung@chromium.org, Nov 11 2017

Thanks for filing the bug. Just to reference, here's Nathan's topic addressing this: https://chromium-review.googlesource.com/#/q/topic:%22cnl_gfx_stability%22
Project Member

Comment 3 by bugdroid1@chromium.org, Nov 17 2017

Labels: merge-merged-chromeos-4.12
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/f38d6e866eac66d3cb74475083e442f34612028c

commit f38d6e866eac66d3cb74475083e442f34612028c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:26 2017

UPSTREAM: drm/i915: Skip waking the signaler when enabling before request submission

If we are enabling the breadcrumbs signaling prior to submitting the
request, we know that we cannot have missed the interrupt and can
therefore skip immediately waking the signaler to check.

This reduces a significant chunk of the __i915_gem_request_submit()
overhead for inter-engine synchronisation, for example in gem_exec_whisper.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170426080659.28771-1-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
(cherry picked from commit f7b02a529a81761b44d7fa164bd84333f3232989)
from drm-intel-next-2017-05-02
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: If5553dff9ccb57f8450b5465e005e237ea10f6cf
Reviewed-on: https://chromium-review.googlesource.com/759335
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
Reviewed-by: Matthew S Atwood <matthew.s.atwood@intel.corp-partner.google.com>

[modify] https://crrev.com/f38d6e866eac66d3cb74475083e442f34612028c/drivers/gpu/drm/i915/intel_breadcrumbs.c
[modify] https://crrev.com/f38d6e866eac66d3cb74475083e442f34612028c/drivers/gpu/drm/i915/intel_ringbuffer.h
[modify] https://crrev.com/f38d6e866eac66d3cb74475083e442f34612028c/drivers/gpu/drm/i915/i915_guc_submission.c
[modify] https://crrev.com/f38d6e866eac66d3cb74475083e442f34612028c/drivers/gpu/drm/i915/i915_gem_request.c

Project Member

Comment 4 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d2a8d28259a7461aaeac1fc732df16679df49c07

commit d2a8d28259a7461aaeac1fc732df16679df49c07
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:27 2017

UPSTREAM: drm/i915: Report back whether the irq was armed when adding the waiter

The important condition that we need to check after enabling the
interrupt for signaling is whether the request completed in the process
(and so we missed that interrupt). A large cost in enabling the
signaling (rather than waiters) is in waking up the auxiliary signaling
thread, but we only need to do so to catch that missed interrupt. If we
know we didn't miss any interrupts (because we didn't arm the interrupt)
then we can skip waking the auxiliary thread.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170608111405.16466-2-chris@chris-wilson.co.uk
(cherry picked from commit bac2ef4b470b08e3748784eb8e84e00d3b121c20)
from drm-intel-next-2017-06-19
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: Iab2d8fe81365fc197c013b79a07164694391a970
Reviewed-on: https://chromium-review.googlesource.com/759396
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
Reviewed-by: Matthew S Atwood <matthew.s.atwood@intel.corp-partner.google.com>

[modify] https://crrev.com/d2a8d28259a7461aaeac1fc732df16679df49c07/drivers/gpu/drm/i915/intel_breadcrumbs.c

Project Member

Comment 5 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/28ba9a74313ba32f8da74acff371807cf7491fb8

commit 28ba9a74313ba32f8da74acff371807cf7491fb8
Author: Michał Winiarski <michal.winiarski@intel.com>
Date: Fri Nov 17 05:07:29 2017

FROMGIT: drm/i915/preempt: Default to disabled mid-command preemption levels

Supporting fine-granularity preemption levels may require changes in
userspace batch buffer programming. Therefore, we need to fallback to
safe default values, rather that use hardware defaults. Userspace is
still able to enable fine-granularity, since we're whitelisting the
register controlling it in WaEnablePreemptionGranularityControlByUMD.

v2: Extend w/a to cover Cannonlake
v3: Fix commentary to include both fake w/a names.

Signed-off-by: Micha Winiarski <michal.winiarski@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-2-chris@chris-wilson.co.uk
(cherry picked from commit 5152defe4a53ad15e6d96c422440152302c8abd7)
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I0536f8dcdfeaaccf7c72706570704293da9118e3
Reviewed-on: https://chromium-review.googlesource.com/759397
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/28ba9a74313ba32f8da74acff371807cf7491fb8/drivers/gpu/drm/i915/intel_engine_cs.c
[modify] https://crrev.com/28ba9a74313ba32f8da74acff371807cf7491fb8/drivers/gpu/drm/i915/i915_reg.h

Project Member

Comment 6 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/1821e264d9e73ed4fcb0a441c57e6fdbf4752ecc

commit 1821e264d9e73ed4fcb0a441c57e6fdbf4752ecc
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:30 2017

UPSTREAM: drm/i915: Fix eviction when the GGTT is idle but full

In the full-ppgtt world, we can fill the GGTT full of context objects.
These context objects are currently implicitly tracked by the requests
that pin them i.e. they are only unpinned when the request is completed
and retired, but we do not have the link from the vma to the request
(anymore). In order to unpin those contexts, we have to issue another
request and wait upon the switch to the kernel context.

The bug during eviction was that we assumed that a full GGTT meant we
would have requests on the GGTT timeline, and so we missed situations
where those requests where merely in flight (and when even they have not
yet been submitted to hw yet). The fix employed here is to change the
already-is-idle test to no look at the execution timeline, but count the
outstanding requests and then check that we have switched to the kernel
context. Erring on the side of overkill here just means that we stall a
little longer than may be strictly required, but we only expect to hit
this path in extreme corner cases where returning an erroneous error is
worse than the delay.

v2: Logical inversion when swapping over branches.

Fixes: 80b204bce8f2 ("drm/i915: Enable multiple timelines")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171012125726.14736-1-chris@chris-wilson.co.uk
(cherry picked from commit 55b4f1ce2f23692c57205b9974fba61baa4b9321)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
(cherry picked from commit 99b169d3c2052717a9a56b2c8aab0cabd96f0598
from drm-intel-fixes-2017-10-18~5)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I2e85b10a582f503678f93749c1e9a9b2eca774eb
Reviewed-on: https://chromium-review.googlesource.com/759398
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@google.com>

[modify] https://crrev.com/1821e264d9e73ed4fcb0a441c57e6fdbf4752ecc/drivers/gpu/drm/i915/i915_gem_evict.c

Project Member

Comment 7 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3eaff70af82aaff8ebcadee5539e742b22b192e9

commit 3eaff70af82aaff8ebcadee5539e742b22b192e9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:32 2017

FROMGIT: drm/i915: Use same test for eviction and submitting kernel context

During evict, we wish to idle the GPU if we see that the GGTT is full.
However, our test for idle in i915_gem_evict_something() and in
i915_gem_switch_to_kernel_context() do not match leading to
disappointment - we never believe that we are idle and keep trying to
flush the GGTT ad infinitum.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103438
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171024220855.30155-2-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
(cherry picked from commit 20ccd4d3f689ac14dce8632d76769be0ac952060
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I81ba86b3b5fb7546b11f9929600f84c609da3a9b
Reviewed-on: https://chromium-review.googlesource.com/759399
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/3eaff70af82aaff8ebcadee5539e742b22b192e9/drivers/gpu/drm/i915/i915_gem_evict.c
[modify] https://crrev.com/3eaff70af82aaff8ebcadee5539e742b22b192e9/drivers/gpu/drm/i915/intel_ringbuffer.h
[modify] https://crrev.com/3eaff70af82aaff8ebcadee5539e742b22b192e9/drivers/gpu/drm/i915/intel_engine_cs.c
[modify] https://crrev.com/3eaff70af82aaff8ebcadee5539e742b22b192e9/drivers/gpu/drm/i915/i915_gem_context.c

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/92870329d6a25bcd63a54fded5de589071efebd9

commit 92870329d6a25bcd63a54fded5de589071efebd9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:33 2017

FROMGIT: drm/i915: Add a hook for making the engines idle (parking) and unparking

In the next patch, we will want to install a callback when the engines
(GT as a whole) become idle and similarly when they first become busy.
To enable that callback, first rename intel_engines_mark_idle() to
intel_engines_park() and provide the companion intel_engines_unpark().

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Micha Winiarski <michal.winiarski@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171025143943.7661-2-chris@chris-wilson.co.uk
(cherry picked from commit aba5e278586b16a4fbd377e7e8403aa585d0532a
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I092403982c2623dde19ac77064608d7fefcec6e7
Reviewed-on: https://chromium-review.googlesource.com/759400
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/i915_gem.c
[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/intel_ringbuffer.h
[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/intel_ringbuffer.c
[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/i915_gem_request.c
[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/intel_lrc.c
[modify] https://crrev.com/92870329d6a25bcd63a54fded5de589071efebd9/drivers/gpu/drm/i915/intel_engine_cs.c

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/87a443f894f2034c3a45621d6fa2b60b6930f2cb

commit 87a443f894f2034c3a45621d6fa2b60b6930f2cb
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 05:07:35 2017

FROMGIT: drm/i915/guc: Always enable the breadcrumbs irq

The execlists emulation on top of the GuC (used for scheduling and
preemption) depends on the MI_USER_INTERRUPT for its notifications and
tasklet action. As we always employ the irq, there is no advantage in
ever disabling it while we are using the GuC, so allow us to arm the
breadcrumb irq when enabling GuC submission and disarm upon disabling.
The impact should be lessened by the delayed irq disabling we do (we
only disable after receiving an interrupt for which no one was wanting),
but allowing guc to explicitly manage the irq in relation to itself is
simpler and prevents an issue with losing an interrupt for preemption
as it is not coupled to an active request.

Internally, we add a reference counter (breadcrumbs.irq_enabled) as a
simple mechanism to allow GuC to keep the breadcrumb irq enabled. To
improve upon always enabling the irq while guc is selected, we need
to hook into the parking facility of intel_engines so that we only enable
the breadcrumbs while the GT is active (one step better would be to
individually park/unpark each engine).

In effect, this means that we keep the breadcrumb irq always enabled for
the entire duration the guc is busy, whereas before we would try to
switch it off whenever we idled for more than interrupt with no
associated waiters. The difference *should* be negligible in practice!

v2: Stop abusing fence signaling (and its auxiliary data structures) to
enable the breadcrumbs irqs.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Micha Winiarski <michal.winiarski@intel.com>,
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: Micha Winiarski <michal.winiarski@intel.com>,
Link: https://patchwork.freedesktop.org/patch/msgid/20171025143943.7661-3-chris@chris-wilson.co.uk
(cherry picked from commit bcbd5c33a342bc6f4a25fed528dc3ed2a0b1c140
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I00f30703a45b5843dcb00b390d556dc3fc0bd953
Reviewed-on: https://chromium-review.googlesource.com/759401
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/87a443f894f2034c3a45621d6fa2b60b6930f2cb/drivers/gpu/drm/i915/intel_breadcrumbs.c
[modify] https://crrev.com/87a443f894f2034c3a45621d6fa2b60b6930f2cb/drivers/gpu/drm/i915/intel_ringbuffer.h
[modify] https://crrev.com/87a443f894f2034c3a45621d6fa2b60b6930f2cb/drivers/gpu/drm/i915/i915_guc_submission.c
[modify] https://crrev.com/87a443f894f2034c3a45621d6fa2b60b6930f2cb/drivers/gpu/drm/i915/i915_irq.c

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/f8d5d4202fe53835657a52045e539a68353c65a5

commit f8d5d4202fe53835657a52045e539a68353c65a5
Author: Michał Winiarski <michal.winiarski@intel.com>
Date: Fri Nov 17 05:07:36 2017

FROMGIT: drm/i915/guc: Initialize GuC before restarting engines

Now that we're handling request resubmission the same way as regular
submission (from the tasklet), we can move GuC initialization earlier,
before restarting the engines. This way, we're no longer being in the
state of flux during engine restart - we're already in user requested
submission mode.

Signed-off-by: Micha Winiarski <michal.winiarski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Cc: Oscar Mateo <oscar.mateo@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171025172519.10670-5-chris@chris-wilson.co.uk
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
(cherry picked from commit 9bdc3573a5a2824da7d7e55eac95ca5a014181d8
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I994d98677c982227aa3d32b5be428e2c2436a56b
Reviewed-on: https://chromium-review.googlesource.com/759402
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/f8d5d4202fe53835657a52045e539a68353c65a5/drivers/gpu/drm/i915/i915_gem.c
[modify] https://crrev.com/f8d5d4202fe53835657a52045e539a68353c65a5/drivers/gpu/drm/i915/i915_guc_submission.c
[modify] https://crrev.com/f8d5d4202fe53835657a52045e539a68353c65a5/drivers/gpu/drm/i915/intel_lrc.c

Project Member

Comment 11 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/1508167cc5d719b8fe629c8f54bad4c3b7e6b750

commit 1508167cc5d719b8fe629c8f54bad4c3b7e6b750
Author: Rafael Antognolli <rafael.antognolli@intel.com>
Date: Fri Nov 17 07:32:06 2017

FROMGIT: drm/i915: Implement ReadHitWriteOnlyDisable.

The workaround for this is described as:

"if RenderSurfaceState.Num_Multisamples > 1, disable RCC clock gating if
RenderSurfaceState.Num_Multisamples == 1, set 0x7010[14] = 1"

Further documentation in the internal bug referenced by the bspec
suggest that any of the above suggestions should suffice to fix the
issue. We are going with disabling RCC clock gating.

Unfortunately, what we are doing doesn't match the name of the
workaround, but at least it matches its description.

This change improves CNL stability by avoiding some of the hangs seen in
the platform.

v2: Only disable RCC clock gating.

Signed-off-by: Rafael Antognolli <rafael.antognolli@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171103183027.5051-1-rafael.antognolli@intel.com
(cherry picked from commit 0a60797a0efbc495f514304d83eb289bb55990a6
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I8c67b4f39c21201bc10236924176b4e21ccf93aa
Reviewed-on: https://chromium-review.googlesource.com/759403
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/1508167cc5d719b8fe629c8f54bad4c3b7e6b750/drivers/gpu/drm/i915/intel_engine_cs.c
[modify] https://crrev.com/1508167cc5d719b8fe629c8f54bad4c3b7e6b750/drivers/gpu/drm/i915/i915_reg.h

Project Member

Comment 12 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/2a840a55e12e59b3a5049090eb8c9ff58a7dac9f

commit 2a840a55e12e59b3a5049090eb8c9ff58a7dac9f
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 07:32:09 2017

FROMGIT: drm/i915: Check that the breadcrumb wasn't disarmed automatically before parking

We will disarm the breadcrumb interrupt if we see a user interrupt
whilst no one is waiting. This may race with the call to
intel_engine_disarm_breadcrumbs() triggering an assert that we aren't
trying to do the same job twice. Prevent this by checking that the irq
is still armed after flushing the interrupt (for the irq spinlock).

Fixes: bcbd5c33a342 ("drm/i915/guc: Always enable the breadcrumbs irq")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Micha Winiarski <michal.winiarski@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171031122235.1395-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
(cherry picked from commit e5330ac1f50b897d245753828e8887f297f69dd0
git://anongit.freedesktop.org/drm-intel drm-intel-next-queued)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I8fd3c133f64663f94517c4e3ef51a5e937a9e98b
Reviewed-on: https://chromium-review.googlesource.com/762040
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/2a840a55e12e59b3a5049090eb8c9ff58a7dac9f/drivers/gpu/drm/i915/intel_breadcrumbs.c

Project Member

Comment 13 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/cd5766c76e9a3b4d5a3d71e44f0cae5d210b77de

commit cd5766c76e9a3b4d5a3d71e44f0cae5d210b77de
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 17 07:32:07 2017

UPSTREAM: drm/i915: Check incoming alignment for unfenced buffers (on i915gm)

In case the object has changed tiling between calls to execbuf, we need
to check if the existing offset inside the GTT matches the new tiling
constraint. We even need to do this for "unfenced" tiled objects, where
the 3D commands use an implied fence and so the object still needs to
match the physical fence restrictions on alignment (only required for
gen2 and early gen3).

In commit 2889caa92321 ("drm/i915: Eliminate lots of iterations over
the execobjects array"), the idea was to remove the second guessing and
only set the NEEDS_MAP flag when required. However, the entire check
for an unusable offset for fencing was removed and not just the
secondary check. I.e.

	/* avoid costly ping-pong once a batch bo ended up non-mappable */
        if (entry->flags & __EXEC_OBJECT_NEEDS_MAP &&
            !i915_vma_is_map_and_fenceable(vma))
                return !only_mappable_for_reloc(entry->flags);

was entirely removed as the ping-pong between execbuf passes was fixed,
but its primary purpose in forcing unaligned unfenced access to be
rebound was forgotten.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103502
Fixes: 2889caa92321 ("drm/i915: Eliminate lots of iterations over the execobjects array")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171031103607.17836-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
(cherry picked from commit 1d033beb20d6d5885587a02a393b6598d766a382)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
(cherry picked from commit bb5cf3386327c9cb5ca3fbb85242e940751649c8
from drm-intel-fixes-2017-11-01)
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: I647f6a17b0cc6b082f56593378b13caa35ef132c
Reviewed-on: https://chromium-review.googlesource.com/762109
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@google.com>

[modify] https://crrev.com/cd5766c76e9a3b4d5a3d71e44f0cae5d210b77de/drivers/gpu/drm/i915/i915_gem_execbuffer.c

Project Member

Comment 14 by bugdroid1@chromium.org, Nov 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/8bf4514b833cc95333d984028798d960dd53af20

commit 8bf4514b833cc95333d984028798d960dd53af20
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date: Fri Nov 17 07:32:10 2017

CHROMIUM: drm/i915/cnl: Avoid DPLL 0 for HDMI to avoid Hard Hang.

XXX: This is a temporary hack to avoid Hard Hang while
we investigate the reasons behind the bug.

For some strange reason when disabling eDP (pipe A / DPLL 0)
and moving HDMI from pipe B with DPLL 1 to pipe A with DPLL0
the platform hard hang.

So for now, let's avoid DPLL 0 to avoid the Hard Hang.

v2: Nathan: Added the workaround for DP output as well

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Nathan Ciobanu <nathan.d.ciobanu@intel.com>

BUG= chromium:783368 
TEST=CNL boots to graphics

Change-Id: Ieb15d5511ef60182a83bc30a5b806bdf14898b88
Reviewed-on: https://chromium-review.googlesource.com/773781
Commit-Ready: Nathan Ciobanu <nathan.d.ciobanu@intel.com>
Tested-by: Casey G Bowman <casey.g.bowman@intel.com>
Reviewed-by: Benson Leung <bleung@chromium.org>

[modify] https://crrev.com/8bf4514b833cc95333d984028798d960dd53af20/drivers/gpu/drm/i915/intel_dpll_mgr.c

Owner: bleung@chromium.org
Status: Fixed (was: Unconfirmed)

Comment 16 by dchan@chromium.org, Jan 22 2018

Status: Archived (was: Fixed)

Comment 17 by dchan@chromium.org, Jan 23 2018

Status: Fixed (was: Archived)

Sign in to add a comment