• Andres Rodriguez's avatar
    drm/amdgpu: untie user ring ids from kernel ring ids v6 · effd924d
    Andres Rodriguez authored
    Add amdgpu_queue_mgr, a mechanism that allows disjointing usermode's
    ring ids from the kernel's ring ids.
    
    The queue manager maintains a per-file descriptor map of user ring ids
    to amdgpu_ring pointers. Once a map is created it is permanent (this is
    required to maintain FIFO execution guarantees for a context's ring).
    
    Different queue map policies can be configured for each HW IP.
    Currently all HW IPs use the identity mapper, i.e. kernel ring id is
    equal to the user ring id.
    
    The purpose of this mechanism is to distribute the load across multiple
    queues more effectively for HW IPs that support multiple rings.
    Userspace clients are unable to check whether a specific resource is in
    use by a different client. Therefore, it is up to the kernel driver to
    make the optimal choice.
    
    v2: remove amdgpu_queue_mapper_funcs
    v3: made amdgpu_queue_mgr per context instead of per-fd
    v4: add context_put on error paths
    v5: rebase and include new IPs UVD_ENC & VCN_*
    v6: drop unused amdgpu_ring_is_valid_index (Alex)
    Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
    Signed-off-by: default avatarAndres Rodriguez <andresx7@gmail.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    effd924d
amdgpu_cs.c 33.5 KB