linux_dsm_epyc7002/drivers/gpu/drm
Chris Wilson a491cc8e15 drm/i915: Truly bump ready tasks ahead of busywaits
In commit b7404c7ecb ("drm/i915: Bump ready tasks ahead of
busywaits"), I tried cutting a corner in order to not install a signal
for each of our dependencies, and only listened to requests on which we
were intending to busywait. The compromise that was made was that
instead of then being able to promote the request with a full
NOSEMAPHORE like its non-busywaiting brethren, as we had not ensured we
had cleared the semaphore chain, we settled for only using the NEWCLIENT
boost. With an over saturated system with multiple NEWCLIENTS in flight
at any time, this was found to be an inadequate promotion and left us
with a much poorer scheduling order than prior to using semaphores.

The outcome of this patch, is that all requests have NOSEMAPHORE
priority when they have no dependencies and are ready to run and not
busywait, restoring the pre-semaphore ordering on saturated systems.

We can demonstrate the effect of poor scheduling order by oversaturating
the system using gem_wsim on a system with multiple vcs engines
(i.e running the same workloads across more clients than required for
peak throughput, e.g. media_load_balance_17i7.wsim -c4 -b context):

x v5.1 (normalized)
+ tip
* fix
+------------------------------------------------------------------------+
|                                                                    x   |
|                                                                    x   |
|                                                                    x   |
|                                                                    x   |
|                                                                   %x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %%x   |
|                                                                  %#x   |
|                                                                  %#x   |
|                                                                  %#x   |
|                                                                  %#x   |
|                                                                  %#x   |
|         +                                                        %#xx  |
|         +                                                        %#xx  |
|         +                                                       %%#xx  |
|         +                                                       %%#xx  |
|         +                                                       %%#xx  |
|         +                                                       %%#xx  |
|         +                                                       %%##x  |
|         +++                                                     %%##x  |
|         +++                                                     %%##x  |
|         +++                                                     %%##x  |
|        ++++                                                     %%##x  |
|        ++++                                                     %%##x  |
|        ++++                                                     %%##xx |
|        ++++                                                     %###xx |
|        ++++                                                     %###xx |
|        ++++                                                     %###xx |
|        ++++                                                     %###xx |
|        ++++ +                                                   %#O#xx |
|        ++++ +                                                   %#O#xx |
|        ++++++ +                                                 %#O#xx |
|       ++++++++++                                                %OOOxxx|
|       ++++++++++       +                                       %#OOO#xx|
|     + ++++++++++++ ++ +++++    +                        ++    @@OOOO#xx|
|                                                                   |A_| |
||__________M_______A____________________|                               |
|                                                                 |A_|   |
+------------------------------------------------------------------------+
    N           Min           Max        Median           Avg        Stddev
x 120       0.99456       1.00628      0.999985     1.0001545  0.0024387139
+ 120      0.873021       1.00037      0.884134    0.90148752   0.039190862
Difference at 99.5% confidence
	-0.098667 +/- 0.0110762
	-9.86517% +/- 1.10745%
	(Student's t, pooled s = 0.0277657)
% 120      0.990207       1.00165     0.9970265    0.99699748     0.0021024
Difference at 99.5% confidence
	-0.003157 +/- 0.000908245
	-0.315651% +/- 0.0908105%
	(Student's t, pooled s = 0.00227678)

Fixes: b7404c7ecb ("drm/i915: Bump ready tasks ahead of busywaits")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
Cc: Dmitry Ermilov <dmitry.ermilov@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190515130052.4475-2-chris@chris-wilson.co.uk
(cherry picked from commit 17db337f50)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2019-05-20 18:29:20 +03:00
..
amd drm i915, amdgpu, nouveau, msm, panfrost, bridge, pl111 fixes 2019-05-16 07:22:42 -07:00
arc drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
arm - A handful of fixes from -next that just missed feature freeze 2019-05-09 11:04:00 +10:00
armada drm/armada: Use drm_fb_helper_fill_info 2019-03-27 09:56:14 +01:00
aspeed drm: aspeed: Clean up Kconfig options 2019-04-16 16:39:24 +02:00
ast Merge branch 'drm-next-5.2' of git://people.freedesktop.org/~agd5f/linux into drm-next 2019-04-03 13:26:11 +10:00
atmel-hlcdc drm/irq: Don't check for DRIVER_HAVE_IRQ in drm_irq_(un)install 2019-01-29 15:45:06 +01:00
bochs Merge drm/drm-next into drm-misc-next 2019-04-10 15:50:49 -04:00
bridge drm i915, amdgpu, nouveau, msm, panfrost, bridge, pl111 fixes 2019-05-16 07:22:42 -07:00
cirrus drm-misc-next for 5.2: 2019-04-12 14:27:45 +10:00
etnaviv Merge branch 'etnaviv/next' of https://git.pengutronix.de/git/lst/linux into drm-next 2019-05-07 08:27:23 +10:00
exynos drm/ipp: clean up debug messages 2019-04-24 11:23:20 +09:00
fsl-dcu - Fix-ups 2019-05-14 10:45:03 -07:00
gma500 drm/gma500: Use drm_fb_helper_fill_info 2019-03-27 09:57:28 +01:00
hisilicon Merge branch 'drm-next-5.2' of git://people.freedesktop.org/~agd5f/linux into drm-next 2019-04-03 13:26:11 +10:00
i2c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
i810
i915 drm/i915: Truly bump ready tasks ahead of busywaits 2019-05-20 18:29:20 +03:00
imx drm pull request for 5.2 2019-05-08 21:35:19 -07:00
lib
lima drm/lima: Make lima_sched_ops static 2019-04-17 20:56:40 +08:00
mediatek drm/mediatek: no change parent rate in round_rate() for MT2701 hdmi phy 2019-04-09 17:47:01 +08:00
meson drm-misc-next for v5.2: 2019-04-24 10:12:50 +10:00
mga drm/irq: Ditch DRIVER_IRQ_SHARED 2019-01-29 15:45:21 +01:00
mgag200 Merge branch 'drm-next-5.2' of git://people.freedesktop.org/~agd5f/linux into drm-next 2019-04-03 13:26:11 +10:00
msm drm i915, amdgpu, nouveau, msm, panfrost, bridge, pl111 fixes 2019-05-16 07:22:42 -07:00
mxsfb drm: Use new DRM_BUS_FLAG_*_(DRIVE|SAMPLE)_(POS|NEG)EDGE flags 2019-03-18 11:42:13 +02:00
nouveau drm i915, amdgpu, nouveau, msm, panfrost, bridge, pl111 fixes 2019-05-16 07:22:42 -07:00
omapdrm Linux 5.1-rc5 2019-04-15 15:51:49 +10:00
panel drm/panel: simple: add lg,acx467akm-7 panel 2019-04-17 23:02:44 +02:00
panfrost drm/panfrost: Add missing _fini() calls in panfrost_device_fini() 2019-05-13 09:51:13 -05:00
pl111 drm/pl111: Initialize clock spinlock early 2019-05-15 00:15:45 +02:00
qxl drm pull request for 5.2 2019-05-08 21:35:19 -07:00
r128 drm/irq: Ditch DRIVER_IRQ_SHARED 2019-01-29 15:45:21 +01:00
radeon drm i915, amdgpu, nouveau, msm, panfrost, bridge, pl111 fixes 2019-05-16 07:22:42 -07:00
rcar-du drm: rcar-du: lvds: Set LVEN and LVRES bits together on D3 2019-03-28 06:12:42 +02:00
rockchip drm/rockchip/rockchip_drm_gem.c: convert to use vm_map_pages() 2019-05-14 09:47:50 -07:00
savage drm/savage: mark expected switch fall-throughs 2019-01-30 17:35:29 +01:00
scheduler drm/sched: Fix description of drm_sched_stop 2019-04-23 11:15:38 -05:00
selftests drm/selftests/mm: Switch to bitmap_zalloc() 2019-03-20 17:36:06 +00:00
shmobile video: backlight: Remove useless BACKLIGHT_LCD_SUPPORT kernel symbol 2019-04-03 11:15:57 +01:00
sis
sti drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
stm drm/stm: add sleep power management 2019-04-01 11:00:18 +02:00
sun4i One more patch to remove io.h from clk-provider.h. We used to need this 2019-05-16 19:05:35 -07:00
tdfx
tegra drm pull request for 5.2 2019-05-08 21:35:19 -07:00
tilcdc video: backlight: Remove useless BACKLIGHT_LCD_SUPPORT kernel symbol 2019-04-03 11:15:57 +01:00
tinydrm drm/tinydrm: Fix fbdev pixel format 2019-04-11 16:16:06 +02:00
ttm drm pull request for 5.2 2019-05-08 21:35:19 -07:00
tve200 drm: Use new DRM_BUS_FLAG_*_(DRIVE|SAMPLE)_(POS|NEG)EDGE flags 2019-03-18 11:42:13 +02:00
udl drm/udl: move to embedding drm device inside udl device. 2019-04-24 13:48:45 +10:00
v3d drm/v3d: fix a missing check of pm_runtime_get_sync 2019-04-01 10:45:59 -07:00
vboxvideo drm pull request for 5.2 2019-05-08 21:35:19 -07:00
vc4 One more patch to remove io.h from clk-provider.h. We used to need this 2019-05-16 19:05:35 -07:00
vgem drm/vgem: fix use-after-free when drm_gem_handle_create() fails 2019-03-18 08:45:57 +01:00
via mm/gup: change GUP fast to use flags rather than a write 'bool' 2019-05-14 09:47:46 -07:00
virtio drm pull request for 5.2 2019-05-08 21:35:19 -07:00
vkms Linux 5.1-rc5 2019-04-15 15:51:49 +10:00
vmwgfx drm pull request for 5.2 2019-05-08 21:35:19 -07:00
xen drm/xen/xen_drm_front_gem.c: convert to use vm_map_pages() 2019-05-14 09:47:50 -07:00
zte drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
ati_pcigart.c
drm_agpsupport.c drm: Trivial comment grammar cleanups 2019-02-04 10:21:17 +01:00
drm_atomic_helper.c Linux 5.1-rc5 2019-04-15 15:51:49 +10:00
drm_atomic_state_helper.c drm: writeback: Fix leak of writeback job 2019-03-18 17:24:32 +02:00
drm_atomic_uapi.c drm/atomic: -EACCESS for lease-denied crtc lookup 2019-04-24 11:31:17 +02:00
drm_atomic.c drm: Add drm_atomic_get_old/new_private_obj_state 2019-04-29 12:35:56 +01:00
drm_auth.c - fb_helper: Fix NULL deref in legacy drivers (Noralf) 2019-04-26 11:35:44 +10:00
drm_blend.c
drm_bridge.c drm: bridge: Constify mode arguments to bridge .mode_set() operation 2019-01-14 03:51:14 +02:00
drm_bufs.c drm/legacy: move map cleanups into drm_bufs.c 2019-04-24 12:32:13 +10:00
drm_cache.c
drm_client.c drm/client: Rename drm_client_add() to drm_client_register() 2019-04-11 16:14:49 +02:00
drm_color_mgmt.c drm: Constify drm_color_lut_check() 2019-01-29 23:26:12 +02:00
drm_connector.c drm: Fix timestamp docs for variable refresh properties. 2019-05-07 10:39:14 -05:00
drm_context.c drm: Fix error handling in drm_legacy_addctx 2019-01-07 11:26:31 +01:00
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: Remove use of drm_mode_object 2019-01-15 13:20:56 +01:00
drm_crtc_internal.h drm/atomic: Wire file_priv through for property changes 2019-04-24 11:30:52 +02:00
drm_crtc.c drm/lease: Make sure implicit planes are leased 2019-04-24 11:30:32 +02:00
drm_damage_helper.c drm: prepare for drmP.h removal from drm_modeset_helper.h 2019-02-07 21:48:28 +01:00
drm_debugfs_crc.c
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c
drm_dp_cec.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/dsc: Add kernel documentation for DRM DP DSC helpers 2019-02-08 13:38:51 -08:00
drm_dp_mst_topology.c drm/dp: Set the connector's TILE property even for DP SST connectors 2019-03-14 11:33:17 -07:00
drm_drv.c drm/legacy: move init/destroy of struct members into legacy file 2019-04-24 12:32:18 +10:00
drm_dsc.c drm/dsc: Split DSC PPS and SDP header initialisations 2019-03-05 13:24:34 -05:00
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm: add non-desktop quirk for Valve HMDs 2019-05-07 11:48:11 +10:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c drm/cma-helper: Remove unused fbdev code 2019-01-17 10:56:38 +01:00
drm_fb_helper.c drm/fb-helper: Fix drm_fb_helper_firmware_config() NULL pointer deref 2019-04-24 15:57:43 +02:00
drm_file.c drm/legacy: remove some legacy lock struct members 2019-04-24 12:36:32 +10:00
drm_flip_work.c drm: move drm_can_sleep() to drm_util.h 2019-01-14 10:58:37 +01:00
drm_format_helper.c drm: add drm_format_helper.c to kerneldoc 2019-04-17 09:39:22 +02:00
drm_fourcc.c drm/fourcc: Fix conflicting Y41x definitions 2019-03-21 09:49:04 +01:00
drm_framebuffer.c drm: Trivial comment grammar cleanups 2019-02-04 10:21:17 +01:00
drm_gem_cma_helper.c drm/cma-helper: Fix drm_gem_cma_free_object() 2019-05-08 16:01:40 +02:00
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Add drm_gem_fb_create_with_dirty() 2019-01-17 10:56:45 +01:00
drm_gem_shmem_helper.c drm: shmem: Off by one in drm_gem_shmem_fault() 2019-04-01 10:44:34 -07:00
drm_gem.c drm/gem: Fix sphinx warnings 2019-04-25 10:02:10 -04:00
drm_hashtab.c
drm_internal.h drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_ioc32.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_ioctl.c drm: introduce a capability flag for syncobj timeline support 2019-05-02 12:36:47 +10:00
drm_irq.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_kms_helper_common.c drm: fix spelling mistake "intead" -> "instead" 2019-03-04 11:18:50 -05:00
drm_lease.c drm/lease: Check for lessor outside of locks 2019-04-24 11:29:32 +02:00
drm_legacy_misc.c drm/legacy: remove some legacy lock struct members 2019-04-24 12:36:32 +10:00
drm_legacy.h drm/legacy: remove some legacy lock struct members 2019-04-24 12:36:32 +10:00
drm_lock.c drm/legacy: move lock cleanup for master into lock file (v2) 2019-04-24 12:32:15 +10:00
drm_memory.c drm: fallback to dma_alloc_coherent when memory encryption is active 2019-04-01 11:43:42 +02:00
drm_mipi_dsi.c
drm_mm.c drm: Simplify stacktrace handling 2019-04-29 12:37:53 +02:00
drm_mode_config.c drm: Expose "FB_DAMAGE_CLIPS" property to atomic aware user-space only 2019-04-16 15:13:23 -07:00
drm_mode_object.c drm/atomic: Wire file_priv through for property changes 2019-04-24 11:30:52 +02:00
drm_modes.c drm: Use new DRM_BUS_FLAG_*_(DRIVE|SAMPLE)_(POS|NEG)EDGE flags 2019-03-18 11:42:13 +02:00
drm_modeset_helper.c drm: prepare for drmP.h removal from drm_modeset_helper.h 2019-02-07 21:48:28 +01:00
drm_modeset_lock.c
drm_of.c drm/of: Fix kerneldoc 2019-01-12 13:07:58 +01:00
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for Lenovo Ideapad D330 2019-03-01 09:15:55 +02:00
drm_panel.c drm/panel: Small documentation polish 2019-01-12 13:08:12 +01:00
drm_pci.c cross-tree: phase out dma_zalloc_coherent() 2019-01-08 07:58:37 -05:00
drm_plane_helper.c
drm_plane.c drm/lease: Make sure implicit planes are leased 2019-04-24 11:30:32 +02:00
drm_prime.c drm: Add reservation_object to drm_gem_object 2019-02-19 11:08:40 +01:00
drm_print.c drm: Add a helper function for printing a debugfs_regset32. 2019-04-01 10:44:34 -07:00
drm_probe_helper.c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
drm_property.c drm: Trivial comment grammar cleanups 2019-02-04 10:21:17 +01:00
drm_rect.c drm: Nuke drm_calc_{h,v}scale_relaxed() 2019-02-07 13:14:06 +02:00
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c drm: Split out drm_probe_helper.h 2019-01-24 13:20:42 +01:00
drm_syncobj.c drm pull request for 5.2 2019-05-08 21:35:19 -07:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c drm: Trivial comment grammar cleanups 2019-02-04 10:21:17 +01:00
drm_vm.c drm: allow removal of legacy codepaths (v4.1) 2019-04-24 12:33:15 +10:00
drm_vma_manager.c
drm_writeback.c drm: writeback: Add job prepare and cleanup operations 2019-03-18 17:24:38 +02:00
Kconfig - Fix-ups 2019-05-14 10:45:03 -07:00
Makefile Merge branch 'drm-legacy-cleanup' of git://people.freedesktop.org/~airlied/linux into drm-next 2019-04-24 10:36:22 +02:00