Received: by 2002:a05:7412:b795:b0:e2:908c:2ebd with SMTP id iv21csp116073rdb; Wed, 1 Nov 2023 19:57:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF5yuOho0SaandeTYfG1eH2k7OY4zlPMUZFdPZVDKHKTB2NY8I0QLrdd5k6I26wDpw4cJ7Y X-Received: by 2002:a5b:9d2:0:b0:d9c:fa2e:3b7c with SMTP id y18-20020a5b09d2000000b00d9cfa2e3b7cmr15196269ybq.22.1698893835774; Wed, 01 Nov 2023 19:57:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698893835; cv=none; d=google.com; s=arc-20160816; b=HhZA+8nK0YuiYFmt7TMiRTmb+sAFTGt50KWdQOqcSu3/f4WLxdg6zIH0ShtLSVL33G dtoX4Absnvbm2hal9f2xfSPyYJwJnWuIxYpDLW6plPLHXn+cP4CSK9lSApVtMVPO36i5 RJ/AC818tW2A86mZ4BlNla1FvBU/xVbaJCU7Vl4JM7Fs6F7frV+9Bg95xMn96hoPxfO3 hnpj6Ki14GUXqx40yup1xtsMUj0yCSUuZdhk1/7NcVAoe6XfWLYDvH1pgdOu6RGNWgyp rU+MGiOlHyCMtT46gZbqiXYex0xU9CCFpdXhW2V51rzRVUzPtF+6ybdzj32V3Xgl+T81 C5SA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=pBkM1/qLyUTUROmO1aPza7TK7CczzizhpwO6PW/dp5c=; fh=p2WmHOSG4HcMr/uNcMR6wqHGp3cBtYWTHcV8MW4D/h4=; b=wBDqo7WeFvYEgL6JtI109b9HH9/j4az2rF2Oq7Hs7ycmDfI7uQbs/sEtHJYG6qljc5 JH+pugaS048+GcRE9K+dHjSSCAuSpiDVdxEe+R8rX8rXSvNigngvT4tv1rvpLSc9dLH+ 3/QkKfBbjUrcKSt184DQgyhIZrVa3qtTuV4i20UB9pKlLY0fJyTSlEb9cwaeu90yXTBb jYyQQv6I6kMvjVaiFg88xesEBn0xRfZ9wDtFg71jvyLgayEltyipiM3pf2USvZZ+wSGB BPtji2WfuNsQQWJq++er5uRtov8VGv3lYNBcnJZ7Xq5yEjGHfT83Jfl5DQMDlPpzwq6O 68ZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=fujitsu.com Return-Path: Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id y1-20020a655b01000000b005b81f21a25csi1010491pgq.830.2023.11.01.19.57.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Nov 2023 19:57:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=fujitsu.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 0B4A281B894A; Wed, 1 Nov 2023 19:57:14 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1348194AbjKBC5H (ORCPT + 99 others); Wed, 1 Nov 2023 22:57:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347138AbjKBC5D (ORCPT ); Wed, 1 Nov 2023 22:57:03 -0400 Received: from esa2.hc1455-7.c3s2.iphmx.com (esa2.hc1455-7.c3s2.iphmx.com [207.54.90.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA76B101 for ; Wed, 1 Nov 2023 19:57:00 -0700 (PDT) X-IronPort-AV: E=McAfee;i="6600,9927,10881"; a="138343933" X-IronPort-AV: E=Sophos;i="6.03,270,1694703600"; d="scan'208";a="138343933" Received: from unknown (HELO yto-r4.gw.nic.fujitsu.com) ([218.44.52.220]) by esa2.hc1455-7.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Nov 2023 11:56:58 +0900 Received: from yto-m4.gw.nic.fujitsu.com (yto-nat-yto-m4.gw.nic.fujitsu.com [192.168.83.67]) by yto-r4.gw.nic.fujitsu.com (Postfix) with ESMTP id 4C75CE0400 for ; Thu, 2 Nov 2023 11:56:55 +0900 (JST) Received: from kws-ab4.gw.nic.fujitsu.com (kws-ab4.gw.nic.fujitsu.com [192.51.206.22]) by yto-m4.gw.nic.fujitsu.com (Postfix) with ESMTP id 75202D3F3A for ; Thu, 2 Nov 2023 11:56:54 +0900 (JST) Received: from edo.cn.fujitsu.com (edo.cn.fujitsu.com [10.167.33.5]) by kws-ab4.gw.nic.fujitsu.com (Postfix) with ESMTP id 0CC96E5E27 for ; Thu, 2 Nov 2023 11:56:54 +0900 (JST) Received: from localhost.localdomain (unknown [10.167.226.45]) by edo.cn.fujitsu.com (Postfix) with ESMTP id 7F4361A0072; Thu, 2 Nov 2023 10:56:53 +0800 (CST) From: Li Zhijian To: Andrew Morton , Greg Kroah-Hartman , rafael@kernel.org, linux-mm@kvack.org Cc: ying.huang@intel.com, y-goto@fujitsu.com, linux-kernel@vger.kernel.org, Li Zhijian Subject: [PATCH RFC 1/4] drivers/base/node: Add demotion_nodes sys infterface Date: Thu, 2 Nov 2023 10:56:45 +0800 Message-Id: <20231102025648.1285477-2-lizhijian@fujitsu.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20231102025648.1285477-1-lizhijian@fujitsu.com> References: <20231102025648.1285477-1-lizhijian@fujitsu.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-TM-AS-Product-Ver: IMSS-9.1.0.1417-9.0.0.1002-27972.004 X-TM-AS-User-Approved-Sender: Yes X-TMASE-Version: IMSS-9.1.0.1417-9.0.1002-27972.004 X-TMASE-Result: 10--14.336100-10.000000 X-TMASE-MatchedRID: SzbEz7SZt2vZZREXUuleLioiRKlBVkYIfb+ZO7kHlEgpzVB/joYk/NBK hYxPftuoV6Ny+iZr9hdg3t1DWHRjJ3jXR2Tx0VSFpSXVpBS+ilYCtGYG0znilDoUdFbHYUawvwU evDt+uW5/XjpbSJS7awAWmAcUEPw5C8OYzF1BQS4ZgmFGHqyx6xgff28UuvITx8BJ7uScK21J2n edCULoK/ivPJqimipv4QeSIpZv9OkfE8yM4pjsDwtuKBGekqUpI/NGWt0UYPAARPH/Z7Dn2zo9f 1+qs3ML8eQMN6SWv/KHJHsBzrGMm1Se7XPfCxbq X-TMASE-SNAP-Result: 1.821001.0001-0-1-22:0,33:0,34:0-0 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 (snail.vger.email [0.0.0.0]); Wed, 01 Nov 2023 19:57:14 -0700 (PDT) It shows the demotion target nodes of a node. Export this information to user directly. Below is an example where node0 node1 are DRAM, node3 is a PMEM node. - Before PMEM is online, no demotion_nodes for node0 and node1. $ cat /sys/devices/system/node/node0/demotion_nodes - After node3 is online as kmem $ daxctl reconfigure-device --mode=system-ram --no-online dax0.0 && daxctl online-memory dax0.0 [ { "chardev":"dax0.0", "size":1054867456, "target_node":3, "align":2097152, "mode":"system-ram", "online_memblocks":0, "total_memblocks":7 } ] $ cat /sys/devices/system/node/node0/demotion_nodes 3 $ cat /sys/devices/system/node/node1/demotion_nodes 3 $ cat /sys/devices/system/node/node3/demotion_nodes Signed-off-by: Li Zhijian --- drivers/base/node.c | 13 +++++++++++++ include/linux/memory-tiers.h | 6 ++++++ mm/memory-tiers.c | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/drivers/base/node.c b/drivers/base/node.c index 493d533f8375..27e8502548a7 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -569,11 +570,23 @@ static ssize_t node_read_distance(struct device *dev, } static DEVICE_ATTR(distance, 0444, node_read_distance, NULL); +static ssize_t demotion_nodes_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int ret; + nodemask_t nmask = next_demotion_nodes(dev->id); + + ret = sysfs_emit(buf, "%*pbl\n", nodemask_pr_args(&nmask)); + return ret; +} +static DEVICE_ATTR_RO(demotion_nodes); + static struct attribute *node_dev_attrs[] = { &dev_attr_meminfo.attr, &dev_attr_numastat.attr, &dev_attr_distance.attr, &dev_attr_vmstat.attr, + &dev_attr_demotion_nodes.attr, NULL }; diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h index 437441cdf78f..8eb04923f965 100644 --- a/include/linux/memory-tiers.h +++ b/include/linux/memory-tiers.h @@ -38,6 +38,7 @@ void init_node_memory_type(int node, struct memory_dev_type *default_type); void clear_node_memory_type(int node, struct memory_dev_type *memtype); #ifdef CONFIG_MIGRATION int next_demotion_node(int node); +nodemask_t next_demotion_nodes(int node); void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets); bool node_is_toptier(int node); #else @@ -46,6 +47,11 @@ static inline int next_demotion_node(int node) return NUMA_NO_NODE; } +static inline next_demotion_nodes next_demotion_nodes(int node) +{ + return NODE_MASK_NONE; +} + static inline void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets) { *targets = NODE_MASK_NONE; diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c index 37a4f59d9585..90047f37d98a 100644 --- a/mm/memory-tiers.c +++ b/mm/memory-tiers.c @@ -282,6 +282,14 @@ void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets) rcu_read_unlock(); } +nodemask_t next_demotion_nodes(int node) +{ + if (!node_demotion) + return NODE_MASK_NONE; + + return node_demotion[node].preferred; +} + /** * next_demotion_node() - Get the next node in the demotion path * @node: The starting node to lookup the next node -- 2.29.2