From: Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Cc: kamil.konieczny@linux.intel.com, adam.miszczak@linux.intel.com,
jakub1.kolakowski@intel.com, lukasz.laguna@intel.com,
michal.wajdeczko@intel.com, michal.winiarski@intel.com,
narasimha.c.v@intel.com, piotr.piorkowski@intel.com,
satyanarayana.k.v.p@intel.com, tomasz.lis@intel.com,
Marcin Bernatowicz <marcin.bernatowicz@linux.intel.com>
Subject: [PATCH i-g-t 1/4] lib/xe/xe_sriov_debugfs: Add debugfs get/set functions for u32, u64, bool
Date: Wed, 27 Nov 2024 21:02:59 +0100 [thread overview]
Message-ID: <20241127200302.1376594-2-marcin.bernatowicz@linux.intel.com> (raw)
In-Reply-To: <20241127200302.1376594-1-marcin.bernatowicz@linux.intel.com>
Add helper functions to get and set SR-IOV debugfs attributes for u32,
u64, and boolean types.
Functions added:
- __xe_sriov_pf_debugfs_get_u32
- __xe_sriov_pf_debugfs_set_u32
- __xe_sriov_pf_debugfs_get_u64
- __xe_sriov_pf_debugfs_set_u64
- __xe_sriov_pf_debugfs_get_boolean
- __xe_sriov_pf_debugfs_set_boolean
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: Michał Wajdeczko <michal.wajdeczko@intel.com>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Narasimha C V <narasimha.c.v@intel.com>
Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Tomasz Lis <tomasz.lis@intel.com>
---
lib/xe/xe_sriov_debugfs.c | 194 ++++++++++++++++++++++++++++++++++++++
lib/xe/xe_sriov_debugfs.h | 18 ++++
2 files changed, 212 insertions(+)
diff --git a/lib/xe/xe_sriov_debugfs.c b/lib/xe/xe_sriov_debugfs.c
index c87f91492..038912f23 100644
--- a/lib/xe/xe_sriov_debugfs.c
+++ b/lib/xe/xe_sriov_debugfs.c
@@ -9,6 +9,7 @@
#include "drmtest.h"
#include "igt_debugfs.h"
#include "igt_sriov_device.h"
+#include "igt_sysfs.h"
#include "xe/xe_query.h"
#include "xe/xe_sriov_debugfs.h"
#include "xe/xe_sriov_provisioning.h"
@@ -204,3 +205,196 @@ cleanup:
return ret;
}
+
+static int xe_sriov_pf_debugfs_path_open(int pf, unsigned int vf_num,
+ unsigned int gt_num)
+{
+ char path[PATH_MAX];
+
+ if (igt_debug_on_f(!xe_sriov_pf_debugfs_path(pf, vf_num, gt_num, path,
+ sizeof(path)),
+ "path: %s\n", path))
+ return -1;
+
+ return open(path, O_RDONLY);
+}
+
+/**
+ * __xe_sriov_pf_debugfs_get_u32:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: pointer to read value
+ *
+ * Reads SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_get_u32(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint32_t *value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return false;
+
+ ret = __igt_sysfs_get_u32(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
+
+/**
+ * __xe_sriov_pf_debugfs_set_u32:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: u32 value to be set
+ *
+ * Writes @value to SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_set_u32(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint32_t value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return dir;
+
+ ret = __igt_sysfs_set_u32(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
+
+/**
+ * __xe_sriov_pf_debugfs_get_u64:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: pointer to read value
+ *
+ * Reads SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_get_u64(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint64_t *value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return dir;
+
+ ret = __igt_sysfs_get_u64(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
+
+/**
+ * __xe_sriov_pf_debugfs_set_u64:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: u64 value to be set
+ *
+ * Writes @value to SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_set_u64(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint64_t value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return dir;
+
+ ret = __igt_sysfs_set_u64(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
+
+/**
+ * __xe_sriov_pf_debugfs_get_boolean:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: pointer to read value
+ *
+ * Reads SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_get_boolean(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ bool *value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return dir;
+
+ ret = __igt_sysfs_get_boolean(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
+
+/**
+ * __xe_sriov_pf_debugfs_set_boolean:
+ * @pf: PF device file descriptor
+ * @vf_num: VF number (1-based) or 0 for PF
+ * @gt_num: GT number
+ * @attr: debugfs attribute name
+ * @value: u64 value to be set
+ *
+ * Writes @value to SR-IOV debugfs attribute @attr for given PF device @pf,
+ * VF number @vf_num on GT @gt_num.
+ *
+ * Return: 0 on success and negative error on failure.
+ */
+int __xe_sriov_pf_debugfs_set_boolean(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ bool value)
+{
+ bool ret;
+ int dir;
+
+ dir = xe_sriov_pf_debugfs_path_open(pf, vf_num, gt_num);
+ if (igt_debug_on(dir < 0))
+ return dir;
+
+ ret = __igt_sysfs_set_boolean(dir, attr, value);
+ close(dir);
+
+ return ret ? 0 : -1;
+}
diff --git a/lib/xe/xe_sriov_debugfs.h b/lib/xe/xe_sriov_debugfs.h
index 856445e76..2db965f9b 100644
--- a/lib/xe/xe_sriov_debugfs.h
+++ b/lib/xe/xe_sriov_debugfs.h
@@ -16,5 +16,23 @@ int xe_sriov_pf_debugfs_read_provisioned_ranges(int pf_fd, enum xe_sriov_shared_
unsigned int gt_id,
struct xe_sriov_provisioned_range **ranges,
unsigned int *nr_ranges);
+int __xe_sriov_pf_debugfs_get_u32(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint32_t *value);
+int __xe_sriov_pf_debugfs_set_u32(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint32_t value);
+int __xe_sriov_pf_debugfs_get_u64(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint64_t *value);
+int __xe_sriov_pf_debugfs_set_u64(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ uint64_t value);
+int __xe_sriov_pf_debugfs_get_boolean(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ bool *value);
+int __xe_sriov_pf_debugfs_set_boolean(int pf, unsigned int vf_num,
+ unsigned int gt_num, const char *attr,
+ bool value);
#endif /* __XE_SRIOV_DEBUGFS_H__ */
--
2.31.1
next prev parent reply other threads:[~2024-11-27 20:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-27 20:02 [PATCH i-g-t 0/4] Subject: [PATCH i-g-t 0/4] lib/xe: Add SR-IOV debugfs and provisioning helpers Marcin Bernatowicz
2024-11-27 20:02 ` Marcin Bernatowicz [this message]
2024-12-02 13:03 ` [PATCH i-g-t 1/4] lib/xe/xe_sriov_debugfs: Add debugfs get/set functions for u32, u64, bool Laguna, Lukasz
2024-12-05 15:36 ` Bernatowicz, Marcin
2024-11-27 20:03 ` [PATCH i-g-t 2/4] lib/xe/xe_sriov_provisioning: Add scheduling attributes accessors Marcin Bernatowicz
2024-11-27 20:03 ` [PATCH i-g-t 3/4] lib/xe/xe_sriov_provisioning: Add helper to check default scheduling attributes Marcin Bernatowicz
2024-11-27 20:03 ` [PATCH i-g-t 4/4] lib/xe/xe_sriov_provisioning: Add accessors for quota/spare attributes Marcin Bernatowicz
2024-12-02 13:09 ` Laguna, Lukasz
2024-11-27 20:33 ` ✓ Xe.CI.BAT: success for Subject: [PATCH i-g-t 0/4] lib/xe: Add SR-IOV debugfs and provisioning helpers Patchwork
2024-11-27 20:45 ` ✗ i915.CI.BAT: failure " Patchwork
2024-11-27 21:28 ` ✗ Xe.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=20241127200302.1376594-2-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=kamil.konieczny@linux.intel.com \
--cc=lukasz.laguna@intel.com \
--cc=michal.wajdeczko@intel.com \
--cc=michal.winiarski@intel.com \
--cc=narasimha.c.v@intel.com \
--cc=piotr.piorkowski@intel.com \
--cc=satyanarayana.k.v.p@intel.com \
--cc=tomasz.lis@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.