• Danilo Krummrich's avatar
    drm/sched: implement dynamic job-flow control · a78422e9
    Danilo Krummrich authored
    Currently, job flow control is implemented simply by limiting the number
    of jobs in flight. Therefore, a scheduler is initialized with a credit
    limit that corresponds to the number of jobs which can be sent to the
    hardware.
    
    This implies that for each job, drivers need to account for the maximum
    job size possible in order to not overflow the ring buffer.
    
    However, there are drivers, such as Nouveau, where the job size has a
    rather large range. For such drivers it can easily happen that job
    submissions not even filling the ring by 1% can block subsequent
    submissions, which, in the worst case, can lead to the ring run dry.
    
    In order to overcome this issue, allow for tracking the actual job size
    instead of the number of jobs. Therefore, add a field to track a job's
    credit count, which represents the number of credits a job contributes
    to the scheduler's credit limit.
    Signed-off-by: default avatarDanilo Krummrich <dakr@redhat.com>
    Reviewed-by: default avatarLuben Tuikov <ltuikov89@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231110001638.71750-1-dakr@redhat.com
    a78422e9
gpu_scheduler.h 20.9 KB