linux_dsm_epyc7002/drivers/gpu/drm
Chris Wilson 09137e9454 drm/i915/gem: Unpin idle contexts from kswapd reclaim
We removed retiring requests from the shrinker in order to decouple the
mutexes from reclaim in preparation for unravelling the struct_mutex.
The impact of not retiring is that we are much less agressive in making
global objects available for shrinking, as such objects remain pinned
until they are flushed by a heartbeat pulse following the last retired
request along their timeline. In order to ensure that pulse occurs in
time for memory reclamation, we should kick it from kswapd.

The catch is that we have added some flush_work() into the retirement
phase (to ensure that we reach a global idle in a timely manner), but
these flush_work() are not eligible (i.e do not belong to WQ_MEM_RELCAIM)
for use from inside kswapd. To avoid flushing those workqueues, we teach
the retirer not to do so unless we are actually waiting, and only do the
plain retire from inside the shrinker.

Note that for execlists, we already retire completed contexts as they
are scheduled out, so it should not be keeping global state
unnecessarily pinned. The legacy ringbuffer however...

References: 9e9539800d ("drm/i915: Remove waiting & retiring from shrinker paths")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200708173748.32734-1-chris@chris-wilson.co.uk
2020-07-08 22:05:49 +01:00
..
amd drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
arc drm/arc: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:02:03 +02:00
arm drm/malidp: convert platform driver to use dev_groups 2020-06-15 14:56:09 +01:00
armada drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
aspeed drm/cma-helper: Rename symbols from drm_cma_gem_ to drm_gem_cma_ 2020-06-10 09:01:38 +02:00
ast drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
atmel-hlcdc drm/atmel-hlcdc: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:02:34 +02:00
bochs
bridge drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
etnaviv drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
exynos drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
fsl-dcu drm/fsl-dcu: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:02:52 +02:00
gma500 drm/gma500: Stop using mode->private_flags 2020-05-27 14:31:42 +03:00
hisilicon drm/hisilicon/kirin: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:03:13 +02:00
i2c drm: Nuke mode->vrefresh 2020-05-27 14:31:42 +03:00
i810
i915 drm/i915/gem: Unpin idle contexts from kswapd reclaim 2020-07-08 22:05:49 +01:00
imx drm/imx: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:03:27 +02:00
ingenic drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
lib
lima
mcde drm/mcde: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:04:21 +02:00
mediatek drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
meson drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
mga
mgag200 drm/mgag200: Use managed device initialization 2020-06-11 10:06:14 +02:00
msm drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
mxsfb drm/mxsfb: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:04:51 +02:00
nouveau drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
omapdrm drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
panel drm/panel: simple: Add support for KOE TX26D202VM0BWA panel 2020-06-05 17:45:26 +02:00
panfrost drm/panfrost: Use kvfree() to free bo->sgts 2020-06-19 11:00:02 +01:00
pl111
qxl drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
r128
radeon drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
rcar-du drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
rockchip drm/rockchip: Add per-pixel alpha support for the PX30 VOP 2020-06-17 12:04:46 +02:00
savage
scheduler
selftests drm/kselftest: fix spellint typo in test-drm_mm.c 2020-06-16 14:13:04 +02:00
shmobile drm/shmobile: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:05:18 +02:00
sis
sti drm/sti: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:05:45 +02:00
stm drm/stm: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS_WITH_DUMB_CREATE 2020-06-10 09:05:32 +02:00
sun4i drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
tdfx
tegra drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
tidss drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
tilcdc drm/tilcdc: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:05:58 +02:00
tiny drm/cma-helper: Rework DRM_GEM_CMA_VMAP_DRIVER_OPS macro 2020-06-10 09:01:41 +02:00
ttm mmap locking API: convert mmap_sem comments 2020-06-09 09:39:14 -07:00
tve200 drm/tve200: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:06:11 +02:00
udl drm/udl: Use GEM vmap/mmap function from SHMEM helpers 2020-06-10 10:17:21 +02:00
v3d
vboxvideo
vc4 drm/vc4: crtc: Restrict HACT_ACT setup to DSI 2020-06-10 11:09:38 +02:00
vgem
via
virtio drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
vkms
vmwgfx drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
xen
zte drm/zte: Set GEM CMA functions with DRM_GEM_CMA_DRIVER_OPS 2020-06-10 09:06:23 +02:00
drm_agpsupport.c
drm_atomic_helper.c drm: use drm_dev_has_vblank more 2020-05-29 12:58:11 +02:00
drm_atomic_state_helper.c
drm_atomic_uapi.c
drm_atomic.c
drm_auth.c drm/auth: make drm_{set,drop}master_ioctl symmetrical 2020-06-15 14:49:50 +01:00
drm_blend.c
drm_bridge_connector.c
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_client_modeset.c drm: Nuke mode->vrefresh 2020-05-27 14:31:42 +03:00
drm_client.c drm/client: Add drm_client_framebuffer_flush() 2020-05-26 13:31:01 +02:00
drm_color_mgmt.c
drm_connector.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h
drm_crtc.c drm: add docs for standard CRTC properties 2020-06-01 16:13:20 +02:00
drm_damage_helper.c
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-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_dp_mst_topology_internal.h
drm_dp_mst_topology.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_drv.c
drm_dsc.c
drm_dumb_buffers.c
drm_edid_load.c
drm_edid.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_encoder_slave.c drm: encoder_slave: use new I2C API 2020-06-19 09:20:21 +02:00
drm_encoder.c
drm_fb_cma_helper.c
drm_fb_helper.c TTY/Serial driver updates for 5.8-rc1 2020-06-07 09:52:36 -07:00
drm_file.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_flip_work.c
drm_format_helper.c drm/format-helper: Add drm_fb_swab() 2020-05-26 13:33:08 +02:00
drm_fourcc.c
drm_framebuffer.c
drm_gem_cma_helper.c drm/cma-helper: Rework DRM_GEM_CMA_VMAP_DRIVER_OPS macro 2020-06-10 09:01:41 +02:00
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c drm/shmem-helper: Only dma-buf imports are private obj 2020-06-16 19:11:51 +02:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c
drm_gem.c drm: Remove struct drm_driver.gem_print_info 2020-06-10 09:06:30 +02:00
drm_hashtab.c
drm_hdcp.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_irq.c drm: use drm_dev_has_vblank more 2020-05-29 12:58:11 +02:00
drm_kms_helper_common.c
drm_lease.c
drm_legacy_misc.c
drm_legacy.h
drm_lock.c
drm_managed.c
drm_memory.c
drm_mipi_dbi.c drm/format-helper: Add drm_fb_swab() 2020-05-26 13:33:08 +02:00
drm_mipi_dsi.c
drm_mm.c drm/mm: remove invalid entry based optimization 2020-06-15 10:51:18 +02:00
drm_mode_config.c
drm_mode_object.c
drm_modes.c drm: Flatten drm_mode_vrefresh() 2020-05-27 14:31:42 +03:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c
drm_panel.c
drm_pci.c
drm_plane_helper.c
drm_plane.c
drm_prime.c
drm_print.c
drm_probe_helper.c drm: Nuke mode->vrefresh 2020-05-27 14:31:42 +03:00
drm_property.c
drm_rect.c
drm_scatter.c gpu/drm: remove the powerpc hack in drm_legacy_sg_alloc 2020-06-02 10:59:11 -07:00
drm_scdc_helper.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_syncobj.c
drm_sysfs.c drm/connector: notify userspace on hotplug after register complete 2020-06-03 10:24:23 +02:00
drm_trace_points.c
drm_trace.h
drm_vblank.c drm/vblank: use drm_WARN for all warnings 2020-05-31 22:34:21 +02:00
drm_vm.c drm-misc-next for v5.9: 2020-06-24 15:45:51 +10:00
drm_vma_manager.c
drm_writeback.c
Kconfig drm pull for 5.8-rc1 2020-06-02 15:04:15 -07:00
Makefile