]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/pf: Define admin_only as real flag
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Tue, 27 Jan 2026 21:05:01 +0000 (22:05 +0100)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Tue, 3 Feb 2026 11:02:44 +0000 (12:02 +0100)
Instead of doing guesses each time during the runtime, set flag
admin_only once during PF's initialization.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patch.msgid.link/20260127210501.794-1-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
drivers/gpu/drm/xe/xe_sriov_pf.c
drivers/gpu/drm/xe/xe_sriov_pf_helpers.h
drivers/gpu/drm/xe/xe_sriov_pf_types.h

index 42bfc4bcfbcfe76936433829c49a4d10f11bb86d..3889dc3e49ca61241f9afe2ce842b070971d534c 100644 (file)
@@ -15,7 +15,7 @@
 static void pf_set_admin_mode(struct xe_device *xe, bool enable)
 {
        /* should match logic of xe_sriov_pf_admin_only() */
-       xe->info.probe_display = !enable;
+       xe->sriov.pf.admin_only = enable;
        KUNIT_EXPECT_EQ(kunit_get_current_test(), enable, xe_sriov_pf_admin_only(xe));
 }
 
index 33bd754d138fa64609cce1ea05d2e09fde5f9963..919f176a19eb1de555212f77461d4c3f8ab98300 100644 (file)
 #include "xe_sriov_pf_sysfs.h"
 #include "xe_sriov_printk.h"
 
+static bool wanted_admin_only(struct xe_device *xe)
+{
+       return !xe->info.probe_display;
+}
+
 static unsigned int wanted_max_vfs(struct xe_device *xe)
 {
        return xe_configfs_get_max_vfs(to_pci_dev(xe->drm.dev));
@@ -74,6 +79,7 @@ bool xe_sriov_pf_readiness(struct xe_device *xe)
 
        pf_reduce_totalvfs(xe, newlimit);
 
+       xe->sriov.pf.admin_only = wanted_admin_only(xe);
        xe->sriov.pf.device_total_vfs = totalvfs;
        xe->sriov.pf.driver_max_vfs = newlimit;
 
index 9054fdc34597403a02fa49211d2303222b553001..0fcc6cec4afc428893d6d68af4e6694370a83194 100644 (file)
@@ -56,7 +56,8 @@ static inline unsigned int xe_sriov_pf_num_vfs(const struct xe_device *xe)
  */
 static inline bool xe_sriov_pf_admin_only(const struct xe_device *xe)
 {
-       return !xe->info.probe_display;
+       xe_assert(xe, IS_SRIOV_PF(xe));
+       return xe->sriov.pf.admin_only;
 }
 
 static inline struct mutex *xe_sriov_pf_master_mutex(struct xe_device *xe)
index b0253e1ae5da4ab20b8318c648d1cd453fa40b93..080cf10512f4b402aa58df982de2190ef9360b75 100644 (file)
@@ -36,6 +36,9 @@ struct xe_sriov_metadata {
  * @XE_SRIOV_MODE_PF mode.
  */
 struct xe_device_pf {
+       /** @admin_only: PF functionality focused on VFs management only. */
+       bool admin_only;
+
        /** @device_total_vfs: Maximum number of VFs supported by the device. */
        u16 device_total_vfs;