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 B0E6EC61DA4 for ; Wed, 15 Mar 2023 17:17:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 505FC6B0071; Wed, 15 Mar 2023 13:17:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 48F036B0072; Wed, 15 Mar 2023 13:17:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 309396B0075; Wed, 15 Mar 2023 13:17:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 1C4076B0071 for ; Wed, 15 Mar 2023 13:17:45 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EC1A2406B0 for ; Wed, 15 Mar 2023 17:17:44 +0000 (UTC) X-FDA: 80571789648.21.1688413 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf04.hostedemail.com (Postfix) with ESMTP id 9475A40002 for ; Wed, 15 Mar 2023 17:17:42 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Yn7U51j0; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=jAmln1b0; spf=pass (imf04.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678900663; a=rsa-sha256; cv=none; b=7/SPN/dDsBHsYcjR1Tzqcbgth1hC0Zh+/BjI9ZNnNQOd0j1cTqVU2P706PSRcDVD3ASucM tEtISrWYEX+4Otw0KDYHIIgId5gPEKlMFK+XRUH1Wq8RGyR/q6reg22jAqIR2FypBBJ3os C52RGCrVk6hKBqKuT5vtqUVyPSZ2pvw= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=Yn7U51j0; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=jAmln1b0; spf=pass (imf04.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678900663; 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=hGXv92i+6WyqYwmJ5ByK88Ra0xDBNJ6yk3MGkSS2pXA=; b=RCE6Ayx5HK0PJiyY/e/Tg+Weg9xNi10HGvFXTHnCxnM6xkILqaOF/vSRBERXGZX9l3TtNP tXSFY62s5W6IvokAYAY2ZTHiE/ha0GVIMq1dOaveraXIxyq18CIsBn+H2w4JPrLukZWbYl wDK1SW5Yoxpg7wk4TlOnvaDLLjPyUaE= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 10ED31FD80; Wed, 15 Mar 2023 17:17:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1678900661; h=from:from:reply-to: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=hGXv92i+6WyqYwmJ5ByK88Ra0xDBNJ6yk3MGkSS2pXA=; b=Yn7U51j0l7q7qAPnT2tXy4RCbSlOBY4bqjajlfYVlkEqf70PnpI9E2cPU6FVhHiXLl9b3e eulFLYBJUF075Rvl0JUT3u7v8iIlDjRtqdGyekNbfHBRbRGjmEU4E0G0R2tb4AB/5zSDyg NlZrMw7g24i7i2MgXX2CfM3SZW87JYc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1678900661; h=from:from:reply-to: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=hGXv92i+6WyqYwmJ5ByK88Ra0xDBNJ6yk3MGkSS2pXA=; b=jAmln1b0xiRxur4+hgmQ6/rnN/zGGb4M2AhBgVX72v+tS9nBZET2lOrVAprhaNfHHoMkXe 5BSf8Mk+X2LFwGDw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id E0E6513A00; Wed, 15 Mar 2023 17:17:40 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id VIcnNrT9EWTEIwAAMHmgww (envelope-from ); Wed, 15 Mar 2023 17:17:40 +0000 Message-ID: Date: Wed, 15 Mar 2023 18:17:40 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 2/2] mm: compaction: fix the possible deadlock when isolating hugetlb pages Content-Language: en-US To: Baolin Wang , akpm@linux-foundation.org Cc: mgorman@techsingularity.net, osalvador@suse.de, william.lam@bytedance.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <1bc1c955b03603c4e14f56dfbbef9f637f18dbbd.1678703534.git.baolin.wang@linux.alibaba.com> From: Vlastimil Babka In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 9475A40002 X-Rspamd-Server: rspam01 X-Stat-Signature: p9o4j14d5c47ix3agfapjn7g6ofhby3e X-HE-Tag: 1678900662-286457 X-HE-Meta: U2FsdGVkX1/6sBgAwsuEGFobpcuIGFk2hfm0GuMy5/k3aatgHui0NhNynVg8H6bFZPQ0rzu4Goze8HYrdO12ZJfXYzGl+kxSw8L+G2gXrGIuCWrCLClU1+KgJ7vHkODJOYuzMXuKveIVHlDexRvNREyMP4y4PiJSpohdQidumkG3QTHzE27psi714AGSwiy6vocQ1j1BPTHqIJ2b452luBTgYajKA72XoQntSjyKc8zP/fk+/UPo/6BFg+UHJ4eCUbsby/DiPI5YwjPJGPgLxG/XTaLRW5XVXT/KVS83hDEAEiUgMz7XQ4B0LGfnNXUAW4Rb7vVE+Yf/G6qsOivtzwzqJsx8ADawnlbnvL1MdOaIh3xMYO4HZX+HvFenY2efmVuyEFyrffZ2DydpMd+mrt85rBiW6E6UBto6N9Ppq6WxcDf5K/1UYEeHB6cbFvkYDFlx/QdbjGppAZgNkx2GOE3atMbt/be5Vy2dcmXBhoEr/hKghZC1nIeE8t+i/0IY4efVCQzmUEIAJPBuKQMFxdnmANuSYH/Hy3Rq79N+mqQvARzcQnh0vz2lVUPFBD+H8CQmIICpOF4jPL3tJfLJzewwdNhXkzigLVEaXG8L2lKNxRIKZ4D5qeDUj5Mr1n18bG5JYmInNvmRkiK6TqOPM5Scr4UWbmbAjoXX6JtxFiXR9RfwjL1zFN8p3gdZHVr4E8hNh3Y+uGH2FRToft9jXoM72dB2lIE4R4UqyE5HaYbf4v38Qn9+SssuQ1kEUh6LTQ3E00htn9Npt9juJ8eHzGyid6n9cKBOJZ7LHDaKNObCxr7D4y8/p1P8ia7DVaZCoCxuV/IaJXQLaxu9/qTqW6Kl3j6sNPXNTjoL54DvtM1JTPPdo2TFwMf4ZOKkKeU/HtbbSiqWsUR339kZm9M09Bje9No2Z1nfAzxVdvmoYgo/nKat7hVKVo6Kg1zvn5e7juEwwl7lvZfiBi6hrpn oxacaNhV NkIqdKNs9MjH256Oc7D5Dlz9PtyIaWQ/l+87k5EYPNdG8DCAvKpXgYQXpu4VrzT4F2AlQulAiY1Y9DSyvZhfhKVnC9CzHqEXXiyN8s5oTOATdFtuP9o3N1Y29+7Igq2oeJfpEZaKN7pMd2bH39WCwPD3hLLUdIpKhdIWXskLqrwfIOhWbNlQHomttzbJzAxw8iiO9pookpkr6kjpehcDWlMWaWgYMP0/uig6mHt3wRrG3cmk= 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 3/13/23 11:37, Baolin Wang wrote: > When trying to isolate a migratable pageblock, it can contain several > normal pages or several hugetlb pages (e.g. CONT-PTE 64K hugetlb on arm64) > in a pageblock. That means we may hold the lru lock of a normal page to > continue to isolate the next hugetlb page by isolate_or_dissolve_huge_page() > in the same migratable pageblock. > > However in the isolate_or_dissolve_huge_page(), it may allocate a new hugetlb > page and dissolve the old one by alloc_and_dissolve_hugetlb_folio() if the > hugetlb's refcount is zero. That means we can still enter the direct compaction > path to allocate a new hugetlb page under the current lru lock, which > may cause possible deadlock. > > To avoid this possible deadlock, we should release the lru lock when trying > to isolate a hugetbl page. Moreover it does not make sense to take the lru > lock to isolate a hugetlb, which is not in the lru list. > > Fixes: 369fa227c219 ("mm: make alloc_contig_range handle free hugetlb pages") > Signed-off-by: Baolin Wang Reviewed-by: Vlastimil Babka Thanks! > --- > mm/compaction.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/mm/compaction.c b/mm/compaction.c > index c9d9ad958e2a..ac8ff152421a 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -893,6 +893,11 @@ isolate_migratepages_block(struct compact_control *cc, unsigned long low_pfn, > } > > if (PageHuge(page) && cc->alloc_contig) { > + if (locked) { > + unlock_page_lruvec_irqrestore(locked, flags); > + locked = NULL; > + } > + > ret = isolate_or_dissolve_huge_page(page, &cc->migratepages); > > /*