From patchwork Thu Nov 8 20:34:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674979 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 24C0315A6 for ; Thu, 8 Nov 2018 20:35:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1775C2E452 for ; Thu, 8 Nov 2018 20:35:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0B6AB2E4BF; Thu, 8 Nov 2018 20:35:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 824932E452 for ; Thu, 8 Nov 2018 20:35:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9301E6B064A; Thu, 8 Nov 2018 15:35:30 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8E2AB6B064C; Thu, 8 Nov 2018 15:35:30 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A7E66B064D; Thu, 8 Nov 2018 15:35:30 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by kanga.kvack.org (Postfix) with ESMTP id 474916B064A for ; Thu, 8 Nov 2018 15:35:30 -0500 (EST) Received: by mail-qk1-f200.google.com with SMTP id h68so41541332qke.3 for ; Thu, 08 Nov 2018 12:35:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=y2MBGu6m65/4DEZPf3CIrVp/Cw1OOsAERE+SYAofEMw=; b=p8AibrgmyjQQx0Wt23gGkI7w+kpV9PamHpcS2nxBPRaQLv1PSVJkzyR9bxkLG51SNz ENdRtBKvOYhj1KBKT5IqKzu5B6ANV2jZCKD46MYf+r3YwkEfEeWXqImQKY8qdqYZf7aZ Kk+k5ZIGOxqzrFxFhAscCtuCBa3l2VdfTxWl8kjz84FvVlekOOkAUF8ohnWj2LpEvLuH wj8Tn2tPbnO3NVLHDShKB8goEbtDPjryl6kFwCmm76ml6bAsY6iaxTVJG+lO1nS0/tAC VL5gT6TUmsHJjQtFx599OFsfcbaJmQoRr8WfR4rQEkMGdOhuiyT3rJypEILS172KcXfk IoFA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gLQqUeTS69PCA+cIjg/CL1+B6sImeKZRXCtjBgkb38tZBswFGuX YjrWxyMexb8W5qmyC/bi0Ootub7cmqz7Z15BXdfFPufK72G9Zp9fQUdbq/9QTKSOTrXRM4uE4+N CspTZUS6ZyuYqmowcKw6fWrQ6nola/U1VZQDdX4ymysArw2yseJdHN80/9/jpxLSTlw== X-Received: by 2002:a37:8d81:: with SMTP id p123mr5717896qkd.241.1541709329924; Thu, 08 Nov 2018 12:35:29 -0800 (PST) X-Google-Smtp-Source: AJdET5c4W6cbBWC7FSWXQYU0dxRRaniN8BBiQVZBx8AF8n9TKiy+LWs3qa1t8ALWxXT1z5VOrYyB X-Received: by 2002:a37:8d81:: with SMTP id p123mr5717851qkd.241.1541709329226; Thu, 08 Nov 2018 12:35:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709329; cv=none; d=google.com; s=arc-20160816; b=06+8xMeWfG1zzljVKGjq3cXYe+/kO3o7usQvgR2rsEtlFuTEgxIRPQBbvzhJfVT7RZ F1W9qWWTIYKi3BhnpnsOhLW6OvJ2ECD/+dFK6Oyos6+DYhnK+eMptf5QdJ2HU6vQEeGL rRKF/Iv9MLxDOzJJ/MK2yyMn4Fhse72NVqdz5UiZB2UzYfnPLiUdYUa/qA1Wb69YELLY 9SsYsLv4C+ZY1wP7DazblDb8dDY4/vPoKL/WpS/tpm30r+b7M57xPRu8X5pNVqMTHsmY iuQ1rodWz+2utvAcDCw465lVNfm1L3qM0nMYu2t8KOXIiG9tNdoEJ7NMSPkwtOTdLCqz gLuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=y2MBGu6m65/4DEZPf3CIrVp/Cw1OOsAERE+SYAofEMw=; b=Q4AvCwfAyymJM731whiALJzD7Dq4IQINYTjiMYUaVWvJGRJ/+umQWEhA5TQlnPFuc2 h6gyfhKt3c6AN945zR5TLlmH/FOl0KLxhCeXCJdI0eXtJaunp32seOUnYIem+vCooiJp NX81FWGTdxFtYf0S07/M1CIG1aTfVIr5c8ZxeFilecWXiw2lK8NAzLcyF5aYiFeSiexZ 6SkAffftfxZPDOJ/88J4z6vMlgDyPUIdfgMPRkprgo1joNAhJ5XOHLSRCvmZ25tlt4Dy gkjXzMFbFxKqa9ZSy26SW0bAtSFqnbFsq6wtBRrSkagR3apL5KskU6XIiInvCOaHcneF ALVA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id f64si3730483qtd.182.2018.11.08.12.35.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:29 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 201B930A5A59; Thu, 8 Nov 2018 20:35:28 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id DB9C11001F4C; Thu, 8 Nov 2018 20:35:26 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 01/12] locking/lockdep: Rework lockdep_set_novalidate_class() Date: Thu, 8 Nov 2018 15:34:17 -0500 Message-Id: <1541709268-3766-2-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Thu, 08 Nov 2018 20:35:28 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The current lockdep_set_novalidate_class() implementation is like a hack. It assigns a special class key for that lock and calls lockdep_init_map() twice. This patch changes the implementation to make it more general so that it can be used by other special lock class types. A new "type" field is added to both the lockdep_map and lock_class structures. The new field can now be used to designate a lock and a class object as novalidate. The lockdep_set_novalidate_class() call, however, should be called before lock initialization which calls lockdep_init_map(). Signed-off-by: Waiman Long --- include/linux/lockdep.h | 14 +++++++++++--- kernel/locking/lockdep.c | 14 +++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 1fd82ff..18f9607 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h @@ -58,8 +58,6 @@ struct lock_class_key { struct lockdep_subclass_key subkeys[MAX_LOCKDEP_SUBCLASSES]; }; -extern struct lock_class_key __lockdep_no_validate__; - #define LOCKSTAT_POINTS 4 /* @@ -102,6 +100,8 @@ struct lock_class { int name_version; const char *name; + unsigned int flags; + #ifdef CONFIG_LOCK_STAT unsigned long contention_point[LOCKSTAT_POINTS]; unsigned long contending_point[LOCKSTAT_POINTS]; @@ -142,6 +142,12 @@ struct lock_class_stats { #endif /* + * Lockdep class flags + * 1) LOCKDEP_FLAG_NOVALIDATE: No full validation, just simple checks. + */ +#define LOCKDEP_FLAG_NOVALIDATE (1 << 0) + +/* * Map the lock object (the lock instance) to the lock-class object. * This is embedded into specific lock instances: */ @@ -149,6 +155,7 @@ struct lockdep_map { struct lock_class_key *key; struct lock_class *class_cache[NR_LOCKDEP_CACHING_CLASSES]; const char *name; + unsigned int flags; #ifdef CONFIG_LOCK_STAT int cpu; unsigned long ip; @@ -296,7 +303,8 @@ extern void lockdep_init_map(struct lockdep_map *lock, const char *name, (lock)->dep_map.key, sub) #define lockdep_set_novalidate_class(lock) \ - lockdep_set_class_and_name(lock, &__lockdep_no_validate__, #lock) + do { (lock)->dep_map.flags |= LOCKDEP_FLAG_NOVALIDATE; } while (0) + /* * Compare locking classes */ diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 1efada2..493b567 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -692,10 +692,11 @@ static int count_matching_names(struct lock_class *new_class) hlist_for_each_entry_rcu(class, hash_head, hash_entry) { if (class->key == key) { /* - * Huh! same key, different name? Did someone trample - * on some memory? We're most confused. + * Huh! same key, different name or flags? Did someone + * trample on some memory? We're most confused. */ - WARN_ON_ONCE(class->name != lock->name); + WARN_ON_ONCE((class->name != lock->name) || + (class->flags != lock->flags)); return class; } } @@ -788,6 +789,7 @@ static bool assign_lock_key(struct lockdep_map *lock) debug_atomic_inc(nr_unused_locks); class->key = key; class->name = lock->name; + class->flags = lock->flags; class->subclass = subclass; INIT_LIST_HEAD(&class->lock_entry); INIT_LIST_HEAD(&class->locks_before); @@ -3108,6 +3110,7 @@ static void __lockdep_init_map(struct lockdep_map *lock, const char *name, return; } + lock->flags = 0; lock->name = name; /* @@ -3152,9 +3155,6 @@ void lockdep_init_map(struct lockdep_map *lock, const char *name, } EXPORT_SYMBOL_GPL(lockdep_init_map); -struct lock_class_key __lockdep_no_validate__; -EXPORT_SYMBOL_GPL(__lockdep_no_validate__); - static int print_lock_nested_lock_not_held(struct task_struct *curr, struct held_lock *hlock, @@ -3215,7 +3215,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (unlikely(!debug_locks)) return 0; - if (!prove_locking || lock->key == &__lockdep_no_validate__) + if (!prove_locking || (lock->flags & LOCKDEP_FLAG_NOVALIDATE)) check = 0; if (subclass < NR_LOCKDEP_CACHING_CLASSES) From patchwork Thu Nov 8 20:34:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674981 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ED22515E9 for ; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DF2BE2E452 for ; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D34302E4BF; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 23A822E452 for ; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DD916B064C; Thu, 8 Nov 2018 15:35:32 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 165506B064E; Thu, 8 Nov 2018 15:35:32 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 053846B064F; Thu, 8 Nov 2018 15:35:32 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by kanga.kvack.org (Postfix) with ESMTP id BE3586B064C for ; Thu, 8 Nov 2018 15:35:31 -0500 (EST) Received: by mail-qk1-f198.google.com with SMTP id f81-v6so41439649qkb.14 for ; Thu, 08 Nov 2018 12:35:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=zYzC1oucZXCvbKXu7xHDy4C7EkKelwV7EG89885y9r4=; b=RVtrYGUH22knv6qugxLEWDZmWp/AueGROQLoXD02UQ+YbCZsiSL6+xJM5LoPEzAzFo ALh/ZZIQhEnE8GNFhYRbW7blALEEwGKTwFM4MizJAguD/vtW+exZSoXImDqJdB+aM5jG ngjYymjxvKX8QDbS68bqwzPBhu5rjgZcETGEbMnCYdXcM14dzwzfNCEE8I4uwx2p7ewY ZJGSsFEEUP5z1B+nHWZFMUXuEVRAKRlgwjQTguvHCrPOVvxddcCo59ypSWAwzBKJj1Cj s1ja9JpdfegsKVaJL4kybTxH3FtNmRR/Ddimlzk2npRXfyyCMXv3Nz1YMGCWoywzDXRK bjyw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gIPgZxeMfvz2XYK+iyaqhBGzPptFDLou4XOdI04T/cGXkMAsiTI yOH5x/aBqgjXl4stGP8p1EAWMKXfseDcQzVgzYUZ23JVe3wG5de4YFY/IGEBvg4kdZbc/tooTD5 /lXgOtHYC7rU12a0N1cSpdIL+sThPJsprDCr8ByN/J9b8oQlMl6SK3tnJA+sad/iERA== X-Received: by 2002:ac8:4a10:: with SMTP id x16mr6350593qtq.164.1541709331458; Thu, 08 Nov 2018 12:35:31 -0800 (PST) X-Google-Smtp-Source: AJdET5f+iIMh5C0WLXz+/KZRQN2W5vvz4mS57Mg+Lz7a0KqKvwvdRPYk1qDPTDRwqlauWyYq/EjI X-Received: by 2002:ac8:4a10:: with SMTP id x16mr6350535qtq.164.1541709330574; Thu, 08 Nov 2018 12:35:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709330; cv=none; d=google.com; s=arc-20160816; b=uEkYeNPRN9az8PJU5xNMbbRJaqp9AfNusZjuUl75uTmj2ofS+dHBMiDgnNlJWy4E+O LSpGcQHWS1TyYTQR0Uu87easTTuIbQS3zRpV9utmoaa7+PPfV+Mg6eVI10yf1cg1Owug GqsgWqC05v/1/HWBzNLpf4X2i9BgWc4Gq6lrKNVQTM53stby0AVyhmFHpR54PcSn9mDS LqTyCTfVijvGjxDIEBDfCsv3yTvV6M+gapg+waRqMPFxIkC+EnX3AEi2EBuEPI06y3uJ iOq2zHtf54b36ISe2UG60W1pQV8sPRTFXuiILShQU0yhTcLNNXKAG9k6iDkdLLNUjC1N +XOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=zYzC1oucZXCvbKXu7xHDy4C7EkKelwV7EG89885y9r4=; b=Sqt0av05MPPSBUDc/QGsPZXdllJUC9nBBXEgwz7zJ13iO4evOtuJMB5XOCvN3ljP5M d+kf+/T6Huq4aKZIB5K0LhKTOXCr6hES6T+PPhM+qDLPtmc/hoVGmWxHs0x7CNSreJ0+ xgxvBVlZtY7bVWm4fgljm2Ew4RssBqadAl+Gb6j4OgxjfdU0OIJrVIg0lx9ImaBuutJi WyFUwLh7bZ4u0OV4F0BSz/uYqnS7TM/TKPC8g7mjrXnQT3s+c993GKiNd40rZ09nMQNb XqD0GBqp54OAnRwXqboXRkWrYPoYCGS9ctFmAYFQ5vZR/BYvvD+puh8OGJitRFwVOZvw d3xg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id q8-v6si3779608qtl.393.2018.11.08.12.35.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:30 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 71B85804F3; Thu, 8 Nov 2018 20:35:29 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3AC7A1057051; Thu, 8 Nov 2018 20:35:28 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 02/12] locking/lockdep: Add a new terminal lock type Date: Thu, 8 Nov 2018 15:34:18 -0500 Message-Id: <1541709268-3766-3-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 08 Nov 2018 20:35:29 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP A terminal lock is a lock where further locking or unlocking on another lock is not allowed. IOW, no forward dependency is permitted. With such a restriction in place, we don't really need to do a full validation of the lock chain involving a terminal lock. Instead, we just check if there is any further locking or unlocking on another lock when a terminal lock is being held. Only spinlocks which are acquired by the _irq or _irqsave variants or in IRQ disabled context should be classified as terminal locks. By adding this new lock type, we can save entries in lock_chains[], chain_hlocks[], list_entries[] and stack_trace[]. By marking suitable locks as terminal, we reduce the chance of overflowing those tables allowing them to focus on locks that can have both forward and backward dependencies. Signed-off-by: Waiman Long --- include/linux/lockdep.h | 13 ++++++++++- kernel/locking/lockdep.c | 44 ++++++++++++++++++++++++++++++++++---- kernel/locking/lockdep_internals.h | 5 +++++ kernel/locking/lockdep_proc.c | 11 ++++++++-- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 18f9607..c5ff8c5 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h @@ -143,9 +143,16 @@ struct lock_class_stats { /* * Lockdep class flags + * * 1) LOCKDEP_FLAG_NOVALIDATE: No full validation, just simple checks. + * 2) LOCKDEP_FLAG_TERMINAL: This is a terminal lock where lock/unlock on + * another lock within its critical section is not allowed. */ #define LOCKDEP_FLAG_NOVALIDATE (1 << 0) +#define LOCKDEP_FLAG_TERMINAL (1 << 1) + +#define LOCKDEP_NOCHECK_FLAGS (LOCKDEP_FLAG_NOVALIDATE |\ + LOCKDEP_FLAG_TERMINAL) /* * Map the lock object (the lock instance) to the lock-class object. @@ -263,6 +270,7 @@ struct held_lock { unsigned int hardirqs_off:1; unsigned int references:12; /* 32 bits */ unsigned int pin_count; + unsigned int flags; }; /* @@ -304,6 +312,8 @@ extern void lockdep_init_map(struct lockdep_map *lock, const char *name, #define lockdep_set_novalidate_class(lock) \ do { (lock)->dep_map.flags |= LOCKDEP_FLAG_NOVALIDATE; } while (0) +#define lockdep_set_terminal_class(lock) \ + do { (lock)->dep_map.flags |= LOCKDEP_FLAG_TERMINAL; } while (0) /* * Compare locking classes @@ -419,7 +429,8 @@ static inline void lockdep_on(void) do { (void)(key); } while (0) #define lockdep_set_subclass(lock, sub) do { } while (0) -#define lockdep_set_novalidate_class(lock) do { } while (0) +#define lockdep_set_novalidate_class(lock) do { } while (0) +#define lockdep_set_terminal_class(lock) do { } while (0) /* * We don't define lockdep_match_class() and lockdep_match_key() for !LOCKDEP diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 493b567..02631a0 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3020,6 +3020,16 @@ static inline int separate_irq_context(struct task_struct *curr, #endif /* defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_PROVE_LOCKING) */ +static int lock_is_terminal(struct lockdep_map *lock) +{ + return flags_is_terminal(lock->flags); +} + +static int hlock_is_terminal(struct held_lock *hlock) +{ + return flags_is_terminal(hlock->flags); +} + /* * Mark a lock with a usage bit, and validate the state transition: */ @@ -3047,7 +3057,11 @@ static int mark_lock(struct task_struct *curr, struct held_lock *this, hlock_class(this)->usage_mask |= new_mask; - if (!save_trace(hlock_class(this)->usage_traces + new_bit)) + /* + * We don't need to save the stack trace for terminal locks. + */ + if (!hlock_is_terminal(this) && + !save_trace(hlock_class(this)->usage_traces + new_bit)) return 0; switch (new_bit) { @@ -3215,9 +3229,6 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (unlikely(!debug_locks)) return 0; - if (!prove_locking || (lock->flags & LOCKDEP_FLAG_NOVALIDATE)) - check = 0; - if (subclass < NR_LOCKDEP_CACHING_CLASSES) class = lock->class_cache[subclass]; /* @@ -3229,6 +3240,9 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, return 0; } + if (!prove_locking || (class->flags & LOCKDEP_NOCHECK_FLAGS)) + check = 0; + debug_class_ops_inc(class); if (very_verbose(class)) { @@ -3255,6 +3269,13 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (depth) { hlock = curr->held_locks + depth - 1; + + /* + * Warn if the previous lock is a terminal lock. + */ + if (DEBUG_LOCKS_WARN_ON(hlock_is_terminal(hlock))) + return 0; + if (hlock->class_idx == class_idx && nest_lock) { if (hlock->references) { /* @@ -3294,6 +3315,7 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, hlock->holdtime_stamp = lockstat_clock(); #endif hlock->pin_count = pin_count; + hlock->flags = class->flags; if (check && !mark_irqflags(curr, hlock)) return 0; @@ -3636,6 +3658,14 @@ static int __lock_downgrade(struct lockdep_map *lock, unsigned long ip) if (i == depth-1) return 1; + /* + * Unlock of an outer lock is not allowed while holding a terminal + * lock. + */ + hlock = curr->held_locks + depth - 1; + if (DEBUG_LOCKS_WARN_ON(hlock_is_terminal(hlock))) + return 0; + if (reacquire_held_locks(curr, depth, i + 1)) return 0; @@ -4093,6 +4123,12 @@ void lock_acquired(struct lockdep_map *lock, unsigned long ip) return; raw_local_irq_save(flags); + + /* + * A terminal lock should only be used with IRQ disabled. + */ + DEBUG_LOCKS_WARN_ON(lock_is_terminal(lock) && + !irqs_disabled_flags(flags)); check_flags(flags); current->lockdep_recursion = 1; __lock_acquired(lock, ip); diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h index 88c847a..271fba8 100644 --- a/kernel/locking/lockdep_internals.h +++ b/kernel/locking/lockdep_internals.h @@ -212,3 +212,8 @@ static inline unsigned long debug_class_ops_read(struct lock_class *class) # define debug_atomic_read(ptr) 0 # define debug_class_ops_inc(ptr) do { } while (0) #endif + +static inline unsigned int flags_is_terminal(unsigned int flags) +{ + return flags & LOCKDEP_FLAG_TERMINAL; +} diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c index 3d31f9b..37fbd41 100644 --- a/kernel/locking/lockdep_proc.c +++ b/kernel/locking/lockdep_proc.c @@ -78,7 +78,10 @@ static int l_show(struct seq_file *m, void *v) get_usage_chars(class, usage); seq_printf(m, " %s", usage); - seq_printf(m, ": "); + /* + * Print terminal lock status + */ + seq_printf(m, "%c: ", flags_is_terminal(class->flags) ? 'T' : ' '); print_name(m, class); seq_puts(m, "\n"); @@ -208,7 +211,7 @@ static int lockdep_stats_show(struct seq_file *m, void *v) nr_irq_read_safe = 0, nr_irq_read_unsafe = 0, nr_softirq_read_safe = 0, nr_softirq_read_unsafe = 0, nr_hardirq_read_safe = 0, nr_hardirq_read_unsafe = 0, - sum_forward_deps = 0; + nr_nocheck = 0, sum_forward_deps = 0; list_for_each_entry(class, &all_lock_classes, lock_entry) { @@ -240,6 +243,8 @@ static int lockdep_stats_show(struct seq_file *m, void *v) nr_hardirq_read_safe++; if (class->usage_mask & LOCKF_ENABLED_HARDIRQ_READ) nr_hardirq_read_unsafe++; + if (class->flags & LOCKDEP_NOCHECK_FLAGS) + nr_nocheck++; #ifdef CONFIG_PROVE_LOCKING sum_forward_deps += lockdep_count_forward_deps(class); @@ -318,6 +323,8 @@ static int lockdep_stats_show(struct seq_file *m, void *v) nr_uncategorized); seq_printf(m, " unused locks: %11lu\n", nr_unused); + seq_printf(m, " unchecked locks: %11lu\n", + nr_nocheck); seq_printf(m, " max locking depth: %11u\n", max_lockdep_depth); #ifdef CONFIG_PROVE_LOCKING From patchwork Thu Nov 8 20:34:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674983 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A465515E9 for ; Thu, 8 Nov 2018 20:35:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 963302E452 for ; Thu, 8 Nov 2018 20:35:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8A8C42E4BF; Thu, 8 Nov 2018 20:35:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1F9322E452 for ; Thu, 8 Nov 2018 20:35:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 845096B064E; Thu, 8 Nov 2018 15:35:33 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7F6396B0650; Thu, 8 Nov 2018 15:35:33 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 671016B0651; Thu, 8 Nov 2018 15:35:33 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 2D7726B064E for ; Thu, 8 Nov 2018 15:35:33 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id n68so40749109qkn.8 for ; Thu, 08 Nov 2018 12:35:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=6XDZ2ln/gR3ohqeRdUDrEhPq3uOa3/v4RpHArz8esP0=; b=Z9BNm57EFCOaJIam4JdDRCFPnuM5TDKUD8AW64qdS4LZUhvDBhRdGV5vMpjQizt5Cn LtIj6vt6vBqntkWLGpIZSzLbniuyiW9Vsef2YhZIceE6ZU63Ys9lz00m9Xgoy2vkFBsE m5XhzCS/ybL7apKr6vvm6ftavAsS2YClEjefuERdn5yS2u5sVsHRmHdO+cKYsQP5OsUR +3F+xoIeGAkV8PmZp6Kd6h93VSx9MSEiyZHXHAPPib0AxmnZdGC4LaK946oPFs1RYzql 6eaBejzZfsdS9l+8tBc/1m3GSWR46+bD5gnfdoNrAZBCkgx3i20X5kiQpYBrRD4xwn+3 IrqQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gLvaiI/fed2EpEG/HxDAAfTzdvtGl4O0CY0JKVMbvmXhCn6Ybw8 aChRgzVYHrNMEe985zFn3maSQlG8yVdIN+WEIaTzt8Wf3BN7DSVSICdid234lKA6PTBjLARlbWx 5ojmXj5DbLqhXKv6owTnn/E1B42o+0OCCyLuE7RHt/+RBsSXTwMUD4xP+MHF0iFywBw== X-Received: by 2002:a37:4a47:: with SMTP id x68mr5992953qka.112.1541709332869; Thu, 08 Nov 2018 12:35:32 -0800 (PST) X-Google-Smtp-Source: AJdET5eaMu8Yk8fssjW3v0Cne3zsyfzvKMocoshFoA972YliTFHQrw7rqHN5cp9ifmp7wPAbdDz4 X-Received: by 2002:a37:4a47:: with SMTP id x68mr5992910qka.112.1541709332303; Thu, 08 Nov 2018 12:35:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709332; cv=none; d=google.com; s=arc-20160816; b=ViiVdEuBLhWIMgHOnjS5SX9IZFtcxIcngG9C+hILV3fnLEYSrl8d0jESm0Twe3pfEt V8PpPuVwC+jFArfD8+EXwPgByPaI62hxGJfk2KQYUZbihgazrUajXjVT75hXye34XJ8L Bk0V/+QDej87dmkY9pdlnhxEg2qligurpMaql9cNOfCb1esCuBRjCLF7SnbUWvU/jule TaqcaNn6D8g/aO+GazvuRHmmp/ZZA1Pg76+LgPC+Jz/HkbVdqLUTKjka8mffH9laAFV0 7O/bfZ4QEeR6RsLFKmhpzsMwzVjs08DfxAGqA8yI8lvRJrNlDsiwoK20tGmnhtqrNhD5 0TdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=6XDZ2ln/gR3ohqeRdUDrEhPq3uOa3/v4RpHArz8esP0=; b=cTCCdDGzxe1wApIgeRWO4E+d1bXs1Cwh5UJrV3fpjnimYq3zTFQ56gOhJ8OEsp/xqg 3gVb5NRnmqgTVgkQ2KFymI+aCtuydtV5hyBviEo3xew0Pd3RT2+xbGT0rOLLEGM1Mos6 eu2pJpzpkqABdNl9SZATIq5A8yHCbrdizu36kwvqC9JAp5WF4ho5sVMr7HJoI7qraaLQ y7f01WBkWu6OEfFvAyFFHM05Zo5eReLPB2trxEkFgATnTzFfhrRLSxOcC2kvIdPOeJbD 4lHIKwqjFnj33DKoT+B47IgL/3M1GEvF72BjFAX6NQMRSKpXFBJd2cZNggpBc/5s8lEH 7tDw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id t68si3752796qkb.23.2018.11.08.12.35.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:32 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E241E30024A1; Thu, 8 Nov 2018 20:35:30 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 900461001F4A; Thu, 8 Nov 2018 20:35:29 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 03/12] locking/lockdep: Add DEFINE_TERMINAL_SPINLOCK() and related macros Date: Thu, 8 Nov 2018 15:34:19 -0500 Message-Id: <1541709268-3766-4-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Thu, 08 Nov 2018 20:35:31 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Add new DEFINE_RAW_TERMINAL_SPINLOCK() and DEFINE_TERMINAL_SPINLOCK() macro to define a raw terminal spinlock and a terminal spinlock. Signed-off-by: Waiman Long --- include/linux/spinlock_types.h | 34 +++++++++++++++++++++++----------- kernel/printk/printk_safe.c | 2 +- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/include/linux/spinlock_types.h b/include/linux/spinlock_types.h index 24b4e6f..6a8086e 100644 --- a/include/linux/spinlock_types.h +++ b/include/linux/spinlock_types.h @@ -33,9 +33,10 @@ #define SPINLOCK_OWNER_INIT ((void *)-1L) #ifdef CONFIG_DEBUG_LOCK_ALLOC -# define SPIN_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } +# define SPIN_DEP_MAP_INIT(lockname, f) .dep_map = { .name = #lockname, \ + .flags = f } #else -# define SPIN_DEP_MAP_INIT(lockname) +# define SPIN_DEP_MAP_INIT(lockname, f) #endif #ifdef CONFIG_DEBUG_SPINLOCK @@ -47,16 +48,22 @@ # define SPIN_DEBUG_INIT(lockname) #endif -#define __RAW_SPIN_LOCK_INITIALIZER(lockname) \ - { \ - .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ - SPIN_DEBUG_INIT(lockname) \ - SPIN_DEP_MAP_INIT(lockname) } +#define __RAW_SPIN_LOCK_INITIALIZER(lockname, f) \ + { \ + .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED, \ + SPIN_DEBUG_INIT(lockname) \ + SPIN_DEP_MAP_INIT(lockname, f) } #define __RAW_SPIN_LOCK_UNLOCKED(lockname) \ - (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname) + (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname, 0) + +#define __RAW_TERMINAL_SPIN_LOCK_UNLOCKED(lockname) \ + (raw_spinlock_t) __RAW_SPIN_LOCK_INITIALIZER(lockname, \ + LOCKDEP_FLAG_TERMINAL) #define DEFINE_RAW_SPINLOCK(x) raw_spinlock_t x = __RAW_SPIN_LOCK_UNLOCKED(x) +#define DEFINE_RAW_TERMINAL_SPINLOCK(x) \ + raw_spinlock_t x = __RAW_TERMINAL_SPIN_LOCK_UNLOCKED(x) typedef struct spinlock { union { @@ -72,13 +79,18 @@ }; } spinlock_t; -#define __SPIN_LOCK_INITIALIZER(lockname) \ - { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname) } } +#define __SPIN_LOCK_INITIALIZER(lockname, f) \ + { { .rlock = __RAW_SPIN_LOCK_INITIALIZER(lockname, f) } } #define __SPIN_LOCK_UNLOCKED(lockname) \ - (spinlock_t ) __SPIN_LOCK_INITIALIZER(lockname) + (spinlock_t) __SPIN_LOCK_INITIALIZER(lockname, 0) + +#define __TERMINAL_SPIN_LOCK_UNLOCKED(lockname) \ + (spinlock_t) __SPIN_LOCK_INITIALIZER(lockname, LOCKDEP_FLAG_TERMINAL) #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x) +#define DEFINE_TERMINAL_SPINLOCK(x) \ + spinlock_t x = __TERMINAL_SPIN_LOCK_UNLOCKED(x) #include diff --git a/kernel/printk/printk_safe.c b/kernel/printk/printk_safe.c index 0913b4d..8ff1033 100644 --- a/kernel/printk/printk_safe.c +++ b/kernel/printk/printk_safe.c @@ -192,7 +192,7 @@ static void report_message_lost(struct printk_safe_seq_buf *s) static void __printk_safe_flush(struct irq_work *work) { static raw_spinlock_t read_lock = - __RAW_SPIN_LOCK_INITIALIZER(read_lock); + __RAW_SPIN_LOCK_UNLOCKED(read_lock); struct printk_safe_seq_buf *s = container_of(work, struct printk_safe_seq_buf, work); unsigned long flags; From patchwork Thu Nov 8 20:34:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674985 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 944E415A6 for ; Thu, 8 Nov 2018 20:35:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8703D2E452 for ; Thu, 8 Nov 2018 20:35:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7B1E02E4BF; Thu, 8 Nov 2018 20:35:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 281F72E452 for ; Thu, 8 Nov 2018 20:35:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 589D06B0650; Thu, 8 Nov 2018 15:35:37 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 472336B0652; Thu, 8 Nov 2018 15:35:37 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 387E26B0653; Thu, 8 Nov 2018 15:35:37 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by kanga.kvack.org (Postfix) with ESMTP id F20DD6B0650 for ; Thu, 8 Nov 2018 15:35:36 -0500 (EST) Received: by mail-qk1-f200.google.com with SMTP id 92so41308336qkx.19 for ; Thu, 08 Nov 2018 12:35:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=NUufTf52XQtcwHvOoiS1NNknYgZYMd0uwkBihWMNFkU=; b=uDro+oXLoe6nWCV9R0lCLHw7CbIINfRfC0ay4d8urvRMOxa37uPRjyuoQF/gtMkVO6 U101B2wFpYEkBMXL2hpFenTrfm6ROmjXM1Fw+GABu/ejv/lQ/U0Hd6X3XCZgr0jMKDrB mWokkTX7Wc7Vvhx0nYUcV9e8p4bHaHjtrE0EwsMq5SpJbbynT2dieFJM9z228zN7MWzK TIeSnIhI+E1UTgMmG9zsvtGDqaS/UaovA/Och46q3+53+mUSo8poLi1EcckwwCK1v4ub Q5W6wgWsvZcXz+UQ/S4fNyItj2o8aviqmCUpV3h+ak7sK90jfJrudCkm5XGiDO4aUoH7 HRBw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gIey75Yb4MxbWiqlmB1E20rY8Y4L4CQlh5fjeZJHZ+6M4aaSm7k qYmojjZ0qfl1Sf96+k3w59eqIL5NWp0SdPYsfwrrnKXUOEUCbPvBcNDQIC4mPDsWehPrW71sQO1 +jzMEpsi+YnZ4HtHHIo8zOa7bM+GE2/J5icHyahG8dqhpOD5Z1a1ZCZ2pbEClQJwXZQ== X-Received: by 2002:a0c:e091:: with SMTP id l17mr6137789qvk.144.1541709336716; Thu, 08 Nov 2018 12:35:36 -0800 (PST) X-Google-Smtp-Source: AJdET5fICx9lSY8Vu5TZJj7dkPq84WjIPH+4BJux/iP5QoCofUulfUlTWJ7W6MDqs827eJ3FJzO+ X-Received: by 2002:a0c:e091:: with SMTP id l17mr6137755qvk.144.1541709336206; Thu, 08 Nov 2018 12:35:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709336; cv=none; d=google.com; s=arc-20160816; b=r0W4dTbKgsZBvyihOd0XJUv66rub8w1yTk2vjAH4drLM1jxWiADccL6EhRLTH9ydN9 FicppFz3CAV0Y945zIuIoLdDVXCowwX9h/yoTMLz9zJAErooDeU2lTnt1A5fjBDPMbYd gnNDd4E/r+jSyFjseNMDHcrmW13ztcbhVefAgQgtg9pRBtCiinGTTeg+4X9j/kHhsIIY Pw5++brwbjhmYbsSO04GZxr/NBXZnmXxZ/jKJAKkPePRKNa0FxNt44FMr3n64YNOsGS6 M+aokNzB7FeMM89GIWz9JZR6zOwm/+tRZeNwNJX5+1Q/7/3OAiNqQhZjDsITWv8QpHvF z1JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=NUufTf52XQtcwHvOoiS1NNknYgZYMd0uwkBihWMNFkU=; b=Cjra2ztDWLiK9s3KxBwhiV7evqsXTx24FArZ1tko/Ogy+G5o8cVdf0bwC4LF5u3mdC Y4mS0pEtAp02Ns28S6mwjReM/OWQaaI1jk8ICDY3STFsxzQA5dR4mXg/xR6+jMuShU9g JD6xi8XEMfyiEzTsTVNwT/qV45sub/Ew8XhCMBoG8+cw7V0WVc9JdXCVo6AkBRjKiRnD AGnyLOUIZoQ0iwWE78cAmHirSno6LogTv7WedH0gDt+SnV6BDAiQTxUc1YLnjZ8WVtan RVfV3FE9iZqSYT9Bi8L1UkTpcDzbSTfZRh1NqF8omeuDjiNrB1nYdB2pfTx3SqPb9dzn V6zA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id k65-v6si45035qkd.2.2018.11.08.12.35.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:36 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 254813001A6C; Thu, 8 Nov 2018 20:35:35 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0A9CD105705B; Thu, 8 Nov 2018 20:35:30 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 04/12] printk: Make logbuf_lock a terminal lock Date: Thu, 8 Nov 2018 15:34:20 -0500 Message-Id: <1541709268-3766-5-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Thu, 08 Nov 2018 20:35:35 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By making logbuf_lock a terminal lock, it reduces the performance overhead when lockdep is enabled. Signed-off-by: Waiman Long --- kernel/printk/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 1b2a029..6b63fda 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -367,7 +367,7 @@ __packed __aligned(4) * within the scheduler's rq lock. It must be released before calling * console_unlock() or anything else that might wake up a process. */ -DEFINE_RAW_SPINLOCK(logbuf_lock); +DEFINE_RAW_TERMINAL_SPINLOCK(logbuf_lock); /* * Helper macros to lock/unlock logbuf_lock and switch between From patchwork Thu Nov 8 20:34:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674987 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 279BE15A6 for ; Thu, 8 Nov 2018 20:35:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1B1F128403 for ; Thu, 8 Nov 2018 20:35:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0EA542E4E0; Thu, 8 Nov 2018 20:35:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 845592E452 for ; Thu, 8 Nov 2018 20:35:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D73C16B0652; Thu, 8 Nov 2018 15:35:38 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D27EB6B0654; Thu, 8 Nov 2018 15:35:38 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC43E6B0655; Thu, 8 Nov 2018 15:35:38 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 8F01C6B0652 for ; Thu, 8 Nov 2018 15:35:38 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id k66so41473097qkf.1 for ; Thu, 08 Nov 2018 12:35:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=WiW/qIP5xtsgvsYCncGrXAjAG3FpozQuBKj1j0D5XBM=; b=XG9HiLA+PwwPi06IOw2pr2+Orgwl9yCJgOzLE+1deZ7/IY13eWxeViZUoUk5LfjSYC KW4VwyBxoB8L0Q4sDl/9ViqHhl6Uvox9L5hTLyBjB1V+iVVXShBALDqDkJdI9EYYeNJ5 +wMQah/AOUvZqfQDzvCsROhq3mhCr/KbAADEMovPs9qQ+MSiMRWKd4Xo36fHtcUw/SIS FiElRKV6JnFDCbP6OtMkT4NYw2tEiVyv/yvWJIGDPHLRM7pELHAt6WBRWkbot5crJveR r7d0ihDYgO90btnPKEWYF/EOQpuu3NZPGHOSBd0aeZXUlIItJ4KKP4W628E5o/cOYUgR jizg== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gIFZmYpTZdOxnRIXgXNywIGQRbWkhOtU1s8hzUuniPJtSMVIX8B ncwbLWBGvdQll74iFvndzYOYyLr0MLsUWPtAi3+quOXdLXyfToOF95wtuGof0+eKgFSKGif2D90 vzansABAqilZRdbO1gSXygzT1bIfSgU0HTfAAkR1yh3t8gpGAKQoltNyEBVg1A94EhQ== X-Received: by 2002:a37:7206:: with SMTP id n6mr5785169qkc.64.1541709338297; Thu, 08 Nov 2018 12:35:38 -0800 (PST) X-Google-Smtp-Source: AJdET5fpZ5xrTf5b2PoClEVYPH7OKjlSVmBNUGztrkEFKwKuQGuBislabRJ0kNys9AZreKsW04Fn X-Received: by 2002:a37:7206:: with SMTP id n6mr5785130qkc.64.1541709337738; Thu, 08 Nov 2018 12:35:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709337; cv=none; d=google.com; s=arc-20160816; b=navuGM9eGb6gT8MRglS4rCsdDEvKZOzMYRZYbXFO4JM4xnjvtNE8DCarjpiqqe/Bn4 9d55iQj2kJD2IoNNQBt2zapRCIRyF8qiBHlkzt3u+I/ZcSDEBOIUI8AFSc8nuXi5D3ZX dqgB4EmljfPa7Pc8aE0/IOBOEOzh4FsQvH4G+Gt2oSNpzXtK9Oqtsm5dc6cjiw5xY+68 oITnT0YiGcPjV4wFgbt/JcoBQRMBlHIlxeAlDMy5OKSEwEGw3p1T2TEMAbcylNlg0kum XXmiuDo8YD3OYEGsRiUATzTL6fZxsi/okeHeQdTz2mz3xM4QFRFqGyT/jPJFWnLRx0a8 gsdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=WiW/qIP5xtsgvsYCncGrXAjAG3FpozQuBKj1j0D5XBM=; b=WQRpiInhh1TV3SteIpz9+5h+iIedQY6WYrESlO7b2JAZfRAJ9l1ke++RErYM7DBSLl 32EqyUqYJq3umf821HvrKRUjmFmAEmvm5KMwSEcyjmrKqFas9FBjG/jetVxQyJzbgjBI uXCN75GpKvmfjc+pSiZZ5zI9sWpQPfgniSzl/cW9NDDwfYuBTq2onvP0PTMSv63ymN3y 5nxnzBtyDk6ujhQOIywCqFAetyfpdYGfn+4Kaq0xjdZMeerELWwfIzkjhfkyN+nxZUrB 5YvS/B3r2fIdUsgWf5PMTxkr4wHD4+UBeO8gUTm1RqGMU2RhtT2qKqSSnYjoWmy3epbi GRHA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id k46si4060481qta.193.2018.11.08.12.35.37 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:37 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 92B7B4DB1F; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 41EB11062249; Thu, 8 Nov 2018 20:35:35 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 05/12] debugobjects: Mark pool_lock as a terminal lock Date: Thu, 8 Nov 2018 15:34:21 -0500 Message-Id: <1541709268-3766-6-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 08 Nov 2018 20:35:36 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By marking the internal pool_lock as a terminal lock, lockdep will be able to skip full validation to improve locking performance. Signed-off-by: Waiman Long --- lib/debugobjects.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 70935ed..403dd95 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -39,7 +39,7 @@ struct debug_bucket { static struct debug_obj obj_static_pool[ODEBUG_POOL_SIZE] __initdata; -static DEFINE_RAW_SPINLOCK(pool_lock); +static DEFINE_RAW_TERMINAL_SPINLOCK(pool_lock); static HLIST_HEAD(obj_pool); static HLIST_HEAD(obj_to_free); From patchwork Thu Nov 8 20:34:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674989 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7DAED15E9 for ; Thu, 8 Nov 2018 20:35:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6F1F028403 for ; Thu, 8 Nov 2018 20:35:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 62F4C2E4E0; Thu, 8 Nov 2018 20:35:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BC08F28403 for ; Thu, 8 Nov 2018 20:35:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D99F6B0654; Thu, 8 Nov 2018 15:35:53 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 18D436B0656; Thu, 8 Nov 2018 15:35:53 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 051776B0657; Thu, 8 Nov 2018 15:35:53 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by kanga.kvack.org (Postfix) with ESMTP id C871F6B0654 for ; Thu, 8 Nov 2018 15:35:52 -0500 (EST) Received: by mail-qk1-f198.google.com with SMTP id 92so41310282qkx.19 for ; Thu, 08 Nov 2018 12:35:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=pBrzX19Dr5nbNXt+/L10z/X8TbXcySqhbwnGmi3C9/U=; b=Z6CYj5wTXpQKNtbFtWn6SFI+ym0Lr8B3gK6Fqn5c61alwmN/N9mCKK7W/q9oWq7pw3 jyP8Sy2hO1aIECc8uR9cq4tLp8WtzysR5W2v6zD+hhACBx2GwKqhdrsBkUeqpiNNdPNG lYYtHUjNV3Fg6UY0M1TVtqxksm2g4Ro7smTPIsiYrj/qN/yn9Fuy3px2AlkTCX9Y4ZOB bCJacnzu5gv15YOdbassRA4bVTCzcVjBnaigCnX5mNvGlbQzUeiLDfc4RHc169FrLHF6 AlKuMWZrcaEmPjSYtoe7tamclEsMrO8fw5wTHT+kEfIYbCY4ejdE/C8tV6uZ4fjL0SO+ S7bw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gKWhduLXklp61ukJgtzfjhHd9DtudPtFaaeCF+jfoNKvC/oGQ+8 gtgf220IKPMNfDG5mJOkdNtLFanYR68hPaE2z8BrrzEBqdUJqRr64Pj3bq/9ptY35tSSOFd1ACd +lTIMXS8IR63Xee8ICrfZpakJXopw6S4Z//3deggdeVDIA6beEvUpQ2tmMrUWIF6CIQ== X-Received: by 2002:a0c:e105:: with SMTP id w5mr6196647qvk.234.1541709352504; Thu, 08 Nov 2018 12:35:52 -0800 (PST) X-Google-Smtp-Source: AJdET5c9xvfezqezd8JVrjBaFTYv9WBurnpVbb4KgHNAyMhzS8tKIi5mG3hDz3Ckc6hAKFncPKEM X-Received: by 2002:a0c:e105:: with SMTP id w5mr6196603qvk.234.1541709351788; Thu, 08 Nov 2018 12:35:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709351; cv=none; d=google.com; s=arc-20160816; b=FqcMQcjAOpnyAPmtAj1fnz9TLXT15Lzb+q2h1hrd0h/W+XcUo8q/UHGdp9LUjAVurU KEMzg+Qb/H6xOTCjggkH3G9TIh5EnKVsyR+p2PJgQmIJTeBbBty8jw5bMw+Fztt4Hfhm Z8ChLOX3Q072s0gRysm4hmMCYG6jHgDxA/hgTHHPrvTjGp//oEw+HknEn8wkrroGz45a qnMaIctyEI1KV+g+/m53Uz0NI1yXER6BQAeAH99Wvl0owDRNvsYje5In8bHazbEWFkB5 gE5z/nyIF7ehWw/QCk93/Ni2IeUKGkd+PCHqeSG0zsvTrSRAzJ65pnYXyYLxkQlQWeOj tYjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=pBrzX19Dr5nbNXt+/L10z/X8TbXcySqhbwnGmi3C9/U=; b=gcLdUGiM71LRVtdb0sB7r2q2HRLB9mTcaeGcO5BgeeknFdiAUO4I6dfVOCFKpW8l/h ekJ3h0S9P+302CP/f9E5xKAn4u3zpIS3dr5kHaO4AI3EuO5I9B3ng9IXz3z9VXBkHteh wBGnCUOGL+kq9k4gZqHXi8WFcbKY9fz2QYHkT/7D0yda4aXdYpdJhFqz9evgNudCmvkf cAajAqVWua6LHB7ZiG8wVJtRzIitZ//Cya23pJ1smJaagB4ZiIehF7PgsH5m3mLvBzQv Qw76x9RRMY8qmYFaVi//pcwGiMbK/Or6IDf1+QoSt3y5HfgblFmi5nYDVw6LP6RfACa0 Oi4w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id s60si1682182qtd.374.2018.11.08.12.35.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:51 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A274DCA369; Thu, 8 Nov 2018 20:35:50 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id ACA64100194A; Thu, 8 Nov 2018 20:35:36 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 06/12] debugobjects: Move printk out of db lock critical sections Date: Thu, 8 Nov 2018 15:34:22 -0500 Message-Id: <1541709268-3766-7-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 08 Nov 2018 20:35:50 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The db->lock is a raw spinlock and so the lock hold time is supposed to be short. This will not be the case when printk() is being involved in some of the critical sections. In order to avoid the long hold time, in case some messages need to be printed, the debug_object_is_on_stack() and debug_print_object() calls are now moved out of those critical sections. Signed-off-by: Waiman Long --- lib/debugobjects.c | 61 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 403dd95..4216d3d 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -376,6 +376,8 @@ static void debug_object_is_on_stack(void *addr, int onstack) struct debug_bucket *db; struct debug_obj *obj; unsigned long flags; + bool debug_printobj = false; + bool debug_chkstack = false; fill_pool(); @@ -392,7 +394,7 @@ static void debug_object_is_on_stack(void *addr, int onstack) debug_objects_oom(); return; } - debug_object_is_on_stack(addr, onstack); + debug_chkstack = true; } switch (obj->state) { @@ -403,20 +405,25 @@ static void debug_object_is_on_stack(void *addr, int onstack) break; case ODEBUG_STATE_ACTIVE: - debug_print_object(obj, "init"); state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); + debug_print_object(obj, "init"); debug_object_fixup(descr->fixup_init, addr, state); return; case ODEBUG_STATE_DESTROYED: - debug_print_object(obj, "init"); + debug_printobj = true; break; default: break; } raw_spin_unlock_irqrestore(&db->lock, flags); + if (debug_chkstack) + debug_object_is_on_stack(addr, onstack); + if (debug_printobj) + debug_print_object(obj, "init"); + } /** @@ -474,6 +481,8 @@ int debug_object_activate(void *addr, struct debug_obj_descr *descr) obj = lookup_object(addr, db); if (obj) { + bool debug_printobj = false; + switch (obj->state) { case ODEBUG_STATE_INIT: case ODEBUG_STATE_INACTIVE: @@ -482,14 +491,14 @@ int debug_object_activate(void *addr, struct debug_obj_descr *descr) break; case ODEBUG_STATE_ACTIVE: - debug_print_object(obj, "activate"); state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); + debug_print_object(obj, "activate"); ret = debug_object_fixup(descr->fixup_activate, addr, state); return ret ? 0 : -EINVAL; case ODEBUG_STATE_DESTROYED: - debug_print_object(obj, "activate"); + debug_printobj = true; ret = -EINVAL; break; default: @@ -497,10 +506,13 @@ int debug_object_activate(void *addr, struct debug_obj_descr *descr) break; } raw_spin_unlock_irqrestore(&db->lock, flags); + if (debug_printobj) + debug_print_object(obj, "activate"); return ret; } raw_spin_unlock_irqrestore(&db->lock, flags); + /* * We are here when a static object is activated. We * let the type specific code confirm whether this is @@ -532,6 +544,7 @@ void debug_object_deactivate(void *addr, struct debug_obj_descr *descr) struct debug_bucket *db; struct debug_obj *obj; unsigned long flags; + bool debug_printobj = false; if (!debug_objects_enabled) return; @@ -549,24 +562,27 @@ void debug_object_deactivate(void *addr, struct debug_obj_descr *descr) if (!obj->astate) obj->state = ODEBUG_STATE_INACTIVE; else - debug_print_object(obj, "deactivate"); + debug_printobj = true; break; case ODEBUG_STATE_DESTROYED: - debug_print_object(obj, "deactivate"); + debug_printobj = true; break; default: break; } - } else { + } + + raw_spin_unlock_irqrestore(&db->lock, flags); + if (!obj) { struct debug_obj o = { .object = addr, .state = ODEBUG_STATE_NOTAVAILABLE, .descr = descr }; debug_print_object(&o, "deactivate"); + } else if (debug_printobj) { + debug_print_object(obj, "deactivate"); } - - raw_spin_unlock_irqrestore(&db->lock, flags); } EXPORT_SYMBOL_GPL(debug_object_deactivate); @@ -581,6 +597,7 @@ void debug_object_destroy(void *addr, struct debug_obj_descr *descr) struct debug_bucket *db; struct debug_obj *obj; unsigned long flags; + bool debug_printobj = false; if (!debug_objects_enabled) return; @@ -600,20 +617,22 @@ void debug_object_destroy(void *addr, struct debug_obj_descr *descr) obj->state = ODEBUG_STATE_DESTROYED; break; case ODEBUG_STATE_ACTIVE: - debug_print_object(obj, "destroy"); state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); + debug_print_object(obj, "destroy"); debug_object_fixup(descr->fixup_destroy, addr, state); return; case ODEBUG_STATE_DESTROYED: - debug_print_object(obj, "destroy"); + debug_printobj = true; break; default: break; } out_unlock: raw_spin_unlock_irqrestore(&db->lock, flags); + if (debug_printobj) + debug_print_object(obj, "destroy"); } EXPORT_SYMBOL_GPL(debug_object_destroy); @@ -642,9 +661,9 @@ void debug_object_free(void *addr, struct debug_obj_descr *descr) switch (obj->state) { case ODEBUG_STATE_ACTIVE: - debug_print_object(obj, "free"); state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); + debug_print_object(obj, "free"); debug_object_fixup(descr->fixup_free, addr, state); return; default: @@ -717,6 +736,7 @@ void debug_object_assert_init(void *addr, struct debug_obj_descr *descr) struct debug_bucket *db; struct debug_obj *obj; unsigned long flags; + bool debug_printobj = false; if (!debug_objects_enabled) return; @@ -732,22 +752,25 @@ void debug_object_assert_init(void *addr, struct debug_obj_descr *descr) if (obj->astate == expect) obj->astate = next; else - debug_print_object(obj, "active_state"); + debug_printobj = true; break; default: - debug_print_object(obj, "active_state"); + debug_printobj = true; break; } - } else { + } + + raw_spin_unlock_irqrestore(&db->lock, flags); + if (!obj) { struct debug_obj o = { .object = addr, .state = ODEBUG_STATE_NOTAVAILABLE, .descr = descr }; debug_print_object(&o, "active_state"); + } else if (debug_printobj) { + debug_print_object(obj, "active_state"); } - - raw_spin_unlock_irqrestore(&db->lock, flags); } EXPORT_SYMBOL_GPL(debug_object_active_state); @@ -783,10 +806,10 @@ static void __debug_check_no_obj_freed(const void *address, unsigned long size) switch (obj->state) { case ODEBUG_STATE_ACTIVE: - debug_print_object(obj, "free"); descr = obj->descr; state = obj->state; raw_spin_unlock_irqrestore(&db->lock, flags); + debug_print_object(obj, "free"); debug_object_fixup(descr->fixup_free, (void *) oaddr, state); goto repeat; From patchwork Thu Nov 8 20:34:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674991 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 70B1515A6 for ; Thu, 8 Nov 2018 20:35:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 645E528403 for ; Thu, 8 Nov 2018 20:35:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 588682E4E0; Thu, 8 Nov 2018 20:35:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C93FD28403 for ; Thu, 8 Nov 2018 20:35:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 930196B0656; Thu, 8 Nov 2018 15:35:54 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 903D56B0658; Thu, 8 Nov 2018 15:35:54 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 77F7C6B0659; Thu, 8 Nov 2018 15:35:54 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 3F87D6B0656 for ; Thu, 8 Nov 2018 15:35:54 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id s70so41473281qks.4 for ; Thu, 08 Nov 2018 12:35:54 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=e79e9lly9ftY7oO7nM3k4fZ8G+2Dhr7zsoW7glpKJn0=; b=egs3QrWTEiyqWNtM2oLSkLa0rJ9t58i2x/V8/fRPMR9Ue2eKezfPOSy2uKywu/kuwa NuMjxbTJL4x6Exr9fdIcK/R5IcD+CZB2MB3LSu1FXqvgbycSG/OOQGG1bIWktT7M6lf3 8gh1nF//s+sG4KTtPM9F9IYXWP6VLB6KQ+1OlW7HsfuqxB0g5h9LpalayTLw0Gtc+pfT XUej+jdUdey2o/FSqqMyrgUply1ReQnNcXW/qlpTEs1aoX539fNcXm7wUw5H51E9fXbn kq4n0pZmSSgqrUG1DtCZPAOHidjpgMCzpxM/33iQYeJZjsakjwhmIc2KA/j5fWsXVzAG uN3g== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gItmnEb+VYYGNyFl8tmiuigjeQ+bfpZlB8HkSDnQrEnvVUC4AXH xR2A89YIH8i9ldUp3Wv4Wtox7AvCF4eKqCb17SI5jJMhM+msfBnrdc1qXIxlX2DjM1BE6MoaCf5 BQijaUiP1GNhcojqgL1ZaaD8WmMkLnxcEG/Pw9zPeeYKV/XAoJa7PDLdc/ZvpGvz7ZQ== X-Received: by 2002:a37:611:: with SMTP id 17mr5880153qkg.123.1541709353947; Thu, 08 Nov 2018 12:35:53 -0800 (PST) X-Google-Smtp-Source: AJdET5cBgiEfyCJZVk06yxWHproJdovBdXuAbllgM1fqPJ0CiEydn0Jk2XFSUF8czFmmUH7DwY+p X-Received: by 2002:a37:611:: with SMTP id 17mr5880105qkg.123.1541709353221; Thu, 08 Nov 2018 12:35:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709353; cv=none; d=google.com; s=arc-20160816; b=z4qr8+wOr8FpBIuV8VLpq+YjjxqEd3ckQ00AZtj+Q5XMgSkzBdyli14nNUaupLJYzQ ydvVL0cGtUxX73bsYijtc7+Shu1TdneAqvGl5SDgAkYjMXGdDDl6HKh317Rf/bVGnYsy RiwE8X6vEmFdqASLgljtiYZZV1J9ucPthRZhdxOV5r6oKrUziGYWC7pr6N2FvCYUMsuN 2duT3zQC3VovCMJFQhE4EIVGTLgcLgxy7TFxxjBHtoJycVZahJXxQKAOAxTVacTmg36X m1J7Gxrk79DJLaxKBMpBc/xlHDkdpS7X0srul9VcOTxO69F5tT9/9BfRh4nZlw9ym8di 17cQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=e79e9lly9ftY7oO7nM3k4fZ8G+2Dhr7zsoW7glpKJn0=; b=UVBCgmKL0JaIj6E9Df8QIHGJvS+7hn1ej1it+wZsMiHJy1S4Ga1OI8DLdu8ku+0L7q +zu5L46z1uWYqe6eD3Yn9IM0LCwYmPtRa/SRCYEcFm7WrHyTCAUSADdTM2Jnw47zi1oY 4iHKfxYgqyC/cNnpH8cx9h8pjE9zDCFkyZtTN3mIxdQmrUN9go3saVr6n8i0gauXSaMX gUAbQ15Jg3ugbY3w2Z5QLMt1tb9NoUxopdob+qO1xctpZlebwcLNgyP37GZqGX8fOed1 d/+t5IvDsYHjiwo4ba6bFcRJ3POGOapRAXev0Yv9A6lL7dCmg+XJiSg7mdyx1VyqJRD2 oleA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id 51si1368359qvt.60.2018.11.08.12.35.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:53 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1509F307D85A; Thu, 8 Nov 2018 20:35:52 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id BE648101F97D; Thu, 8 Nov 2018 20:35:50 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 07/12] locking/lockdep: Add support for nested terminal locks Date: Thu, 8 Nov 2018 15:34:23 -0500 Message-Id: <1541709268-3766-8-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 08 Nov 2018 20:35:52 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP There are use cases where we want to allow 2-level nesting of one terminal lock underneath another one. So the terminal lock type is now extended to support a new nested terminal lock where it can allow the acquisition of another regular terminal lock underneath it. Signed-off-by: Waiman Long --- include/linux/lockdep.h | 9 ++++++++- kernel/locking/lockdep.c | 15 +++++++++++++-- kernel/locking/lockdep_internals.h | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index c5ff8c5..ed4d177 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h @@ -147,12 +147,16 @@ struct lock_class_stats { * 1) LOCKDEP_FLAG_NOVALIDATE: No full validation, just simple checks. * 2) LOCKDEP_FLAG_TERMINAL: This is a terminal lock where lock/unlock on * another lock within its critical section is not allowed. + * 3) LOCKDEP_FLAG_TERMINAL_NESTED: This is a terminal lock that allows + * one more regular terminal lock to be nested underneath it. */ #define LOCKDEP_FLAG_NOVALIDATE (1 << 0) #define LOCKDEP_FLAG_TERMINAL (1 << 1) +#define LOCKDEP_FLAG_TERMINAL_NESTED (1 << 2) #define LOCKDEP_NOCHECK_FLAGS (LOCKDEP_FLAG_NOVALIDATE |\ - LOCKDEP_FLAG_TERMINAL) + LOCKDEP_FLAG_TERMINAL |\ + LOCKDEP_FLAG_TERMINAL_NESTED) /* * Map the lock object (the lock instance) to the lock-class object. @@ -314,6 +318,8 @@ extern void lockdep_init_map(struct lockdep_map *lock, const char *name, do { (lock)->dep_map.flags |= LOCKDEP_FLAG_NOVALIDATE; } while (0) #define lockdep_set_terminal_class(lock) \ do { (lock)->dep_map.flags |= LOCKDEP_FLAG_TERMINAL; } while (0) +#define lockdep_set_terminal_nested_class(lock) \ + do { (lock)->dep_map.flags |= LOCKDEP_FLAG_TERMINAL_NESTED; } while (0) /* * Compare locking classes @@ -431,6 +437,7 @@ static inline void lockdep_on(void) #define lockdep_set_novalidate_class(lock) do { } while (0) #define lockdep_set_terminal_class(lock) do { } while (0) +#define lockdep_set_terminal_nested_class(lock) do { } while (0) /* * We don't define lockdep_match_class() and lockdep_match_key() for !LOCKDEP diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 02631a0..2b75613 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3268,13 +3268,24 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, class_idx = class - lock_classes + 1; if (depth) { + int prev_type; + hlock = curr->held_locks + depth - 1; /* - * Warn if the previous lock is a terminal lock. + * Warn if the previous lock is a terminal lock or the + * previous lock is a nested terminal lock and the current + * one isn't a regular terminal lock. */ - if (DEBUG_LOCKS_WARN_ON(hlock_is_terminal(hlock))) + prev_type = hlock_is_terminal(hlock); + if (DEBUG_LOCKS_WARN_ON((prev_type == LOCKDEP_FLAG_TERMINAL) || + ((prev_type == LOCKDEP_FLAG_TERMINAL_NESTED) && + (flags_is_terminal(class->flags) != + LOCKDEP_FLAG_TERMINAL)))) { + pr_warn("Terminal lock error: prev lock = %s, curr lock = %s\n", + hlock->instance->name, class->name); return 0; + } if (hlock->class_idx == class_idx && nest_lock) { if (hlock->references) { diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h index 271fba8..abe646a 100644 --- a/kernel/locking/lockdep_internals.h +++ b/kernel/locking/lockdep_internals.h @@ -215,5 +215,5 @@ static inline unsigned long debug_class_ops_read(struct lock_class *class) static inline unsigned int flags_is_terminal(unsigned int flags) { - return flags & LOCKDEP_FLAG_TERMINAL; + return flags & (LOCKDEP_FLAG_TERMINAL|LOCKDEP_FLAG_TERMINAL_NESTED); } From patchwork Thu Nov 8 20:34:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674993 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 641D715A6 for ; Thu, 8 Nov 2018 20:36:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5484328403 for ; Thu, 8 Nov 2018 20:36:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 488102E4E0; Thu, 8 Nov 2018 20:36:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E567028403 for ; Thu, 8 Nov 2018 20:36:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 955756B0658; Thu, 8 Nov 2018 15:35:55 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 904E16B065A; Thu, 8 Nov 2018 15:35:55 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A5B56B065B; Thu, 8 Nov 2018 15:35:55 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by kanga.kvack.org (Postfix) with ESMTP id 48CF36B0658 for ; Thu, 8 Nov 2018 15:35:55 -0500 (EST) Received: by mail-qk1-f198.google.com with SMTP id z126so40897789qka.10 for ; Thu, 08 Nov 2018 12:35:55 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=Y3F1u2KUlCcBQ09M+gCD3n+tmmqygzbx7jsRlvByES0=; b=BOVF4k7ZDZDwpZODYRb8X/uM+EDQ7na4TYTwr/gbXwOcdd177ssHi8vybSH6Z4OjnP gbbo5rQR+IIzPeneNsB3oJ0zExv3UXcpJfV1LXzWCG0lixy4VZrZBflboquZB7SQ0Vd1 B0wTJmSIeVUmCSy0wPJ8tcup4Ock3HGdGCEidChOBjqjs8ZkomXE1NScHNbfzOUFbh9S 2p5XhCkvuL6jupm1tqD7gE6lpz6cxppT8iMtbbMtzhnw5IAeaQprstVfr46gQMXBRn3y oYbahi0PF3nF/teI8RSWpqGkTdBoNOBw7gbzopcgG2hvBGvBvrrUW7Bqjc3DHDREMCIg jmrA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gKvqM4psGJAcf+UfFWsev60VzprjwDEfuBFz+ZdqpC0Xz/csL7K h9j9IcXRRYJ9a+mJu5H1iggasK7wR02RpYnbqOAxEHvxpvptso+ldbhFHf1l5YvQ67u7HJ0yrbK zO7pXJ51X1hoxU2QAmGyPsv5YOLCiB4+Oiyk88Ez+6hdL3YdlTso/q/r8R9hkAIZrfQ== X-Received: by 2002:a37:7183:: with SMTP id m125mr5623913qkc.195.1541709355045; Thu, 08 Nov 2018 12:35:55 -0800 (PST) X-Google-Smtp-Source: AJdET5e9hTQ21fiJrTJ6MLydONepkGmWar0yx9d9THTcHI56xbJk0LNjg/Ymltm+Gsfya1he7kuk X-Received: by 2002:a37:7183:: with SMTP id m125mr5623887qkc.195.1541709354572; Thu, 08 Nov 2018 12:35:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709354; cv=none; d=google.com; s=arc-20160816; b=bj1QAImYvSC+GXDuX9feneAjPuC4kOomOQ7zyPNQXKjpWiDF8u61dWfvc8tKqXiqOK OQ6OlR8oMXjcbOsx/HraSZ2g0Kk0zOQd4qnZdWhxaj9m3Aisj4YaYFagTCBRjAnsKQZz tjwD1/28dpO3eQ1vjBI+T8f8JNt4mJ3zCzseXycIJCiTDpuQCtFz1GY3tvOX9XOud3dX R8eKyF8rwbjuifg1Rx2wCa12BUh2eLtsRmPudAtZ6ZMnB9s9vNKPFuRkmmzOXSOFPdjZ CNpwTamJYV5A1gHs5wduPPmHg1EACvfDM5JqX4AY+kDaUIsjZd2AJ99MMWhiYTZD9P3n +mbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=Y3F1u2KUlCcBQ09M+gCD3n+tmmqygzbx7jsRlvByES0=; b=WTMBUflzXjSwrblo0iWTA+UZRk4U4QKtpo0ligSD2Xys8qbaoQDaSGUvtAHXG/VBGg zd7+hu87FVf8B20afOO4Y2V0QqQMVIGK1/b7y/GrimpizBiDWRcEYXyuB+kdpa6MPbEB MbmN1QyYQWC5Hpdq5eDjY3At1Yus6GcMixXaTXXJmk9YckfA9nChrvO8eicP/hw5cBa8 t7oFl/JIW5zSMVk3dWj2+PYgYvYWsPNxG1NBUQLOy9opiIBfS8//DzeiSmw3b+Fsp61k y4aos6R4EGX6aSKm/q9fipdPMl5yD2Zuj2cz/rkQMyvzOAPBASWGpNfpxNeujRpEIebz mfrg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id m10si809042qtk.397.2018.11.08.12.35.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:54 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 881588046F; Thu, 8 Nov 2018 20:35:53 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 342B4106A7A6; Thu, 8 Nov 2018 20:35:52 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 08/12] debugobjects: Make object hash locks nested terminal locks Date: Thu, 8 Nov 2018 15:34:24 -0500 Message-Id: <1541709268-3766-9-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 08 Nov 2018 20:35:53 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By making the object hash locks nested terminal locks, we can avoid a bunch of unnecessary lockdep validations as well as saving space in the lockdep tables. Signed-off-by: Waiman Long --- lib/debugobjects.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 4216d3d..3182d15 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -1129,8 +1129,13 @@ void __init debug_objects_early_init(void) { int i; - for (i = 0; i < ODEBUG_HASH_SIZE; i++) + /* + * Make the obj_hash locks nested terminal locks. + */ + for (i = 0; i < ODEBUG_HASH_SIZE; i++) { raw_spin_lock_init(&obj_hash[i].lock); + lockdep_set_terminal_nested_class(&obj_hash[i].lock); + } for (i = 0; i < ODEBUG_POOL_SIZE; i++) hlist_add_head(&obj_static_pool[i].node, &obj_pool); From patchwork Thu Nov 8 20:34:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674995 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EBEE715A6 for ; Thu, 8 Nov 2018 20:36:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DD6EA28403 for ; Thu, 8 Nov 2018 20:36:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D148D2E4E0; Thu, 8 Nov 2018 20:36:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 33A6428403 for ; Thu, 8 Nov 2018 20:36:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 33AF66B065A; Thu, 8 Nov 2018 15:35:57 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 29F146B065C; Thu, 8 Nov 2018 15:35:57 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 13E9B6B065D; Thu, 8 Nov 2018 15:35:57 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by kanga.kvack.org (Postfix) with ESMTP id CDE116B065A for ; Thu, 8 Nov 2018 15:35:56 -0500 (EST) Received: by mail-qk1-f200.google.com with SMTP id v70so40416497qka.17 for ; Thu, 08 Nov 2018 12:35:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=okfj1MVMzbeAVQkSXdOtylbrtrPMSpu+PZx780Xlvgs=; b=O/GLG4fosQnFq1eoiPBWuRXhu8C+K3kj4Sf4qz9NORl/XYARmzm6rWm84sukDTjaKr pOu6m4N4JxQ5MR5cTkKbfvpShX2+p/z3Nf1uSusCqUwJYgZ/Zv27XaXRF+f0FmDktIqa yxXyFjexOzoF2CBbgesy+kNhJdik102KjWmdo04B9j1u/y284EEFFybG/O0gsvp6yY2U Gh+79DtVKuCAoDB7yduqNgB/UC5Qwl+wy23C6FXxj4MFIG/pcXoPZR+hGKrp9/lKnRet 0Tcba8S/YTio9D7dg0R5q5qPv4cJG90Rm7INwbcFyguLqsKxhIxH5ZWO90UEKwR5inEp cTtg== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gKEosBpYOUqs6cZrTA1GIdEcVogNx0TKt5SMybEIVh5hjwxraVV qT39D+BsXMBT6W4F+dIVUIzstLYZamqbUUA2MryC/quOrB9MZIpwuBQTZYDfZhqwNE3GS7fD3Cg /ktA7EkrnSjNQjdL6Uhrm1/gKL6MH56f3iWddm84A7r7LJnSmxXp0NW9eh/ZdaUlZNA== X-Received: by 2002:a0c:e202:: with SMTP id q2mr5994009qvl.180.1541709356559; Thu, 08 Nov 2018 12:35:56 -0800 (PST) X-Google-Smtp-Source: AJdET5d8HQtrdHzBPT3yVsm+DFTjwECC65LIXBfb8XfSWsbZzTmB7rQi/kM9mich5dNv/4tpNMvM X-Received: by 2002:a0c:e202:: with SMTP id q2mr5993989qvl.180.1541709356151; Thu, 08 Nov 2018 12:35:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709356; cv=none; d=google.com; s=arc-20160816; b=hhjLMCQJYCStkc2MjdaAcSwhWXjwTUCJLJ+4aLRgiGZOC2n/rb1Y1fazM9vtSbj2ya zewQZLZlm5PNgswiqHsrF8jMpvriDPtFbydHWKIEIuSLuiD65G3wYl9giWgiP5iR2wrN GWEkwrZcI/42VbYpgElaLQkcfLTrZdwXvtUKO2E2h1zhxm9EkjwGRtzPo36V3vIvdJ+5 +BnJaMbXCW6rh2VYRwXj1Z/nF6sAbuTdWv5mqyDdd68oY5OHC8M3DLspEXpzpIf9tAK/ MB70SXa6DfydtdxCN6xZ2n6KjBKcwNhgsnM/wowMsRx43GF0AUlQcHTJBsckPcEQABou mqOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=okfj1MVMzbeAVQkSXdOtylbrtrPMSpu+PZx780Xlvgs=; b=ue93ltcew5JFFFb37zvBedrgjSWSb4pWJbFEslzxBKbDPEQJS+mj8TVSypV12RLf+M eRJNGxYyFPNDYm7IOYaEswAUwEN0o9H2Q4dTYk88c7oQo32TN3YG5qf6PTMl7llUe64f caPqEEh7q+Uos8mpILDvvD7UbOXFih8CRgBtTcYPDc6W4NoLKucWC7bUgLrXRMkj4Y0J OgzNhiveI8jlZkDxoEg15+RjEjoVVRJ7AkquNjxv2wavTss4pC43gsEPHhueVxtGUnrt pGbv8R8DjCAm6hUjgjX7OY8zpALgaNyvQAlDcdjCl3mI2GH1hgyk6QLE9cwD5+LcpFm3 89QQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id n14si4021085qvo.171.2018.11.08.12.35.56 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:35:56 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 178123ADA8; Thu, 8 Nov 2018 20:35:55 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id A625A106A79E; Thu, 8 Nov 2018 20:35:53 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 09/12] lib/stackdepot: Make depot_lock a terminal spinlock Date: Thu, 8 Nov 2018 15:34:25 -0500 Message-Id: <1541709268-3766-10-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 08 Nov 2018 20:35:55 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By defining depot_lock as a terminal spinlock, it reduces the lockdep overhead when this lock is being used. Signed-off-by: Waiman Long --- lib/stackdepot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/stackdepot.c b/lib/stackdepot.c index e513459..fb17888 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -78,7 +78,7 @@ struct stack_record { static int depot_index; static int next_slab_inited; static size_t depot_offset; -static DEFINE_SPINLOCK(depot_lock); +static DEFINE_TERMINAL_SPINLOCK(depot_lock); static bool init_stack_slab(void **prealloc) { From patchwork Thu Nov 8 20:34:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674997 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5399E15E9 for ; Thu, 8 Nov 2018 20:36:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 456F828403 for ; Thu, 8 Nov 2018 20:36:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 379E52E4E0; Thu, 8 Nov 2018 20:36:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BE98F28403 for ; Thu, 8 Nov 2018 20:36:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BEBF46B065C; Thu, 8 Nov 2018 15:36:31 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B75476B065E; Thu, 8 Nov 2018 15:36:31 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A15596B065F; Thu, 8 Nov 2018 15:36:31 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 6CDE76B065C for ; Thu, 8 Nov 2018 15:36:31 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id c84so41390491qkb.13 for ; Thu, 08 Nov 2018 12:36:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=uY5ycgX/HkngIbFCmCg84ZdpAOa7T8I2cZvXNdRsYzg=; b=nniZw1KXUaCJ8YylsLQnD9Pcfgh+hEGmN9cUjZzGwvG4MtOaD6jqL0Go+5MkJSsrUy MicGhJWK65rgdH9grQ6Y6AHus6J/5s0GjwmN+MmyHBlB/ccHzl/LaL/RxAIKMa/KTyUB TZPjyBXIj2NjmTfg+CRNEv19LMg+bfq3i9ixYFgo7RH2VotGAjK8zgoA8CajzaSk6XV1 lD+YoPuP+pfoubWkuFFOpj0yG4No3EoUnKJQ4V/Yy/i6QlKa6W9iu4h3cH+l2csUJuPR o7lZRdB+RKo9FkAF6OVDj0XYBsNXMcPh6LIptkEM3eHy9m3R5KPBBuelRs0QzoK+uqXx 8e3w== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gIqv9XffJ69jWqEA5PKoJBXIXj32OsoCfpO7ANP5fJS8p8cNBhK dXj9ElreAFxvcmlX7df1Oe7oj7GCfjo2X95A0iwMLJy9X5tm1oo4VrTWtkAq/08FpN6L72ZJdHE yZtJuWRfbDG7OEFpRe8BQPMx129opl67ifUrndck+BSzB8StMmvwvgczXfdgP0IAznQ== X-Received: by 2002:ac8:74d7:: with SMTP id j23mr6182615qtr.369.1541709391164; Thu, 08 Nov 2018 12:36:31 -0800 (PST) X-Google-Smtp-Source: AJdET5cGC2KEA5vLOPLI1s2qjeciq2ePUABCjbxOT9mW03vvbJSc9xiofJlt6zAvOaeKJ7RjoGn4 X-Received: by 2002:ac8:74d7:: with SMTP id j23mr6182571qtr.369.1541709390602; Thu, 08 Nov 2018 12:36:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709390; cv=none; d=google.com; s=arc-20160816; b=YmGl5/8C6pgBBQuxgOAGH0B0BIMHejEjtqsyK6MF49nbtZRtLI/Clzxp0zRghJLh/n SkqxHqC/UD4exkG7wBHkgEjKTupdHG43bQNbPd5u2zn0OHg5tPhkDSY+LoHLW98c2CFy yAJDWH6nZzCARST1a6pIupaU3IMgnJbW0KHctMVbmCZ305z3olqENfqcf+PMiksWJRnY xnO4nqgWBo6w8eSRFJn7U0rsd+e2Os8FeMh/xyKw7KrrYaxZYiNt39ssTw7JOM4lG7oC Ju17BUh/4CUhZ4zz92YqQbeHXn13bkApqoylu+waghwkPIxmV5EuzYdq7jG8/JM1ZrX4 QbMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=uY5ycgX/HkngIbFCmCg84ZdpAOa7T8I2cZvXNdRsYzg=; b=yvPT9dBSXGoVk2XHIj8ZYI02mi8q6vEkB9sw2ttKe+OLZkXbC3LcRoNboKV5zcM9i3 ARsxaz4mcaIt8Zil/4vRV7za8iqFqf1f7BsqDpyMkIb1tY/el+aO6ekeptCvkUvUnOJg U1bPKAk7Rs/CPwsnI70rGRPy4Foy6dNkRuMu7fK2EbpQYunU3oPU5L5j3xdYs1llNvRf URwDMybYH24H8x3rrLsu4/ThPqQTR0fMu/wza5uThIQ0Wg64FoaOhkoeQmhyhqoe2Kuc xpYCkRjUByJt3uUhdjsKAdj/Hu9roUXLvdMe3OuOsSI8vHo3xSrGpgakx9Z1oLhC7a8n Pw8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id r32si4211709qvc.136.2018.11.08.12.36.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:36:30 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 83EE7C05B018; Thu, 8 Nov 2018 20:36:29 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2D8FA101F97D; Thu, 8 Nov 2018 20:35:55 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 10/12] locking/rwsem: Mark rwsem.wait_lock as a terminal lock Date: Thu, 8 Nov 2018 15:34:26 -0500 Message-Id: <1541709268-3766-11-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 08 Nov 2018 20:36:29 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The wait_lock in a rwsem is always acquired with IRQ disabled. For the rwsem-xadd.c implementation, no other lock will be called while holding the wait_lock. So it satisfies the condition of being a terminal lock. By marking it as terminal, the lockdep overhead will be reduced. Signed-off-by: Waiman Long --- include/linux/rwsem.h | 11 ++++++++++- kernel/locking/rwsem-xadd.c | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 67dbb57..a2a2385 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -77,16 +77,25 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem) # define __RWSEM_DEP_MAP_INIT(lockname) #endif +/* + * The wait_lock is marked as a terminal lock to reduce lockdep overhead + * when the rwsem-xadd.c is used. This is implied when + * CONFIG_RWSEM_SPIN_ON_OWNER is true. The rwsem-spinlock.c implementation + * allows calling wake_up_process() while holding the wait_lock. So it + * can't be marked as terminal in this case. + */ #ifdef CONFIG_RWSEM_SPIN_ON_OWNER #define __RWSEM_OPT_INIT(lockname) , .osq = OSQ_LOCK_UNLOCKED, .owner = NULL +#define __RWSEM_WAIT_LOCK_INIT(x) __RAW_TERMINAL_SPIN_LOCK_UNLOCKED(x) #else #define __RWSEM_OPT_INIT(lockname) +#define __RWSEM_WAIT_LOCK_INIT(x) __RAW_SPIN_LOCK_UNLOCKED(x) #endif #define __RWSEM_INITIALIZER(name) \ { __RWSEM_INIT_COUNT(name), \ .wait_list = LIST_HEAD_INIT((name).wait_list), \ - .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock) \ + .wait_lock = __RWSEM_WAIT_LOCK_INIT(name.wait_lock) \ __RWSEM_OPT_INIT(name) \ __RWSEM_DEP_MAP_INIT(name) } diff --git a/kernel/locking/rwsem-xadd.c b/kernel/locking/rwsem-xadd.c index 09b1800..3dbe593 100644 --- a/kernel/locking/rwsem-xadd.c +++ b/kernel/locking/rwsem-xadd.c @@ -85,6 +85,7 @@ void __init_rwsem(struct rw_semaphore *sem, const char *name, #endif atomic_long_set(&sem->count, RWSEM_UNLOCKED_VALUE); raw_spin_lock_init(&sem->wait_lock); + lockdep_set_terminal_class(&sem->wait_lock); INIT_LIST_HEAD(&sem->wait_list); #ifdef CONFIG_RWSEM_SPIN_ON_OWNER sem->owner = NULL; From patchwork Thu Nov 8 20:34:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10674999 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4434B15E9 for ; Thu, 8 Nov 2018 20:36:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 36CB128403 for ; Thu, 8 Nov 2018 20:36:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2766C2E4E0; Thu, 8 Nov 2018 20:36:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AE29528403 for ; Thu, 8 Nov 2018 20:36:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C891A6B065E; Thu, 8 Nov 2018 15:36:33 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C11236B0660; Thu, 8 Nov 2018 15:36:33 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ADBCE6B0661; Thu, 8 Nov 2018 15:36:33 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 6E7646B065E for ; Thu, 8 Nov 2018 15:36:33 -0500 (EST) Received: by mail-qk1-f199.google.com with SMTP id g22so6988740qke.15 for ; Thu, 08 Nov 2018 12:36:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=E+Ucu4Ad9hHS3vGoIXwWZmms3i3F/iQLn9fd6FpayKc=; b=p1vAJ8Xp3vhqjgJXHuAPYg1u7MqECgj/XvVNIbIK/zqYgT3qs7qEBKhUEowaBKuzI/ wGFA4e5WHH7yT+p0Dt4Ml7o4GqobTuxSnt8Cer6yNdDYb0+Zoi921XZC+IDIPOuEGDja nbCn1nuVQ+5jAJgb7BOSkDjGehpMjFDBbeo0a7s/saE13k4qz090Y7jW11OkIeDpKmHe OVIpEpiPVuFxcIVndNWTD+v65lwEv3SysxoN6Mcd9wtC1UMJF+XHhyUHEOpN0CJMD6wB yxieOF/17rpil9tS56FfWUFyVVe5DBcmM0i8Cu0MUTNnooIGhy0fXujzvOPgPb10X/3u 2cbQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gKKtWS5S2GRhibMqNs8osylfPLCqvsdKTCd7DT0kK8t38P44faG vK3atlMuYy6oov5owpYxWSVobP/GAdE73iFgGkcK+yHHKpnp/0V+wiUtMHjS36LmDJ0RTSflKvV crWBZjAFJfVeRGncDARZzX0SF1RdDwtaTMVxb514ZQ54ceLynGbHjzFsxihLjqKjMMg== X-Received: by 2002:aed:3641:: with SMTP id e59mr6020873qtb.59.1541709393190; Thu, 08 Nov 2018 12:36:33 -0800 (PST) X-Google-Smtp-Source: AJdET5epT/yOLpZ7yUOPK4HNBZLEfdeMIX7bydA4iBkrXLRsSuhQIgQI0BzZnCY4d2PiizlqkmV/ X-Received: by 2002:aed:3641:: with SMTP id e59mr6020844qtb.59.1541709392740; Thu, 08 Nov 2018 12:36:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709392; cv=none; d=google.com; s=arc-20160816; b=ODAQkFkz2HVl6efB8aGThJXOkFvpfdK6Jpmv2kosaF4gxAsGyz4vS8OpakpPdaH2i6 5Tb4e38IxR98IgKyjQdXDSQbrECwQuT//6re+vTB5/Y6TJOFagpBudnwUW3Dq1CjsFse Gx0H4IyadS1RWeWGbiZ27PKHOAcMR2IikHAFA4jTMboiLRCKqBGwnH9S3oAwnEMwMZ1y 5YOjH52NERMQMWxCAifRx7WBRB3aYntKeFNU6yYBkqdEZCpNv67B6ukGJoD1VsPjdokF WPAmCKcrXlnm0hZRWc0okmcTTyMiepGqP8tLpdTVbDDRzeu/oXfGVQzacTGh+gVP2s38 KMCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=E+Ucu4Ad9hHS3vGoIXwWZmms3i3F/iQLn9fd6FpayKc=; b=cjGV+HZFeHuMoQ63Awrss9mbkxlVctCTnmh6wf4Q8POvcTv5T2JRQbBPgovpoWNMtK GHrinkVUGbnG864eg1ovb9E8QKjz6mHZa4r0X+b26lLl+ITJwsWYjZuOZdlcnFEwtlvA LSitqn44TfVIaRmu7ChDbmAniNcR5UIYk/NINNTjz1fyb0Bza0T6tLxKsQvsRTV2yaaI aWwnpEv0sLxFRgaHodZdqA5x+G/0fLM5dEXQ6gxtj9hfWfS+Mi21rJXccZx+4Wq/y1fY Sk9crUJP7k8wzc6PS6JfvHjbJ3YANb30qhO5BD2wzKb70F2IxN/DjMc0qmUPSv74hYa8 uFuA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id u35-v6si188952qth.262.2018.11.08.12.36.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:36:32 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4FE82300560B; Thu, 8 Nov 2018 20:36:31 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 71A6A1077D97; Thu, 8 Nov 2018 20:36:29 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 11/12] cgroup: Mark the rstat percpu lock as terminal Date: Thu, 8 Nov 2018 15:34:27 -0500 Message-Id: <1541709268-3766-12-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Thu, 08 Nov 2018 20:36:31 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By classifying the cgroup rstat percpu locks as terminal locks, it reduces the lockdep overhead when these locks are being used. Signed-off-by: Waiman Long --- kernel/cgroup/rstat.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c index d503d1a..47f7ffb 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -291,8 +291,13 @@ void __init cgroup_rstat_boot(void) { int cpu; - for_each_possible_cpu(cpu) - raw_spin_lock_init(per_cpu_ptr(&cgroup_rstat_cpu_lock, cpu)); + for_each_possible_cpu(cpu) { + raw_spinlock_t *cgroup_rstat_percpu_lock = + per_cpu_ptr(&cgroup_rstat_cpu_lock, cpu); + + raw_spin_lock_init(cgroup_rstat_percpu_lock); + lockdep_set_terminal_class(cgroup_rstat_percpu_lock); + } BUG_ON(cgroup_rstat_init(&cgrp_dfl_root.cgrp)); } From patchwork Thu Nov 8 20:34:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Waiman Long X-Patchwork-Id: 10675001 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2909615A6 for ; Thu, 8 Nov 2018 20:36:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 17E9528403 for ; Thu, 8 Nov 2018 20:36:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0923F2E4E0; Thu, 8 Nov 2018 20:36:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A786928403 for ; Thu, 8 Nov 2018 20:36:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D537E6B0660; Thu, 8 Nov 2018 15:36:35 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C88DC6B0662; Thu, 8 Nov 2018 15:36:35 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AB2B86B0663; Thu, 8 Nov 2018 15:36:35 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by kanga.kvack.org (Postfix) with ESMTP id 71C2B6B0660 for ; Thu, 8 Nov 2018 15:36:35 -0500 (EST) Received: by mail-qk1-f198.google.com with SMTP id l7-v6so41367234qkd.5 for ; Thu, 08 Nov 2018 12:36:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=/AXVtKcmys+lbDgtDQa281BoRXMYSCg3AAu21s16z2c=; b=TfmkNanV/JrGq0zvv6VrXX+LBLH54yaeYpwymN/H37VWeiizYMVcU1d0aFXVbOoJYU vccxbRpdGirdgpnYyZRtGx1OIpcpcBhrHGAleBztAAYrFN+r2FpILr+vReWtTjVJj90Y GWXuEIHc/Wn0R4VxmkF8xFcygH4lbquxFeBKvMIAM3vRqvdVlpPDGsFJcH/6RKehIEiA Rp0s3+hSOyiz4nzYsiyCxzZYCBnYfXTW5yuyg9aHTVAv4VHumesdMtw44fCeFY0qAl/B 9DLlOyMcnJJRAt8Qcklz2f38rzANEj0nXmmRhx0mV/h75g+awrpIVI7tyZ0uj4Ngi4q2 JCXA== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com X-Gm-Message-State: AGRZ1gIzUbjXegJeTILq5dp4GSZ7zRvO63rXS6p9tgIPS3rrv2nRjlon ckx8ftWZfCxmCsDDaWeBpVVh86L8C8r7qd3aSzrTTRiW2TpiNYtur1bqQ3e3v0riu99OTP4Q4Yz QSo4f61N2pYfMWa3Fu/iWUIrt5IDI6effN3AJWsgOsx6fOs+pMULmgHiJYNn+QVHaZQ== X-Received: by 2002:a0c:86c1:: with SMTP id 1mr6023382qvg.6.1541709395195; Thu, 08 Nov 2018 12:36:35 -0800 (PST) X-Google-Smtp-Source: AJdET5fDScg8drrVvofEac5RfUZAb/8yNpzsp3fib+jPXmxKDJqmf3hLYAiTzplXqsxYLbfauUYe X-Received: by 2002:a0c:86c1:: with SMTP id 1mr6023352qvg.6.1541709394712; Thu, 08 Nov 2018 12:36:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541709394; cv=none; d=google.com; s=arc-20160816; b=QHNIufx7XeLf6S69vFwVfdQ7lZgO0fMZUbM3i+42najXBaBgp8Nvf4hXMf64XnLL/K hMa0AbZwQSNIB6Iolk9CE73WMqAhjlb77YIBqOpTUTg/NUtRnUxUigHdtgPUuW8OoZMI io5ceSxmKIs19rpqVMOCm37Dte+RJlYCsx4UvkgrGdft0eR+N9H3gJ8i+mBZKHf4ast9 eedNELfR/ajoSGyYok4n0ricJBIxv9qpve9m8u2tyk8zTj6Z+T1t30vW8UVoAcO+8kU7 qjCJtduSuOj2UgsODb1rAbLBN1tLG9KhcEoIzbBPymtfW4yqLPTqlC8QdToN1u40lxE1 sJCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=/AXVtKcmys+lbDgtDQa281BoRXMYSCg3AAu21s16z2c=; b=cmQ9o52adMzF8Dwt7pDS9GHcD8xHwezRas5m/TeB8znndBMIj+cfL6NyHefDw2L61+ w2HwczqfFyu7cLeznt/Nc/cItCZdVCwVEXDry1G3z7fKZW3MXrtqIwkkCBht+mRvDXHO p66CZIPzp1Ik3QfCTfxmKtMYg+/At9OFSlT0lChioG2EM/GnMx3BV0467tfrcqrPHWSr AIf+kAn3c6xTnb8GVk6c78GhIKWWieMCDJhH7IPveY9tcgIiayM2RX0Gl+toeaBRrgK8 8wTEdzAhnRVsrvm+ItQQEitCoIAPrgIirnLdab9lVEFv8lv2JyHbdvffs1z1rQk1JEvm wAjw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from mx1.redhat.com (mx1.redhat.com. [209.132.183.28]) by mx.google.com with ESMTPS id g1si3734398qtq.235.2018.11.08.12.36.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Nov 2018 12:36:34 -0800 (PST) Received-SPF: pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; Authentication-Results: mx.google.com; spf=pass (google.com: domain of longman@redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=longman@redhat.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D0E5F3078A3E; Thu, 8 Nov 2018 20:36:32 +0000 (UTC) Received: from llong.com (dhcp-17-55.bos.redhat.com [10.18.17.55]) by smtp.corp.redhat.com (Postfix) with ESMTP id 37DFF1057053; Thu, 8 Nov 2018 20:36:31 +0000 (UTC) From: Waiman Long To: Peter Zijlstra , Ingo Molnar , Will Deacon , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, Petr Mladek , Sergey Senozhatsky , Andrey Ryabinin , Tejun Heo , Andrew Morton , Waiman Long Subject: [RFC PATCH 12/12] mm/kasan: Make quarantine_lock a terminal lock Date: Thu, 8 Nov 2018 15:34:28 -0500 Message-Id: <1541709268-3766-13-git-send-email-longman@redhat.com> In-Reply-To: <1541709268-3766-1-git-send-email-longman@redhat.com> References: <1541709268-3766-1-git-send-email-longman@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 08 Nov 2018 20:36:33 +0000 (UTC) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP By making quarantine_lock a terminal spinlock, it reduces the lockdep overhead when this lock is being used. Signed-off-by: Waiman Long --- mm/kasan/quarantine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/kasan/quarantine.c b/mm/kasan/quarantine.c index b209dba..c9d36ab 100644 --- a/mm/kasan/quarantine.c +++ b/mm/kasan/quarantine.c @@ -103,7 +103,7 @@ static void qlist_move_all(struct qlist_head *from, struct qlist_head *to) static int quarantine_tail; /* Total size of all objects in global_quarantine across all batches. */ static unsigned long quarantine_size; -static DEFINE_RAW_SPINLOCK(quarantine_lock); +static DEFINE_RAW_TERMINAL_SPINLOCK(quarantine_lock); DEFINE_STATIC_SRCU(remove_cache_srcu); /* Maximum size of the global queue. */