]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/pf: Don't allow LMEM provisioning if LMTT isn't available on the device
authorPiotr Piórkowski <piotr.piorkowski@intel.com>
Tue, 13 May 2025 07:13:21 +0000 (09:13 +0200)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Fri, 16 May 2025 11:11:01 +0000 (13:11 +0200)
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: Piotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Link: https://lore.kernel.org/r/20250513071321.700464-1-piotr.piorkowski@intel.com
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c

index 2420a548cacc1c558a9f79d741cede94834d4851..3556c41c041b56ddbb2e933d253506b8f8a71c79 100644 (file)
@@ -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);
index 0fe47f41b63c88a3a3d46305659b1b31d6760ca2..13970d5a2867dd5f10b139499e1efa0c2081cade 100644 (file)
@@ -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);