From: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Cc: adam.miszczak@linux.intel.com, jakub1.kolakowski@intel.com,
lukasz.laguna@intel.com, michal.wajdeczko@intel.com,
Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Subject: [PATCH i-g-t v2 04/10] lib/xe/xe_sriov_provisioning: Add sched priority mask to string helper
Date: Tue, 25 Nov 2025 11:23:03 +0100 [thread overview]
Message-ID: <20251125102312.43142-5-marcin.bernatowicz@linux.intel.com> (raw)
In-Reply-To: <20251125102312.43142-1-marcin.bernatowicz@linux.intel.com>
Introduce xe_sriov_sched_priority_mask_to_string() to format a
scheduling priority bitmask as a space-separated list of priority names.
Introduce xe_sriov_sched_priority_choice_to_mask() to convert an
igt_sysfs_choice into a bitmask and a selected priority index.
Both helpers are thin wrappers around the generic igt_sysfs_choice
functions.
Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Cc: Adam Miszczak <adam.miszczak@linux.intel.com>
Cc: Jakub Kolakowski <jakub1.kolakowski@intel.com>
Cc: Lukasz Laguna <lukasz.laguna@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
v2:
- Use BIT() macro for sched priority masks and drop static asserts
(Michal).
- Converted both helpers to thin wrappers around newly introduced
generic igt_sysfs_choice helpers (Michal),
avoiding the need to export the static array of priority names.
---
---
lib/xe/xe_sriov_provisioning.c | 32 ++++++++++++++++++++++++++++++++
lib/xe/xe_sriov_provisioning.h | 13 +++++++++++++
2 files changed, 45 insertions(+)
diff --git a/lib/xe/xe_sriov_provisioning.c b/lib/xe/xe_sriov_provisioning.c
index c2a1db4bc..929863059 100644
--- a/lib/xe/xe_sriov_provisioning.c
+++ b/lib/xe/xe_sriov_provisioning.c
@@ -9,6 +9,8 @@
#include "igt_core.h"
#include "igt_debugfs.h"
#include "igt_sriov_device.h"
+#include "igt_sysfs.h"
+#include "igt_sysfs_choice.h"
#include "intel_chipset.h"
#include "linux_scaffold.h"
#include "xe/xe_query.h"
@@ -657,6 +659,36 @@ int xe_sriov_sched_priority_from_string(const char *s,
return -EINVAL;
}
+/**
+ * xe_sriov_sched_priority_mask_to_string - Format priority mask as text
+ * @mask: Priority bitmask.
+ * @selected_idx: Index to highlight with brackets, or <0 for none.
+ * @buf: Output buffer.
+ * @buf_sz: Size of @buf.
+ *
+ * Converts @mask to a space-separated string of priority names. If @selected_idx
+ * is >= 0 and present in @mask, that priority is wrapped in brackets, e.g.
+ * "low [normal] high". An empty @mask results in an empty string.
+ *
+ * Returns: @buf.
+ */
+const char *xe_sriov_sched_priority_mask_to_string(unsigned int mask, int selected_idx,
+ char *buf, size_t buf_sz)
+{
+ return igt_sysfs_choice_format_mask(buf, buf_sz,
+ xe_sriov_sched_priority_str,
+ ARRAY_SIZE(xe_sriov_sched_priority_str),
+ mask, selected_idx);
+}
+
+int xe_sriov_sched_priority_choice_to_mask(const struct igt_sysfs_choice *choice,
+ unsigned int *mask, int *selected_idx)
+{
+ return igt_sysfs_choice_to_mask(choice, xe_sriov_sched_priority_str,
+ ARRAY_SIZE(xe_sriov_sched_priority_str),
+ mask, selected_idx);
+}
+
/**
* __xe_sriov_get_sched_priority - Get the scheduling priority for a given VF
* @pf: PF device file descriptor
diff --git a/lib/xe/xe_sriov_provisioning.h b/lib/xe/xe_sriov_provisioning.h
index c9b321d58..c4a11e4c0 100644
--- a/lib/xe/xe_sriov_provisioning.h
+++ b/lib/xe/xe_sriov_provisioning.h
@@ -9,6 +9,7 @@
#include <stdint.h>
struct xe_mmio;
+struct igt_sysfs_choice;
/**
* enum xe_sriov_shared_res - Shared resource types
@@ -75,6 +76,14 @@ enum xe_sriov_sched_priority {
XE_SRIOV_SCHED_PRIORITY_HIGH
};
+#define XE_SRIOV_SCHED_PRIORITY_MASK_LOW BIT(XE_SRIOV_SCHED_PRIORITY_LOW)
+#define XE_SRIOV_SCHED_PRIORITY_MASK_NORMAL BIT(XE_SRIOV_SCHED_PRIORITY_NORMAL)
+#define XE_SRIOV_SCHED_PRIORITY_MASK_HIGH BIT(XE_SRIOV_SCHED_PRIORITY_HIGH)
+#define XE_SRIOV_SCHED_PRIORITY_MASK_ALL \
+ (XE_SRIOV_SCHED_PRIORITY_MASK_LOW | \
+ XE_SRIOV_SCHED_PRIORITY_MASK_NORMAL | \
+ XE_SRIOV_SCHED_PRIORITY_MASK_HIGH)
+
/**
* struct xe_sriov_provisioned_range - Provisioned range for a Virtual Function (VF)
* @vf_id: The ID of the VF
@@ -138,6 +147,10 @@ int __xe_sriov_set_sched_if_idle(int pf, unsigned int gt_num, bool value);
void xe_sriov_set_sched_if_idle(int pf, unsigned int gt_num, bool value);
const char *xe_sriov_sched_priority_to_string(enum xe_sriov_sched_priority value);
int xe_sriov_sched_priority_from_string(const char *s, enum xe_sriov_sched_priority *value);
+const char *xe_sriov_sched_priority_mask_to_string(unsigned int mask, int selected_idx,
+ char *buf, size_t buf_sz);
+int xe_sriov_sched_priority_choice_to_mask(const struct igt_sysfs_choice *choice,
+ unsigned int *mask, int *selected_idx);
int __xe_sriov_get_sched_priority(int pf, unsigned int vf_num,
unsigned int gt_num,
enum xe_sriov_sched_priority *value);
--
2.43.0
next prev parent reply other threads:[~2025-11-25 10:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-25 10:22 [PATCH i-g-t v2 00/10] Xe SR-IOV admin scheduling helpers and test updates Marcin Bernatowicz
2025-11-25 10:23 ` [PATCH i-g-t v2 01/10] lib/igt_sysfs_choice: Add helpers for sysfs enumerated choice attributes Marcin Bernatowicz
2026-01-15 7:24 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 02/10] lib/tests/igt_sysfs_choice: Add test coverage Marcin Bernatowicz
2026-01-15 10:31 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 03/10] lib/xe/xe_sriov_provisioning: Add string conversion helpers for scheduling priority Marcin Bernatowicz
2026-01-15 7:48 ` Laguna, Lukasz
2025-11-25 10:23 ` Marcin Bernatowicz [this message]
2026-01-15 8:04 ` [PATCH i-g-t v2 04/10] lib/xe/xe_sriov_provisioning: Add sched priority mask to string helper Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 05/10] lib/igt_sriov_device: Add helper for PF/VF sysfs path formatting Marcin Bernatowicz
2026-01-15 8:10 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 06/10] lib/xe/xe_sriov_admin: Add SR-IOV admin sysfs accessors Marcin Bernatowicz
2026-01-15 8:24 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 07/10] tests/intel/xe_sriov_scheduling: Avoid assert on scheduling params restore in cleanup Marcin Bernatowicz
2026-01-15 8:25 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 08/10] tests/intel/xe_sriov_scheduling: Prefer SR-IOV admin sysfs accessors Marcin Bernatowicz
2026-01-15 8:25 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 09/10] tests/intel/xe_pmu: " Marcin Bernatowicz
2026-01-15 8:27 ` Laguna, Lukasz
2025-11-25 10:23 ` [PATCH i-g-t v2 10/10] tests/intel/xe_sriov_admin_profile: Add SR-IOV admin sysfs scheduling attributes tests Marcin Bernatowicz
2026-01-15 10:05 ` Laguna, Lukasz
2026-01-15 10:10 ` Laguna, Lukasz
2025-11-25 17:27 ` ✓ i915.CI.BAT: success for Xe SR-IOV admin scheduling helpers and test updates (rev2) Patchwork
2025-11-25 17:50 ` ✓ Xe.CI.BAT: " Patchwork
2025-11-25 20:25 ` ✗ Xe.CI.Full: failure " Patchwork
2025-11-26 6:39 ` ✗ i915.CI.Full: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251125102312.43142-5-marcin.bernatowicz@linux.intel.com \
--to=marcin.bernatowicz@linux.intel.com \
--cc=adam.miszczak@linux.intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=jakub1.kolakowski@intel.com \
--cc=lukasz.laguna@intel.com \
--cc=michal.wajdeczko@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.