drm/i915: Flesh out device_info pretty printer
Include all the number fields for describing the GT, as well as the current boolean flags, primarily for inclusion in error states. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Andi Shyti <andi.shyti@intel.com> Reviewed-by: Andi Shyti <andi.shyti@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191207182937.2583002-1-chris@chris-wilson.co.uk
This commit is contained in:
Родитель
8d65859a4c
Коммит
7240497850
|
@ -61,24 +61,14 @@ static inline struct drm_i915_private *node_to_i915(struct drm_info_node *node)
|
||||||
|
|
||||||
static int i915_capabilities(struct seq_file *m, void *data)
|
static int i915_capabilities(struct seq_file *m, void *data)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = node_to_i915(m->private);
|
struct drm_i915_private *i915 = node_to_i915(m->private);
|
||||||
const struct intel_device_info *info = INTEL_INFO(dev_priv);
|
|
||||||
struct drm_printer p = drm_seq_file_printer(m);
|
struct drm_printer p = drm_seq_file_printer(m);
|
||||||
const char *msg;
|
|
||||||
|
|
||||||
seq_printf(m, "gen: %d\n", INTEL_GEN(dev_priv));
|
seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(i915));
|
||||||
seq_printf(m, "platform: %s\n", intel_platform_name(info->platform));
|
|
||||||
seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(dev_priv));
|
|
||||||
|
|
||||||
msg = "n/a";
|
intel_device_info_print_static(INTEL_INFO(i915), &p);
|
||||||
#ifdef CONFIG_INTEL_IOMMU
|
intel_device_info_print_runtime(RUNTIME_INFO(i915), &p);
|
||||||
msg = enableddisabled(intel_iommu_gfx_mapped);
|
intel_driver_caps_print(&i915->caps, &p);
|
||||||
#endif
|
|
||||||
seq_printf(m, "iommu: %s\n", msg);
|
|
||||||
|
|
||||||
intel_device_info_dump_flags(info, &p);
|
|
||||||
intel_device_info_dump_runtime(RUNTIME_INFO(dev_priv), &p);
|
|
||||||
intel_driver_caps_print(&dev_priv->caps, &p);
|
|
||||||
|
|
||||||
kernel_param_lock(THIS_MODULE);
|
kernel_param_lock(THIS_MODULE);
|
||||||
i915_params_dump(&i915_modparams, &p);
|
i915_params_dump(&i915_modparams, &p);
|
||||||
|
@ -2759,7 +2749,7 @@ static int i915_rcs_topology(struct seq_file *m, void *unused)
|
||||||
struct drm_i915_private *dev_priv = node_to_i915(m->private);
|
struct drm_i915_private *dev_priv = node_to_i915(m->private);
|
||||||
struct drm_printer p = drm_seq_file_printer(m);
|
struct drm_printer p = drm_seq_file_printer(m);
|
||||||
|
|
||||||
intel_device_info_dump_topology(&RUNTIME_INFO(dev_priv)->sseu, &p);
|
intel_device_info_print_topology(&RUNTIME_INFO(dev_priv)->sseu, &p);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1397,8 +1397,8 @@ static void i915_welcome_messages(struct drm_i915_private *dev_priv)
|
||||||
INTEL_INFO(dev_priv)->platform),
|
INTEL_INFO(dev_priv)->platform),
|
||||||
INTEL_GEN(dev_priv));
|
INTEL_GEN(dev_priv));
|
||||||
|
|
||||||
intel_device_info_dump_flags(INTEL_INFO(dev_priv), &p);
|
intel_device_info_print_static(INTEL_INFO(dev_priv), &p);
|
||||||
intel_device_info_dump_runtime(RUNTIME_INFO(dev_priv), &p);
|
intel_device_info_print_runtime(RUNTIME_INFO(dev_priv), &p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_DRM_I915_DEBUG))
|
if (IS_ENABLED(CONFIG_DRM_I915_DEBUG))
|
||||||
|
|
|
@ -599,9 +599,10 @@ static void err_print_capabilities(struct drm_i915_error_state_buf *m,
|
||||||
{
|
{
|
||||||
struct drm_printer p = i915_error_printer(m);
|
struct drm_printer p = i915_error_printer(m);
|
||||||
|
|
||||||
intel_device_info_dump_flags(info, &p);
|
intel_device_info_print_static(info, &p);
|
||||||
|
intel_device_info_print_runtime(runtime, &p);
|
||||||
|
intel_device_info_print_topology(&runtime->sseu, &p);
|
||||||
intel_driver_caps_print(caps, &p);
|
intel_driver_caps_print(caps, &p);
|
||||||
intel_device_info_dump_topology(&runtime->sseu, &p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void err_print_params(struct drm_i915_error_state_buf *m,
|
static void err_print_params(struct drm_i915_error_state_buf *m,
|
||||||
|
|
|
@ -73,9 +73,30 @@ const char *intel_platform_name(enum intel_platform platform)
|
||||||
return platform_names[platform];
|
return platform_names[platform];
|
||||||
}
|
}
|
||||||
|
|
||||||
void intel_device_info_dump_flags(const struct intel_device_info *info,
|
static const char *iommu_name(void)
|
||||||
struct drm_printer *p)
|
|
||||||
{
|
{
|
||||||
|
const char *msg = "n/a";
|
||||||
|
|
||||||
|
#ifdef CONFIG_INTEL_IOMMU
|
||||||
|
msg = enableddisabled(intel_iommu_gfx_mapped);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
void intel_device_info_print_static(const struct intel_device_info *info,
|
||||||
|
struct drm_printer *p)
|
||||||
|
{
|
||||||
|
drm_printf(p, "engines: %x\n", info->engine_mask);
|
||||||
|
drm_printf(p, "gen: %d\n", info->gen);
|
||||||
|
drm_printf(p, "gt: %d\n", info->gt);
|
||||||
|
drm_printf(p, "iommu: %s\n", iommu_name());
|
||||||
|
drm_printf(p, "memory-regions: %x\n", info->memory_regions);
|
||||||
|
drm_printf(p, "page-sizes: %x\n", info->page_sizes);
|
||||||
|
drm_printf(p, "platform: %s\n", intel_platform_name(info->platform));
|
||||||
|
drm_printf(p, "ppgtt-size: %d\n", info->ppgtt_size);
|
||||||
|
drm_printf(p, "ppgtt-type: %d\n", info->ppgtt_type);
|
||||||
|
|
||||||
#define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, yesno(info->name));
|
#define PRINT_FLAG(name) drm_printf(p, "%s: %s\n", #name, yesno(info->name));
|
||||||
DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG);
|
DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG);
|
||||||
#undef PRINT_FLAG
|
#undef PRINT_FLAG
|
||||||
|
@ -106,8 +127,8 @@ static void sseu_dump(const struct sseu_dev_info *sseu, struct drm_printer *p)
|
||||||
drm_printf(p, "has EU power gating: %s\n", yesno(sseu->has_eu_pg));
|
drm_printf(p, "has EU power gating: %s\n", yesno(sseu->has_eu_pg));
|
||||||
}
|
}
|
||||||
|
|
||||||
void intel_device_info_dump_runtime(const struct intel_runtime_info *info,
|
void intel_device_info_print_runtime(const struct intel_runtime_info *info,
|
||||||
struct drm_printer *p)
|
struct drm_printer *p)
|
||||||
{
|
{
|
||||||
sseu_dump(&info->sseu, p);
|
sseu_dump(&info->sseu, p);
|
||||||
|
|
||||||
|
@ -148,8 +169,8 @@ static void sseu_set_eus(struct sseu_dev_info *sseu, int slice, int subslice,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void intel_device_info_dump_topology(const struct sseu_dev_info *sseu,
|
void intel_device_info_print_topology(const struct sseu_dev_info *sseu,
|
||||||
struct drm_printer *p)
|
struct drm_printer *p)
|
||||||
{
|
{
|
||||||
int s, ss;
|
int s, ss;
|
||||||
|
|
||||||
|
|
|
@ -230,12 +230,13 @@ const char *intel_platform_name(enum intel_platform platform);
|
||||||
|
|
||||||
void intel_device_info_subplatform_init(struct drm_i915_private *dev_priv);
|
void intel_device_info_subplatform_init(struct drm_i915_private *dev_priv);
|
||||||
void intel_device_info_runtime_init(struct drm_i915_private *dev_priv);
|
void intel_device_info_runtime_init(struct drm_i915_private *dev_priv);
|
||||||
void intel_device_info_dump_flags(const struct intel_device_info *info,
|
|
||||||
struct drm_printer *p);
|
void intel_device_info_print_static(const struct intel_device_info *info,
|
||||||
void intel_device_info_dump_runtime(const struct intel_runtime_info *info,
|
|
||||||
struct drm_printer *p);
|
struct drm_printer *p);
|
||||||
void intel_device_info_dump_topology(const struct sseu_dev_info *sseu,
|
void intel_device_info_print_runtime(const struct intel_runtime_info *info,
|
||||||
struct drm_printer *p);
|
struct drm_printer *p);
|
||||||
|
void intel_device_info_print_topology(const struct sseu_dev_info *sseu,
|
||||||
|
struct drm_printer *p);
|
||||||
|
|
||||||
void intel_device_info_init_mmio(struct drm_i915_private *dev_priv);
|
void intel_device_info_init_mmio(struct drm_i915_private *dev_priv);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче