From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752000AbdBAVOY (ORCPT ); Wed, 1 Feb 2017 16:14:24 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45446 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750863AbdBAVOX (ORCPT ); Wed, 1 Feb 2017 16:14:23 -0500 From: Waiman Long To: Peter Zijlstra , Ingo Molnar Cc: linux-kernel@vger.kernel.org, Waiman Long Subject: [PATCH v2 0/3] locking/spinlock_debug: Change it to a mostly fair lock Date: Wed, 1 Feb 2017 16:13:37 -0500 Message-Id: <1485983620-11958-1-git-send-email-longman@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Wed, 01 Feb 2017 21:14:23 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org v1->v2: - Pack lockup and break_lock into a single 4-byte slot so as not to in increase spinlock size when GENERIC_LOCKBREAK is on. Hopefully that will be enough to fix a frame size too large warning in 0-day build. - Add a new patch to disable GENERIC_LOCKBREAK when DEBUG_LOCK_ALLOC is on. The current debug spinlock implementation is a TATAS unfair lock. This can occasionally lead to system lockup with a debug kernel because of the unfairness of the lock rather than inherent locking problem. This patch set changes the debug spinlock implementation to a mostly fair spinlock based on the MCS lock similar to what is done in qspinlock. Waiman Long (3): locking/spinlock_debug: Reduce lockup suspected message clutter locking/spinlock_debug: Reduce lock cacheline contention locking/spinlock: Disable GENERIC_LOCKBREAK when DEBUG_LOCK_ALLOC is on arch/m32r/Kconfig | 2 +- arch/parisc/Kconfig | 2 +- arch/powerpc/Kconfig | 2 +- arch/s390/Kconfig | 2 +- arch/sh/Kconfig | 2 +- arch/sparc/Kconfig | 2 +- include/linux/spinlock_types.h | 9 +++-- kernel/locking/spinlock_debug.c | 73 ++++++++++++++++++++++++++++++----------- 8 files changed, 65 insertions(+), 29 deletions(-) -- 1.8.3.1