[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a9fa7e25-b3a1-425d-97cb-206f218aa1af@intel.com>
Date: Tue, 19 Aug 2025 10:00:30 -0700
From: Dave Jiang <dave.jiang@...el.com>
To: David Hildenbrand <david@...hat.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 8/18/25 2:49 AM, David Hildenbrand wrote:
> 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
looks like extra 'the'
>
>> + */
>> +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);
>
ok
>
> With both things sorted
>
> Acked-by: David Hildenbrand <david@...hat.com>
>
Thanks for the ack
Powered by blists - more mailing lists