@@ -6,7 +6,19 @@
#define cpu_to_node(cpu) ((void)(cpu),0)
-#define cpumask_of_node(node) ((void)node, cpu_online_mask)
+static inline const struct cpumask *cpumask_of_node(int node)
+{
+ if (node >= nr_node_ids)
+ return cpu_none_mask;
+
+ if (node < 0 || !node_to_cpumask_map[node])
+ return cpu_online_mask;
+
+ /* Should return actual mask based on node_to_cpumask_map
+ * if sh arch supports real numa node.
+ */
+ return cpu_online_mask;
+}
#define pcibus_to_node(bus) ((void)(bus), -1)
#define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \
According to Section 6.2.14 from ACPI spec 6.3 [1], the setting of proximity domain is optional, as below: This optional object is used to describe proximity domain associations within a machine. _PXM evaluates to an integer that identifies a device as belonging to a Proximity Domain defined in the System Resource Affinity Table (SRAT). It seems sh does not have real numa support or uncompleted numa support, this patch still checks node id with the below case to ensure future support is consistent: 1. if node_id >= nr_node_ids, return cpu_none_mask 2. if node_id < 0, return cpu_online_mask 3. if node_to_cpumask_map[node_id] is NULL, return cpu_online_mask [1] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> --- arch/sh/include/asm/topology.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)