* for-next/52-bit-kva: (25 commits) Support for 52-bit virtual addressing in kernel space * for-next/cpu-topology: (9 commits) Move CPU topology parsing into core code and add support for ACPI 6.3 * for-next/error-injection: (2 commits) Support for function error injection via kprobes * for-next/perf: (8 commits) Support for i.MX8 DDR PMU and proper SMMUv3 group validation * for-next/psci-cpuidle: (7 commits) Move PSCI idle code into a new CPUidle driver * for-next/rng: (4 commits) Support for 'rng-seed' property being passed in the devicetree * for-next/smpboot: (3 commits) Reduce fragility of secondary CPU bringup in debug configurations * for-next/tbi: (10 commits) Introduce new syscall ABI with relaxed requirements for pointer tags * for-next/tlbi: (6 commits) Handle spurious page faults arising from kernel space
ac12cf810 parents f32c7a8 b333b0b d06fa5a 42d038c 3724e18 d55c5f2 dd753d9 ebef746 92af2b6 5c062ef89 files · +1971 −968Browse filesShowing the changes to include/linux (7 of 89 files). Show all
Unified · Split
| @@ -1302,11 +1302,16 @@ static inline int lpit_read_residency_count_address(u64 *address) · 1301 unmodified lines | ||
| 1302 | 1302 | #endif |
| 1303 | 1303 | |
| 1304 | 1304 | #ifdef CONFIG_ACPI_PPTT |
| 1305 | +int acpi_pptt_cpu_is_thread(unsigned int cpu); | |
| 1305 | 1306 | int find_acpi_cpu_topology(unsigned int cpu, int level); |
| 1306 | 1307 | int find_acpi_cpu_topology_package(unsigned int cpu); |
| 1307 | 1308 | int find_acpi_cpu_topology_hetero_id(unsigned int cpu); |
| 1308 | 1309 | int find_acpi_cpu_cache_topology(unsigned int cpu, int level); |
| 1309 | 1310 | #else |
| 1311 | +static inline int acpi_pptt_cpu_is_thread(unsigned int cpu) | |
| 1312 | +{ | |
| 1313 | + return -EINVAL; | |
| 1314 | +} | |
| 1310 | 1315 | static inline int find_acpi_cpu_topology(unsigned int cpu, int level) |
| 1311 | 1316 | { |
| 1312 | 1317 | return -EINVAL; |
| @@ -33,4 +33,30 @@ unsigned long topology_get_freq_scale(int cpu) · 32 unmodified lines | ||
| 33 | 33 | return per_cpu(freq_scale, cpu); |
| 34 | 34 | } |
| 35 | 35 | |
| 36 | +struct cpu_topology { | |
| 37 | + int thread_id; | |
| 38 | + int core_id; | |
| 39 | + int package_id; | |
| 40 | + int llc_id; | |
| 41 | + cpumask_t thread_sibling; | |
| 42 | + cpumask_t core_sibling; | |
| 43 | + cpumask_t llc_sibling; | |
| 44 | +}; | |
| 45 | + | |
| 46 | +#ifdef CONFIG_GENERIC_ARCH_TOPOLOGY | |
| 47 | +extern struct cpu_topology cpu_topology[NR_CPUS]; | |
| 48 | + | |
| 49 | +#define topology_physical_package_id(cpu) (cpu_topology[cpu].package_id) | |
| 50 | +#define topology_core_id(cpu) (cpu_topology[cpu].core_id) | |
| 51 | +#define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling) | |
| 52 | +#define topology_sibling_cpumask(cpu) (&cpu_topology[cpu].thread_sibling) | |
| 53 | +#define topology_llc_cpumask(cpu) (&cpu_topology[cpu].llc_sibling) | |
| 54 | +void init_cpu_topology(void); | |
| 55 | +void store_cpu_topology(unsigned int cpuid); | |
| 56 | +const struct cpumask *cpu_coregroup_mask(int cpu); | |
| 57 | +void update_siblings_masks(unsigned int cpu); | |
| 58 | +void remove_cpu_topology(unsigned int cpuid); | |
| 59 | +void reset_cpu_topology(void); | |
| 60 | +#endif | |
| 61 | + | |
| 36 | 62 | #endif /* _LINUX_ARCH_TOPOLOGY_H_ */ |
| @@ -256,7 +256,10 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov) · 255 unmodified lines | ||
| 256 | 256 | {return 0;} |
| 257 | 257 | #endif |
| 258 | 258 | |
| 259 | −#define __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, is_retention) \ | |
| 259 | +#define __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, \ | |
| 260 | + idx, \ | |
| 261 | + state, \ | |
| 262 | + is_retention) \ | |
| 260 | 263 | ({ \ |
| 261 | 264 | int __ret = 0; \ |
| 262 | 265 | \ |
| @@ -268,7 +271,7 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov) · 5 unmodified lines | ||
| 268 | 271 | if (!is_retention) \ |
| 269 | 272 | __ret = cpu_pm_enter(); \ |
| 270 | 273 | if (!__ret) { \ |
| 271 | − __ret = low_level_idle_enter(idx); \ | |
| 274 | + __ret = low_level_idle_enter(state); \ | |
| 272 | 275 | if (!is_retention) \ |
| 273 | 276 | cpu_pm_exit(); \ |
| 274 | 277 | } \ |
| @@ -277,9 +280,15 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov) · 2 unmodified lines | ||
| 277 | 280 | }) |
| 278 | 281 | |
| 279 | 282 | #define CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx) \ |
| 280 | − __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, 0) | |
| 283 | + __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, idx, 0) | |
| 281 | 284 | |
| 282 | 285 | #define CPU_PM_CPU_IDLE_ENTER_RETENTION(low_level_idle_enter, idx) \ |
| 283 | − __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, 1) | |
| 286 | + __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, idx, 1) | |
| 287 | + | |
| 288 | +#define CPU_PM_CPU_IDLE_ENTER_PARAM(low_level_idle_enter, idx, state) \ | |
| 289 | + __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, state, 0) | |
| 290 | + | |
| 291 | +#define CPU_PM_CPU_IDLE_ENTER_RETENTION_PARAM(low_level_idle_enter, idx, state) \ | |
| 292 | + __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, state, 1) | |
| 284 | 293 | |
| 285 | 294 | #endif /* _LINUX_CPUIDLE_H */ |
| @@ -2,16 +2,16 @@ · 1 unmodified line | ||
| 2 | 2 | #ifndef _LINUX_ERROR_INJECTION_H |
| 3 | 3 | #define _LINUX_ERROR_INJECTION_H |
| 4 | 4 | |
| 5 | −#ifdef CONFIG_FUNCTION_ERROR_INJECTION | |
| 5 | +#include <linux/compiler.h> | |
| 6 | +#include <asm-generic/error-injection.h> | |
| 6 | 7 | |
| 7 | −#include <asm/error-injection.h> | |
| 8 | +#ifdef CONFIG_FUNCTION_ERROR_INJECTION | |
| 8 | 9 | |
| 9 | 10 | extern bool within_error_injection_list(unsigned long addr); |
| 10 | 11 | extern int get_injectable_error_type(unsigned long addr); |
| 11 | 12 | |
| 12 | 13 | #else /* !CONFIG_FUNCTION_ERROR_INJECTION */ |
| 13 | 14 | |
| 14 | −#include <asm-generic/error-injection.h> | |
| 15 | 15 | static inline bool within_error_injection_list(unsigned long addr) |
| 16 | 16 | { |
| 17 | 17 | return false; |
| @@ -15,8 +15,8 @@ · 14 unmodified lines | ||
| 15 | 15 | |
| 16 | 16 | bool psci_tos_resident_on(int cpu); |
| 17 | 17 | |
| 18 | −int psci_cpu_init_idle(unsigned int cpu); | |
| 19 | −int psci_cpu_suspend_enter(unsigned long index); | |
| 18 | +int psci_cpu_suspend_enter(u32 state); | |
| 19 | +bool psci_power_state_is_valid(u32 state); | |
| 20 | 20 | |
| 21 | 21 | enum psci_conduit { |
| 22 | 22 | PSCI_CONDUIT_NONE, |
| @@ -19,6 +19,7 @@ struct random_ready_callback { · 18 unmodified lines | ||
| 19 | 19 | }; |
| 20 | 20 | |
| 21 | 21 | extern void add_device_randomness(const void *, unsigned int); |
| 22 | +extern void add_bootloader_randomness(const void *, unsigned int); | |
| 22 | 23 | |
| 23 | 24 | #if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__) |
| 24 | 25 | static inline void add_latent_entropy(void) |
| @@ -27,6 +27,7 @@ · 26 unmodified lines | ||
| 27 | 27 | #ifndef _LINUX_TOPOLOGY_H |
| 28 | 28 | #define _LINUX_TOPOLOGY_H |
| 29 | 29 | |
| 30 | +#include <linux/arch_topology.h> | |
| 30 | 31 | #include <linux/cpumask.h> |
| 31 | 32 | #include <linux/bitops.h> |
| 32 | 33 | #include <linux/mmzone.h> |