Message ID | 1460045074-1006-1-git-send-email-tvrtko.ursulin@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Apr 08, 2016 at 07:02:35AM -0000, Patchwork wrote: > == Series Details == > > Series: series starting with [resend-for-CI,1/3] drm/i915: Use consistent forcewake auto-release timeout across kernel configs > URL : https://patchwork.freedesktop.org/series/5424/ > State : failure > > == Summary == > > Series 5424v1 Series without cover letter > http://patchwork.freedesktop.org/api/1.0/series/5424/revisions/1/mbox/ > > Test drv_getparams_basic: > Subgroup basic-subslice-total: > dmesg-warn -> PASS (bsw-nuc-2) Even though bsw is (currently) unstable, this is a good result as it means that the change is not fundamentally broken on Braswell! -Chris
On 08/04/16 08:02, Patchwork wrote: > == Series Details == > > Series: series starting with [resend-for-CI,1/3] drm/i915: Use consistent forcewake auto-release timeout across kernel configs > URL : https://patchwork.freedesktop.org/series/5424/ > State : failure > > == Summary == > > Series 5424v1 Series without cover letter > http://patchwork.freedesktop.org/api/1.0/series/5424/revisions/1/mbox/ > > Test drv_getparams_basic: > Subgroup basic-subslice-total: > dmesg-warn -> PASS (bsw-nuc-2) > Test drv_module_reload_basic: > incomplete -> PASS (bsw-nuc-2) > Test gem_basic: > Subgroup bad-close: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup create-close: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup create-fd-close: > dmesg-warn -> PASS (bsw-nuc-2) > Test gem_ctx_param_basic: > Subgroup basic: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup invalid-ctx-set: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup invalid-param-get: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup invalid-param-set: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup root-set: > dmesg-warn -> PASS (bsw-nuc-2) > Test gem_ctx_switch: > Subgroup basic-default: > skip -> PASS (bsw-nuc-2) > Test gem_exec_basic: > Subgroup basic-blt: > skip -> PASS (bsw-nuc-2) > Subgroup gtt-bsd: > skip -> PASS (bsw-nuc-2) > Subgroup readonly-bsd: > skip -> PASS (bsw-nuc-2) > Subgroup readonly-render: > skip -> PASS (bsw-nuc-2) > Subgroup readonly-vebox: > skip -> PASS (bsw-nuc-2) > Test gem_exec_store: > Subgroup basic-bsd: > skip -> PASS (bsw-nuc-2) > Subgroup basic-default: > skip -> PASS (bsw-nuc-2) > Subgroup basic-vebox: > skip -> PASS (bsw-nuc-2) > Test gem_exec_whisper: > Subgroup basic: > skip -> PASS (bsw-nuc-2) > Test gem_mmap: > Subgroup basic-small-bo: > dmesg-warn -> PASS (bsw-nuc-2) > Test gem_mmap_gtt: > Subgroup basic-write: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup basic-write-gtt: > dmesg-warn -> PASS (bsw-nuc-2) > Test gem_ringfill: > Subgroup basic-default-hang: > skip -> PASS (bsw-nuc-2) > Test gem_sync: > Subgroup basic-blt: > skip -> PASS (bsw-nuc-2) > Subgroup basic-vebox: > skip -> PASS (bsw-nuc-2) > Test gem_tiled_pread_basic: > dmesg-warn -> PASS (bsw-nuc-2) > Test kms_addfb_basic: > Subgroup addfb25-modifier-no-flag: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup addfb25-y-tiled: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup bad-pitch-65536: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup basic-x-tiled: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup framebuffer-vs-set-tiling: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup too-wide: > dmesg-warn -> PASS (bsw-nuc-2) > Test kms_flip: > Subgroup basic-flip-vs-dpms: > pass -> DMESG-WARN (ilk-hp8440p) UNSTABLE Old friend unclaimed access prior to suspending: https://bugs.freedesktop.org/show_bug.cgi?id=94164 > Subgroup basic-flip-vs-wf_vblank: > dmesg-fail -> PASS (bsw-nuc-2) > Test kms_pipe_crc_basic: > Subgroup read-crc-pipe-c-frame-sequence: > dmesg-fail -> PASS (bsw-nuc-2) > Subgroup suspend-read-crc-pipe-c: > dmesg-warn -> PASS (bsw-nuc-2) > Test prime_self_import: > Subgroup basic-with_fd_dup: > dmesg-warn -> PASS (bsw-nuc-2) > Subgroup basic-with_one_bo_two_files: > dmesg-warn -> PASS (bsw-nuc-2) > > bdw-ultra total:196 pass:175 dwarn:0 dfail:0 fail:0 skip:21 > bsw-nuc-2 total:196 pass:158 dwarn:1 dfail:0 fail:0 skip:37 > byt-nuc total:196 pass:161 dwarn:0 dfail:0 fail:0 skip:35 > hsw-brixbox total:196 pass:174 dwarn:0 dfail:0 fail:0 skip:22 > hsw-gt2 total:196 pass:179 dwarn:0 dfail:0 fail:0 skip:17 > ilk-hp8440p total:196 pass:131 dwarn:1 dfail:0 fail:0 skip:64 > skl-i7k-2 total:196 pass:173 dwarn:0 dfail:0 fail:0 skip:23 > snb-dellxps total:196 pass:162 dwarn:0 dfail:0 fail:0 skip:34 > BOOT FAILED for bdw-nuci7 > > Results at /archive/results/CI_IGT_test/Patchwork_1835/ > > 851708c7e97537ed618fadbe5d342eaf8fa5146d drm-intel-nightly: 2016y-04m-07d-13h-56m-00s UTC integration manifest > 92e5b39bf422197014aa097e20e66bdaa93af717 drm/i915: Do not serialize forcewake acquire across domains > e55b59fd4e7f7999f9d4d6def7bcb009285237bc drm/i915: Simplify for_each_fw_domain iterators > a2f0e7b42549d8061709fdd3a715614e8677e178 drm/i915: Use consistent forcewake auto-release timeout across kernel configs Series merged (on the basis it does not break even BSW) - thanks for the review! Regards, Tvrtko
On Tue, Apr 12, 2016 at 02:33:45PM +0100, Tvrtko Ursulin wrote: > > On 08/04/16 08:02, Patchwork wrote: > > Test kms_flip: > > Subgroup basic-flip-vs-dpms: > > pass -> DMESG-WARN (ilk-hp8440p) UNSTABLE > > Old friend unclaimed access prior to suspending: > https://bugs.freedesktop.org/show_bug.cgi?id=94164 o_O ILK doesn't even have a way to detect such things.
On 12/04/16 14:43, Ville Syrjälä wrote: > On Tue, Apr 12, 2016 at 02:33:45PM +0100, Tvrtko Ursulin wrote: >> >> On 08/04/16 08:02, Patchwork wrote: >>> Test kms_flip: >>> Subgroup basic-flip-vs-dpms: >>> pass -> DMESG-WARN (ilk-hp8440p) UNSTABLE >> >> Old friend unclaimed access prior to suspending: >> https://bugs.freedesktop.org/show_bug.cgi?id=94164 > > o_O > > ILK doesn't even have a way to detect such things. :D No idea, must be copy and paste error, wrong tab, stack overflow on (mental) context switching.. Real one is sporadic fifo underrun: https://bugs.freedesktop.org/show_bug.cgi?id=93787 Regards, Tvrtko
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 4ebd3ff02803..a1dae0d6ba23 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -666,7 +666,7 @@ struct intel_uncore { struct drm_i915_private *i915; enum forcewake_domain_id id; unsigned wake_count; - struct timer_list timer; + struct hrtimer timer; i915_reg_t reg_set; u32 val_set; u32 val_clear; diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index ac2ac07b505b..24bedac64518 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c @@ -60,7 +60,11 @@ fw_domain_reset(const struct intel_uncore_forcewake_domain *d) static inline void fw_domain_arm_timer(struct intel_uncore_forcewake_domain *d) { - mod_timer_pinned(&d->timer, jiffies + 1); + d->wake_count++; + hrtimer_start_range_ns(&d->timer, + ktime_set(0, NSEC_PER_MSEC), + NSEC_PER_MSEC, + HRTIMER_MODE_REL); } static inline void @@ -224,9 +228,11 @@ static int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv) return ret; } -static void intel_uncore_fw_release_timer(unsigned long arg) +static enum hrtimer_restart +intel_uncore_fw_release_timer(struct hrtimer *timer) { - struct intel_uncore_forcewake_domain *domain = (void *)arg; + struct intel_uncore_forcewake_domain *domain = + container_of(timer, struct intel_uncore_forcewake_domain, timer); unsigned long irqflags; assert_rpm_device_not_suspended(domain->i915); @@ -240,6 +246,8 @@ static void intel_uncore_fw_release_timer(unsigned long arg) 1 << domain->id); spin_unlock_irqrestore(&domain->i915->uncore.lock, irqflags); + + return HRTIMER_NORESTART; } void intel_uncore_forcewake_reset(struct drm_device *dev, bool restore) @@ -259,16 +267,16 @@ void intel_uncore_forcewake_reset(struct drm_device *dev, bool restore) active_domains = 0; for_each_fw_domain(domain, dev_priv, id) { - if (del_timer_sync(&domain->timer) == 0) + if (hrtimer_cancel(&domain->timer) == 0) continue; - intel_uncore_fw_release_timer((unsigned long)domain); + intel_uncore_fw_release_timer(&domain->timer); } spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); for_each_fw_domain(domain, dev_priv, id) { - if (timer_pending(&domain->timer)) + if (hrtimer_active(&domain->timer)) active_domains |= (1 << id); } @@ -491,7 +499,6 @@ static void __intel_uncore_forcewake_put(struct drm_i915_private *dev_priv, if (--domain->wake_count) continue; - domain->wake_count++; fw_domain_arm_timer(domain); } } @@ -732,7 +739,6 @@ static inline void __force_wake_auto(struct drm_i915_private *dev_priv, continue; } - domain->wake_count++; fw_domain_arm_timer(domain); } @@ -1150,7 +1156,8 @@ static void fw_domain_init(struct drm_i915_private *dev_priv, d->i915 = dev_priv; d->id = domain_id; - setup_timer(&d->timer, intel_uncore_fw_release_timer, (unsigned long)d); + hrtimer_init(&d->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + d->timer.function = intel_uncore_fw_release_timer; dev_priv->uncore.fw_domains |= (1 << domain_id);