[Intel-gfx] [27/33] drm/i915/gt: Expose engine->mmio_base via sysfs

Steve Carbonari steven.carbonari at intel.com
Wed Jan 22 21:18:59 UTC 2020


On Thu, Dec 12, 2019 at 02:04:53PM +0000, Chris Wilson wrote:
> Use the per-engine sysfs directory to let userspace discover the
> mmio_base of each engine. Prior to recent generations, the user
> accessible registers on each engine are at a fixed offset relative to
> each engine -- but require absolute addressing. As the absolute address
> depends on the actual physical engine, this is not always possible to
> determine from userspace (for example icl may expose vcs1 or vcs2 as the
> second vcs engine). Make this easy for userspace to discover by
> providing the mmio_base in sysfs.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Acked-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

Reviewed code.
Downloaded and tested the patch with dependent previous patch
[26/33] drm/i915/gt: Expose engine properties via sysfs.
The mmio_base file appears with correct value.

Reviewed-by: Steve Carbonari <steven.carbonari at intel.com>
Tested-by: Steve Carbonari <steven.carbonari at intel.com>

> ---
>  drivers/gpu/drm/i915/gt/intel_engine_sysfs.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_sysfs.c b/drivers/gpu/drm/i915/gt/intel_engine_sysfs.c
> index df263af3a9ea..abddd8d0f9ae 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_sysfs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_sysfs.c
> @@ -48,6 +48,15 @@ inst_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
>  static struct kobj_attribute inst_attr =
>  __ATTR(instance, 0444, inst_show, NULL);
>  
> +static ssize_t
> +mmio_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf)
> +{
> +	return sprintf(buf, "0x%x\n", kobj_to_engine(kobj)->mmio_base);
> +}
> +
> +static struct kobj_attribute mmio_attr =
> +__ATTR(mmio_base, 0444, mmio_show, NULL);
> +
>  static const char * const vcs_caps[] = {
>  	[ilog2(I915_VIDEO_CLASS_CAPABILITY_HEVC)] = "hevc",
>  	[ilog2(I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC)] = "sfc",
> @@ -170,6 +179,7 @@ void intel_engines_add_sysfs(struct drm_i915_private *i915)
>  		&name_attr.attr,
>  		&class_attr.attr,
>  		&inst_attr.attr,
> +		&mmio_attr.attr,
>  		&caps_attr.attr,
>  		&all_caps_attr.attr,
>  		NULL


More information about the Intel-gfx mailing list