On Tue, 6 Feb 2024 15:28:40 -0700 Dave Jiang <dave.jiang@xxxxxxxxx> wrote: > For the numa nodes that are not created by SRAT, no memory_target is > allocated and is not managed by the HMAT_REPORTING code. Therefore > hmat_callback() memory hotplug notifier will exit early on those NUMA > nodes. The CXL memory hotplug notifier will need to call > node_set_perf_attrs() directly in order to setup the access sysfs > attributes. > > In acpi_numa_init(), the last proximity domain (pxm) id created by SRAT is > stored. Add a helper function acpi_node_backed_by_real_pxm() in order to > check if a NUMA node id is defined by SRAT or created by CFMWS. > > node_set_perf_attrs() symbol is exported to allow update of perf attribs > for a node. The sysfs path of > /sys/devices/system/node/nodeX/access0/initiators/* is created by > ndoe_set_perf_attrs() for the various attributes where nodeX is matched node > to the NUMA node of the CXL region. > > Cc: Rafael J. Wysocki <rafael@xxxxxxxxxx> > Reviewed-by: Alison Schofield <alison.schofield@xxxxxxxxx> > Signed-off-by: Dave Jiang <dave.jiang@xxxxxxxxx> Trivial comment inline. Otherwise LGTM Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- > v5: > - Fix ARM compile of missing prototype (0day) > --- > diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c > index 19e419f18472..db51e35cb44f 100644 > --- a/drivers/cxl/core/region.c > +++ b/drivers/cxl/core/region.c > @@ -3084,7 +3084,12 @@ static bool cxl_region_update_coordinates(struct cxl_region *cxlr, int nid) > > for (int i = 0; i < ACCESS_COORDINATE_MAX; i++) { > if (cxlr->coord[i].read_bandwidth) { > - rc = cxl_update_hmat_access_coordinates(nid, cxlr, i); > + rc = 0; > + if (cxl_need_node_perf_attrs_update(nid)) > + node_set_perf_attrs(nid, &cxlr->coord[i], i); maybe continue; here > + else > + rc = cxl_update_hmat_access_coordinates(nid, cxlr, i); > + Then no need to indent the above > if (rc == 0) > cset++; > }