mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-20 04:37:11 +07:00
arm64: topology: add support to remove cpu topology sibling masks
This patch adds support to remove all the CPU topology information using clear_cpu_topology and also resetting the sibling information on other sibling CPUs. This will be used in cpu_disable so that all the topology sibling information is removed on CPU hotplug out. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Tested-by: Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> Tested-by: Hanjun Guo <hanjun.guo@linaro.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
This commit is contained in:
parent
97fd6016a7
commit
5bdd2b3f0f
@ -20,9 +20,11 @@ extern struct cpu_topology cpu_topology[NR_CPUS];
|
|||||||
#define topology_core_id(cpu) (cpu_topology[cpu].core_id)
|
#define topology_core_id(cpu) (cpu_topology[cpu].core_id)
|
||||||
#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling)
|
#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling)
|
||||||
#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling)
|
#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling)
|
||||||
|
#define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_siblings)
|
||||||
|
|
||||||
void init_cpu_topology(void);
|
void init_cpu_topology(void);
|
||||||
void store_cpu_topology(unsigned int cpuid);
|
void store_cpu_topology(unsigned int cpuid);
|
||||||
|
void remove_cpu_topology(unsigned int cpuid);
|
||||||
const struct cpumask *cpu_coregroup_mask(int cpu);
|
const struct cpumask *cpu_coregroup_mask(int cpu);
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA
|
#ifdef CONFIG_NUMA
|
||||||
|
@ -322,6 +322,20 @@ static void __init reset_cpu_topology(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void remove_cpu_topology(unsigned int cpu)
|
||||||
|
{
|
||||||
|
int sibling;
|
||||||
|
|
||||||
|
for_each_cpu(sibling, topology_core_cpumask(cpu))
|
||||||
|
cpumask_clear_cpu(cpu, topology_core_cpumask(sibling));
|
||||||
|
for_each_cpu(sibling, topology_sibling_cpumask(cpu))
|
||||||
|
cpumask_clear_cpu(cpu, topology_sibling_cpumask(sibling));
|
||||||
|
for_each_cpu(sibling, topology_llc_cpumask(cpu))
|
||||||
|
cpumask_clear_cpu(cpu, topology_llc_cpumask(sibling));
|
||||||
|
|
||||||
|
clear_cpu_topology(cpu);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ACPI
|
#ifdef CONFIG_ACPI
|
||||||
/*
|
/*
|
||||||
* Propagate the topology information of the processor_topology_node tree to the
|
* Propagate the topology information of the processor_topology_node tree to the
|
||||||
|
Loading…
Reference in New Issue
Block a user