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@xxxxxxxxx> > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > Acked-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> <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@xxxxxxxxxxxxxxx> Lets wait for the Mesa patch review still before merging. Regards, Joonas _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx