mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-03 11:13:56 +08:00
x86: Support Generic Initiator only proximity domains
In common with memoryless domains only register GI domains if the proximity node is not online. If a domain is already a memory containing domain, or a memoryless domain there is nothing to do just because it also contains a Generic Initiator. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Acked-by: Borislav Petkov <bp@suse.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
894c26a1c2
commit
73bf7382de
@ -62,12 +62,14 @@ extern void numa_clear_node(int cpu);
|
|||||||
extern void __init init_cpu_to_node(void);
|
extern void __init init_cpu_to_node(void);
|
||||||
extern void numa_add_cpu(int cpu);
|
extern void numa_add_cpu(int cpu);
|
||||||
extern void numa_remove_cpu(int cpu);
|
extern void numa_remove_cpu(int cpu);
|
||||||
|
extern void init_gi_nodes(void);
|
||||||
#else /* CONFIG_NUMA */
|
#else /* CONFIG_NUMA */
|
||||||
static inline void numa_set_node(int cpu, int node) { }
|
static inline void numa_set_node(int cpu, int node) { }
|
||||||
static inline void numa_clear_node(int cpu) { }
|
static inline void numa_clear_node(int cpu) { }
|
||||||
static inline void init_cpu_to_node(void) { }
|
static inline void init_cpu_to_node(void) { }
|
||||||
static inline void numa_add_cpu(int cpu) { }
|
static inline void numa_add_cpu(int cpu) { }
|
||||||
static inline void numa_remove_cpu(int cpu) { }
|
static inline void numa_remove_cpu(int cpu) { }
|
||||||
|
static inline void init_gi_nodes(void) { }
|
||||||
#endif /* CONFIG_NUMA */
|
#endif /* CONFIG_NUMA */
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
||||||
|
@ -1218,6 +1218,7 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
prefill_possible_map();
|
prefill_possible_map();
|
||||||
|
|
||||||
init_cpu_to_node();
|
init_cpu_to_node();
|
||||||
|
init_gi_nodes();
|
||||||
|
|
||||||
io_apic_init_mappings();
|
io_apic_init_mappings();
|
||||||
|
|
||||||
|
@ -747,6 +747,27 @@ static void __init init_memory_less_node(int nid)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A node may exist which has one or more Generic Initiators but no CPUs and no
|
||||||
|
* memory.
|
||||||
|
*
|
||||||
|
* This function must be called after init_cpu_to_node(), to ensure that any
|
||||||
|
* memoryless CPU nodes have already been brought online, and before the
|
||||||
|
* node_data[nid] is needed for zone list setup in build_all_zonelists().
|
||||||
|
*
|
||||||
|
* When this function is called, any nodes containing either memory and/or CPUs
|
||||||
|
* will already be online and there is no need to do anything extra, even if
|
||||||
|
* they also contain one or more Generic Initiators.
|
||||||
|
*/
|
||||||
|
void __init init_gi_nodes(void)
|
||||||
|
{
|
||||||
|
int nid;
|
||||||
|
|
||||||
|
for_each_node_state(nid, N_GENERIC_INITIATOR)
|
||||||
|
if (!node_online(nid))
|
||||||
|
init_memory_less_node(nid);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup early cpu_to_node.
|
* Setup early cpu_to_node.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user