hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/include/linux/arch_topology.h
....@@ -7,6 +7,7 @@
77
88 #include <linux/types.h>
99 #include <linux/percpu.h>
10
+#include <linux/android_vendor.h>
1011
1112 void topology_normalize_cpu_scale(void);
1213 int topology_update_cpu_topology(void);
....@@ -16,9 +17,7 @@
1617
1718 DECLARE_PER_CPU(unsigned long, cpu_scale);
1819
19
-struct sched_domain;
20
-static inline
21
-unsigned long topology_get_cpu_scale(struct sched_domain *sd, int cpu)
20
+static inline unsigned long topology_get_cpu_scale(int cpu)
2221 {
2322 return per_cpu(cpu_scale, cpu);
2423 }
....@@ -27,18 +26,55 @@
2726
2827 DECLARE_PER_CPU(unsigned long, freq_scale);
2928
30
-static inline
31
-unsigned long topology_get_freq_scale(int cpu)
29
+static inline unsigned long topology_get_freq_scale(int cpu)
3230 {
3331 return per_cpu(freq_scale, cpu);
3432 }
3533
36
-DECLARE_PER_CPU(unsigned long, max_freq_scale);
34
+void topology_set_freq_scale(const struct cpumask *cpus, unsigned long cur_freq,
35
+ unsigned long max_freq);
36
+bool topology_scale_freq_invariant(void);
3737
38
-static inline
39
-unsigned long topology_get_max_freq_scale(struct sched_domain *sd, int cpu)
38
+bool arch_freq_counters_available(const struct cpumask *cpus);
39
+
40
+DECLARE_PER_CPU(unsigned long, thermal_pressure);
41
+
42
+static inline unsigned long topology_get_thermal_pressure(int cpu)
4043 {
41
- return per_cpu(max_freq_scale, cpu);
44
+ return per_cpu(thermal_pressure, cpu);
4245 }
4346
47
+void topology_set_thermal_pressure(const struct cpumask *cpus,
48
+ unsigned long th_pressure);
49
+
50
+struct cpu_topology {
51
+ int thread_id;
52
+ int core_id;
53
+ int package_id;
54
+ int llc_id;
55
+ cpumask_t thread_sibling;
56
+ cpumask_t core_sibling;
57
+ cpumask_t llc_sibling;
58
+
59
+ cpumask_t android_vendor_data1;
60
+};
61
+
62
+#ifdef CONFIG_GENERIC_ARCH_TOPOLOGY
63
+extern struct cpu_topology cpu_topology[NR_CPUS];
64
+
65
+#define topology_physical_package_id(cpu) (cpu_topology[cpu].package_id)
66
+#define topology_core_id(cpu) (cpu_topology[cpu].core_id)
67
+#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling)
68
+#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling)
69
+#define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_sibling)
70
+void init_cpu_topology(void);
71
+void store_cpu_topology(unsigned int cpuid);
72
+const struct cpumask *cpu_coregroup_mask(int cpu);
73
+void update_siblings_masks(unsigned int cpu);
74
+void remove_cpu_topology(unsigned int cpuid);
75
+void reset_cpu_topology(void);
76
+int parse_acpi_topology(void);
77
+#endif
78
+extern bool topology_update_done;
79
+
4480 #endif /* _LINUX_ARCH_TOPOLOGY_H_ */