topology: Add snapshot of possible sibling cpu mask changes

This snapshot is taken from msm-4.19 as of commit 72395648aa0ad18
("sched: core: Fix usage of cpu core group mask").

Change-Id: Icfbe12f59502c115b010ab53c110f232173c89a5
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
This commit is contained in:
Satya Durga Srinivasu Prabhala
2019-09-17 09:42:57 -07:00
parent 478df4d905
commit 6df025a02c
3 changed files with 39 additions and 0 deletions

View File

@@ -471,6 +471,26 @@ const struct cpumask *cpu_coregroup_mask(int cpu)
return core_mask;
}
#ifdef CONFIG_SCHED_WALT
void update_possible_siblings_masks(unsigned int cpuid)
{
struct cpu_topology *cpu_topo, *cpuid_topo = &cpu_topology[cpuid];
int cpu;
if (cpuid_topo->package_id == -1)
return;
for_each_possible_cpu(cpu) {
cpu_topo = &cpu_topology[cpu];
if (cpuid_topo->package_id != cpu_topo->package_id)
continue;
cpumask_set_cpu(cpuid, &cpu_topo->core_possible_sibling);
cpumask_set_cpu(cpu, &cpuid_topo->core_possible_sibling);
}
}
#endif
void update_siblings_masks(unsigned int cpuid)
{
struct cpu_topology *cpu_topo, *cpuid_topo = &cpu_topology[cpuid];
@@ -550,6 +570,9 @@ __weak int __init parse_acpi_topology(void)
#if defined(CONFIG_ARM64) || defined(CONFIG_RISCV)
void __init init_cpu_topology(void)
{
#ifdef CONFIG_SCHED_WALT
int cpu;
#endif
reset_cpu_topology();
/*
@@ -560,5 +583,11 @@ void __init init_cpu_topology(void)
reset_cpu_topology();
else if (of_have_populated_dt() && parse_dt_topology())
reset_cpu_topology();
#ifdef CONFIG_SCHED_WALT
else {
for_each_possible_cpu(cpu)
update_possible_siblings_masks(cpu);
}
#endif
}
#endif

View File

@@ -48,6 +48,9 @@ struct cpu_topology {
int llc_id;
cpumask_t thread_sibling;
cpumask_t core_sibling;
#ifdef CONFIG_SCHED_WALT
cpumask_t core_possible_sibling;
#endif
cpumask_t llc_sibling;
};
@@ -59,6 +62,10 @@ extern struct cpu_topology cpu_topology[NR_CPUS];
#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling)
#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling)
#define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_sibling)
#ifdef CONFIG_SCHED_WALT
#define topology_possible_sibling_cpumask(cpu) \
(&cpu_topology[cpu].core_possible_sibling)
#endif
void init_cpu_topology(void);
void store_cpu_topology(unsigned int cpuid);
const struct cpumask *cpu_coregroup_mask(int cpu);

View File

@@ -214,6 +214,9 @@ static inline int cpu_to_mem(int cpu)
#ifndef topology_die_cpumask
#define topology_die_cpumask(cpu) cpumask_of(cpu)
#endif
#ifndef topology_possible_sibling_cpumask
#define topology_possible_sibling_cpumask(cpu) cpumask_of(cpu)
#endif
#ifdef CONFIG_SCHED_SMT
static inline const struct cpumask *cpu_smt_mask(int cpu)