* 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 | #endif | 1302 | #endif |
| 1303 | 1303 | ||
| 1304 | #ifdef CONFIG_ACPI_PPTT | 1304 | #ifdef CONFIG_ACPI_PPTT |
| 1305 | int acpi_pptt_cpu_is_thread(unsigned int cpu); | ||
| 1305 | int find_acpi_cpu_topology(unsigned int cpu, int level); | 1306 | int find_acpi_cpu_topology(unsigned int cpu, int level); |
| 1306 | int find_acpi_cpu_topology_package(unsigned int cpu); | 1307 | int find_acpi_cpu_topology_package(unsigned int cpu); |
| 1307 | int find_acpi_cpu_topology_hetero_id(unsigned int cpu); | 1308 | int find_acpi_cpu_topology_hetero_id(unsigned int cpu); |
| 1308 | int find_acpi_cpu_cache_topology(unsigned int cpu, int level); | 1309 | int find_acpi_cpu_cache_topology(unsigned int cpu, int level); |
| 1309 | #else | 1310 | #else |
| 1311 | static inline int acpi_pptt_cpu_is_thread(unsigned int cpu) | ||
| 1312 | { | ||
| 1313 | return -EINVAL; | ||
| 1314 | } | ||
| 1310 | static inline int find_acpi_cpu_topology(unsigned int cpu, int level) | 1315 | static inline int find_acpi_cpu_topology(unsigned int cpu, int level) |
| 1311 | { | 1316 | { |
| 1312 | return -EINVAL; | 1317 | return -EINVAL; |
| @@ -33,4 +33,30 @@ unsigned long topology_get_freq_scale(int cpu) · 32 unmodified lines | |||
| 33 | return per_cpu(freq_scale, cpu); | 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 | #endif /* _LINUX_ARCH_TOPOLOGY_H_ */ | 62 | #endif /* _LINUX_ARCH_TOPOLOGY_H_ */ |
| @@ -256,7 +256,10 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov) · 255 unmodified lines | |||
| 256 | {return 0;} | 256 | {return 0;} |
| 257 | #endif | 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 | int __ret = 0; \ | 264 | int __ret = 0; \ |
| 262 | \ | 265 | \ |
| @@ -268,7 +271,7 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov) · 5 unmodified lines | |||
| 268 | if (!is_retention) \ | 271 | if (!is_retention) \ |
| 269 | __ret = cpu_pm_enter(); \ | 272 | __ret = cpu_pm_enter(); \ |
| 270 | if (!__ret) { \ | 273 | if (!__ret) { \ |
| 271 | __ret = low_level_idle_enter(idx); \ | 274 | __ret = low_level_idle_enter(state); \ |
| 272 | if (!is_retention) \ | 275 | if (!is_retention) \ |
| 273 | cpu_pm_exit(); \ | 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 | #define CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx) \ | 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 | #define CPU_PM_CPU_IDLE_ENTER_RETENTION(low_level_idle_enter, idx) \ | 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 | #endif /* _LINUX_CPUIDLE_H */ | 294 | #endif /* _LINUX_CPUIDLE_H */ |
| @@ -2,16 +2,16 @@ · 1 unmodified line | |||
| 2 | #ifndef _LINUX_ERROR_INJECTION_H | 2 | #ifndef _LINUX_ERROR_INJECTION_H |
| 3 | #define _LINUX_ERROR_INJECTION_H | 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 | extern bool within_error_injection_list(unsigned long addr); | 10 | extern bool within_error_injection_list(unsigned long addr); |
| 10 | extern int get_injectable_error_type(unsigned long addr); | 11 | extern int get_injectable_error_type(unsigned long addr); |
| 11 | 12 | ||
| 12 | #else /* !CONFIG_FUNCTION_ERROR_INJECTION */ | 13 | #else /* !CONFIG_FUNCTION_ERROR_INJECTION */ |
| 13 | 14 | ||
| 14 | #include <asm-generic/error-injection.h> | ||
| 15 | static inline bool within_error_injection_list(unsigned long addr) | 15 | static inline bool within_error_injection_list(unsigned long addr) |
| 16 | { | 16 | { |
| 17 | return false; | 17 | return false; |
| @@ -15,8 +15,8 @@ · 14 unmodified lines | |||
| 15 | 15 | ||
| 16 | bool psci_tos_resident_on(int cpu); | 16 | bool psci_tos_resident_on(int cpu); |
| 17 | 17 | ||
| 18 | int psci_cpu_init_idle(unsigned int cpu); | 18 | int psci_cpu_suspend_enter(u32 state); |
| 19 | int psci_cpu_suspend_enter(unsigned long index); | 19 | bool psci_power_state_is_valid(u32 state); |
| 20 | 20 | ||
| 21 | enum psci_conduit { | 21 | enum psci_conduit { |
| 22 | PSCI_CONDUIT_NONE, | 22 | PSCI_CONDUIT_NONE, |
| @@ -19,6 +19,7 @@ struct random_ready_callback { · 18 unmodified lines | |||
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | extern void add_device_randomness(const void *, unsigned int); | 21 | extern void add_device_randomness(const void *, unsigned int); |
| 22 | extern void add_bootloader_randomness(const void *, unsigned int); | ||
| 22 | 23 | ||
| 23 | #if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__) | 24 | #if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__) |
| 24 | static inline void add_latent_entropy(void) | 25 | static inline void add_latent_entropy(void) |
| @@ -27,6 +27,7 @@ · 26 unmodified lines | |||
| 27 | #ifndef _LINUX_TOPOLOGY_H | 27 | #ifndef _LINUX_TOPOLOGY_H |
| 28 | #define _LINUX_TOPOLOGY_H | 28 | #define _LINUX_TOPOLOGY_H |
| 29 | 29 | ||
| 30 | #include <linux/arch_topology.h> | ||
| 30 | #include <linux/cpumask.h> | 31 | #include <linux/cpumask.h> |
| 31 | #include <linux/bitops.h> | 32 | #include <linux/bitops.h> |
| 32 | #include <linux/mmzone.h> | 33 | #include <linux/mmzone.h> |