[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