Message ID | 1456929984-16323-1-git-send-email-mika.kuoppala@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/03/2016 15:56, Patchwork wrote: > == Series Details == > > Series: drm/i915: Generalise common GPU engine reset request/unrequest code > URL : https://patchwork.freedesktop.org/series/4021/ > State : warning > > == Summary == > > Series 4021v1 drm/i915: Generalise common GPU engine reset request/unrequest code > http://patchwork.freedesktop.org/api/1.0/series/4021/revisions/1/mbox/ > > Test kms_flip: > Subgroup basic-flip-vs-modeset: > pass -> DMESG-WARN (ilk-hp8440p) UNSTABLE known issue, https://bugs.freedesktop.org/show_bug.cgi?id=93787 > Subgroup basic-plain-flip: > pass -> DMESG-WARN (hsw-brixbox) Unclaimed register detected before writing to register 0x45110, previous runs are ok, should I create a bug? > Test kms_pipe_crc_basic: > Subgroup nonblocking-crc-pipe-b-frame-sequence: > dmesg-warn -> PASS (hsw-brixbox) > Subgroup suspend-read-crc-pipe-a: > incomplete -> PASS (hsw-gt2) > Subgroup suspend-read-crc-pipe-c: > dmesg-warn -> PASS (bsw-nuc-2) > Test pm_rpm: > Subgroup basic-rte: > pass -> DMESG-WARN (snb-dellxps) unrelated and known issue, https://bugs.freedesktop.org/show_bug.cgi?id=94349 regards Arun > > bdw-nuci7 total:169 pass:158 dwarn:0 dfail:0 fail:0 skip:11 > bdw-ultra total:169 pass:155 dwarn:0 dfail:0 fail:0 skip:14 > bsw-nuc-2 total:169 pass:138 dwarn:0 dfail:0 fail:1 skip:30 > byt-nuc total:169 pass:144 dwarn:0 dfail:0 fail:0 skip:25 > hsw-brixbox total:169 pass:153 dwarn:1 dfail:0 fail:0 skip:15 > hsw-gt2 total:169 pass:159 dwarn:0 dfail:0 fail:0 skip:10 > ilk-hp8440p total:169 pass:118 dwarn:1 dfail:0 fail:0 skip:50 > ivb-t430s total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 > skl-i5k-2 total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 > skl-i7k-2 total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 > snb-dellxps total:169 pass:144 dwarn:2 dfail:0 fail:0 skip:23 > snb-x220t total:169 pass:145 dwarn:1 dfail:0 fail:1 skip:22 > > Results at /archive/results/CI_IGT_test/Patchwork_1516/ > > db506392f6706faffdc965c53c4cdea58cc16a02 drm-intel-nightly: 2016y-03m-02d-13h-47m-11s UTC integration manifest > f7757b31906cfe9dbe0dea7ef96d8269ec57ceb4 drm/i915: Generalise common GPU engine reset request/unrequest code > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx >
Arun Siluvery <arun.siluvery@linux.intel.com> writes: > On 02/03/2016 15:56, Patchwork wrote: >> == Series Details == >> >> Series: drm/i915: Generalise common GPU engine reset request/unrequest code >> URL : https://patchwork.freedesktop.org/series/4021/ >> State : warning >> >> == Summary == >> >> Series 4021v1 drm/i915: Generalise common GPU engine reset request/unrequest code >> http://patchwork.freedesktop.org/api/1.0/series/4021/revisions/1/mbox/ >> >> Test kms_flip: >> Subgroup basic-flip-vs-modeset: >> pass -> DMESG-WARN (ilk-hp8440p) UNSTABLE > known issue, https://bugs.freedesktop.org/show_bug.cgi?id=93787 > >> Subgroup basic-plain-flip: >> pass -> DMESG-WARN (hsw-brixbox) > Unclaimed register detected before writing to register 0x45110, previous > runs are ok, should I create a bug? > https://bugs.freedesktop.org/show_bug.cgi?id=94384 >> Test kms_pipe_crc_basic: >> Subgroup nonblocking-crc-pipe-b-frame-sequence: >> dmesg-warn -> PASS (hsw-brixbox) >> Subgroup suspend-read-crc-pipe-a: >> incomplete -> PASS (hsw-gt2) >> Subgroup suspend-read-crc-pipe-c: >> dmesg-warn -> PASS (bsw-nuc-2) >> Test pm_rpm: >> Subgroup basic-rte: >> pass -> DMESG-WARN (snb-dellxps) > unrelated and known issue, > https://bugs.freedesktop.org/show_bug.cgi?id=94349 > > regards > Arun > >> >> bdw-nuci7 total:169 pass:158 dwarn:0 dfail:0 fail:0 skip:11 >> bdw-ultra total:169 pass:155 dwarn:0 dfail:0 fail:0 skip:14 >> bsw-nuc-2 total:169 pass:138 dwarn:0 dfail:0 fail:1 skip:30 >> byt-nuc total:169 pass:144 dwarn:0 dfail:0 fail:0 skip:25 >> hsw-brixbox total:169 pass:153 dwarn:1 dfail:0 fail:0 skip:15 >> hsw-gt2 total:169 pass:159 dwarn:0 dfail:0 fail:0 skip:10 >> ilk-hp8440p total:169 pass:118 dwarn:1 dfail:0 fail:0 skip:50 >> ivb-t430s total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 >> skl-i5k-2 total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 >> skl-i7k-2 total:169 pass:153 dwarn:0 dfail:0 fail:0 skip:16 >> snb-dellxps total:169 pass:144 dwarn:2 dfail:0 fail:0 skip:23 >> snb-x220t total:169 pass:145 dwarn:1 dfail:0 fail:1 skip:22 >> >> Results at /archive/results/CI_IGT_test/Patchwork_1516/ >> >> db506392f6706faffdc965c53c4cdea58cc16a02 drm-intel-nightly: 2016y-03m-02d-13h-47m-11s UTC integration manifest >> f7757b31906cfe9dbe0dea7ef96d8269ec57ceb4 drm/i915: Generalise common GPU engine reset request/unrequest code >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx >>
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index 436d8f2b8682..692b2d6f6994 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c @@ -1531,13 +1531,40 @@ static int gen6_do_reset(struct drm_device *dev) return ret; } -static int wait_for_register(struct drm_i915_private *dev_priv, +static int wait_for_register_fw(struct drm_i915_private *dev_priv, i915_reg_t reg, const u32 mask, const u32 value, const unsigned long timeout_ms) { - return wait_for((I915_READ(reg) & mask) == value, timeout_ms); + return wait_for((I915_READ_FW(reg) & mask) == value, timeout_ms); +} + +static int gen8_request_engine_reset(struct intel_engine_cs *engine) +{ + int ret; + struct drm_i915_private *dev_priv = engine->dev->dev_private; + + I915_WRITE_FW(RING_RESET_CTL(engine->mmio_base), + _MASKED_BIT_ENABLE(RESET_CTL_REQUEST_RESET)); + + ret = wait_for_register_fw(dev_priv, + RING_RESET_CTL(engine->mmio_base), + RESET_CTL_READY_TO_RESET, + RESET_CTL_READY_TO_RESET, + 700); + if (ret) + DRM_ERROR("%s: reset request timeout\n", engine->name); + + return ret; +} + +static void gen8_unrequest_engine_reset(struct intel_engine_cs *engine) +{ + struct drm_i915_private *dev_priv = engine->dev->dev_private; + + I915_WRITE_FW(RING_RESET_CTL(engine->mmio_base), + _MASKED_BIT_DISABLE(RESET_CTL_REQUEST_RESET)); } static int gen8_do_reset(struct drm_device *dev) @@ -1546,26 +1573,15 @@ static int gen8_do_reset(struct drm_device *dev) struct intel_engine_cs *engine; int i; - for_each_ring(engine, dev_priv, i) { - I915_WRITE(RING_RESET_CTL(engine->mmio_base), - _MASKED_BIT_ENABLE(RESET_CTL_REQUEST_RESET)); - - if (wait_for_register(dev_priv, - RING_RESET_CTL(engine->mmio_base), - RESET_CTL_READY_TO_RESET, - RESET_CTL_READY_TO_RESET, - 700)) { - DRM_ERROR("%s: reset request timeout\n", engine->name); + for_each_ring(engine, dev_priv, i) + if (gen8_request_engine_reset(engine)) goto not_ready; - } - } return gen6_do_reset(dev); not_ready: for_each_ring(engine, dev_priv, i) - I915_WRITE(RING_RESET_CTL(engine->mmio_base), - _MASKED_BIT_DISABLE(RESET_CTL_REQUEST_RESET)); + gen8_unrequest_engine_reset(engine); return -EIO; }