• Ahmed S. Darwish's avatar
    dma-buf: Use sequence counter with associated wound/wait mutex · cd29f220
    Ahmed S. Darwish authored
    A sequence counter write side critical section must be protected by some
    form of locking to serialize writers. If the serialization primitive is
    not disabling preemption implicitly, preemption has to be explicitly
    disabled before entering the sequence counter write side critical
    section.
    
    The dma-buf reservation subsystem uses plain sequence counters to manage
    updates to reservations. Writer serialization is accomplished through a
    wound/wait mutex.
    
    Acquiring a wound/wait mutex does not disable preemption, so this needs
    to be done manually before and after the write side critical section.
    
    Use the newly-added seqcount_ww_mutex_t instead:
    
      - It associates the ww_mutex with the sequence count, which enables
        lockdep to validate that the write side critical section is properly
        serialized.
    
      - It removes the need to explicitly add preempt_disable/enable()
        around the write side critical section because the write_begin/end()
        functions for this new data type automatically do this.
    
    If lockdep is disabled this ww_mutex lock association is compiled out
    and has neither storage size nor runtime overhead.
    Signed-off-by: default avatarAhmed S. Darwish <a.darwish@linutronix.de>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://lkml.kernel.org/r/20200720155530.1173732-13-a.darwish@linutronix.de
    cd29f220
dma-resv.c 15.9 KB