Merge branches 'for-next/52-bit-kva', 'for-next/cpu-topology', 'for-next/error-injection', 'for-next/perf', 'for-next/psci-cpuidle', 'for-next/rng', 'for-next/smpboot', 'for-next/tbi' and 'for-next/tlbi' into for-next/core
* 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
This commit is contained in:

@@ -1302,11 +1302,16 @@ static inline int lpit_read_residency_count_address(u64 *address)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ACPI_PPTT
|
||||
int acpi_pptt_cpu_is_thread(unsigned int cpu);
|
||||
int find_acpi_cpu_topology(unsigned int cpu, int level);
|
||||
int find_acpi_cpu_topology_package(unsigned int cpu);
|
||||
int find_acpi_cpu_topology_hetero_id(unsigned int cpu);
|
||||
int find_acpi_cpu_cache_topology(unsigned int cpu, int level);
|
||||
#else
|
||||
static inline int acpi_pptt_cpu_is_thread(unsigned int cpu)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline int find_acpi_cpu_topology(unsigned int cpu, int level)
|
||||
{
|
||||
return -EINVAL;
|
||||
|
@@ -33,4 +33,30 @@ unsigned long topology_get_freq_scale(int cpu)
|
||||
return per_cpu(freq_scale, cpu);
|
||||
}
|
||||
|
||||
struct cpu_topology {
|
||||
int thread_id;
|
||||
int core_id;
|
||||
int package_id;
|
||||
int llc_id;
|
||||
cpumask_t thread_sibling;
|
||||
cpumask_t core_sibling;
|
||||
cpumask_t llc_sibling;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_GENERIC_ARCH_TOPOLOGY
|
||||
extern struct cpu_topology cpu_topology[NR_CPUS];
|
||||
|
||||
#define topology_physical_package_id(cpu) (cpu_topology[cpu].package_id)
|
||||
#define topology_core_id(cpu) (cpu_topology[cpu].core_id)
|
||||
#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)
|
||||
void init_cpu_topology(void);
|
||||
void store_cpu_topology(unsigned int cpuid);
|
||||
const struct cpumask *cpu_coregroup_mask(int cpu);
|
||||
void update_siblings_masks(unsigned int cpu);
|
||||
void remove_cpu_topology(unsigned int cpuid);
|
||||
void reset_cpu_topology(void);
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_ARCH_TOPOLOGY_H_ */
|
||||
|
@@ -256,7 +256,10 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov)
|
||||
{return 0;}
|
||||
#endif
|
||||
|
||||
#define __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, is_retention) \
|
||||
#define __CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, \
|
||||
idx, \
|
||||
state, \
|
||||
is_retention) \
|
||||
({ \
|
||||
int __ret = 0; \
|
||||
\
|
||||
@@ -268,7 +271,7 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov)
|
||||
if (!is_retention) \
|
||||
__ret = cpu_pm_enter(); \
|
||||
if (!__ret) { \
|
||||
__ret = low_level_idle_enter(idx); \
|
||||
__ret = low_level_idle_enter(state); \
|
||||
if (!is_retention) \
|
||||
cpu_pm_exit(); \
|
||||
} \
|
||||
@@ -277,9 +280,15 @@ static inline int cpuidle_register_governor(struct cpuidle_governor *gov)
|
||||
})
|
||||
|
||||
#define CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx) \
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, 0)
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, idx, 0)
|
||||
|
||||
#define CPU_PM_CPU_IDLE_ENTER_RETENTION(low_level_idle_enter, idx) \
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, 1)
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, idx, 1)
|
||||
|
||||
#define CPU_PM_CPU_IDLE_ENTER_PARAM(low_level_idle_enter, idx, state) \
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, state, 0)
|
||||
|
||||
#define CPU_PM_CPU_IDLE_ENTER_RETENTION_PARAM(low_level_idle_enter, idx, state) \
|
||||
__CPU_PM_CPU_IDLE_ENTER(low_level_idle_enter, idx, state, 1)
|
||||
|
||||
#endif /* _LINUX_CPUIDLE_H */
|
||||
|
@@ -2,16 +2,16 @@
|
||||
#ifndef _LINUX_ERROR_INJECTION_H
|
||||
#define _LINUX_ERROR_INJECTION_H
|
||||
|
||||
#ifdef CONFIG_FUNCTION_ERROR_INJECTION
|
||||
#include <linux/compiler.h>
|
||||
#include <asm-generic/error-injection.h>
|
||||
|
||||
#include <asm/error-injection.h>
|
||||
#ifdef CONFIG_FUNCTION_ERROR_INJECTION
|
||||
|
||||
extern bool within_error_injection_list(unsigned long addr);
|
||||
extern int get_injectable_error_type(unsigned long addr);
|
||||
|
||||
#else /* !CONFIG_FUNCTION_ERROR_INJECTION */
|
||||
|
||||
#include <asm-generic/error-injection.h>
|
||||
static inline bool within_error_injection_list(unsigned long addr)
|
||||
{
|
||||
return false;
|
||||
|
@@ -15,8 +15,8 @@
|
||||
|
||||
bool psci_tos_resident_on(int cpu);
|
||||
|
||||
int psci_cpu_init_idle(unsigned int cpu);
|
||||
int psci_cpu_suspend_enter(unsigned long index);
|
||||
int psci_cpu_suspend_enter(u32 state);
|
||||
bool psci_power_state_is_valid(u32 state);
|
||||
|
||||
enum psci_conduit {
|
||||
PSCI_CONDUIT_NONE,
|
||||
|
@@ -19,6 +19,7 @@ struct random_ready_callback {
|
||||
};
|
||||
|
||||
extern void add_device_randomness(const void *, unsigned int);
|
||||
extern void add_bootloader_randomness(const void *, unsigned int);
|
||||
|
||||
#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
|
||||
static inline void add_latent_entropy(void)
|
||||
|
@@ -27,6 +27,7 @@
|
||||
#ifndef _LINUX_TOPOLOGY_H
|
||||
#define _LINUX_TOPOLOGY_H
|
||||
|
||||
#include <linux/arch_topology.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/mmzone.h>
|
||||
|
Reference in New Issue
Block a user