Message ID | 1567231103-13237-9-git-send-email-linyunsheng@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | check the node id consistently across different arches | expand |
Hi Yunsheng, On Sat, Aug 31, 2019 at 01:58:22PM +0800, Yunsheng Lin wrote: > 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). > > Since mips ip27 uses hub_data instead of node_to_cpumask_map, > this patch checks node id with the below case before returning > &hub_data(node)->h_cpus: > 1. if node_id >= MAX_COMPACT_NODES, return cpu_none_mask > 2. if node_id < 0, return cpu_online_mask > 3. if hub_data(node) is NULL, return cpu_online_mask > > [1] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf Similar to David's comment on the sparc patch, these systems don't use ACPI so I don't see from your commit message why this change would be relevant. This same comment applies to patch 9 too. Thanks, Paul > > Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> > --- > arch/mips/include/asm/mach-ip27/topology.h | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h > index 965f079..914a55a 100644 > --- a/arch/mips/include/asm/mach-ip27/topology.h > +++ b/arch/mips/include/asm/mach-ip27/topology.h > @@ -15,9 +15,18 @@ struct cpuinfo_ip27 { > extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS]; > > #define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid) > -#define cpumask_of_node(node) ((node) == -1 ? \ > - cpu_all_mask : \ > - &hub_data(node)->h_cpus) > + > +static inline const struct cpumask *cpumask_of_node(int node) > +{ > + if (node >= MAX_COMPACT_NODES) > + return cpu_none_mask; > + > + if (node < 0 || !hub_data(node)) > + return cpu_online_mask; > + > + return &hub_data(node)->h_cpus; > +} > + > struct pci_bus; > extern int pcibus_to_node(struct pci_bus *); > > -- > 2.8.1 >
On 2019/8/31 23:45, Paul Burton wrote: > Hi Yunsheng, > > On Sat, Aug 31, 2019 at 01:58:22PM +0800, Yunsheng Lin wrote: >> 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). >> >> Since mips ip27 uses hub_data instead of node_to_cpumask_map, >> this patch checks node id with the below case before returning >> &hub_data(node)->h_cpus: >> 1. if node_id >= MAX_COMPACT_NODES, return cpu_none_mask >> 2. if node_id < 0, return cpu_online_mask >> 3. if hub_data(node) is NULL, return cpu_online_mask >> >> [1] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf > > Similar to David's comment on the sparc patch, these systems don't use > ACPI so I don't see from your commit message why this change would be > relevant. > > This same comment applies to patch 9 too. Thanks for pointing out. MIPS's NUMA node id is also defined by DT? > > Thanks, > Paul > >> >> Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> >> --- >> arch/mips/include/asm/mach-ip27/topology.h | 15 ++++++++++++--- >> 1 file changed, 12 insertions(+), 3 deletions(-) >> >> diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h >> index 965f079..914a55a 100644 >> --- a/arch/mips/include/asm/mach-ip27/topology.h >> +++ b/arch/mips/include/asm/mach-ip27/topology.h >> @@ -15,9 +15,18 @@ struct cpuinfo_ip27 { >> extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS]; >> >> #define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid) >> -#define cpumask_of_node(node) ((node) == -1 ? \ >> - cpu_all_mask : \ >> - &hub_data(node)->h_cpus) >> + >> +static inline const struct cpumask *cpumask_of_node(int node) >> +{ >> + if (node >= MAX_COMPACT_NODES) >> + return cpu_none_mask; >> + >> + if (node < 0 || !hub_data(node)) >> + return cpu_online_mask; >> + >> + return &hub_data(node)->h_cpus; >> +} >> + >> struct pci_bus; >> extern int pcibus_to_node(struct pci_bus *); >> >> -- >> 2.8.1 >> > > . >
diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h index 965f079..914a55a 100644 --- a/arch/mips/include/asm/mach-ip27/topology.h +++ b/arch/mips/include/asm/mach-ip27/topology.h @@ -15,9 +15,18 @@ struct cpuinfo_ip27 { extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS]; #define cpu_to_node(cpu) (sn_cpu_info[(cpu)].p_nodeid) -#define cpumask_of_node(node) ((node) == -1 ? \ - cpu_all_mask : \ - &hub_data(node)->h_cpus) + +static inline const struct cpumask *cpumask_of_node(int node) +{ + if (node >= MAX_COMPACT_NODES) + return cpu_none_mask; + + if (node < 0 || !hub_data(node)) + return cpu_online_mask; + + return &hub_data(node)->h_cpus; +} + struct pci_bus; extern int pcibus_to_node(struct pci_bus *);
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). Since mips ip27 uses hub_data instead of node_to_cpumask_map, this patch checks node id with the below case before returning &hub_data(node)->h_cpus: 1. if node_id >= MAX_COMPACT_NODES, return cpu_none_mask 2. if node_id < 0, return cpu_online_mask 3. if hub_data(node) 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/mips/include/asm/mach-ip27/topology.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)