Commit 921ddb37 authored by Piotr Piórkowski's avatar Piotr Piórkowski Committed by Michal Wajdeczko
Browse files

drm/xe/pf: Don't allow LMEM provisioning if LMTT isn't available on the device



The LMEM provisioning is applicable only on platforms with LMTT.

v2:
 - new commit description
 - use xe_gt_assert in xe_gt_sriov_pf_config_set_lmem instead return
   error,
 - disable pf_lmem_info if LMTT is not available
v3: fix condition in xe_gt_assert
v4: rebase

Signed-off-by: default avatarPiotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: default avatarStuart Summers <stuart.summers@intel.com>
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://lore.kernel.org/r/20250513071321.700464-1-piotr.piorkowski@intel.com
parent 16b7e65d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1520,6 +1520,8 @@ int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsigned int vfid, u64 size
{
	int err;

	xe_gt_assert(gt, xe_device_has_lmtt(gt_to_xe(gt)));

	mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
	if (vfid)
		err = pf_provision_vf_lmem(gt, vfid, size);
@@ -1629,7 +1631,7 @@ int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
	xe_gt_assert(gt, num_vfs);
	xe_gt_assert(gt, !xe_gt_is_media_type(gt));

	if (!IS_DGFX(gt_to_xe(gt)))
	if (!xe_device_has_lmtt(gt_to_xe(gt)))
		return 0;

	mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
@@ -2163,7 +2165,7 @@ static int pf_validate_vf_config(struct xe_gt *gt, unsigned int vfid)
	valid_all = valid_all && valid_ggtt;
	valid_any = valid_any || (valid_ggtt && is_primary);

	if (IS_DGFX(xe)) {
	if (xe_device_has_lmtt(xe)) {
		bool valid_lmem = pf_get_vf_config_lmem(primary_gt, vfid);

		valid_any = valid_any || (valid_lmem && is_primary);
+2 −2
Original line number Diff line number Diff line
@@ -308,7 +308,7 @@ static void pf_add_config_attrs(struct xe_gt *gt, struct dentry *parent, unsigne
	if (!xe_gt_is_media_type(gt)) {
		debugfs_create_file_unsafe(vfid ? "ggtt_quota" : "ggtt_spare",
					   0644, parent, parent, &ggtt_fops);
		if (IS_DGFX(gt_to_xe(gt)))
		if (xe_device_has_lmtt(gt_to_xe(gt)))
			debugfs_create_file_unsafe(vfid ? "lmem_quota" : "lmem_spare",
						   0644, parent, parent, &lmem_fops);
	}
@@ -558,7 +558,7 @@ void xe_gt_sriov_pf_debugfs_register(struct xe_gt *gt, struct dentry *root)
		drm_debugfs_create_files(pf_ggtt_info,
					 ARRAY_SIZE(pf_ggtt_info),
					 pfdentry, minor);
		if (IS_DGFX(gt_to_xe(gt)))
		if (xe_device_has_lmtt(gt_to_xe(gt)))
			drm_debugfs_create_files(pf_lmem_info,
						 ARRAY_SIZE(pf_lmem_info),
						 pfdentry, minor);