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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9C8A4C3DA47 for ; Thu, 11 Jul 2024 08:28:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D0A66B0099; Thu, 11 Jul 2024 04:28:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 17F316B009C; Thu, 11 Jul 2024 04:28:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0466A6B009D; Thu, 11 Jul 2024 04:28:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id DA28F6B0099 for ; Thu, 11 Jul 2024 04:28:35 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 7F62112041E for ; Thu, 11 Jul 2024 08:28:35 +0000 (UTC) X-FDA: 82326795390.08.C7389A8 Received: from out-176.mta1.migadu.com (out-176.mta1.migadu.com [95.215.58.176]) by imf19.hostedemail.com (Postfix) with ESMTP id 3564A1A0007 for ; Thu, 11 Jul 2024 08:28:33 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=bPTvYvQU; spf=pass (imf19.hostedemail.com: domain of muchun.song@linux.dev designates 95.215.58.176 as permitted sender) smtp.mailfrom=muchun.song@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720686497; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=0mH7YvbDfbr9uzZLaQHK+MYUTko+iJS+stQEW+FWvG0=; b=fNc4EQe2AsxQ/nSxxxh4oGUsn/0I1q81QpmdIwvWgUZWaZlyaZkawbVPW1un70P6rvBEGr BZOrf1+5OW15GyRuI5eoIKGsRJs1jH4CZSrXf1xrHHvCMtKJl0A+udemmf8nDwVlUJRZ9x 7ejkbpCexOkDeqsgNg/2GNbNIDCWmDQ= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=bPTvYvQU; spf=pass (imf19.hostedemail.com: domain of muchun.song@linux.dev designates 95.215.58.176 as permitted sender) smtp.mailfrom=muchun.song@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720686497; a=rsa-sha256; cv=none; b=OJa5HUgpbEtVCIo+9pE3/f0OgtaihTjJRzqynff1MqqAFxyTVZEuK1klQt2xY0b8u4a2D4 DPtJKvRYELZQrn7fC4eUdsRJh3FEhK+Ue3k+6bU4QgoRFzWACYhkEviFCSZjtxgQUqnLGn co8alAJuw5Z85bkL4u+lwUFek+d+36c= X-Envelope-To: linmiaohe@huawei.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1720686511; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0mH7YvbDfbr9uzZLaQHK+MYUTko+iJS+stQEW+FWvG0=; b=bPTvYvQUfg5Kil01e6fYYu1kOB5sPmKedoYRIrqoebLi2qLbF9fUqparmf8DwyW8gk1P33 KUlBF7j3g17UKF7Iz/kEIdOMbdtbtHDDp8UPXp4jXcRkc+SqCKRoRYR+8I9t0+r9QzObxS Ltw9rJFBk6woiFW1ipoPAf4R1xhTuKY= X-Envelope-To: akpm@linux-foundation.org X-Envelope-To: linux-mm@kvack.org X-Envelope-To: linux-kernel@vger.kernel.org Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\)) Subject: Re: [PATCH] mm/hugetlb: fix possible recursive locking detected warning X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Muchun Song In-Reply-To: <20240711071001.3475337-1-linmiaohe@huawei.com> Date: Thu, 11 Jul 2024 16:27:46 +0800 Cc: Andrew Morton , Linux-MM , LKML Content-Transfer-Encoding: quoted-printable Message-Id: <4A12CD33-A3C4-4328-ACB5-CF08C8202DC9@linux.dev> References: <20240711071001.3475337-1-linmiaohe@huawei.com> To: Miaohe Lin X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 3564A1A0007 X-Stat-Signature: mutmd3k3o96opfqkswqicz9ixb7oku86 X-HE-Tag: 1720686513-547204 X-HE-Meta: U2FsdGVkX1/Pfwx2UHIrHFrA+9ekpTgrGNvs8PIJhRZne1Pm5/9WWkBssdSycUbu0TgS7ZMj4WIjeqEwZhPVZ9tL0rRCKVOYXgA5x39T7THIwZh3jMopw96u+Wo582/wsSW1P5tMopk4PM+etUARG6Yn55aeCndyhTbdcO/is45FmqdgyyGKDyihohtuarRJR3aGZKFxpfaOAOX82Xs6Uz+N8E2alAXFHr/O8h9bkQxezkViEodTQn/AyEBTqpBXfVZwtO0KLGarLjJLS2jGpTIUDHuiE/hsawJLlXGflvrLbyZjCiFvsFEkiIJFcAFkAp4CAIZgUSouiHkobMRQRy4XdTwh29cEcRLqectmuxyaSFvKQb11bOQ3IHBrjtWU7gidr4D3A8zvlzXMaSGXQYrTyA+Y6e9jUlpH68x4k6/A9d3r3vj5Ye713jRnBy3GwctstfakZNMn0nnXtSOVyNY5fX9VVn29Z1oJ+Wy4+gd+HQszqRMv7jkWejRTSk0F4JcBshimHHn28Dnp9covdP8lNqSp3a5BdMrOxugumBE79hxZrmWxnz5vzDy1CU8UkxJrM1shFRCgHnYNZNf911+N7h4AcPuoqMeezKJggYvD3edoIlFGEGaPTCwNwwv8NgNk/9dAkiwhTDY3atXA+JgXbDkltEYzYxpZ6jhGUEqgNP08T8taaN/DcXnfG2LY8sh1mW4np9lEr7NNhOexwE4FNMSPgIBwmHu4SSz/tssRDDsm2gfWIoMhQerKpa5jEVZ7zi1K6C5IyhEJaU7qKAfvUupr4e47V9a8HH8iD6DRk4iS4a80ZhDY0ReSRN9GZ6L7VxtSfztcbsnE0tDu68C3zdhSde0+vSEJDI1K8Mja9ozOaECvvFVKeZWMUczR5JzruWQiehiwwg/Xr0blOZHFIXtnFOcCsPFxGv15z+wTQnXJRNyCX3GuXfE6MRXkgRsgZJBMNECG5itt1aP pPHw2lzi CVVtncgtwC4A0ERZrt8tpJ/FQY3jL3Aaz04RPNWhxhkT9KJ8BrNuDwpYJdIt6bQ+jaJ94cefMViXUWIoQKhT9MY+vxdlzFGwtGkJW1ffs/X/ejbazBxzo6yh4ywxMu35DGVIsZdX+6Rv6KJwaoOrISWLqdItqdsgIuMhsBem9tZwBQFmhRskR8q/EbGYDrD80HjK5IJuco4axxeZlXXcQ2L+68LKjvVJhHBT0 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: List-Subscribe: List-Unsubscribe: > On Jul 11, 2024, at 15:10, Miaohe Lin wrote: >=20 > When tries to demote 1G hugetlb folios, a lockdep warning is observed: >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > WARNING: possible recursive locking detected > 6.10.0-rc6-00452-ga4d0275fa660-dirty #79 Not tainted > -------------------------------------------- > bash/710 is trying to acquire lock: > ffffffff8f0a7850 (&h->resize_lock){+.+.}-{3:3}, at: = demote_store+0x244/0x460 >=20 > but task is already holding lock: > ffffffff8f0a6f48 (&h->resize_lock){+.+.}-{3:3}, at: = demote_store+0xae/0x460 >=20 > other info that might help us debug this: > Possible unsafe locking scenario: >=20 > CPU0 > ---- > lock(&h->resize_lock); > lock(&h->resize_lock); >=20 > *** DEADLOCK *** >=20 > May be due to missing lock nesting notation >=20 > 4 locks held by bash/710: > #0: ffff8f118439c3f0 (sb_writers#5){.+.+}-{0:0}, at: = ksys_write+0x64/0xe0 > #1: ffff8f11893b9e88 (&of->mutex#2){+.+.}-{3:3}, at: = kernfs_fop_write_iter+0xf8/0x1d0 > #2: ffff8f1183dc4428 (kn->active#98){.+.+}-{0:0}, at: = kernfs_fop_write_iter+0x100/0x1d0 > #3: ffffffff8f0a6f48 (&h->resize_lock){+.+.}-{3:3}, at: = demote_store+0xae/0x460 >=20 > stack backtrace: > CPU: 3 PID: 710 Comm: bash Not tainted = 6.10.0-rc6-00452-ga4d0275fa660-dirty #79 > Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS = rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 > Call Trace: > > dump_stack_lvl+0x68/0xa0 > __lock_acquire+0x10f2/0x1ca0 > lock_acquire+0xbe/0x2d0 > __mutex_lock+0x6d/0x400 > demote_store+0x244/0x460 > kernfs_fop_write_iter+0x12c/0x1d0 > vfs_write+0x380/0x540 > ksys_write+0x64/0xe0 > do_syscall_64+0xb9/0x1d0 > entry_SYSCALL_64_after_hwframe+0x77/0x7f > RIP: 0033:0x7fa61db14887 > RSP: 002b:00007ffc56c48358 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 > RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007fa61db14887 > RDX: 0000000000000002 RSI: 000055a030050220 RDI: 0000000000000001 > RBP: 000055a030050220 R08: 00007fa61dbd1460 R09: 000000007fffffff > R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000002 > R13: 00007fa61dc1b780 R14: 00007fa61dc17600 R15: 00007fa61dc16a00 > >=20 > Lockdep considers this an AA deadlock because the different = resize_lock > mutexes reside in the same lockdep class, but this is a false = positive. > Place them in distinct classes to avoid these warnings. >=20 > Fixes: 8531fc6f52f5 ("hugetlb: add hugetlb demote page support") > Signed-off-by: Miaohe Lin > --- > mm/hugetlb.c | 3 +++ > 1 file changed, 3 insertions(+) >=20 > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 45fd3bc75332..2004e6d3f7ca 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -4659,6 +4659,8 @@ bool __init __attribute((weak)) = arch_hugetlb_valid_size(unsigned long size) > return size =3D=3D HPAGE_SIZE; > } >=20 > +static struct lock_class_key hugetlb_resize_keys[HUGE_MAX_HSTATE]; It's better to let this into "struct hstate". > + > void __init hugetlb_add_hstate(unsigned int order) > { > struct hstate *h; > @@ -4671,6 +4673,7 @@ void __init hugetlb_add_hstate(unsigned int = order) > BUG_ON(order < order_base_2(__NR_USED_SUBPAGE)); > h =3D &hstates[hugetlb_max_hstate++]; > mutex_init(&h->resize_lock); mutex_init() already declares a lock_class_key structure by itself, in order to avoid this, you should use __mutex_init(). Thanks. > + lockdep_set_class(&h->resize_lock, = &hugetlb_resize_keys[hstate_index(h)]); > h->order =3D order; > h->mask =3D ~(huge_page_size(h) - 1); > for (i =3D 0; i < MAX_NUMNODES; ++i) > --=20 > 2.33.0 >=20