On Tue, Feb 02, 2021 at 10:57:12AM -0800, Ben Gardon wrote: > rwlocks do not currently have any facility to detect contention > like spinlocks do. In order to allow users of rwlocks to better manage > latency, add contention detection for queued rwlocks. > > CC: Ingo Molnar <mingo@xxxxxxxxxx> > CC: Will Deacon <will@xxxxxxxxxx> > Acked-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Acked-by: Davidlohr Bueso <dbueso@xxxxxxx> > Acked-by: Waiman Long <longman@xxxxxxxxxx> > Acked-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Signed-off-by: Ben Gardon <bgardon@xxxxxxxxxx> When building mips:defconfig, this patch results in: Error log: In file included from include/linux/spinlock.h:90, from include/linux/ipc.h:5, from include/uapi/linux/sem.h:5, from include/linux/sem.h:5, from include/linux/compat.h:14, from arch/mips/kernel/asm-offsets.c:12: arch/mips/include/asm/spinlock.h:17:28: error: redefinition of 'queued_spin_unlock' 17 | #define queued_spin_unlock queued_spin_unlock | ^~~~~~~~~~~~~~~~~~ arch/mips/include/asm/spinlock.h:22:20: note: in expansion of macro 'queued_spin_unlock' 22 | static inline void queued_spin_unlock(struct qspinlock *lock) | ^~~~~~~~~~~~~~~~~~ In file included from include/asm-generic/qrwlock.h:17, from ./arch/mips/include/generated/asm/qrwlock.h:1, from arch/mips/include/asm/spinlock.h:13, from include/linux/spinlock.h:90, from include/linux/ipc.h:5, from include/uapi/linux/sem.h:5, from include/linux/sem.h:5, from include/linux/compat.h:14, from arch/mips/kernel/asm-offsets.c:12: include/asm-generic/qspinlock.h:94:29: note: previous definition of 'queued_spin_unlock' was here 94 | static __always_inline void queued_spin_unlock(struct qspinlock *lock) | ^~~~~~~~~~~~~~~~~~ Bisect log attached. Guenter --- # bad: [a4bfd8d46ac357c12529e4eebb6c89502b03ecc9] Add linux-next specific files for 20210209 # good: [92bf22614b21a2706f4993b278017e437f7785b3] Linux 5.11-rc7 git bisect start 'HEAD' 'v5.11-rc7' # good: [a8eb921ba7e8e77d994a1c6c69c8ef08456ecf53] Merge remote-tracking branch 'crypto/master' git bisect good a8eb921ba7e8e77d994a1c6c69c8ef08456ecf53 # good: [21d507c41bdf83f6afc0e02976e43c10badfc6cd] Merge remote-tracking branch 'spi/for-next' git bisect good 21d507c41bdf83f6afc0e02976e43c10badfc6cd # bad: [30cd4c688a3bcf324f011d7716044b1a4681efc1] Merge remote-tracking branch 'soundwire/next' git bisect bad 30cd4c688a3bcf324f011d7716044b1a4681efc1 # bad: [c43d2173d3eb4047bb62a7a393a298a1032cce18] Merge remote-tracking branch 'drivers-x86/for-next' git bisect bad c43d2173d3eb4047bb62a7a393a298a1032cce18 # good: [973e9d8622a6fecc52f639680cbbde1519e1fcf8] Merge remote-tracking branch 'rcu/rcu/next' git bisect good 973e9d8622a6fecc52f639680cbbde1519e1fcf8 # bad: [7b2aaf51d499e0372cbecafad04582c71ad03c73] Merge remote-tracking branch 'kvm/next' git bisect bad 7b2aaf51d499e0372cbecafad04582c71ad03c73 # good: [04548ed0206ca895c8edd6a078c20a218423890b] KVM: SVM: Replace hard-coded value with #define git bisect good 04548ed0206ca895c8edd6a078c20a218423890b # bad: [92f4d400a407235783afd4399fa26c4c665024b5] KVM: x86/xen: Fix __user pointer handling for hypercall page installation git bisect bad 92f4d400a407235783afd4399fa26c4c665024b5 # good: [ed5e484b79e8a9b8be714bd85b6fc70bd6dc99a7] KVM: x86/mmu: Ensure forward progress when yielding in TDP MMU iter git bisect good ed5e484b79e8a9b8be714bd85b6fc70bd6dc99a7 # bad: [f3d4b4b1dc1c5fb9ea17cac14133463bfe72f170] sched: Add cond_resched_rwlock git bisect bad f3d4b4b1dc1c5fb9ea17cac14133463bfe72f170 # good: [f1b3b06a058bb5c636ffad0afae138fe30775881] KVM: x86/mmu: Clear dirtied pages mask bit before early break git bisect good f1b3b06a058bb5c636ffad0afae138fe30775881 # bad: [26128cb6c7e6731fe644c687af97733adfdb5ee9] locking/rwlocks: Add contention detection for rwlocks git bisect bad 26128cb6c7e6731fe644c687af97733adfdb5ee9 # good: [7cca2d0b7e7d9f3cd740d41afdc00051c9b508a0] KVM: x86/mmu: Protect TDP MMU page table memory with RCU git bisect good 7cca2d0b7e7d9f3cd740d41afdc00051c9b508a0 # first bad commit: [26128cb6c7e6731fe644c687af97733adfdb5ee9] locking/rwlocks: Add contention detection for rwlocks