linux-stable/arch/riscv/kernel
Samuel Holland f40cab8e18
riscv: Fix SMP when shadow call stacks are enabled
This fixes two bugs in SCS initialization for secondary CPUs. First,
the SCS was not initialized at all in the spinwait boot path. Second,
the code for the SBI HSM path attempted to initialize the SCS before
enabling the MMU. However, that involves dereferencing the thread
pointer, which requires the MMU to be enabled.

Fix both issues by setting up the SCS in the common secondary entry
path, after enabling the MMU.

Fixes: d1584d791a ("riscv: Implement Shadow Call Stack")
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Sami Tolvanen <samitolvanen@google.com>
Link: https://lore.kernel.org/r/20231121211958.3158576-1-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2023-12-06 07:15:19 -08:00
..
compat_vdso kbuild: unify vdso_install rules 2023-10-28 21:09:02 +09:00
pi riscv: Introduce virtual kernel mapping KASLR 2023-09-05 19:49:27 -07:00
probes riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
tests Support rv32 ULEB128 test 2023-12-06 04:08:39 -08:00
vdso RISC-V Patches for the 6.7 Merge Window, Part 2 2023-11-10 09:23:17 -08:00
.gitignore
acpi.c RISC-V: ACPI: Enhance acpi_os_ioremap with MMIO remapping 2023-10-26 09:40:31 -07:00
alternative.c Merge patch series "Add non-coherent DMA support for AX45MP" 2023-09-08 11:24:34 -07:00
asm-offsets.c riscv: Implement Shadow Call Stack 2023-10-27 14:43:08 -07:00
cacheinfo.c RISC-V Patches for the 6.4 Merge Window, Part 1 2023-04-28 16:55:39 -07:00
cfi.c riscv: Add CFI error handling 2023-08-23 14:16:39 -07:00
compat_signal.c
compat_syscall_table.c riscv: Implement syscall wrappers 2023-08-23 14:16:36 -07:00
copy-unaligned.h RISC-V: Probe for unaligned access speed 2023-09-01 09:06:25 -07:00
copy-unaligned.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
cpu-hotplug.c riscv: Switch to hotplug core state synchronization 2023-05-15 13:44:59 +02:00
cpu.c Merge patch series "Linux RISC-V AIA Preparatory Series" 2023-11-08 18:57:17 -08:00
cpu_ops.c RISC-V: Align SBI probe implementation with spec 2023-04-29 13:04:50 -07:00
cpu_ops_sbi.c
cpu_ops_spinwait.c
cpufeature.c RISC-V Patches for the 6.7 Merge Window, Part 2 2023-11-10 09:23:17 -08:00
crash_core.c riscv: Export va_kernel_pa_offset in vmcoreinfo 2023-08-02 13:50:31 -07:00
crash_dump.c
crash_save_regs.S
efi-header.S riscv: Prepare EFI header for relocatable kernels 2023-04-19 07:46:28 -07:00
efi.c
elf_kexec.c Merge patch series "riscv: kexec: cleanup and fixups" 2023-10-31 19:15:41 -07:00
entry.S riscv: kernel: Use correct SYM_DATA_*() macro for data 2023-11-06 09:42:48 -08:00
fpu.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
ftrace.c
head.h
head.S riscv: Fix SMP when shadow call stacks are enabled 2023-12-06 07:15:19 -08:00
hibernate-asm.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
hibernate.c riscv: hibernate: remove WARN_ON in save_processor_state 2023-06-23 10:06:22 -07:00
image-vars.h efi: move screen_info into efi init code 2023-10-17 16:33:39 +02:00
irq.c Merge patch "drivers: perf: Do not broadcast to other cpus when starting a counter" 2023-11-09 06:44:13 -08:00
jump_label.c
kexec_relocate.S riscv: kexec: Cleanup riscv_kexec_relocate 2023-09-20 02:53:29 -07:00
kgdb.c
machine_kexec.c
machine_kexec_file.c
Makefile Merge patch series "riscv: Add remaining module relocations and tests" 2023-11-07 14:59:35 -08:00
mcount-dyn.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
mcount.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
module-sections.c
module.c riscv: Correct type casting in module loading 2023-12-04 11:02:38 -08:00
patch.c riscv: implement a memset like function for text 2023-09-06 06:26:06 -07:00
perf_callchain.c
perf_regs.c
process.c riscv: add support for PR_SET_UNALIGN and PR_GET_UNALIGN 2023-11-01 08:34:59 -07:00
ptrace.c RISC-V: Add ptrace support for vectors 2023-09-01 13:05:38 -07:00
reset.c
riscv_ksyms.c
sbi-ipi.c
sbi.c riscv: Make __flush_tlb_range() loop over pte instead of flushing the whole tlb 2023-11-06 07:20:51 -08:00
setup.c Merge patch "drivers: perf: Do not broadcast to other cpus when starting a counter" 2023-11-09 06:44:13 -08:00
signal.c Merge patch "drivers: perf: Do not broadcast to other cpus when starting a counter" 2023-11-09 06:44:13 -08:00
smp.c riscv: Fix CPU feature detection with SMP disabled 2023-08-08 15:28:25 -07:00
smpboot.c RISC-V: Probe misaligned access speed in parallel 2023-11-07 15:13:47 -08:00
soc.c
stacktrace.c
suspend.c RISC-V: Change suspend_save_csrs and suspend_restore_csrs to public function 2023-04-29 11:25:10 -07:00
suspend_entry.S riscv: Use SYM_*() assembly macros instead of deprecated ones 2023-11-06 09:42:47 -08:00
sys_riscv.c RISC-V: hwprobe: Always use u64 for extension bits 2023-12-06 05:28:08 -08:00
syscall_table.c riscv: Implement syscall wrappers 2023-08-23 14:16:36 -07:00
time.c RISC-V: time.c: Add ACPI support for time_init() 2023-06-01 08:45:13 -07:00
traps.c Merge patch "drivers: perf: Do not broadcast to other cpus when starting a counter" 2023-11-09 06:44:13 -08:00
traps_misaligned.c riscv: fix misaligned access handling of C.SWSP and C.SDSP 2023-12-06 06:18:02 -08:00
vdso.c riscv: vdso: include vdso/vsyscall.h for vdso_data 2023-07-04 07:54:41 -07:00
vector.c riscv: Remove now superfluous sentinel element from ctl_table array 2023-10-10 15:22:02 -07:00
vmlinux-xip.lds.S riscv: vmlinux-xip.lds.S: remove .alternative section 2023-06-25 16:24:03 -07:00
vmlinux.lds.S riscv: enable HAVE_LD_DEAD_CODE_DATA_ELIMINATION 2023-06-25 16:24:05 -07:00