• Lionel Landwerlin's avatar
    drm/i915: add query uAPI · a446ae2c
    Lionel Landwerlin authored
    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)
    
    v10: Typos & comments in uapi (Joonas)
    Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180306122857.27317-6-lionel.g.landwerlin@intel.com
    a446ae2c
i915_drv.c 81.1 KB