Commit b19e8c68 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull arm64 fixes from Will Deacon:
 "Summary below, but it's all reasonably straightforward. There are some
  more fixes on the horizon, but nothing disastrous yet.

  Summary:

   - Fix build when KASLR is enabled but CONFIG_ARCH_RANDOM is not set

   - Fix context-switching of SSBS state on systems that implement it

   - Fix spinlock compiler warning introduced during the merge window

   - Fix incorrect header inclusion (linux/clk-provider.h)

   - Use SYSCTL_{ZERO,ONE} instead of rolling our own static variables

   - Don't scream if optional SMMUv3 PMU irq is missing

   - Remove some unused function prototypes"

* tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
  arm64: time: Replace <linux/clk-provider.h> by <linux/of_clk.h>
  arm64: Fix CONFIG_ARCH_RANDOM=n build
  perf/smmuv3: Use platform_get_irq_optional() for wired interrupt
  arm64/spinlock: fix a -Wunused-function warning
  arm64: ssbs: Fix context-switch when SSBS is present on all CPUs
  arm64: use shared sysctl constants
  arm64: Drop do_el0_ia_bp_hardening() & do_sp_pc_abort() declarations
parents 1d40890a d9177184
Loading
Loading
Loading
Loading
+0 −4
Original line number Original line Diff line number Diff line
@@ -33,7 +33,6 @@ static inline u32 disr_to_esr(u64 disr)


asmlinkage void enter_from_user_mode(void);
asmlinkage void enter_from_user_mode(void);
void do_mem_abort(unsigned long addr, unsigned int esr, struct pt_regs *regs);
void do_mem_abort(unsigned long addr, unsigned int esr, struct pt_regs *regs);
void do_sp_pc_abort(unsigned long addr, unsigned int esr, struct pt_regs *regs);
void do_undefinstr(struct pt_regs *regs);
void do_undefinstr(struct pt_regs *regs);
asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr);
asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr);
void do_debug_exception(unsigned long addr_if_watchpoint, unsigned int esr,
void do_debug_exception(unsigned long addr_if_watchpoint, unsigned int esr,
@@ -47,7 +46,4 @@ void bad_el0_sync(struct pt_regs *regs, int reason, unsigned int esr);
void do_cp15instr(unsigned int esr, struct pt_regs *regs);
void do_cp15instr(unsigned int esr, struct pt_regs *regs);
void do_el0_svc(struct pt_regs *regs);
void do_el0_svc(struct pt_regs *regs);
void do_el0_svc_compat(struct pt_regs *regs);
void do_el0_svc_compat(struct pt_regs *regs);
void do_el0_ia_bp_hardening(unsigned long addr,  unsigned int esr,
			    struct pt_regs *regs);

#endif	/* __ASM_EXCEPTION_H */
#endif	/* __ASM_EXCEPTION_H */
+5 −1
Original line number Original line Diff line number Diff line
@@ -18,6 +18,10 @@
 * See:
 * See:
 * https://lore.kernel.org/lkml/20200110100612.GC2827@hirez.programming.kicks-ass.net
 * https://lore.kernel.org/lkml/20200110100612.GC2827@hirez.programming.kicks-ass.net
 */
 */
#define vcpu_is_preempted(cpu)	false
#define vcpu_is_preempted vcpu_is_preempted
static inline bool vcpu_is_preempted(int cpu)
{
	return false;
}


#endif /* __ASM_SPINLOCK_H */
#endif /* __ASM_SPINLOCK_H */
+1 −0
Original line number Original line Diff line number Diff line
@@ -11,6 +11,7 @@
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/types.h>


#include <asm/archrandom.h>
#include <asm/cacheflush.h>
#include <asm/cacheflush.h>
#include <asm/fixmap.h>
#include <asm/fixmap.h>
#include <asm/kernel-pgtable.h>
#include <asm/kernel-pgtable.h>
+9 −4
Original line number Original line Diff line number Diff line
@@ -466,6 +466,13 @@ static void ssbs_thread_switch(struct task_struct *next)
	if (unlikely(next->flags & PF_KTHREAD))
	if (unlikely(next->flags & PF_KTHREAD))
		return;
		return;


	/*
	 * If all CPUs implement the SSBS extension, then we just need to
	 * context-switch the PSTATE field.
	 */
	if (cpu_have_feature(cpu_feature(SSBS)))
		return;

	/* If the mitigation is enabled, then we leave SSBS clear. */
	/* If the mitigation is enabled, then we leave SSBS clear. */
	if ((arm64_get_ssbd_state() == ARM64_SSBD_FORCE_ENABLE) ||
	if ((arm64_get_ssbd_state() == ARM64_SSBD_FORCE_ENABLE) ||
	    test_tsk_thread_flag(next, TIF_SSBD))
	    test_tsk_thread_flag(next, TIF_SSBD))
@@ -608,8 +615,6 @@ long get_tagged_addr_ctrl(void)
 * only prevents the tagged address ABI enabling via prctl() and does not
 * only prevents the tagged address ABI enabling via prctl() and does not
 * disable it for tasks that already opted in to the relaxed ABI.
 * disable it for tasks that already opted in to the relaxed ABI.
 */
 */
static int zero;
static int one = 1;


static struct ctl_table tagged_addr_sysctl_table[] = {
static struct ctl_table tagged_addr_sysctl_table[] = {
	{
	{
@@ -618,8 +623,8 @@ static struct ctl_table tagged_addr_sysctl_table[] = {
		.data		= &tagged_addr_disabled,
		.data		= &tagged_addr_disabled,
		.maxlen		= sizeof(int),
		.maxlen		= sizeof(int),
		.proc_handler	= proc_dointvec_minmax,
		.proc_handler	= proc_dointvec_minmax,
		.extra1		= &zero,
		.extra1		= SYSCTL_ZERO,
		.extra2		= &one,
		.extra2		= SYSCTL_ONE,
	},
	},
	{ }
	{ }
};
};
+1 −1
Original line number Original line Diff line number Diff line
@@ -23,7 +23,7 @@
#include <linux/irq.h>
#include <linux/irq.h>
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/clocksource.h>
#include <linux/clocksource.h>
#include <linux/clk-provider.h>
#include <linux/of_clk.h>
#include <linux/acpi.h>
#include <linux/acpi.h>


#include <clocksource/arm_arch_timer.h>
#include <clocksource/arm_arch_timer.h>
Loading