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 16340C433EF for ; Fri, 28 Jan 2022 13:10:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBE146B009E; Fri, 28 Jan 2022 08:10:13 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ABF626B009A; Fri, 28 Jan 2022 08:10:13 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C24E6B009A; Fri, 28 Jan 2022 08:10:13 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0149.hostedemail.com [216.40.44.149]) by kanga.kvack.org (Postfix) with ESMTP id 987886B0095 for ; Fri, 28 Jan 2022 08:10:12 -0500 (EST) Received: from smtpin07.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 4A800824C421 for ; Fri, 28 Jan 2022 13:10:12 +0000 (UTC) X-FDA: 79079729064.07.3FA2C19 Received: from server.lespinasse.org (server.lespinasse.org [63.205.204.226]) by imf13.hostedemail.com (Postfix) with ESMTP id DBCD12000A for ; Fri, 28 Jan 2022 13:10:11 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=lespinasse.org; i=@lespinasse.org; q=dns/txt; s=srv-52-ed; t=1643375407; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=uHoqHiEitsG2adH6xd+AzaN4440pSdu1fLLTZyBjHdc=; b=1eE7s25AKDC9KWLUsK1P+gDDXQS3CKuxa6HMqYPfvCfGKLZhIojDGscSOm/Ufv9mPLMnG XKbeaxCLmPX/TWaAA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lespinasse.org; i=@lespinasse.org; q=dns/txt; s=srv-52-rsa; t=1643375407; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=uHoqHiEitsG2adH6xd+AzaN4440pSdu1fLLTZyBjHdc=; b=djUTh9Y+zDGOrV/rzW37emAErhohtTwhjN/ABtXVYGKLWtLhSR5MR8Sq5CIrnvNlX6iSC PW8YmSUJzY/Qx/HxEnw3rrkJamXcI0gSEsJJzN2rAMjvaHi/dsFb0kWQNFN+NKtX+jl7WLq x2ftK834MzhH3bnYqmlymAIGNsG3yyDZf3rDELQGZ12Eo5i2WP+HyI9hWLRiWIw2vJlbDY/ IdBO/neq4UrCqmgYFRCG4lGSEK5TesRe+kWc/XrLlQRPU48c8a6kFaA2G/LswmRFkHszUzt PZgM/bnPyhFRiSsUyqeCMP3RLoLdB59R8VcKi5feKkRFSzc6MhQxJhC5FzXA== Received: from zeus.lespinasse.org (zeus.lespinasse.org [10.0.0.150]) by server.lespinasse.org (Postfix) with ESMTPS id 21498160AA1; Fri, 28 Jan 2022 05:10:07 -0800 (PST) Received: by zeus.lespinasse.org (Postfix, from userid 1000) id 065B82044E; Fri, 28 Jan 2022 05:10:07 -0800 (PST) From: Michel Lespinasse To: Linux-MM , linux-kernel@vger.kernel.org, Andrew Morton Cc: kernel-team@fb.com, Laurent Dufour , Jerome Glisse , Peter Zijlstra , Michal Hocko , Vlastimil Babka , Davidlohr Bueso , Matthew Wilcox , Liam Howlett , Rik van Riel , Paul McKenney , Song Liu , Suren Baghdasaryan , Minchan Kim , Joel Fernandes , David Rientjes , Axel Rasmussen , Andy Lutomirski , Michel Lespinasse Subject: [PATCH v2 21/35] mm: enable speculative fault handling in do_numa_page() Date: Fri, 28 Jan 2022 05:09:52 -0800 Message-Id: <20220128131006.67712-22-michel@lespinasse.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220128131006.67712-1-michel@lespinasse.org> References: <20220128131006.67712-1-michel@lespinasse.org> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: DBCD12000A X-Stat-Signature: 1jz3zq4tnn497mq36i77y8zehyd3qoyx X-Rspam-User: nil Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=lespinasse.org header.s=srv-52-ed header.b=1eE7s25A; dkim=pass header.d=lespinasse.org header.s=srv-52-rsa header.b=djUTh9Y+; spf=pass (imf13.hostedemail.com: domain of walken@lespinasse.org designates 63.205.204.226 as permitted sender) smtp.mailfrom=walken@lespinasse.org; dmarc=pass (policy=none) header.from=lespinasse.org X-HE-Tag: 1643375411-351983 Content-Transfer-Encoding: quoted-printable 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: Change handle_pte_fault() to allow speculative fault execution to proceed through do_numa_page(). do_swap_page() does not implement speculative execution yet, so it needs to abort with VM_FAULT_RETRY in that case. Signed-off-by: Michel Lespinasse --- mm/memory.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 083e015ff194..73b1a328b797 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3589,6 +3589,11 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) vm_fault_t ret =3D 0; void *shadow =3D NULL; =20 + if (vmf->flags & FAULT_FLAG_SPECULATIVE) { + pte_unmap(vmf->pte); + return VM_FAULT_RETRY; + } + if (!pte_unmap_same(vmf)) goto out; =20 @@ -4611,17 +4616,17 @@ static vm_fault_t handle_pte_fault(struct vm_faul= t *vmf) return do_fault(vmf); } =20 - if (vmf->flags & FAULT_FLAG_SPECULATIVE) { - pte_unmap(vmf->pte); - return VM_FAULT_RETRY; - } - if (!pte_present(vmf->orig_pte)) return do_swap_page(vmf); =20 if (pte_protnone(vmf->orig_pte) && vma_is_accessible(vmf->vma)) return do_numa_page(vmf); =20 + if (vmf->flags & FAULT_FLAG_SPECULATIVE) { + pte_unmap(vmf->pte); + return VM_FAULT_RETRY; + } + vmf->ptl =3D pte_lockptr(vmf->vma->vm_mm, vmf->pmd); spin_lock(vmf->ptl); entry =3D vmf->orig_pte; --=20 2.20.1