Commit 3df49b2e authored by Michal Wajdeczko's avatar Michal Wajdeczko

drm/xe: Add SR-IOV info attribute to debugfs

As SR-IOV support varies between platforms and the driver can run
in different SR-IOV modes, add debugfs file with these details.
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240404154431.583-4-michal.wajdeczko@intel.com
parent 146e4384
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "xe_device.h" #include "xe_device.h"
#include "xe_gt_debugfs.h" #include "xe_gt_debugfs.h"
#include "xe_pm.h" #include "xe_pm.h"
#include "xe_sriov.h"
#include "xe_step.h" #include "xe_step.h"
#ifdef CONFIG_DRM_XE_DEBUG #ifdef CONFIG_DRM_XE_DEBUG
...@@ -70,8 +71,18 @@ static int info(struct seq_file *m, void *data) ...@@ -70,8 +71,18 @@ static int info(struct seq_file *m, void *data)
return 0; return 0;
} }
static int sriov_info(struct seq_file *m, void *data)
{
struct xe_device *xe = node_to_xe(m->private);
struct drm_printer p = drm_seq_file_printer(m);
xe_sriov_print_info(xe, &p);
return 0;
}
static const struct drm_info_list debugfs_list[] = { static const struct drm_info_list debugfs_list[] = {
{"info", info, 0}, {"info", info, 0},
{ .name = "sriov_info", .show = sriov_info, },
}; };
static int forcewake_open(struct inode *inode, struct file *file) static int forcewake_open(struct inode *inode, struct file *file)
......
...@@ -101,3 +101,17 @@ int xe_sriov_init(struct xe_device *xe) ...@@ -101,3 +101,17 @@ int xe_sriov_init(struct xe_device *xe)
return drmm_add_action_or_reset(&xe->drm, fini_sriov, xe); return drmm_add_action_or_reset(&xe->drm, fini_sriov, xe);
} }
/**
* xe_sriov_print_info - Print basic SR-IOV information.
* @xe: the &xe_device to print info from
* @p: the &drm_printer
*
* Print SR-IOV related information into provided DRM printer.
*/
void xe_sriov_print_info(struct xe_device *xe, struct drm_printer *p)
{
drm_printf(p, "supported: %s\n", str_yes_no(xe_device_has_sriov(xe)));
drm_printf(p, "enabled: %s\n", str_yes_no(IS_SRIOV(xe)));
drm_printf(p, "mode: %s\n", xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
}
...@@ -10,9 +10,12 @@ ...@@ -10,9 +10,12 @@
#include "xe_device_types.h" #include "xe_device_types.h"
#include "xe_sriov_types.h" #include "xe_sriov_types.h"
struct drm_printer;
const char *xe_sriov_mode_to_string(enum xe_sriov_mode mode); const char *xe_sriov_mode_to_string(enum xe_sriov_mode mode);
void xe_sriov_probe_early(struct xe_device *xe); void xe_sriov_probe_early(struct xe_device *xe);
void xe_sriov_print_info(struct xe_device *xe, struct drm_printer *p);
int xe_sriov_init(struct xe_device *xe); int xe_sriov_init(struct xe_device *xe);
static inline enum xe_sriov_mode xe_device_sriov_mode(struct xe_device *xe) static inline enum xe_sriov_mode xe_device_sriov_mode(struct xe_device *xe)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment