lkml.org 
[lkml]   [2020]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v2 0/5] seqlock: Introduce PREEMPT_RT support
    Date
    Hi,

    Changelog-v2
    ============

    - Standardize on seqcount_LOCKNAME_t as the canonical reference for
    sequence counters with associated locks, instead of v1
    seqcount_LOCKTYPE_t.

    - Use unique prefix "seqprop_*" for all seqcount_t/seqcount_LOCKNAME_t
    property accessors.

    - Touch-up the lock-unlock rationale for more clarity. Enforce writer
    non-preemitiblity using "__seq_enforce_writer_non_preemptibility()".

    Cover letter (v1)
    =================

    https://lkml.kernel.org/r/20200828010710.5407-1-a.darwish@linutronix.de

    Preemption must be disabled before entering a sequence counter write
    side critical section. Otherwise the read side section can preempt the
    write side section and spin for the entire scheduler tick. If that
    reader belongs to a real-time scheduling class, it can spin forever and
    the kernel will livelock.

    Disabling preemption cannot be done for PREEMPT_RT though: it can lead
    to higher latencies, and the write side sections will not be able to
    acquire locks which become sleeping locks (e.g. spinlock_t).

    To remain preemptible, while avoiding a possible livelock caused by the
    reader preempting the writer, use a different technique: let the reader
    detect if a seqcount_LOCKNAME_t writer is in progress. If that's the
    case, acquire then release the associated LOCKNAME writer serialization
    lock. This will allow any possibly-preempted writer to make progress
    until the end of its writer serialization lock critical section.

    Implement this lock-unlock technique for all seqcount_LOCKNAME_t with
    an associated (PREEMPT_RT) sleeping lock, and for seqlock_t.

    8<--------------

    Ahmed S. Darwish (5):
    seqlock: seqcount_LOCKNAME_t: Standardize naming convention
    seqlock: Use unique prefix for seqcount_t property accessors
    seqlock: seqcount_t: Implement all read APIs as statement expressions
    seqlock: seqcount_LOCKNAME_t: Introduce PREEMPT_RT support
    seqlock: PREEMPT_RT: Do not starve seqlock_t writers

    include/linux/seqlock.h | 281 ++++++++++++++++++++++++----------------
    1 file changed, 167 insertions(+), 114 deletions(-)

    base-commit: f75aef392f869018f78cfedf3c320a6b3fcfda6b
    --
    2.28.0

    \
     
     \ /
      Last update: 2020-09-04 17:32    [W:6.486 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site