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 8BC48C7EE23 for ; Tue, 23 May 2023 06:06:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D4AA7280001; Tue, 23 May 2023 02:06:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CD4206B0075; Tue, 23 May 2023 02:06:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B73DE280001; Tue, 23 May 2023 02:06:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A96296B0074 for ; Tue, 23 May 2023 02:06:44 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 64D9440604 for ; Tue, 23 May 2023 06:06:44 +0000 (UTC) X-FDA: 80820485928.22.2667285 Received: from out-55.mta0.migadu.com (out-55.mta0.migadu.com [91.218.175.55]) by imf19.hostedemail.com (Postfix) with ESMTP id 57C661A001D for ; Tue, 23 May 2023 06:06:41 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=xk0dWmlw; spf=pass (imf19.hostedemail.com: domain of qi.zheng@linux.dev designates 91.218.175.55 as permitted sender) smtp.mailfrom=qi.zheng@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=1684822002; 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=z8s83yWjKEBRdyAGBchf6MMb6Nq3aGroiKLfQejbmR0=; b=jDeKfqR7cfiO0IHzmulEpWN24S7H3C4D6DOKjR9Mnf9hHMTjqR4v/SoMGQre53b1o5dJU8 KKGekRMoBbXhZNiLclQfHURe5R8e3LPr2xNMNLrg2cqrjHfcIpYgtSmji3RCHGS1TOhPrk eR35AhBAtBILfAolIsA6KRJLN19Nraw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=xk0dWmlw; spf=pass (imf19.hostedemail.com: domain of qi.zheng@linux.dev designates 91.218.175.55 as permitted sender) smtp.mailfrom=qi.zheng@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684822002; a=rsa-sha256; cv=none; b=eraXQSU6eRm9Riw88f7aBC6C+7m622008bTjAGh9PRmOBeZo2xSOeJp7ovYbGnactHaTEF HJUf2PDPgvvZNZkTckHveafT+E4PPcCxs/KXD4Ge0IhuL/lHr2X1wIRbHNrvkWCtZoHBqA LW3u270xuRxlEW2EezdUywPDGzNmLTU= Message-ID: <1d5d7f30-1a6a-5ea1-165f-65d34e7658e9@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1684821999; 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=z8s83yWjKEBRdyAGBchf6MMb6Nq3aGroiKLfQejbmR0=; b=xk0dWmlwCXKICTVc9DmQjv5ceHjo4q8uUonePnR7W+LLabpqyvgUOf8NEcyXgcfHg9Kcfw dQBGHiZyuP11qt/lT48Jwda8CZ9CYf+h9/W/GltBiXW1Ri93L7lJy3NT/8A6i4xxMZ384n a8C/+lJ+i8jo8A4W4VtoBFlEJ7nfA3Q= Date: Tue, 23 May 2023 14:06:26 +0800 MIME-Version: 1.0 Subject: Re: [PATCH 13/31] mm/hmm: retry if pte_offset_map() fails Content-Language: en-US To: Alistair Popple Cc: Hugh Dickins , Andrew Morton , Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Qi Zheng , Yang Shi , Mel Gorman , Peter Xu , Peter Zijlstra , Will Deacon , Yu Zhao , Ralph Campbell , Ira Weiny , Steven Price , SeongJae Park , Naoya Horiguchi , Christophe Leroy , Zack Rusin , Jason Gunthorpe , Axel Rasmussen , Anshuman Khandual , Pasha Tatashin , Miaohe Lin , Minchan Kim , Christoph Hellwig , Song Liu , Thomas Hellstrom , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <68a97fbe-5c1e-7ac6-72c-7b9c6290b370@google.com> <2edc4657-b6ff-3d6e-2342-6b60bfccc5b@google.com> <0e3c5937-2f04-25d9-98eb-01e4c2b04150@linux.dev> <87353n9354.fsf@nvidia.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Qi Zheng In-Reply-To: <87353n9354.fsf@nvidia.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 57C661A001D X-Rspam-User: X-Stat-Signature: 1dcrj5ah3dw4c1856p7hn64ord9jmgw4 X-Rspamd-Server: rspam01 X-HE-Tag: 1684822001-168390 X-HE-Meta: U2FsdGVkX18LfG9pmlMjE0qgxC7m0ywOtH5sG4ulcVXpkGDwjtddvRgX6E5od+U8iHQ7/MicpxqyaRxJGLyzy03bVPjm9EYyeddkqfe33iAXniRp0+UajRUpXmbmxTGo6hRqrHl27fDfdxrJX03X4aZ4RtwQWRJlvajoEcR5Qrvy6UkID5vvXJHstoasqlcX/xOqWlAe6hVuvMMfk2BioaR2yL+huVQ1DQfcyTYfLJDtLBqrzxm+/E8MYdGKDL8NiW9nmsQfikB10N7yqG06W/wJnp4Ki6kohSzGtjxfCRiwV2UGJI8Eq2ARBw+t16KJ6I9Gy/Afn93il/GL83hQ3G2Fa8z2UQfp82Fqk/GL16ttKDhbARTtF1mYNIZZbmlGgEAxiB0X47DM/oXeGoeb2Z67EhQKLPGdpDZL/gho+4GqwBQblLA5+XMhgUZw1Y2S1E2NAovj32ruoXweWIvrwV+ukZq6WMfy/jshs5cxQ4+53wC7rVxcGJEMBtDy0UXJmZJ9DZk6dI5vuBA2JLGWL5IO3jY5+6sEgvcz2wPVeMQD98kbjYReotiAVaI8Phn3FqtdSWUNCAMG/Md50rH0RvJxMnUTGOaW2Jbqimw41v2j9KNy7AC+ha6A9iQTiX3lGu+ORmCULI635cWxLrmcwoVNttAF2tSeYWiTV0CkAaWzAJxUbb3fhCmjPasNftdxSkpRxtXItX4kMBvhFyEMmtHjNNlHx5DkipCobMgP46NR2Cyn8MX2DVsbkNVguMLCLEKejNxlAoZUN1pXTxlaC1B5E/S4WDGMWmhEU4n/C7bc/KGDgfmhiI27K8+nUKIF8+2cZVQeLNs3Ktt5uIUF9t8lxhS1NFwcKNFbMTh7sRj6bsyhlqyp5fl0dzhqb8/DrsbjFaSSsZApjoaEH8UD5mhSwNVNd0SqeKQSjOd95HJh7qrjIq4HXbaY1buUY8XmYvdM1LIaxZhR57aqunM qOU/+rxi ypgLPldyoXUhVL6tpXSV85ghaspgQ4MCELBYQdE+bb1Rt5wp0hDzeUD9AyieLg5sAmkjoUP0bxx8rtlEeg7svoAcKk6F1dBiWbXRFHp2Q5StjbIrqURfE2GMOT/gSu7+2MTR0dHkxoH5zPTUF5A4bcj5J2fs9XTqZy6WF 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 2023/5/23 10:39, Alistair Popple wrote: > > Qi Zheng writes: > >> On 2023/5/22 13:05, Hugh Dickins wrote: >>> hmm_vma_walk_pmd() is called through mm_walk, but already has a goto >>> again loop of its own, so take part in that if pte_offset_map() fails. >>> Signed-off-by: Hugh Dickins >>> --- >>> mm/hmm.c | 2 ++ >>> 1 file changed, 2 insertions(+) >>> diff --git a/mm/hmm.c b/mm/hmm.c >>> index e23043345615..b1a9159d7c92 100644 >>> --- a/mm/hmm.c >>> +++ b/mm/hmm.c >>> @@ -381,6 +381,8 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp, >>> } >>> ptep = pte_offset_map(pmdp, addr); >>> + if (!ptep) >>> + goto again; >>> for (; addr < end; addr += PAGE_SIZE, ptep++, hmm_pfns++) { >>> int r; >>> >> >> I haven't read the entire patch set yet, but taking a note here. >> The hmm_vma_handle_pte() will unmap pte and then call >> migration_entry_wait() to remap pte, so this may fail, we need to >> handle this case like below: > > I don't see a problem here. Sure, hmm_vma_handle_pte() might return > -EBUSY but that will get returned up to hmm_range_fault() which will > retry the whole thing again and presumably fail when looking at the PMD. Yeah. There is no problem with this and the modification to migration_entry_wait() can be simplified. My previous thought was that we can finish the retry logic in hmm_vma_walk_pmd() without handing it over to the caller. :) > >> diff --git a/mm/hmm.c b/mm/hmm.c >> index 6a151c09de5e..eb726ff0981c 100644 >> --- a/mm/hmm.c >> +++ b/mm/hmm.c >> @@ -276,7 +276,8 @@ static int hmm_vma_handle_pte(struct mm_walk >> *walk, unsigned long addr, >> if (is_migration_entry(entry)) { >> pte_unmap(ptep); >> hmm_vma_walk->last = addr; >> - migration_entry_wait(walk->mm, pmdp, addr); >> + if (!migration_entry_wait(walk->mm, pmdp, addr)) >> + return -EAGAIN; >> return -EBUSY; >> } >> >> @@ -386,6 +387,8 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp, >> >> r = hmm_vma_handle_pte(walk, addr, end, pmdp, ptep, >> hmm_pfns); >> if (r) { >> + if (r == -EAGAIN) >> + goto again; >> /* hmm_vma_handle_pte() did pte_unmap() */ >> return r; >> } >> >> Of course, the migration_entry_wait() also needs to be modified. > -- Thanks, Qi