From patchwork Fri Sep 15 12:03:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tip-bot2 for Thomas Gleixner X-Patchwork-Id: 140602 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp1234592vqi; Fri, 15 Sep 2023 11:13:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHP1VTqPNcnqLpqZVPn8xN0UvPgyb/iwwafv3o0UdNxXOYtGbbcqHiAOKnpHDD28MnVwYIj X-Received: by 2002:a17:902:eaca:b0:1c3:a2ea:64cb with SMTP id p10-20020a170902eaca00b001c3a2ea64cbmr2387422pld.53.1694801620230; Fri, 15 Sep 2023 11:13:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694801620; cv=none; d=google.com; s=arc-20160816; b=IJZJbxW2gei554CEQ6wnZFJycjJWnF1T2K6HAm5ctLl+nwFLnwwPUtWQuEVjgRg6g1 YdOeGWtI9i+STyQAD01rXRTan35Mi6ikxaXG5re3/5OO3J57q3+YSBl4yaQBpRnqKpQT UoZP64dXVfeuTgq9ddgWvLwmcQHEiy9Au0miVQAfT6oYvMOnuiCNrvNdLNd1SEigGL7v gEYxedjfeioe2I3ewOcczJuVwdpcfhMQ+MkuRI11CHforJ5b76SqCbAkNmu4hAwM6ql5 LjEgGrqP0eFejLgAd1DfcmC8uCjtcY5zsQ1/wES8e8JRspkSvFh0uGC+cUkRbw2iqzUq I/3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:robot-unsubscribe :robot-id:message-id:mime-version:references:in-reply-to:cc:subject :to:reply-to:sender:from:dkim-signature:dkim-signature:date; bh=z1faOKlPoZODeUUJCMNadxA5dnwKXkX9advHmwLjgnc=; fh=eKeIeQq6ZJEPpCVRKsN4VFa+FaRfE4kjc161Ip6RZyg=; b=YvWIJPTtJ6anh/GSUimoU1FdX8hbEDaHa7SevKUX2yznZzfvWeh3tlrsCeElH3SGbJ TK31m3G2NKHVYnJlxquMdVuA5r9w9BcX5ccau6e3Fuk9IpGbW88EWpGSrctgsx0UXuYB 9a1YksxHDWnUFtzpiq1qrBniScYb/QLgraMqAfGwh4wTrmcAW+GcPQcNJvL1OWCuSrKF Mt5IjBq2M/2f38R76E7nHcvwIF1/+bqvcuRJA8aBPwW6H1WXonq207hmBNsjlyr1D2UK xaltlM7oVXvVAez4SaRQ0FkvRR1yj7zB6GmW8q2x9kNtwYlHylHYl7chCi8EeM+Osq28 XDsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b="yEyCFgm/"; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id b10-20020a170902d50a00b001b84335fb90si3872248plg.286.2023.09.15.11.13.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Sep 2023 11:13:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b="yEyCFgm/"; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 971048374E7F; Fri, 15 Sep 2023 05:08:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234495AbjIOMIV (ORCPT + 32 others); Fri, 15 Sep 2023 08:08:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234437AbjIOMIU (ORCPT ); Fri, 15 Sep 2023 08:08:20 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BDF72709; Fri, 15 Sep 2023 05:05:46 -0700 (PDT) Date: Fri, 15 Sep 2023 12:03:29 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1694779410; h=from:from:sender:sender:reply-to: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=z1faOKlPoZODeUUJCMNadxA5dnwKXkX9advHmwLjgnc=; b=yEyCFgm/V7+/iu3ju/Yr+pYoOFQVpfMCGEZ7C0E9L2OTzAp+fDX7w0P4Gul/s5tZVxDsQT fahx9PA5/wDvRlXUW4OQm3ZK4e3MxGitIjs9zA+n8kv4lcUcIx7s4lKQOKvtcyN+Qg+Czd V379ekBwWvDa0BgmvLwQKcwHI37I1ck87brnRse7MMFgblwI9OQ6ifPCFt+TEfaps5REEa M7RyXvx6xR34QoZwW6zPDFkDjlKWBYnsy64JvIMGmA8DIL3Tqvwf7AsENqJr0QoNJNqc8V O0GhjTB1JNsZNGOCtKGYpCMrU2A2tS1gRdK9JeYKGbCqdoi6oX2f375wE7nsbQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1694779410; h=from:from:sender:sender:reply-to: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=z1faOKlPoZODeUUJCMNadxA5dnwKXkX9advHmwLjgnc=; b=K04klCqabRNhhPH6c/jxoviBmJ+kdrfuTnGKiXIveqrzyuXIOAnxsERN7urMiCoFAoepw4 38p+7td87FAkB2DA== From: "tip-bot2 for Yury Norov" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: sched/core] numa: Generalize numa_map_to_online_node() Cc: Yury Norov , Ingo Molnar , Mel Gorman , x86@kernel.org, linux-kernel@vger.kernel.org In-Reply-To: <20230819141239.287290-2-yury.norov@gmail.com> References: <20230819141239.287290-2-yury.norov@gmail.com> MIME-Version: 1.0 Message-ID: <169477940958.27769.18027179711579051058.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Fri, 15 Sep 2023 05:08:20 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777128303845681741 X-GMAIL-MSGID: 1777128303845681741 The following commit has been merged into the sched/core branch of tip: Commit-ID: b1f099b1cf51d553c510c6c8141c27d9ba7ea1fe Gitweb: https://git.kernel.org/tip/b1f099b1cf51d553c510c6c8141c27d9ba7ea1fe Author: Yury Norov AuthorDate: Sat, 19 Aug 2023 07:12:33 -07:00 Committer: Ingo Molnar CommitterDate: Fri, 15 Sep 2023 13:48:09 +02:00 numa: Generalize numa_map_to_online_node() The function in fact searches the nearest node for a given one, based on a N_ONLINE state. This is a common pattern to search for a nearest node. This patch converts numa_map_to_online_node() to numa_nearest_node() so that others won't need to opencode the logic. Signed-off-by: Yury Norov Signed-off-by: Ingo Molnar Cc: Mel Gorman Link: https://lore.kernel.org/r/20230819141239.287290-2-yury.norov@gmail.com --- include/linux/numa.h | 7 +++++-- mm/mempolicy.c | 18 +++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/include/linux/numa.h b/include/linux/numa.h index 59df211..fb30a42 100644 --- a/include/linux/numa.h +++ b/include/linux/numa.h @@ -25,7 +25,7 @@ #include /* Generic implementation available */ -int numa_map_to_online_node(int node); +int numa_nearest_node(int node, unsigned int state); #ifndef memory_add_physaddr_to_nid static inline int memory_add_physaddr_to_nid(u64 start) @@ -44,10 +44,11 @@ static inline int phys_to_target_node(u64 start) } #endif #else /* !CONFIG_NUMA */ -static inline int numa_map_to_online_node(int node) +static inline int numa_nearest_node(int node, unsigned int state) { return NUMA_NO_NODE; } + static inline int memory_add_physaddr_to_nid(u64 start) { return 0; @@ -58,6 +59,8 @@ static inline int phys_to_target_node(u64 start) } #endif +#define numa_map_to_online_node(node) numa_nearest_node(node, N_ONLINE) + #ifdef CONFIG_HAVE_ARCH_NODE_DEV_GROUP extern const struct attribute_group arch_node_dev_group; #endif diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 42b5567..d4c0fff 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -131,22 +131,26 @@ static struct mempolicy default_policy = { static struct mempolicy preferred_node_policy[MAX_NUMNODES]; /** - * numa_map_to_online_node - Find closest online node + * numa_nearest_node - Find nearest node by state * @node: Node id to start the search + * @state: State to filter the search * - * Lookup the next closest node by distance if @nid is not online. + * Lookup the closest node by distance if @nid is not in state. * - * Return: this @node if it is online, otherwise the closest node by distance + * Return: this @node if it is in state, otherwise the closest node by distance */ -int numa_map_to_online_node(int node) +int numa_nearest_node(int node, unsigned int state) { int min_dist = INT_MAX, dist, n, min_node; - if (node == NUMA_NO_NODE || node_online(node)) + if (state >= NR_NODE_STATES) + return -EINVAL; + + if (node == NUMA_NO_NODE || node_state(node, state)) return node; min_node = node; - for_each_online_node(n) { + for_each_node_state(n, state) { dist = node_distance(node, n); if (dist < min_dist) { min_dist = dist; @@ -156,7 +160,7 @@ int numa_map_to_online_node(int node) return min_node; } -EXPORT_SYMBOL_GPL(numa_map_to_online_node); +EXPORT_SYMBOL_GPL(numa_nearest_node); struct mempolicy *get_task_policy(struct task_struct *p) {