CNL WA and GuC rework for suspend/resume stability improvements
Reported by
nathan.d...@intel.corp-partner.google.com,
Nov 9 2017
|
|||||
Issue descriptionUserAgent: 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:
,
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
,
Nov 17 2017
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
Nov 17 2017
,
Jan 22 2018
,
Jan 23 2018
|
|||||
►
Sign in to add a comment |
|||||
Comment 1 by bleung@chromium.org
, Nov 11 2017Components: OS>Kernel>Graphics OS>Kernel>Power