Commit 2bc655ce authored by Will Deacon's avatar Will Deacon
Browse files

Merge branch 'for-next/misc' into for-next/core

* for-next/misc:
  arm64: Select POSIX_CPU_TIMERS_TASK_WORK
  arm64: Document boot requirements for FEAT_SME_FA64
  arm64: ftrace: use function_nocfi for _mcount as well
  arm64: asm: setup.h: export common variables
  arm64/traps: Avoid unnecessary kernel/user pointer conversion
parents 082f6b4b a68773bd
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -340,6 +340,16 @@ Before jumping into the kernel, the following conditions must be met:
    - SMCR_EL2.LEN must be initialised to the same value for all CPUs the
      kernel will execute on.

  For CPUs with the Scalable Matrix Extension FA64 feature (FEAT_SME_FA64)

  - If EL3 is present:

    - SMCR_EL3.FA64 (bit 31) must be initialised to 0b1.

 - If the kernel is entered at EL1 and EL2 is present:

    - SMCR_EL2.FA64 (bit 31) must be initialised to 0b1.

The requirements described above for CPU mode, caches, MMUs, architected
timers, coherency and system registers apply to all CPUs.  All CPUs must
enter the kernel in the same exception level.  Where the values documented
+1 −0
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@ config ARM64
	select HAVE_PERF_REGS
	select HAVE_PERF_USER_STACK_DUMP
	select HAVE_REGS_AND_STACK_ACCESS_API
	select HAVE_POSIX_CPU_TIMERS_TASK_WORK
	select HAVE_FUNCTION_ARG_ACCESS_API
	select HAVE_FUTEX_CMPXCHG if FUTEX
	select MMU_GATHER_RCU_TABLE_FREE
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
#ifdef CONFIG_DYNAMIC_FTRACE_WITH_REGS
#define ARCH_SUPPORTS_FTRACE_OPS 1
#else
#define MCOUNT_ADDR		((unsigned long)_mcount)
#define MCOUNT_ADDR		((unsigned long)function_nocfi(_mcount))
#endif

/* The BL at the callsite's adjusted rec->ip */
+6 −0
Original line number Diff line number Diff line
@@ -8,4 +8,10 @@
void *get_early_fdt_ptr(void);
void early_fdt_map(u64 dt_phys);

/*
 * These two variables are used in the head.S file.
 */
extern phys_addr_t __fdt_pointer __initdata;
extern u64 __cacheline_aligned boot_args[4];

#endif
+2 −2
Original line number Diff line number Diff line
@@ -400,11 +400,11 @@ static int call_undef_hook(struct pt_regs *regs)
	unsigned long flags;
	u32 instr;
	int (*fn)(struct pt_regs *regs, u32 instr) = NULL;
	void __user *pc = (void __user *)instruction_pointer(regs);
	unsigned long pc = instruction_pointer(regs);

	if (!user_mode(regs)) {
		__le32 instr_le;
		if (get_kernel_nofault(instr_le, (__force __le32 *)pc))
		if (get_kernel_nofault(instr_le, (__le32 *)pc))
			goto exit;
		instr = le32_to_cpu(instr_le);
	} else if (compat_thumb_mode(regs)) {