From patchwork Mon Jul 10 08:39: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: 13306475 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 7B1AEEB64DA for ; Mon, 10 Jul 2023 08:41:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 72B416B007D; Mon, 10 Jul 2023 04:41:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B3AE6B007E; Mon, 10 Jul 2023 04:41:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 52D066B0080; Mon, 10 Jul 2023 04:41:22 -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 3B30E6B007D for ; Mon, 10 Jul 2023 04:41:22 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0AF291202DE for ; Mon, 10 Jul 2023 08:41:22 +0000 (UTC) X-FDA: 80995058004.02.DA3B4F2 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf17.hostedemail.com (Postfix) with ESMTP id 7C2AC4001D for ; Mon, 10 Jul 2023 08:41:19 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf17.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=1688978480; 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=cdKjX0Q/bqpGkPx8/shTjHFrGFe4jUOo47iuCuNURG4U7uYapl14I35VgfGKYCTrqEDv+t 6/AsCnksD6HptUES9jYEdy+4S+GMihuvCbnGC9WvF4KrmalCvhvd2WF0nt/ws2zG7tZKT8 3Q6sWvJuFUcagGawAw2cyVk1TbQDr1E= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf17.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=1688978480; a=rsa-sha256; cv=none; b=rzb2tr0Nbt5KObMwhvQnesRLlVMKFPlnDQZc3ut9KkfmaAOJ5iJbc1Ysip9eKEn0pjN1b1 EPJtOIf5bnGHsUCdbWh6kLc4/L2xM/y2+VDdW0JjegdcI5g5Vd099h/PgYjBNWJXjeP683 9qhGaAv+HYkC2J6wfTorUqV/p/G5UNE= Received: from canpemm500009.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Qzy7m5v4bztR5P; Mon, 10 Jul 2023 16:38:12 +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, 10 Jul 2023 16:41:09 +0800 From: Yicong Yang To: , , , , , , , , , CC: , , , , , , , , , , , , , , , , , Barry Song <21cnbao@gmail.com>, , , , , Anshuman Khandual , Barry Song Subject: [PATCH v10 1/4] mm/tlbbatch: Introduce arch_tlbbatch_should_defer() Date: Mon, 10 Jul 2023 16:39:11 +0800 Message-ID: <20230710083914.18336-2-yangyicong@huawei.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20230710083914.18336-1-yangyicong@huawei.com> References: <20230710083914.18336-1-yangyicong@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.50.163.32] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To canpemm500009.china.huawei.com (7.192.105.203) X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 7C2AC4001D X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: bm9u3nbhpc6mjjtcoisxyif5i6bw5qun X-HE-Tag: 1688978479-380966 X-HE-Meta: U2FsdGVkX1/d8X4ld8g4wQPBrh5uPtYrI56nkR4kmGiJ2ISyoa4WTa6pGCCO+k1fns28l1q0x8uL4X/Pq7RIFjLBtyrWuSHJIj/U2X/csaZ1agELWmAHzkKVGbG6tsSl0kcBsS1Z7nExGiBRRJWhVa8+42QrKV/m4tEgfwYU6wyCAqjg0BcgoxPwoSEoX6ptt5N0Sdz9kVrNWWW4ELV/yBQGegB6YZ7s5wU3Wulm1H0cBSHi3NPQUi6vaPGmu/bQGqjfFVgTXmDxiHL8hXeJfSk6oMHSDnCpIV9trDS+CvNLuFQp4zBVJYZKSOENQuuDpRGHVzR51JvlZrBcpVRqNfa9zRKTB4WNTKSL35fJtqkNTX1m+of+beSMOkMwmOZcVNNNgRBULPO6szeDilqdUsXNJlSYCyR/2S5CDMMTP7ff6OEKki2lz6k1toX/cs+s50je5qVQlu8mPBsLypDwX0j0FcuVdbN/VrSegVzdzhgkhSFT6lKZRZ/8xItPQD5bdBBQW5Jz+nJ7wB+ibscPOi6MgyETzGBic+BqvEcWiF8jFwQehBi7AX/c2lD8mLC4FeO7Do+fk5BVR1b4EASuQQTfLMC5l9ABpC0aI9e0WZUkNVzSJsBhHoY05Sxh4JM7d8yi3JAckWdHEcG1eXLq1kpnN30w2ta8CCIuOZyHYA1svk17TMmgcjfOMmKFfjAk3riTxRhGIscSKs53lbp/IcFa3ykBcfGY2Sd/1eKurLcdYSXPH6PkH/E+BRw93DkjjdW62JiZo4f7tQ+c72xcCNu1B8zckTl1sBy7YYSAYn19uXcrvz7fBNaJFuRaNyhfAIomp91EKpV4fjwDO/GC9MBNaBtX3q7Rlt7+qhRwWztDKZK9C3FmSj61aFyMf3mYlZoEGS59oVgzQgKz8KE4GZmnxNgAqgI7VoQtpP7QceiFT+AxBtJpPv0AzVspvuobX56OheaWAnImfgMzOC2 3lywaKVl 0UywnYEQO4PlORqjM7UCHsBjc5yb5O8WkXekyBITKIhbnNDZWN+BVM5sJ4KAgfF7D/R5dtOp2DdFmDycGDXwDB9M4opNSQI4D756G/4ttp2uHlfndSoUKZnsbbMOEkyqj5Zw7noY+9S3F0keyAcKeN7K6qSMC4lNeDgJLLPmnatL0ykXVPBsdFmWCrx4oGrkv1YlZNIdbX7TaM9ZYrnzzLk561PJK5zYuCJ3kk9Bxy7kxcLWJJ9CX4GBr9oNM4TDWBMTEzaupxM+ZFt4m5LkB0CRN+ho9OdsOKV/peOPa6el5Gy+gzTrPwaAE1pIgruSurhVhX2btJnaDNaEsNm3Us0k/XM8RJJYaJWiay56xDXj3OkKnEoev4SIfP+tfFtGUnlCLglV1i9bzkBxZgJ6DtgPDXk//g2fY8n5Rnnx8jvyvI99WvHAf0Hn4ydnnvKZhgK3tJ8W0/a/w4vUiG8nyl/zv8iAemgnUQnKJ 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 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); } /*