From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751976AbdBBOQE (ORCPT ); Thu, 2 Feb 2017 09:16:04 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36114 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750808AbdBBOQB (ORCPT ); Thu, 2 Feb 2017 09:16:01 -0500 From: Waiman Long To: Peter Zijlstra , Ingo Molnar Cc: linux-kernel@vger.kernel.org, Waiman Long Subject: [PATCH v3 0/3] locking/spinlock_debug: Change it to a mostly fair lock Date: Thu, 2 Feb 2017 09:15:26 -0500 Message-Id: <1486044929-7244-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.25]); Thu, 02 Feb 2017 14:15:57 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org v2->v3: - Keep the original v1 patches but move patch 3 of v2 in front so as to disable GENERIC_LOCKBREAK when DEBUG_LOCK_ALLOC is on. 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. It also includes a patch that disable GENERIC_LOCKBREAK when DEBUG_LOCK_ALLOC is on. Waiman Long (3): locking/spinlock: Disable GENERIC_LOCKBREAK when DEBUG_LOCK_ALLOC is on locking/spinlock_debug: Reduce lockup suspected message clutter locking/spinlock_debug: Reduce lock cacheline contention 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 | 8 +++-- kernel/locking/spinlock_debug.c | 73 ++++++++++++++++++++++++++++++----------- 8 files changed, 64 insertions(+), 29 deletions(-) -- 1.8.3.1