[Intel-gfx] [PATCH v14 5/6] drm/i915: add query uAPI

Joonas Lahtinen joonas.lahtinen at linux.intel.com
Mon Mar 5 14:54:55 UTC 2018


Quoting Lionel Landwerlin (2018-02-22 19:53:58)
> There are a number of information that are readable from hardware
> registers and that we would like to make accessible to userspace. One
> particular example is the topology of the execution units (how are
> execution units grouped in subslices and slices and also which ones
> have been fused off for die recovery).
> 
> At the moment the GET_PARAM ioctl covers some basic needs, but
> generally is only able to return a single value for each defined
> parameter. This is a bit problematic with topology descriptions which
> are array/maps of available units.
> 
> This change introduces a new ioctl that can deal with requests to fill
> structures of potentially variable lengths. The user is expected fill
> a query with length fields set at 0 on the first call, the kernel then
> sets the length fields to the their expected values. A second call to
> the kernel with length fields at their expected values will trigger a
> copy of the data to the pointed memory locations.
> 
> The scope of this uAPI is only to provide information to userspace,
> not to allow configuration of the device.
> 
> v2: Simplify dispatcher code iteration (Tvrtko)
>     Tweak uapi drm_i915_query_item structure (Tvrtko)
> 
> v3: Rename pad fields into flags (Chris)
>     Return error on flags field != 0 (Chris)
>     Only copy length back to userspace in drm_i915_query_item (Chris)
> 
> v4: Use array of functions instead of switch (Chris)
> 
> v5: More comments in uapi (Tvrtko)
>     Return query item errors in length field (All)
> 
> v6: Tweak uapi comments style to match the coding style (Lionel)
> 
> v7: Add i915_query.h (Joonas)
> 
> v8: (Lionel) Change the behavior of the item iterator to report
>     invalid queries into the query item rather than stopping the
>     iteration. This enables userspace applications to query newer
>     items on older kernels and only have failure on the items that are
>     not supported.
> 
> v9: Edit copyright headers (Joonas)
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Acked-by: Chris Wilson <chris at chris-wilson.co.uk>

<SNIP>

> @@ -1615,6 +1617,44 @@ struct drm_i915_perf_oa_config {
>         __u64 flex_regs_ptr;
>  };
>  
> +struct drm_i915_query_item {
> +       __u64 query_id;
> +
> +       /*
> +        * When set to zero by userspace, this is filled with the size of the
> +        * data to be written at the data_ptr pointer. The kernel set this

"sets"

> +        * value to a negative value to signal an error on a particular query
> +        * item.
> +        */
> +       __s32 length;
> +
> +       /*
> +        * Unused for now.

"now. Must be cleared to zero."

> +        */
> +       __u32 flags;
> +
> +       /*
> +        * Data will be written at the location pointed by data_ptr when the
> +        * value of length matches the length of the data to be written by the
> +        * kernel.
> +        */
> +       __u64 data_ptr;
> +};
> +
> +struct drm_i915_query {
> +       __u32 num_items;
> +
> +       /*
> +        * Unused for now.

Ditto.

> +        */
> +       __u32 flags;
> +
> +       /*
> +        * This point to an array of num_items drm_i915_query_item structures.

"points"

Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>

Lets wait for the Mesa patch review still before merging.

Regards, Joonas


More information about the Intel-gfx mailing list