• Lionel Landwerlin's avatar
    drm/i915/perf: Implement I915_PERF_ADD/REMOVE_CONFIG interface · f89823c2
    Lionel Landwerlin authored
    The motivation behind this new interface is expose at runtime the
    creation of new OA configs which can be used as part of the i915 perf
    open interface. This will enable the kernel to learn new configs which
    may be experimental, or otherwise not part of the core set currently
    available through the i915 perf interface.
    
    v2: Drop DRM_ERROR for userspace errors (Matthew)
        Add padding to userspace structure (Matthew)
        s/guid/uuid/ (Matthew)
    
    v3: Use u32 instead of int to iterate through registers (Matthew)
    
    v4: Lock access to dynamic config list (Lionel)
    
    v5: by Matthew:
        Fix uninitialized error values
        Fix incorrect unwiding when opening perf stream
        Use kmalloc_array() to store register
        Use uuid_is_valid() to valid config uuids
        Declare ioctls as write only
        Check padding members are set to 0
        by Lionel:
        Return ENOENT rather than EINVAL when trying to remove non
        existing config
    
    v6: by Chris:
        Use ref counts for OA configs
        Store UUID in drm_i915_perf_oa_config rather then using pointer
        Shuffle fields of drm_i915_perf_oa_config to avoid padding
    
    v7: by Chris
        Rename uapi pointers fields to end with '_ptr'
    
    v8: by Andrzej, Marek, Sebastian
        Update register whitelisting
        by Lionel
        Add more register names for documentation
        Allow configuration programming in non-paranoid mode
        Add support for value filter for a couple of registers already
        programmed in other part of the kernel
    
    v9: Documentation fix (Lionel)
        Allow writing WAIT_FOR_RC6_EXIT only on Gen8+ (Andrzej)
    
    v10: Perform read access_ok() on register pointers (Lionel)
    Signed-off-by: default avatarMatthew Auld <matthew.auld@intel.com>
    Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Signed-off-by: default avatarAndrzej Datczuk <andrzej.datczuk@intel.com>
    Reviewed-by: default avatarAndrzej Datczuk <andrzej.datczuk@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170803165812.2373-2-lionel.g.landwerlin@intel.com
    f89823c2
i915_drv.c 78.2 KB