Quoting Tvrtko Ursulin (2019-05-01 11:52:28) > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Engine discovery query allows userspace to enumerate engines, probe their > configuration features, all without needing to maintain the internal PCI > ID based database. > > A new query for the generic i915 query ioctl is added named > DRM_I915_QUERY_ENGINE_INFO, together with accompanying structure > drm_i915_query_engine_info. The address of latter should be passed to the > kernel in the query.data_ptr field, and should be large enough for the > kernel to fill out all known engines as struct drm_i915_engine_info > elements trailing the query. > > As with other queries, setting the item query length to zero allows > userspace to query minimum required buffer size. > > Enumerated engines have common type mask which can be used to query all > hardware engines, versus engines userspace can submit to using the execbuf > uAPI. > > Engines also have capabilities which are per engine class namespace of > bits describing features not present on all engine instances. > > v2: > * Fixed HEVC assignment. > * Reorder some fields, rename type to flags, increase width. (Lionel) > * No need to allocate temporary storage if we do it engine by engine. > (Lionel) > > v3: > * Describe engine flags and mark mbz fields. (Lionel) > * HEVC only applies to VCS. > > v4: > * Squash SFC flag into main patch. > * Tidy some comments. > > v5: > * Add uabi_ prefix to engine capabilities. (Chris Wilson) > * Report exact size of engine info array. (Chris Wilson) > * Drop the engine flags. (Joonas Lahtinen) > * Added some more reserved fields. > * Move flags after class/instance. > > v6: > * Do not check engine info array was zeroed by userspace but zero the > unused fields for them instead. > > v7: > * Simplify length calculation loop. (Lionel Landwerlin) > > v8: > * Remove MBZ comments where not applicable. > * Rename ABI flags to match engine class define naming. > * Rename SFC ABI flag to reflect it applies to VCS and VECS. > * SFC is wired to even _logical_ engine instances. > * SFC applies to VCS and VECS. > * HEVC is present on all instances on Gen11. (Tony) > * Simplify length calculation even more. (Chris Wilson) > * Move info_ptr assigment closer to loop for clarity. (Chris Wilson) > * Use vdbox_sfc_access from runtime info. > * Rebase for RUNTIME_INFO. > * Refactor for lower indentation. > * Rename uAPI class/instance to engine_class/instance to avoid C++ > keyword. > > v9: > * Rebase for s/num_rings/num_engines/ in RUNTIME_INFO. > > v10: > * Use new copy_query_item. > > v11: > * Consolidate with struct i915_engine_class_instnace. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Jon Bloomfield <jon.bloomfield@xxxxxxxxx> > Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@xxxxxxxxx> > Cc: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Tony Ye <tony.ye@xxxxxxxxx> > Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx> # v7 > Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> # v7 > --- > +/** > + * struct drm_i915_engine_info > + * > + * Describes one engine and it's capabilities as known to the driver. > + */ > +struct drm_i915_engine_info { > + /** Engine class and instance. */ > + struct i915_engine_class_instance engine; > + > + /** Reserved field. */ > + __u32 rsvd0; > + > + /** Engine flags. */ > + __u64 flags; Do you think we could do something like BUILD_BUG_ON(!IS_ALIGNED(offsetof(*info, flags), sizeof(info->flags)); Will that work, and worthwhile? Maybe work into a BUILD_BUG_ON(check_user_alignment(info, flags)); Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx