From patchwork Mon Jul 17 13:10:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yicong Yang X-Patchwork-Id: 13315653 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 DEA37C0015E for ; Mon, 17 Jul 2023 13:12:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 632AB8D0002; Mon, 17 Jul 2023 09:12:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5BC566B0074; Mon, 17 Jul 2023 09:12:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 45BB98D0002; Mon, 17 Jul 2023 09:12:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3771B6B0072 for ; Mon, 17 Jul 2023 09:12:16 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 07B501402C5 for ; Mon, 17 Jul 2023 13:12:16 +0000 (UTC) X-FDA: 81021142272.19.A876244 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf07.hostedemail.com (Postfix) with ESMTP id 11A2B40018 for ; Mon, 17 Jul 2023 13:12:12 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.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=1689599533; 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=tQDXL5G5kaAGoo/7M++qyEMAn71EHHw+DYe+eZ1T3qc=; b=NmblVhgxh6Z8XZsOSXN5F/Y1Nzsop2DKQsBqitYdTPFxmIn44q/xoGV+g6BkKdiW5iqe0u gzutwYbu2fSWszElhAoBa/+CzifjIkK+K2yZhFVx38vS/X9WANP48aurOnN0wTIy551mGy eU0SQkp8n6Ws6VmtBowCk1w46jTrMdY= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf07.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=1689599533; a=rsa-sha256; cv=none; b=OyULYvr3tsjs56RM4TepB3xFqIaYFSjCSa7RM/xiJ48mK+AHCToMrOAlVWA4+05g69tXip QezPTLq1ZDMJJQrpNDe9A0v9sEspQUrk1JS8OF1OSvfCuBClGq/XxNcPlsgtvI4Pw9/skm Mx/IBI09iuXXE9zEFHiEF9MqilWKVUw= Received: from canpemm500009.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4R4Mq35PpqztRVP; Mon, 17 Jul 2023 21:09:03 +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.27; Mon, 17 Jul 2023 21:12:08 +0800 From: Yicong Yang To: , , , , , , , , , CC: , , , , , , , , , , , , , , , , , Barry Song <21cnbao@gmail.com>, , , , , Anshuman Khandual , Barry Song Subject: [PATCH v11 1/4] mm/tlbbatch: Introduce arch_tlbbatch_should_defer() Date: Mon, 17 Jul 2023 21:10:01 +0800 Message-ID: <20230717131004.12662-2-yangyicong@huawei.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20230717131004.12662-1-yangyicong@huawei.com> References: <20230717131004.12662-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-Server: rspam09 X-Rspamd-Queue-Id: 11A2B40018 X-Stat-Signature: rm8kg8st69ciqrgjoma1i8yio34jtu4j X-Rspam-User: X-HE-Tag: 1689599532-906787 X-HE-Meta: U2FsdGVkX1+2Wa2/XQKQUD7e8rlHMIJ3nwF67GrO0Rey2CA4DGvx7KV5+mFfaTe2klEgHdlw4pyZU88VN2lM/ygSkPUlsXEdCBHpC+hILufrEKXWVt3KT5buYYqOuhm82zgAOkUn3hHwXjmVaF7bK8pjqTcAhM37PkMsqcAp8lEOH88ZPA/D6/rSfeHA8+Vw/HiwBh68UjO4tX3t6rxk7wCrYdDrtsmWeD7mkRzDGYIMFu/0rCNdi+KxdcxSKkq6IokjET5AtCTcWsEI1ajlZYL6R7arhlbUUDzWZjRHZEYhBx439wKXWr5zGTWc2UQi9hHFg8inKwCN1ZwAslRVzzjVLppqjEFKTvdDH59RwTSSCgf9uuJZGEew+IY/eVRjurTfbKPtGXepCmtTYR9+K0x4vcsxvfkEB6JBun+fzj+9bMrK6AfCjL5w1SUVmiOy+QhNKeOKWNcgzX256wP/a6lD+xMWRT0SmdmRmUDFYAKRwLMmJW6T+tziC1HDK0WyApa64c750qhY8etB6jzsItjg6b1eCaicNRZu+BB3uGK7J7g874f1IcrlB8GNV7kvIsW91nEoibcehbsFxPUiu9+6FcmVzqbqpUizIVNZx118i7WwCzpNI3PMhsZsT4AwptN/mEGH24nhb9Oz+cdl9os3ti2G3PgHZl5jK272yZDOtIjNxrL6EJ6gDCkuPk6/9A3cWfcce5hEmDjIFti4nA07Hl6DIc6XBRdLLDGPRMRiQb2AKWaF+Kg47yOz1HrQgACvIRCGJmHzEjGUDptEBh7pM5KzXGpsaMqvPRF7XX0ae1yNDABuS/Wn+6LXk26VyjbT1vT+bpzHMBfHCR4o+bGQdYseCE7U39ciUTyo44GSK3aVHmjtRxxkdKFKAk6z9vwDFqu1jAgV+DKDMgwY9zuSwywQV0dDFPnxEnfEidpgksxt3nnjhJyeWsN0Zp5F3YKB5fOQ7RB+8gGsCLl Eohudxvp NTWWeNFksaoHuG66IhRAl4MpQZwSjHKt4G0MG9Jfy3B0I5hxMfazuy2KsgjcVcKSj1//1VitGDEu4YhHKBLlSsU+WWrH2ZUrLzB3vU9EUmECgG1qs4fNwAUTKXDOndGumrqxPMKm+uG8fzMrPxlXin2ERFaN/vcwyQ6Ef3mt7v/5ONWmNKgyMNF2cIvwozdZUYJkbndN/u9Q7LMvgVcNRLUSAQVj5EkvGNgYN2MNmBI8Rsi3gwkg9hXqjXKYYZc/+lWSsjuq++nfDW6DANCD2nvK9s/Xem4hhu9cKfsR/R/fvzT1zS13m0sEVt0He6ifRaSqF67N7iwspKCqXnvtSrlYlcUMYNtgvdQ7OAKcJMt48JIzILLlPNCqkLLnQpZF2iY14A5hbFpb4CRsjiqfvfob2WJfN3odWhgYg5YsRhA9WnAjmhAoUWDOg1JPwH3FLJ398zffaPxgOQi0MgJk8Zm8fn2wyo7wHrGac 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 Reviewed-by: Catalin Marinas --- 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 80450e1d5385..cf2a1de5d388 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h @@ -253,6 +253,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 0c0d8857dfce..6480e526c154 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -688,17 +688,10 @@ static void set_tlb_ubc_flush_pending(struct mm_struct *mm, pte_t pteval) */ 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); } /*