Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6df025a0 authored by Satya Durga Srinivasu Prabhala's avatar Satya Durga Srinivasu Prabhala
Browse files

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: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent 478df4d9
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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);
+3 −0
Original line number Diff line number Diff line
@@ -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)