[Intel-gfx] [PATCH v14 5/6] drm/i915: add query uAPI
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Mon Mar 5 15:03:36 UTC 2018
On 05/03/18 14:54, Joonas Lahtinen wrote:
> 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
>
Thanks, applied locally.
More information about the Intel-gfx
mailing list