]> www.infradead.org Git - users/hch/configfs.git/commitdiff
drm/xe/pf: Limit fair VF LMEM provisioning
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Thu, 11 Jul 2024 19:23:19 +0000 (21:23 +0200)
committerLucas De Marchi <lucas.demarchi@intel.com>
Fri, 12 Jul 2024 20:45:56 +0000 (13:45 -0700)
Due to the current design of the BO and VRAM manager, any object
with XE_BO_FLAG_PINNED flag, which the PF driver uses during VF
LMEM provisionining, is created with the TTM_PL_FLAG_CONTIGUOUS
flag, which may cause VRAM fragmentation that prevents subsequent
allocations of larger objects, like fair VF LMEM provisioning.

To avoid such failures, round down fair VF LMEM provisioning size
to next power of two size, to compensate what xe_ttm_vram_mgr is
doing to achieve contiguous allocations.

Fixes: ac6598aed1b3 ("drm/xe/pf: Add support to configure SR-IOV VFs")
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240711192320.1198-2-michal.wajdeczko@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c

index db6c213da847d505c2cf6e1ef8d8da30475a96b7..4699b78360013c1e16805d30aa9d5d306e43c321 100644 (file)
@@ -1543,6 +1543,7 @@ static u64 pf_estimate_fair_lmem(struct xe_gt *gt, unsigned int num_vfs)
        u64 fair;
 
        fair = div_u64(available, num_vfs);
+       fair = rounddown_pow_of_two(fair);      /* XXX: ttm_vram_mgr & drm_buddy limitation */
        fair = ALIGN_DOWN(fair, alignment);
 #ifdef MAX_FAIR_LMEM
        fair = min_t(u64, MAX_FAIR_LMEM, fair);