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 38BE4C77B7C for ; Thu, 3 Jul 2025 09:40:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 982536B0157; Thu, 3 Jul 2025 05:40:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 933106B0158; Thu, 3 Jul 2025 05:40:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8220F6B0159; Thu, 3 Jul 2025 05:40:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6DEA16B0157 for ; Thu, 3 Jul 2025 05:40:48 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 235901D8698 for ; Thu, 3 Jul 2025 09:40:48 +0000 (UTC) X-FDA: 83622458976.17.A79BD55 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf12.hostedemail.com (Postfix) with ESMTP id 26B6D40002 for ; Thu, 3 Jul 2025 09:40:45 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751535646; 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; bh=gqsRTGLvnRu+D9a+2vmSF3Qp1znUCuysjK7ozzNrz+I=; b=f25BAsZXCAD/Nsp66VV42eRgg6NhKN7lJc56Xoz/btZKrQvSeaaEXSi8IIKdtzXX5lXiQp 38lS3Gi6Cm1/CTBWlfJMPDUdYtHt4iUoNwty+nIf6rqwK4H1r8QRmNCDqggMvTbEJux0Cl usYiCrALAEYbG/Qd2utQfvuTySxG1nQ= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf12.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751535646; a=rsa-sha256; cv=none; b=HGhy5mvf4iLgLr64/m0fVDMLu7xsPfbYA6fKc1npgr+qHtf0tZeb/Q/pHd28XXrroivvbN Zr8FQXlPe6D77pgCCRPZZ+J7lFczex2kA1AXIfPd465NfT6IQl5w2GRBYjCDhPdXL/ogf1 VI7Rg8xLIGqyjS0fPrAELmPVKUc4gTI= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CEFE012FC; Thu, 3 Jul 2025 02:40:30 -0700 (PDT) Received: from [10.164.146.16] (J09HK2D2RT.blr.arm.com [10.164.146.16]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 72BFF3F58B; Thu, 3 Jul 2025 02:40:41 -0700 (PDT) Message-ID: <474399c9-21cf-409c-883b-85b437979503@arm.com> Date: Thu, 3 Jul 2025 15:10:38 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] khugepaged: Reduce race probability between migration and khugepaged To: David Hildenbrand , Dev Jain , akpm@linux-foundation.org Cc: ziy@nvidia.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, baohua@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20250703054823.49149-1-dev.jain@arm.com> <1d82c930-be52-4983-9fd7-099df487eb48@redhat.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: <1d82c930-be52-4983-9fd7-099df487eb48@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 26B6D40002 X-Stat-Signature: n5thfqr7z438ah5eguzru8qbicfzd3ze X-HE-Tag: 1751535645-76981 X-HE-Meta: U2FsdGVkX18Ws3svcE9l1WKcvaWSBCk2MhSL0jh1AZtuxklw+YVmkVVKFLcKsXdqus7GtQulsDFCnR/oiEzTCgvaGRfqrOCsBCLQ4nbqcMxqPTF+5QKU8Kt75op1PBHDyR5z1T/sIepObBg190XpOYwaUbHTawOuPexWuKo3o83qG++4KN0hdxc+1J6W6pYBCODs7YqHhDgSpIc6vVdQ97qPJrxFRGFu/ApsUOSpUpljdFqeKp++7sh2g7R48rXtnvkmmUb7PD4zQC8mHidmklvlgJq+aGXLFRcRZgKvjVPmaSDiDvJETjLFn8utsBFkYrJgqyU2xFjUb4ZiTeXmBvhevH56Z7NzZvTfsN+Omtn6rRLBkpuikpyIlTUKNhbOrh1aNwnyV2QtiLrclQ1c70ZkIZ4O740ijbxJf4MsNQ8TNYeH/a45m0wQK+DBEQIWt4Jckis4XCapVoSSthtR3pM3Srd7+b+P5ZofzbysfL4Kzwwsmevt7CymSUSef/NSgnkPnpMi37YmpXzMz6lNqKtbV6L/3jvgEyJX2kAdsGxnMnipvuIjAUyZniq4n+SZQn8mJ+CiRw8DhLCP62QOMufUNmBgq99cqI/8Ln7F2jYpEWCvan2Es22mSGW12W8jyNeiEgnvQefgMu/sCV2bDb69fEhtvhCRAZ9K2C7T48wggO/QwZUBzn04CfNjatM7u0Bm8Pb1xE56iW4CT8QYjySY9E/wObMQt0txEh52DCV6mF35eogwvmptdVCr+x5JJTkr+9igZyKSXR41YHNz+Wnay6ptXppPYvQizFi4y3kV7QwqOVS2arqJN/DAKmnBTmoTmsu+tkBobuOSl5zFUyQtLb13y9IUHNhSCZ6LAqy8XEi/PsOUPMELGb+71U9C6lVEkULEWqbhqo/s8pgHkVeF/n813ufSJKPqXh11/dULrM6GjC5WWYKmiva53zXoByuuigx3zAG+qrGHyfM Vcdr4v6i DTH+IEF5H/TC1NcMRCRbIiKJ5yHZYm5z3w1iDAh/JO0HGVpQw/ZpfmeRvwQL16OX8OlyaANRjMeWkOSx8/MafITsB2VqJmyLJhg2S1zCIuhC2OT5fANRxOvxrLsnoJoYo7SExdUbRhHV9U7jKwi7KzG4bn+V43gJyvurOohFJbhSUH8uekP2PEW79QvvVcCOmeDRbVCnsINVahundJXGJ3kfPtdatN6txEjawdMd1dD+vOlQdOGKG06aDLaSINEhIRfkMgnnPsrAN/dNKykI7+mfOS+ADMqrLKAUV7D2JgUw/T5t4+ZqHAgRg8A== 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 03/07/25 2:55 PM, David Hildenbrand wrote: > On 03.07.25 07:48, Dev Jain wrote: >> Suppose a folio is under migration, and khugepaged is also trying to >> collapse it. collapse_pte_mapped_thp() will retrieve the folio from the >> page cache via filemap_lock_folio(), thus taking a reference on the folio >> and sleeping on the folio lock, since the lock is held by the migration >> path. Migration will then fail in >> __folio_migrate_mapping -> folio_ref_freeze. Reduce the probability of >> such a race happening (leading to migration failure) by bailing out >> if we detect a PMD is marked with a migration entry. >> >> This fixes the migration-shared-anon-thp testcase failure on Apple M3. >> >> Note that, this is not a "fix" since it only reduces the chance of >> interference of khugepaged with migration, wherein both the kernel >> functionalities are deemed "best-effort". >> >> Signed-off-by: Dev Jain >> --- >> >> v1->v2: >>   - Remove SCAN_PMD_MIGRATION, merge into SCAN_PMD_MAPPED (David, Anshuman) >>   - Add a comment (Lorenzo) >> >> v1: >>   - https://lore.kernel.org/all/20250630044837.4675-1-dev.jain@arm.com/ >> >>   mm/khugepaged.c | 9 +++++++++ >>   1 file changed, 9 insertions(+) >> >> diff --git a/mm/khugepaged.c b/mm/khugepaged.c >> index 1aa7ca67c756..3fdefc4f4984 100644 >> --- a/mm/khugepaged.c >> +++ b/mm/khugepaged.c >> @@ -941,6 +941,15 @@ static inline int check_pmd_state(pmd_t *pmd) >>         if (pmd_none(pmde)) >>           return SCAN_PMD_NONE; >> + >> +    /* >> +     * The folio may be under migration when khugepaged is trying to >> +     * collapse it. Migration success or failure will eventually end >> +     * up with the PMD still pointing to a PMD-order folio, so return >> +     * SCAN_PMD_MAPPED. > > Nit: the last part (, so return ..) is obvious from the code. > > I would have written > > /* >  * The folio may be under migration when khugepaged is trying to >  * collapse it. Migration success or failure will eventually end >  * up with a present PMD entry again. >  */ +1 > > > Acked-by: David Hildenbrand > Reviewed-by: Anshuman Khandual