From patchwork Wed Mar 29 03:55:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yicong Yang X-Patchwork-Id: 13191856 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 18735C77B71 for ; Wed, 29 Mar 2023 03:56:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A6A9C6B0074; Tue, 28 Mar 2023 23:56:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CD80900002; Tue, 28 Mar 2023 23:56:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 86D7B6B0078; Tue, 28 Mar 2023 23:56:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7981F6B0074 for ; Tue, 28 Mar 2023 23:56:06 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2D5A51A0413 for ; Wed, 29 Mar 2023 03:56:06 +0000 (UTC) X-FDA: 80620572732.18.167FC29 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf15.hostedemail.com (Postfix) with ESMTP id 466F1A0003 for ; Wed, 29 Mar 2023 03:56:02 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf15.hostedemail.com: domain of yangyicong@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=yangyicong@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680062164; 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=BqwRMurKIGASGsYSlaF3zQFZVl0kqUg8iBL98CC2Co8=; b=ipIKD5mGN2uwZEFNKaJ3UlQv/x7UyxZ0qIvqVQVZKFDu7W0ZRk1ubQOm7C9bzTkkkYCFPL L7LVSyBb2TgmgLJBPAfT8+s635EHpSNRLD7D40/fSvM1UWcM/xeyKvM0b2biYSQ2NNPdME Z9yZuDkv3SKCMIY2rFxQVlyMl6g24yw= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf15.hostedemail.com: domain of yangyicong@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=yangyicong@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680062164; a=rsa-sha256; cv=none; b=UE3zOE1eLlQsCL3/5arBERvJNZZcIapmg5jWeB6YeQj0CUeAby3fQOAjwhJ8frOffbniGq 0DV3Pa3zthsA3/leCV7TIWA3gHRzDS+G4uCUjQs+wONB/Y+bYsYbYTXJhTZ1qi8MFM2oWg mkcymTbmxBWl1Qh/PUvnzWvzFTywMn0= Received: from canpemm500009.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4PmXgs5t2gzgZWQ; Wed, 29 Mar 2023 11:52:41 +0800 (CST) Received: from localhost.localdomain (10.50.163.32) by canpemm500009.china.huawei.com (7.192.105.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 29 Mar 2023 11:55:57 +0800 From: Yicong Yang To: , , , , , , , CC: , , , , , , , , , , , , , , , , , Barry Song <21cnbao@gmail.com>, , , , , Anshuman Khandual , Barry Song Subject: [PATCH v8 1/2] mm/tlbbatch: Introduce arch_tlbbatch_should_defer() Date: Wed, 29 Mar 2023 11:55:11 +0800 Message-ID: <20230329035512.57392-2-yangyicong@huawei.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20230329035512.57392-1-yangyicong@huawei.com> References: <20230329035512.57392-1-yangyicong@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.50.163.32] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 466F1A0003 X-Stat-Signature: yfy4ywhqyg41s6ogydfq4odxthkm3kdg X-Rspam-User: X-HE-Tag: 1680062162-769041 X-HE-Meta: U2FsdGVkX1+FQOvFKLqLwgBkNiVTa09uxntlW4ifh1LeLotdMPpxAocawU+C6TuI7d+/MTlAV/YBxgje+QsxN72lved0LMzJ4FLqZgAEqSIW6Xrrnh1mxhBZVzARSU0G9jik9U4pnNPgbue7/VCjFMpFcJJph9ZJq5XXzjtAfwpvkIAmEUVgCo6birIXITPABUJ5Sm6SFBp9mPSwVCdLm6NVhza84PMdS+6XVvnc/Ra1zjqvLJQA4JFx3gD+i0LFMGJTVy+CWZyQKTE05KXPX/bUNAoPXxWFfZvV1iwjWndZlLhTa7OqQbvJcRNVR8bq8V+dswbjayp2lNXGitT4eFJbNT83pFMu3NWLRQLNOdZ+cBe6bgs8m17GnyjAS50n2l2UFpuRUWVsidpaptyKHUyIRvxFGZ3ZIlDdwZay4UjMYS4iiRCtmVwOvoQeuqIyOSf1vnDYKYptHkIRsY39z/bchPRSHuV6lipPOLSpJTqqlF36Vy6LsBlT/Fbr7LAB3ChXkxFO9g3ySk1LyUP+TxF/lqjo9q/xcpgi3WmOWJqbXPXs/8atQu5S8YZ/7hKwOgG0nDMK09SGJ83/CxnBEeDK6Bj//OMsrYDdx/HR0zSA9ncbo5/mj9Yaj34G1w3+6NhVvEqh3Npv8DFRzY+NvkVrkMU/mLYWxXGPAEyboDV2Rh8R4nSFn3zttMBB4V//6bQfN9kEXR38vV7/P6hwak8wqNk+XhxdxFD/HXsQxXpHAJshgItQJnZ+080grhEqlsVTARzuRTA+XBeaW/GJ01K5P4Jq+UuVPvAZZ/mIQMCRmuftBj0gHURQK26w/ygietWBBqvowKQloj0Y/Na7PDCN75pt8GNxjXC7O/ZHni3NvOpbG/aopRomnbJMt6Q7WpBZlfJPvrn+PFzqyjzLu6n9+jqGoKdnbD/uZj0Af/mbBmAQmEzwdmd5y6GjvSYnQcg/6nD2MhSq4jvK+rm 2Vxov6ra J8xuHdBIuhZ0l83D4dBPeljr796wOl4iPtWam08r2CTMloWpm7vBwrhVoCVxmwBIalhBCFhmNRF+SwjFOEenQDlLecoCPTe9R3zVa0z8qbeeG92+6LBa42iLItVkb5n9JzoZl9919NCRIuaNaBLBHwU4aUjuKbHM/N8i2UJwqSyOyrCnLhUZ6OgZmzaOJPyol52EsVenkD/e9bG8aAwhiAMmJLviZPz1h3zpZ2t0cmsAlYh5j2sCmKH94KxNUaQpvZBY3El0MazWSjsWC3Nw9CODH0N6ch1MH3kz4RDzvgQu5WCjdthUQoa+1TZmn41yE19a5YjOB4qLYSQ6tYiptojSpGNmDdJA4GdyTYJDEibQXjj8njNQJI5jvQ5B+zkg1H/OXk4UQtQoi3mhkWeGuLv8k8rnhi55/ijdS8GrNB0hnZ3d/QHyKlqTVOLuU71V+WGNxmkLnrTitZHIht53DI/BExamqpTnTogkfwb09Vl8XuCW1w161Dq1UxA== 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: From: Anshuman Khandual The entire scheme of deferred TLB flush in reclaim path rests on the fact that the cost to refill TLB entries is less than flushing out individual entries by sending IPI to remote CPUs. But architecture can have different ways to evaluate that. Hence apart from checking TTU_BATCH_FLUSH in the TTU flags, rest of the decision should be architecture specific. Signed-off-by: Anshuman Khandual [https://lore.kernel.org/linuxppc-dev/20171101101735.2318-2-khandual@linux.vnet.ibm.com/] Signed-off-by: Yicong Yang [Rebase and fix incorrect return value type] Reviewed-by: Kefeng Wang Reviewed-by: Anshuman Khandual Reviewed-by: Barry Song Reviewed-by: Xin Hao Tested-by: Punit Agrawal --- arch/x86/include/asm/tlbflush.h | 12 ++++++++++++ mm/rmap.c | 9 +-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index cda3118f3b27..8a497d902c16 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -240,6 +240,18 @@ static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long a) flush_tlb_mm_range(vma->vm_mm, a, a + PAGE_SIZE, PAGE_SHIFT, false); } +static inline bool arch_tlbbatch_should_defer(struct mm_struct *mm) +{ + bool should_defer = false; + + /* If remote CPUs need to be flushed then defer batch the flush */ + if (cpumask_any_but(mm_cpumask(mm), get_cpu()) < nr_cpu_ids) + should_defer = true; + put_cpu(); + + return should_defer; +} + static inline u64 inc_mm_tlb_gen(struct mm_struct *mm) { /* diff --git a/mm/rmap.c b/mm/rmap.c index 8632e02661ac..38ccb700748c 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -686,17 +686,10 @@ static void set_tlb_ubc_flush_pending(struct mm_struct *mm, bool writable) */ static bool should_defer_flush(struct mm_struct *mm, enum ttu_flags flags) { - bool should_defer = false; - if (!(flags & TTU_BATCH_FLUSH)) return false; - /* If remote CPUs need to be flushed then defer batch the flush */ - if (cpumask_any_but(mm_cpumask(mm), get_cpu()) < nr_cpu_ids) - should_defer = true; - put_cpu(); - - return should_defer; + return arch_tlbbatch_should_defer(mm); } /*