[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c0600abd-18fd-4bfa-ba8d-45303ee3a9ee@redhat.com>
Date: Mon, 18 Aug 2025 11:49:41 +0200
From: David Hildenbrand <david@...hat.com>
To: Dave Jiang <dave.jiang@...el.com>, linux-cxl@...r.kernel.org,
linux-acpi@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: gregkh@...uxfoundation.org, rafael@...nel.org, dakr@...nel.org,
dave@...olabs.net, jonathan.cameron@...wei.com, alison.schofield@...el.com,
vishal.l.verma@...el.com, ira.weiny@...el.com, dan.j.williams@...el.com,
marc.herbert@...ux.intel.com, akpm@...ux-foundation.org
Subject: Re: [PATCH 2/4] drivers/base/node: Add a helper function
node_update_perf_attrs()
On 14.08.25 19:16, Dave Jiang wrote:
> Add helper function node_update_perf_attrs() to allow update of node access
> coordinates computed by an external agent such as CXL. The helper allows
> updating of coordinates after the attribute being created by HMAT.
>
> Signed-off-by: Dave Jiang <dave.jiang@...el.com>
> ---
> drivers/base/node.c | 39 +++++++++++++++++++++++++++++++++++++++
> include/linux/node.h | 8 ++++++++
> 2 files changed, 47 insertions(+)
>
> diff --git a/drivers/base/node.c b/drivers/base/node.c
> index 3399594136b2..cf395da18c9b 100644
> --- a/drivers/base/node.c
> +++ b/drivers/base/node.c
> @@ -248,6 +248,45 @@ void node_set_perf_attrs(unsigned int nid, struct access_coordinate *coord,
> }
> EXPORT_SYMBOL_GPL(node_set_perf_attrs);
>
> +/**
> + * node_update_perf_attrs - Update the performance values for given access class
> + * @nid: Node identifier to be updated
> + * @coord: Heterogeneous memory performance coordinates
> + * @access: The access class the for the given attributes
"the for": there is probably something missing
> + */
> +void node_update_perf_attrs(unsigned int nid, struct access_coordinate *coord,
> + enum access_coordinate_class access)
> +{
> + struct node_access_nodes *access_node;
> + struct node *node;
> + int i;
> +
> + if (WARN_ON_ONCE(!node_online(nid)))
> + return;
> +
> + node = node_devices[nid];
> + list_for_each_entry(access_node, &node->access_list, list_node) {
> + if (access_node->access != access)
> + continue;
> +
> + access_node->coord = *coord;
> + for (i = 0; access_attrs[i]; i++) {
> + sysfs_notify(&access_node->dev.kobj,
> + NULL, access_attrs[i]->name);
> + }
> + break;
> + }
> +
> + /* When setting CPU access coordinates, update mempolicy */
> + if (access == ACCESS_COORDINATE_CPU) {
> + if (mempolicy_set_node_perf(nid, coord)) {
> + pr_info("failed to set mempolicy attrs for node %d\n",
> + nid);
> + }
if (access == ACCESS_COORDINATE_CPU &&
mempolicy_set_node_perf(nid, coord))
pr_info("failed to set mempolicy attrs for node %d\n", nid);
or
if (access != ACCESS_COORDINATE_CPU)
return
if (mempolicy_set_node_perf(nid, coord))
pr_info("failed to set mempolicy attrs for node %d\n", nid);
With both things sorted
Acked-by: David Hildenbrand <david@...hat.com>
--
Cheers
David / dhildenb
Powered by blists - more mailing lists