From patchwork Mon Apr 10 13:43:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yicong Yang X-Patchwork-Id: 13206381 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 570B3C77B73 for ; Mon, 10 Apr 2023 13:44:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ED373280021; Mon, 10 Apr 2023 09:44:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E846728001E; Mon, 10 Apr 2023 09:44:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D7249280021; Mon, 10 Apr 2023 09:44:50 -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 C455728001E for ; Mon, 10 Apr 2023 09:44:50 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 963DD4096A for ; Mon, 10 Apr 2023 13:44:50 +0000 (UTC) X-FDA: 80665601940.20.F0FF742 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf13.hostedemail.com (Postfix) with ESMTP id 65C6B20002 for ; Mon, 10 Apr 2023 13:44:46 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf13.hostedemail.com: domain of yangyicong@huawei.com designates 45.249.212.255 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=1681134288; 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=wkCs1nN8eLoGDWVdXPb0xrNH0kfv5wtFXI/gDCPa5etERwF1JaKo3a02FT6tS1SSs4FZS+ pA6TE/t0GM3nIYZd3FgVoDcsCVpOhocgUuMM4A2mBAP/VspvEWWgaAM2pT3Uqga+2WoAlo vKixgR+LhrVBO7P+5wk4BoEHZuQ+A4s= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf13.hostedemail.com: domain of yangyicong@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=yangyicong@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1681134288; a=rsa-sha256; cv=none; b=WdPApPjQpyFu7S5rNDacp90t4sAEJNaT58t5b2XfCnTAamWnTok5e0Yb8RPcmhkZlm0UbH c5lRopi25V1RyHgoEKgjtVBCEllP0KB0TZlo0Zp/N8f+RNIBGIpq3aEniYf2CmyPB15n6H 72Se5WIG8Ep1PGwTkI1ky1J0TD4iAck= Received: from canpemm500009.china.huawei.com (unknown [172.30.72.56]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4Pw99M0wYdz17RLS; Mon, 10 Apr 2023 21:41:11 +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.23; Mon, 10 Apr 2023 21:44:42 +0800 From: Yicong Yang To: , , , , , , , CC: , , , , , , , , , , , , , , , , , Barry Song <21cnbao@gmail.com>, , , , , Anshuman Khandual , Barry Song Subject: [PATCH v9 1/2] mm/tlbbatch: Introduce arch_tlbbatch_should_defer() Date: Mon, 10 Apr 2023 21:43:51 +0800 Message-ID: <20230410134352.4519-2-yangyicong@huawei.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20230410134352.4519-1-yangyicong@huawei.com> References: <20230410134352.4519-1-yangyicong@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.50.163.32] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 65C6B20002 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: 6p9asjar57gstgsahxkzz4cqp7na5dab X-HE-Tag: 1681134286-410806 X-HE-Meta: U2FsdGVkX1+YKjzz6oxjUtqeXnbR4jknE76+qnVT6MIDJbifOLW0qa4Rc5ZPL6B/tH7vr8Lo4c2uLt7IJ6HZaxUN1zu7rxcZAT+gehrKc2BLS3CXmrGhPC0APYjh2PUMXwuW7IBCCEV+AUXjJBnY1HlEbXKiNLllKzCHh7op5d9cLr0/bPRx4nvRGeOd5k39XTdhxEhoF8YKU2gGFgtoHviUj+KvYVTpf/DEOHHBSU6oVTMdqPiXpQwn5uYn6WgUFbu/0kO/j6LxpBn6SYm1gVXxP0cyugDVqzFBU+8QK/DRFt7EDeCtCLsqfn+JxB+LzSmdZhF5X3eyl2qcwlEEnRw4RjyhI/4dpBUrVur7e8OhAGVgXKjWyHlhjFzwTQugXoEvc8NDsBY8hS/45luxXd2ukP9Omkj3OEEMiTXCYnHUzNgo7r0F4WnTHqQe0zw2KWctWDjjVHloGR7BI92ij15fOv1aZvfc38k0cNUMfVYbpq+7zqWASHFxHF287WJ4ohDUJKrtwCY9/DsVZp+sQLn/DSqah7ULrJTYnpGM7cELP0wdRCr8opXpjeqRX/Ks08dmW49wPyG1X/OrdFeNPForMrtFLqTLEerbPSAsR3MAFdPV3pAhuQ5CBslAb2qsOKAdnzI4eRuN65cE+MpsQHOy1MzccrbehMU4IQSm+/4sPFgiqH2PdVs9HAenHWUyzyGV1jC4nAXwT1QIU0qNJLBvj4VZuwAjQic4tiMHYBxPuX/+itqySrypc4xedqvdAQrFFRoOygJDj2+Vo8668oqFzpQxhuNm8botraEKNjocSpz1XKWxF04oZZDbWEkFSeILlDalrQ4gnXf0WGZ+tUiA65eXG05s4B+v7soMqlS5Rtb1/BxxnGbF+Zs49sjvfTn4+KNdWaGDVMOQlIS0/2Ka0o6Fkr5eiFF6v3UmijF98CRB79p9Ne033bMOx3VHE6aFKHs44YxqfRM395X Lq0lGqMC AB4sCTN1rvEcXFee/h+GfKUIqdT1MBfVqq7zKXamhwVeoiW1yVIIQAEnCcxHrvEuZ4vlDPeK4LffXfI1W58CFZshVEzkLyZsMfzvdkM0yMkBrv32lj9hVqRoPPnqG3RsThDFFPU6sm+d8LwI9poBhN9kH6XLHExDhrUGZiKyHA/YaZxxjSntph8BXQNRTN/r6ySh3TlO/LyepqKXt7Cz3YjGbU/QsM9BJXhLOpIHL2YwNC6WwI3vSwFsLQgfJrZT73jbgwRPnRbQo4EWqe0DFmgmesHthe1zF5h4vgl/jhy57vkikRHG8Dl7EHZTDTYGwuKo1fyeB3Wt4/UypaqAARV+y2vZAbHme8vVa6O52yaTMkjQ0796eVgg38rsgOiGVHkMqbVAc5xD48n2ojTOCaZlMg2PkYPo6D6jsjJaS6TqoRQd/J5Yrw48es+pvL5rSdlR9GFrieQQtOjWavQNFWyCwCrvdTjQVPZly/WnrPIVaND0= 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); } /*