Disclaimer: Please note that as this series includes a patch which touches a good number of drivers I will only copy everyone in the cover letter and the respective patch. Assumption is people are subscribed to dri-devel so can look at the whole series there. I know someone is bound to complain for both the case when everyone is copied on everything for getting too much email, and also for this other case. So please be flexible.
Description: All drivers which use the TTM pool allocator end up requesting large order allocations when allocating large buffers. Those can be slow due memory pressure and so add latency to buffer creation. But there is often also a size limit above which contiguous blocks do not bring any performance benefits. This series allows drivers to say when it is okay for the TTM to try a bit less hard. We do this by allowing drivers to specify this cut off point when creating the TTM device and pools. Allocations above this size will skip direct reclaim so under memory pressure worst case latency will improve. Background reclaim is still kicked off and both before and after the memory pressure all the TTM pool buckets remain to be used as they are today. This is especially interesting if someone has configured MAX_PAGE_ORDER to higher than the default. And even with the default, with amdgpu for example, the last patch in the series makes use of the new feature by telling TTM that above 2MiB we do not expect performance benefits. Which makes TTM not try direct reclaim for the top bucket (4MiB). End result is TTM drivers become a tiny bit nicer mm citizens and users benefit from better worst case buffer creation latencies. As a side benefit we get rid of two instances of those often very unreadable mutliple nameless booleans function signatures. If this sounds interesting and gets merge the invidual drivers can follow up with patches configuring their thresholds. v2: * Christian suggested to pass in the new data by changing the function signatures. v1 thread: https://lore.kernel.org/dri-devel/[email protected]/ Cc: Alex Deucher <[email protected]> Cc: Christian König <[email protected]> Cc: Danilo Krummrich <[email protected]> Cc: Dave Airlie <[email protected]> Cc: Gerd Hoffmann <[email protected]> Cc: Joonas Lahtinen <[email protected]> Cc: Lucas De Marchi <[email protected]> Cc: Lyude Paul <[email protected]> Cc: Maarten Lankhorst <[email protected]> Cc: Maxime Ripard <[email protected]> Cc: Rodrigo Vivi <[email protected]> Cc: Sui Jingfeng <[email protected]> Cc: Thadeu Lima de Souza Cascardo <[email protected]> Cc: Thomas Hellström <[email protected]> Cc: Thomas Zimmermann <[email protected]> Cc: Zack Rusin <[email protected]> Tvrtko Ursulin (5): drm/ttm: Add getter for some pool properties drm/ttm: Replace multiple booleans with flags in pool init drm/ttm: Replace multiple booleans with flags in device init drm/ttm: Allow drivers to specify maximum beneficial TTM pool size drm/amdgpu: Configure max beneficial TTM pool allocation order drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 7 +-- drivers/gpu/drm/drm_gem_vram_helper.c | 2 +- drivers/gpu/drm/i915/intel_region_ttm.c | 2 +- drivers/gpu/drm/loongson/lsdc_ttm.c | 2 +- drivers/gpu/drm/nouveau/nouveau_ttm.c | 4 +- drivers/gpu/drm/qxl/qxl_ttm.c | 2 +- drivers/gpu/drm/radeon/radeon_ttm.c | 4 +- drivers/gpu/drm/ttm/tests/ttm_bo_test.c | 16 +++---- .../gpu/drm/ttm/tests/ttm_bo_validate_test.c | 2 +- drivers/gpu/drm/ttm/tests/ttm_device_test.c | 31 +++++-------- drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.c | 22 ++++------ drivers/gpu/drm/ttm/tests/ttm_kunit_helpers.h | 7 +-- drivers/gpu/drm/ttm/tests/ttm_pool_test.c | 23 +++++----- drivers/gpu/drm/ttm/ttm_device.c | 7 ++- drivers/gpu/drm/ttm/ttm_pool.c | 44 +++++++++++-------- drivers/gpu/drm/ttm/ttm_tt.c | 9 ++-- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 4 +- drivers/gpu/drm/xe/xe_device.c | 2 +- include/drm/ttm/ttm_device.h | 2 +- include/drm/ttm/ttm_pool.h | 27 +++++++++--- 20 files changed, 113 insertions(+), 106 deletions(-) -- 2.48.0
