From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40A79C433EF for ; Fri, 19 Nov 2021 10:35:42 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D04306117A for ; Fri, 19 Nov 2021 10:35:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D04306117A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linutronix.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 1BF746B006C; Fri, 19 Nov 2021 05:35:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 14A706B0071; Fri, 19 Nov 2021 05:35:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 036B06B0073; Fri, 19 Nov 2021 05:35:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0077.hostedemail.com [216.40.44.77]) by kanga.kvack.org (Postfix) with ESMTP id E53536B006C for ; Fri, 19 Nov 2021 05:35:30 -0500 (EST) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 9C44E82E4C1F for ; Fri, 19 Nov 2021 10:35:20 +0000 (UTC) X-FDA: 78825322800.25.A819715 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by imf06.hostedemail.com (Postfix) with ESMTP id DACED801A8B2 for ; Fri, 19 Nov 2021 10:35:18 +0000 (UTC) Date: Fri, 19 Nov 2021 11:35:16 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1637318118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=crDPWL6wWPxKzBCG/NfncOcztrIm4En5cL+/A9vukp8=; b=xCMIubKqm6gQwDlO7SQ4cbdte7FEJL7nHPlMM8UCPskzOSM8ThQ2p2CM/4MXV9y/6Jm25I DznQIQUzKWtK5TxI1QFD5PzIKrz80UUZhxMJTuYT7uWoLDyhIndE46YyRKfLguItCKShSP 2QoaPtTVcZk6JI/uqXHhkpzHNuY9AYS7uOUWLmbIaiAgNNd3fXTS+HFcrQU+8KszNkivM8 ChqgdRcjRgRodLBax0ULBYDxz7QgsSLiCqr1EADOsmSxTpHT9nbgG+8qEa1lMtf5P4jhQD 1geqqoW+DuDabRJHfWd/UE6S7+8I8IdeN1KSSkc/V/LW2aQc4AiY39qLEO6D7A== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1637318118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=crDPWL6wWPxKzBCG/NfncOcztrIm4En5cL+/A9vukp8=; b=lCBCAxONZzHFtUyRjsRsQcCjpHt31wz12lM2Gu5heUQU/rUP9s/Vy9XgGCgtboorCU18SF +S4a4muJxnE3IeAA== From: Sebastian Andrzej Siewior To: Minchan Kim Cc: Andrew Morton , Sergey Senozhatsky , linux-mm , LKML , Peter Zijlstra , Thomas Gleixner Subject: Re: [PATCH v2 7/9] locking/rwlocks: introduce write_lock_nested Message-ID: <20211119103516.24uhxrkdcy4vq25k@linutronix.de> References: <20211115185909.3949505-1-minchan@kernel.org> <20211115185909.3949505-8-minchan@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20211115185909.3949505-8-minchan@kernel.org> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: DACED801A8B2 X-Stat-Signature: am3pq93pdgtn7x38tudnoajockhuyjcz Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linutronix.de header.s=2020 header.b=xCMIubKq; dkim=pass header.d=linutronix.de header.s=2020e header.b=lCBCAxON; dmarc=pass (policy=none) header.from=linutronix.de; spf=pass (imf06.hostedemail.com: domain of bigeasy@linutronix.de designates 193.142.43.55 as permitted sender) smtp.mailfrom=bigeasy@linutronix.de X-HE-Tag: 1637318118-212573 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: On 2021-11-15 10:59:07 [-0800], Minchan Kim wrote: > diff --git a/include/linux/rwlock_rt.h b/include/linux/rwlock_rt.h > index 49c1f3842ed5..efd6da62c893 100644 > --- a/include/linux/rwlock_rt.h > +++ b/include/linux/rwlock_rt.h > @@ -28,6 +28,7 @@ extern void rt_read_lock(rwlock_t *rwlock); > extern int rt_read_trylock(rwlock_t *rwlock); > extern void rt_read_unlock(rwlock_t *rwlock); > extern void rt_write_lock(rwlock_t *rwlock); > +extern void rt_write_lock_nested(rwlock_t *rwlock, int subclass); > extern int rt_write_trylock(rwlock_t *rwlock); > extern void rt_write_unlock(rwlock_t *rwlock); > > @@ -83,6 +84,11 @@ static __always_inline void write_lock(rwlock_t *rwlock) > rt_write_lock(rwlock); > } > > +static __always_inline void write_lock_nested(rwlock_t *rwlock, int subclass) > +{ > + rt_write_lock_nested(rwlock, subclass); > +} > + These two hunks as-is don't work. You need a CONFIG_DEBUG_LOCK_ALLOC block and in the !CONFIG_DEBUG_LOCK_ALLOC case you need #define rt_write_lock_nested(lock, subclass) rt_write_lock(((void)(subclass), (lock))) > static __always_inline void write_lock_bh(rwlock_t *rwlock) > { > local_bh_disable(); > diff --git a/kernel/locking/spinlock_rt.c b/kernel/locking/spinlock_rt.c > index b2e553f9255b..b82d346f1e00 100644 > --- a/kernel/locking/spinlock_rt.c > +++ b/kernel/locking/spinlock_rt.c > @@ -239,6 +239,18 @@ void __sched rt_write_lock(rwlock_t *rwlock) > } > EXPORT_SYMBOL(rt_write_lock); > > +#ifdef CONFIG_DEBUG_LOCK_ALLOC > +void __sched rt_write_lock_nested(rwlock_t *rwlock, int subclass) > +{ > + ___might_sleep(__FILE__, __LINE__, 0); This _must_ be rtlock_might_resched() like it is done in rt_write_lock() above. > + rwlock_acquire(&rwlock->dep_map, subclass, 0, _RET_IP_); > + rwbase_write_lock(&rwlock->rwbase, TASK_RTLOCK_WAIT); > + rcu_read_lock(); > + migrate_disable(); > +} > +EXPORT_SYMBOL(rt_write_lock_nested); > +#endif > + > void __sched rt_read_unlock(rwlock_t *rwlock) > { > rwlock_release(&rwlock->dep_map, _RET_IP_); Sebastian