• Jerome Glisse's avatar
    drm/radeon/kms: fix indirect buffer management V2 · e821767b
    Jerome Glisse authored
    There is 3 different distinct states for an indirect buffer (IB) :
      1- free with no fence
      2- free with a fence
      3- non free (fence doesn't matter)
    Previous code mixed case 2 & 3 in a single one leading to possible
    catastrophique failure. This patch rework the handling and properly
    separate each case. So when you get ib we set the ib as non free and
    fence status doesn't matter. Fence become active (ie has a meaning
    for the ib code) once the ib is scheduled or free. This patch also
    get rid of the alloc bitmap as it was overkill, we know go through
    IB pool list like in a ring buffer as the oldest IB is the first
    one the will be free.
    
    Fix :
    https://bugs.freedesktop.org/show_bug.cgi?id=26438
    and likely other bugs.
    
    V2 remove the scheduled list, it's useless now, fix free ib scanning
    Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    e821767b
radeon_ring.c 11.5 KB