• Yannick Vignon's avatar
    net: stmmac: optimize locking around PTP clock reads · 642436a1
    Yannick Vignon authored
    Reading the PTP clock is a simple operation requiring only 3 register
    reads. Under a PREEMPT_RT kernel, protecting those reads by a spin_lock is
    counter-productive: if the 2nd task preempting the 1st has a higher prio
    but needs to read time as well, it will require 2 context switches, which
    will pretty much always be more costly than just disabling preemption for
    the duration of the reads. Moreover, with the code logic recently added
    to get_systime(), disabling preemption is not even required anymore:
    reads and writes just need to be protected from each other, to prevent a
    clock read while the clock is being updated.
    
    Improve the above situation by replacing the PTP spinlock by a rwlock, and
    using read_lock for PTP clock reads so simultaneous reads do not block
    each other.
    Signed-off-by: default avatarYannick Vignon <yannick.vignon@nxp.com>
    Link: https://lore.kernel.org/r/20220204135545.2770625-1-yannick.vignon@oss.nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    642436a1
stmmac_ptp.c 9.44 KB