linux_dsm_epyc7002/drivers/gpu/drm/i915
Chris Wilson b92326a040 drm/i915: Only report a wakeup if the waiter was truly asleep
If we attempt to wake up a waiter, who is currently checking the seqno
it will be in the TASK_INTERRUPTIBLE state and ttwu will report success.
However, it is actually awake and functioning -- so delay reporting the
actual wake up until it sleeps. This fixes some spurious claims of
missed_breadcrumbs when running under heavy load; i.e. sufficient load to
preempt away the newly woken waiter before they complete their checks.
However, it does so at the cost of a rare false negative; where the
waiter changes between the check and ttwu -- the only way to fix that
would be to extend the reporting from ttwu where the check could be done
atomically.

v2: Defend against !CONFIG_SMP
v3: Don't filter out calls to wake_up_process
v4: Drop risky microoptimisation to skip wakeups

Testcase: igt/drv_missed_irq # sanity check we do detect missed_breadcrumb()
Testcase: igt/gem_concurrent_blit # for generating false positives
References: https://bugs.freedesktop.org/show_bug.cgi?id=100007
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>
Link: https://patchwork.freedesktop.org/patch/msgid/20171209124710.1606-1-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2017-12-11 17:23:02 +00:00
..
gvt Merge airlied/drm-next into drm-intel-next-queued 2017-12-08 10:15:30 -08:00
selftests drm/i915/selftests: Free mock_i915->drm.mode_config 2017-12-11 11:24:30 +00:00
dvo_ch7xxx.c drm/i915/dvo: fix debug logging on unknown DID 2017-06-01 15:53:03 +03:00
dvo_ch7017.c drm/i915/lvds: Remove magic from PLL programming 2017-05-10 13:47:55 +03:00
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Move engine->needs_cmd_parser to engine->flags 2017-11-29 12:29:39 +00:00
i915_debugfs.c drm/i915: Stop showing seqno info from debugfs/i915_interrupt_info 2017-12-11 09:14:48 +00:00
i915_drv.c Merge airlied/drm-next into drm-intel-next-queued 2017-12-08 10:15:30 -08:00
i915_drv.h drm/i915: Restore GT performance in headless mode with DMC loaded 2017-12-08 12:23:07 +02:00
i915_gem_batch_pool.c drm/i915: Reinstate reservation_object zapping for batch_pool objects 2017-06-14 14:06:22 +01:00
i915_gem_batch_pool.h
i915_gem_clflush.c drm/i915: Refactor testing obj->mm.pages 2017-10-16 20:44:19 +01:00
i915_gem_clflush.h drm/i915: Force CPU synchronisation even if userspace requests ASYNC 2017-07-27 22:07:24 +02:00
i915_gem_context.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
i915_gem_context.h drm/i915: Record the default hw state after reset upon load 2017-11-10 17:23:10 +00:00
i915_gem_dmabuf.c drm/i915: s/sg_mask/sg_page_sizes/ 2017-10-09 17:07:29 +01:00
i915_gem_evict.c Linux 4.14-rc7 2017-11-02 12:40:41 +10:00
i915_gem_execbuffer.c drm/i915: Move engine->needs_cmd_parser to engine->flags 2017-11-29 12:29:39 +00:00
i915_gem_fence_reg.c drm/i915: Track user GTT faulting per-vma 2017-10-09 17:07:29 +01:00
i915_gem_fence_reg.h
i915_gem_gtt.c Merge airlied/drm-next into drm-intel-next-queued 2017-12-08 10:15:30 -08:00
i915_gem_gtt.h drm/i915: support 64K pages for the 48b PPGTT 2017-10-07 10:11:57 +01:00
i915_gem_internal.c drm/i915: s/sg_mask/sg_page_sizes/ 2017-10-09 17:07:29 +01:00
i915_gem_object.c drm/i915: Split obj->cache_coherent to track r/w 2017-08-15 15:46:57 +01:00
i915_gem_object.h drm/i915/gvt: Dmabuf support for GVT-g 2017-12-04 11:24:33 +08:00
i915_gem_render_state.c drm/i915: Pull the unconditional GPU cache invalidation into request construction 2017-11-20 15:56:16 +00:00
i915_gem_render_state.h drm/i915: Stop caching the "golden" renderstate 2017-11-10 17:23:22 +00:00
i915_gem_request.c drm/i915: Restore GT performance in headless mode with DMC loaded 2017-12-08 12:23:07 +02:00
i915_gem_request.h drm/i915/scheduler: Support user-defined priorities 2017-10-04 17:52:46 +01:00
i915_gem_shrinker.c drm/i915: Update shrinker drm_i915_private naming convention 2017-11-27 16:37:15 +00:00
i915_gem_stolen.c drm/i915: Use ELK stolen memory reserved detection for ILK 2017-11-15 18:49:10 +02:00
i915_gem_tiling.c drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
i915_gem_timeline.c drm/i915: Rename i915_gem_timelines_mark_idle 2017-11-27 16:37:15 +00:00
i915_gem_timeline.h drm/i915: Rename i915_gem_timelines_mark_idle 2017-11-27 16:37:15 +00:00
i915_gem_userptr.c previous part 2 tag + ttm regression fix, i915,vc4,core,uapi fixes 2017-11-28 10:01:15 -08:00
i915_gem.c drm/i915: Restore GT performance in headless mode with DMC loaded 2017-12-08 12:23:07 +02:00
i915_gem.h drm/i915: Print the condition causing GEM_BUG_ON 2017-11-16 15:35:47 +02:00
i915_gemfs.c drm/i915: Disable THP until we have a GPU read BW W/A 2017-11-30 10:11:49 +02:00
i915_gemfs.h drm/i915: introduce simple gemfs 2017-10-07 10:11:41 +01:00
i915_gpu_error.c drm/i915: Set fake_vma.size as well as fake_vma.node.size for capture 2017-12-01 09:17:04 +00:00
i915_ioc32.c
i915_irq.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
i915_memcpy.c
i915_mm.c
i915_oa_bdw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bdw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_bxt.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_bxt.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cflgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_cflgt2.h drm/i915/perf: add support for Coffeelake GT2 2017-09-18 19:46:36 +01:00
i915_oa_cflgt3.c drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_cflgt3.h drm/i915/perf: add support for Coffeelake GT3 2017-11-13 15:59:03 +00:00
i915_oa_chv.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_chv.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_cnl.c drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_cnl.h drm/i915/perf: enable perf support on CNL 2017-11-13 15:59:24 +00:00
i915_oa_glk.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_glk.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_hsw.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_hsw.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_kblgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_kblgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt2.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt2.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt3.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt3.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_oa_sklgt4.c drm/i915: ensure oa config uuid is null terminated 2017-11-02 14:52:58 +00:00
i915_oa_sklgt4.h drm/i915/perf: prune OA configs 2017-08-03 18:18:05 +01:00
i915_params.c drm/i915/guc: Combine enable_guc_loading|submission modparams 2017-12-06 14:41:52 +00:00
i915_params.h drm/i915/guc: Combine enable_guc_loading|submission modparams 2017-12-06 14:41:52 +00:00
i915_pci.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
i915_perf.c drm/i915: Remove i915.enable_execlists module parameter 2017-11-20 21:53:59 +00:00
i915_pmu.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
i915_pmu.h drm/i915/pmu: Stop averaging with the previous sample 2017-11-24 13:20:48 +00:00
i915_pvinfo.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_reg.h drm/i915/pmu: Expose a PMU interface for perf queries 2017-11-22 11:24:57 +00:00
i915_selftest.h drm/i915/selftests: Reduce the volume of the timeout message 2017-11-10 11:31:58 +00:00
i915_suspend.c drm/i915: Move i915_gem_restore_fences to i915_gem_resume 2017-09-29 12:30:17 +01:00
i915_sw_fence.c drm/i915: Convert timers to use timer_setup() 2017-10-18 14:56:10 +03:00
i915_sw_fence.h main drm pull for v4.13 2017-07-09 18:48:37 -07:00
i915_syncmap.c drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_syncmap.h drm/i915: Squash repeated awaits on the same fence 2017-05-03 11:08:48 +01:00
i915_sysfs.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
i915_trace_points.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
i915_trace.h main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
i915_utils.h drm/i915: Warn in debug builds of incorrect usages of ptr_pack_bits 2017-11-03 09:28:06 +00:00
i915_vgpu.c drm/i915: Enable guest i915 full ppgtt functionality 2017-08-15 10:12:48 +08:00
i915_vgpu.h drm/i915: enable to read CSB and CSB write pointer from HWSP in GVT-g VM 2017-10-16 13:56:29 +03:00
i915_vma.c drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
i915_vma.h drm/i915: Refactor common list iteration over GGTT vma 2017-12-07 23:26:55 +00:00
intel_acpi.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_atomic_plane.c drm/i915: Pass proper old/new states to intel_plane_atomic_check_with_state() 2017-09-01 16:48:24 +03:00
intel_atomic.c drm/i915/cnl: Fix Cannonlake scaler mode programing. 2017-06-12 09:45:55 -07:00
intel_audio.c drm/i915: Fix kerneldocs for intel_audio.c 2017-11-15 17:32:54 +02:00
intel_bios.c Merge airlied/drm-next into drm-intel-next-queued 2017-11-14 07:43:00 -08:00
intel_bios.h
intel_breadcrumbs.c drm/i915: Only report a wakeup if the waiter was truly asleep 2017-12-11 17:23:02 +00:00
intel_cdclk.c drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. 2017-11-30 16:49:42 +01:00
intel_color.c drm/i915: Pass crtc_state to ips toggle functions, v2 2017-11-17 12:14:25 +01:00
intel_crt.c drm/i915: Eliminate crtc->config usage from CRT code 2017-11-09 20:05:18 +02:00
intel_csr.c drm/i915/skl: DMC firmware for skylake v1.27 2017-12-05 15:57:08 +02:00
intel_ddi.c drm/i915/cnl: Mask previous DDI - PLL mapping 2017-12-01 09:44:03 -08:00
intel_device_info.c drm/i915/cnl: only divide up base frequency with crystal source 2017-12-04 16:16:11 -02:00
intel_display.c Merge airlied/drm-next into drm-intel-next-queued 2017-12-08 10:15:30 -08:00
intel_dp_aux_backlight.c drm/i915: Rename global i915 to i915_modparams 2017-09-22 14:50:36 +03:00
intel_dp_link_training.c drm/i915: Explicit the connector name for DP link training result 2017-07-19 08:32:42 +02:00
intel_dp_mst.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dp.c drm-intel-next-2017-12-01: 2017-12-08 08:41:22 +10:00
intel_dpio_phy.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_dpll_mgr.c drm/i915/cnl: Simplify dco_fraction calculation. 2017-11-16 09:45:39 -08:00
intel_dpll_mgr.h drm/i915/cnl: Initialize PLLs 2017-06-12 09:42:18 -07:00
intel_drv.h More change sets for 4.16: 2017-12-04 10:56:53 +10:00
intel_dsi_dcs_backlight.c drm/i915: Initialize 'data' in intel_dsi_dcs_backlight.c 2017-08-16 18:02:00 +03:00
intel_dsi_pll.c
intel_dsi_vbt.c drm/i915/bxt: use NULL for GPIO connection ID 2017-08-21 11:52:29 +03:00
intel_dsi.c drm-intel-next-2017-12-01: 2017-12-08 08:41:22 +10:00
intel_dsi.h
intel_dvo.c drm/i915: Populate output_types from .get_config() 2017-10-30 19:53:22 +02:00
intel_engine_cs.c drm/i915: Stop showing seqno info from debugfs/i915_interrupt_info 2017-12-11 09:14:48 +00:00
intel_fbc.c drm/i915: Nuke crtc->plane 2017-11-21 19:51:34 +02:00
intel_fbdev.c drm/i915/fbdev: Serialise early hotplug events with async fbdev config 2017-11-28 10:31:52 +02:00
intel_fifo_underrun.c drm/i915: Don't rmw PIPESTAT enable bits 2017-09-25 16:54:09 +03:00
intel_frontbuffer.c
intel_frontbuffer.h
intel_guc_ct.c drm/i915/guc: Assert ctch->vma is allocated 2017-11-06 13:57:37 +00:00
intel_guc_ct.h drm/i915/guc: Introduce buffer based cmd transport 2017-05-26 13:26:53 +01:00
intel_guc_fw.c drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_guc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_guc_fwif.h drm/i915/guc: Add support for reset engine using GuC commands 2017-11-02 08:42:11 +00:00
intel_guc_log.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
intel_guc_log.h drm/i915: Unify uC variable types to avoid flooding checkpatch.pl 2017-10-06 14:09:40 +03:00
intel_guc_reg.h drm/i915/guc: Use consistent name for scratch register count 2017-11-24 20:47:39 +00:00
intel_guc_submission.c drm/i915: Consolidate checks for engine stats availability 2017-11-29 12:29:40 +00:00
intel_guc_submission.h drm/i915/guc: Update header guard name of intel_guc_submission.h 2017-11-24 10:34:30 +00:00
intel_guc.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
intel_guc.h drm/i915/guc: Rename i915_guc_reg.h to intel_guc_reg.h 2017-11-24 12:09:59 +00:00
intel_gvt.c drm/i915/guc: Introduce USES_GUC_xxx helper macros 2017-12-06 14:41:49 +00:00
intel_gvt.h drm/i915/gvt: Add gvt options sanitize function 2017-05-30 15:59:47 +03:00
intel_hangcheck.c drm/i915: Remove obsolete ringbuffer emission for gen8+ 2017-11-20 21:54:58 +00:00
intel_hdmi.c Merge airlied/drm-next into drm-intel-next-queued 2017-12-08 10:15:30 -08:00
intel_hotplug.c drm/i915: Introduce intel_hpd_pin function. 2017-08-11 11:53:47 -07:00
intel_huc.c drm/i915/huc: Load HuC only if requested 2017-12-06 14:41:54 +00:00
intel_huc.h drm/i915/huc: Load HuC only if requested 2017-12-06 14:41:54 +00:00
intel_i2c.c drm/i915: Prevent zero length "index" write 2017-11-28 10:31:42 +02:00
intel_lpe_audio.c drm/i915: Stop pretending to mask/unmask LPE audio interrupts 2017-05-26 11:51:18 +03:00
intel_lrc.c drm/i915/execlists: Cache ELSP register offset 2017-12-08 00:37:05 +00:00
intel_lrc.h drm/i915: Remove i915.enable_execlists module parameter 2017-11-20 21:53:59 +00:00
intel_lspcon.c drm/i915: Add retries for LSPCON detection 2017-10-13 12:15:10 +03:00
intel_lvds.c drm/i915: Populate output_types from .get_config() 2017-10-30 19:53:22 +02:00
intel_mocs.c drm/i915/cnl: Cannonlake has same MOCS table than Skylake. 2017-06-07 07:29:51 -07:00
intel_mocs.h
intel_modes.c Merge airlied/drm-next into drm-misc-next 2017-11-21 14:17:56 +01:00
intel_opregion.c drm/i915: Nuke intel_ddi_get_encoder_port() 2017-10-30 19:55:18 +02:00
intel_overlay.c drm: Pass struct drm_file * to __drm_mode_object_find [v2] 2017-10-12 10:03:04 +10:00
intel_panel.c drm/i915: hide unused intel_panel_set_backlight function 2017-11-27 17:27:15 +01:00
intel_pipe_crc.c drm/i915: Make ips_enabled a property depending on whether IPS is enabled, v3. 2017-11-30 16:49:42 +01:00
intel_pm.c drm/i915: add platform tag to WA 2017-12-05 14:04:29 -08:00
intel_psr.c drm/i915: Nuke intel_digital_port->port 2017-11-09 20:06:14 +02:00
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c drm/i915/gen9: Send all components in VF state 2017-08-14 12:15:49 +03:00
intel_renderstate.h
intel_ringbuffer.c drm/i915: Move mi_set_context() into the legacy ringbuffer submission 2017-11-23 16:12:06 +00:00
intel_ringbuffer.h drm/i915: Make engine state pretty-printer header configurable 2017-12-08 18:48:34 +00:00
intel_runtime_pm.c drm/i915: Restore GT performance in headless mode with DMC loaded 2017-12-08 12:23:07 +02:00
intel_sdvo_regs.h
intel_sdvo.c drm/i915: Eliminate some encoder->crtc usage from SDVO code 2017-11-09 20:04:47 +02:00
intel_sideband.c drm/i915: Move rps.hw_lock to dev_priv and s/hw_lock/pcu_lock 2017-10-11 08:56:56 +01:00
intel_sprite.c drm/i915: s/enum plane/enum i9xx_plane_id/ 2017-11-21 19:44:03 +02:00
intel_tv.c drm/i915: Eliminate some encoder->crtc usage from TV code 2017-11-09 20:04:56 +02:00
intel_uc_fw.c drm/i915/uc: Don't use -EIO to report missing firmware 2017-12-06 14:41:52 +00:00
intel_uc_fw.h drm/i915/guc: Move firmware selection to init_early 2017-12-06 14:41:47 +00:00
intel_uc.c drm/i915/huc: Load HuC only if requested 2017-12-06 14:41:54 +00:00
intel_uc.h drm/i915/guc: Combine enable_guc_loading|submission modparams 2017-12-06 14:41:52 +00:00
intel_uncore.c drm/i915: Remove unsafe i915.enable_rc6 2017-12-01 15:20:02 +00:00
intel_uncore.h drm/i915: Re-register PMIC bus access notifier on runtime resume 2017-11-21 11:39:31 +02:00
intel_vbt_defs.h drm/i915: Parse max HDMI TMDS clock from VBT 2017-10-30 19:48:11 +02:00
Kconfig drm/i915/fence: Avoid del_timer_sync() from inside a timer 2017-09-19 13:06:21 +01:00
Kconfig.debug drm/i915: Select DEBUG_FS for our test suite 2017-11-24 12:18:55 +00:00
Makefile drm-intel-next-2017-12-01: 2017-12-08 08:41:22 +10:00