[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