mirror-linux/arch/riscv/include/asm
Alexandre Ghiti 1ff95eb2be
riscv: Fix RISCV_ALTERNATIVE_EARLY
RISCV_ALTERNATIVE_EARLY will issue sbi_ecall() very early in the boot
process, before the first memory mapping is setup so we can't have any
instrumentation happening here.

In addition, when the kernel is relocatable, we must also not issue any
relocation this early since they would have been patched virtually only.

So, instead of disabling instrumentation for the whole kernel/sbi.c file
and compiling it with -fno-pie, simply move __sbi_ecall() and
__sbi_base_ecall() into their own file where this is fixed.

Reported-by: Conor Dooley <conor.dooley@microchip.com>
Closes: https://lore.kernel.org/linux-riscv/20240813-pony-truck-3e7a83e9759e@spud/
Reported-by: syzbot+cfbcb82adf6d7279fd35@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-riscv/00000000000065062c061fcec37b@google.com/
Fixes: 1745cfafeb ("riscv: don't use global static vars to store alternative data")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240829165048.49756-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-09-03 07:57:55 -07:00
..
vdso riscv: Provide a definition for 'pause' 2024-07-12 03:16:39 -07:00
vendor_extensions riscv: Extend cpufeature.c to detect vendor extensions 2024-07-22 15:36:54 -07:00
Kbuild riscv: convert to generic syscall table 2024-07-10 14:23:38 +02:00
acenv.h RISC-V: Add support to build the ACPI core 2023-06-01 08:45:01 -07:00
acpi.h ACPI: RISCV: Add NUMA support based on SRAT and SLIT 2024-07-22 07:13:06 -07:00
alternative-macros.h riscv: alternatives: fix a typo in comment 2023-08-02 13:49:07 -07:00
alternative.h Merge patch series "Add non-coherent DMA support for AX45MP" 2023-09-08 11:24:34 -07:00
arch_hweight.h riscv: lib: relax assembly constraints in hweight 2024-07-15 08:46:46 -07:00
archrandom.h RISC-V: Implement archrandom when Zkr is available 2024-01-17 18:20:49 -08:00
asm-extable.h riscv: select DCACHE_WORD_ACCESS for efficient unaligned access HW 2024-01-09 20:18:20 -08:00
asm-offsets.h
asm-prototypes.h riscv: vector: allow kernel-mode Vector with preemption 2024-01-16 07:14:02 -08:00
asm.h riscv: blacklist assembly symbols for kprobe 2024-01-24 15:59:42 -08:00
assembler.h RISC-V: Add arch functions to support hibernation/suspend-to-disk 2023-04-29 11:25:13 -07:00
atomic.h Merge patch series "Rework & improve riscv cmpxchg.h and atomic.h" 2024-04-28 14:50:33 -07:00
barrier.h riscv: Add Zawrs support for spinlocks 2024-07-12 03:16:42 -07:00
bitops.h riscv: Remove unnecessary int cast in variable_fls() 2024-07-10 14:30:35 -07:00
bug.h
cache.h riscv: mm: still create swiotlb buffer for kmalloc() bouncing if required 2024-04-30 10:35:45 -07:00
cacheflush.h riscv: Fix early ftrace nop patching 2024-05-23 08:22:17 -07:00
cacheinfo.h
cfi.h bpf, riscv64/cfi: Support kCFI + BPF on riscv64 2024-03-06 15:18:16 -08:00
checksum.h work around gcc bugs with 'asm goto' with outputs 2024-02-09 15:57:48 -08:00
clint.h
clocksource.h
cmpxchg.h RISC-V Patches for the 6.11 Merge Window, Part 1 2024-07-20 09:11:27 -07:00
compat.h riscv: Introduce set_compat_task() in asm/compat.h 2024-03-19 16:39:40 -07:00
cpu.h RISC-V: Add support to build the ACPI core 2023-06-01 08:45:01 -07:00
cpu_ops.h riscv: Use the same CPU operations for all CPUs 2024-01-04 15:03:07 -08:00
cpu_ops_sbi.h
cpufeature.h riscv: cpufeature: Extract common elements from extension checking 2024-07-22 15:36:57 -07:00
cpuidle.h
crash_reserve.h kexec: split crashkernel reservation code out from crash_core.c 2024-02-23 17:48:21 -08:00
csr.h RISC-V: KVM: Add perf sampling support for guests 2024-04-26 13:13:50 +05:30
current.h
delay.h
dma-noncoherent.h riscv: mm: dma-noncoherent: nonstandard cache operations support 2023-09-01 09:08:57 -07:00
dmi.h riscv: dmi: Add SMBIOS/DMI support 2024-06-26 08:02:33 -07:00
efi.h Merge patch series "riscv: Introduce KASLR" 2023-09-08 11:25:13 -07:00
elf.h riscv: Introduce set_compat_task() in asm/compat.h 2024-03-19 16:39:40 -07:00
entry-common.h riscv: vector: do not pass task_struct into riscv_v_vstate_{save,restore}() 2024-01-16 07:13:59 -08:00
errata_list.h RISC-V Patches for the 6.10 Merge Window, Part 1 2024-05-22 09:56:00 -07:00
extable.h riscv: mm: stub extable related functions/macros for !MMU 2023-06-14 07:17:45 -07:00
fence.h riscv/barrier: Consolidate fence definitions 2024-03-19 18:52:24 -07:00
fixmap.h
fpu.h riscv: add support for kernel-mode FPU 2024-05-19 14:36:19 -07:00
ftrace.h function_graph: Everyone uses HAVE_FUNCTION_GRAPH_RET_ADDR_PTR, remove it 2024-06-11 11:18:24 -04:00
futex.h
gdb_xml.h
gpr-num.h
hugetlb.h mm: provide mm_struct and address to huge_ptep_get() 2024-07-12 15:52:15 -07:00
hwcap.h riscv: Extend cpufeature.c to detect vendor extensions 2024-07-22 15:36:54 -07:00
hwprobe.h RISC-V: hwprobe: Add MISALIGNED_PERF key 2024-08-14 13:13:23 -07:00
image.h
insn-def.h riscv: Add Zawrs support for spinlocks 2024-07-12 03:16:42 -07:00
insn.h RISC-V: fix vector insn load/store width mask 2024-06-25 08:47:10 -07:00
io.h riscv/barrier: Consolidate fence definitions 2024-03-19 18:52:24 -07:00
irq.h init: consolidate prototypes in linux/init.h 2023-06-09 17:44:16 -07:00
irq_stack.h riscv: Deduplicate IRQ stack switching 2023-10-27 14:43:06 -07:00
irq_work.h arch: consolidate arch_irq_work_raise prototypes 2023-11-23 11:32:29 +01:00
irqflags.h riscv: Remove unnecessary irqflags processor.h include 2024-04-16 18:50:52 -07:00
jump_label.h riscv: jump_label: Simplify assembly syntax 2024-06-26 07:36:28 -07:00
kasan.h riscv: mm: Pre-allocate vmemmap/direct map/kasan PGD entries 2024-06-26 08:42:39 -07:00
kdebug.h
kexec.h
kfence.h riscv: Use accessors to page table entries instead of direct dereference 2023-12-20 10:48:15 -08:00
kgdb.h
kprobes.h riscv: Only consider swbp/ss handlers for correct privileged mode 2023-09-20 06:45:27 -07:00
kvm_aia.h RISC-V: KVM: Expose IMSIC registers as attributes of AIA irqchip 2023-06-19 22:27:58 +05:30
kvm_host.h ARM: 2024-07-20 12:41:03 -07:00
kvm_types.h
kvm_vcpu_fp.h
kvm_vcpu_insn.h
kvm_vcpu_pmu.h RISC-V: KVM: Improve firmware counter read function 2024-04-26 13:13:54 +05:30
kvm_vcpu_sbi.h RISC-V: KVM: Add support for SBI STA registers 2023-12-30 11:26:35 +05:30
kvm_vcpu_timer.h
kvm_vcpu_vector.h RISC-V: KVM: Improve vector save/restore functions 2023-08-08 17:26:05 +05:30
linkage.h
membarrier.h membarrier: riscv: Provide core serializing command 2024-02-15 08:04:14 -08:00
mmio.h riscv/barrier: Consolidate fence definitions 2024-03-19 18:52:24 -07:00
mmiowb.h riscv/barrier: Consolidate fence definitions 2024-03-19 18:52:24 -07:00
mmu.h riscv: mm: Change attribute from __init to __meminit for page functions 2024-06-26 08:42:39 -07:00
mmu_context.h
mmzone.h
module.h
module.lds.h
numa.h
page.h riscv: Extend sv39 linear mapping max size to 128G 2024-07-26 05:50:50 -07:00
paravirt.h RISC-V: paravirt: Add skeleton for pv-time support 2023-12-30 11:25:03 +05:30
paravirt_api_clock.h RISC-V: paravirt: Add skeleton for pv-time support 2023-12-30 11:25:03 +05:30
patch.h riscv: Pass patch_text() the length in bytes 2024-06-26 07:36:31 -07:00
pci.h
perf_event.h riscv: perf: Fix callchain parse error with kernel tracepoint events 2023-06-01 10:09:22 -07:00
pgalloc.h riscv: Use IPIs for remote cache/TLB flushes by default 2024-04-29 10:49:26 -07:00
pgtable-32.h RISC-V: Provide pgtable_l5_enabled on rv32 2023-10-31 19:15:50 -07:00
pgtable-64.h riscv: mm: Add support for ZONE_DEVICE 2024-06-26 08:42:46 -07:00
pgtable-bits.h riscv: mm: Add support for ZONE_DEVICE 2024-06-26 08:42:46 -07:00
pgtable.h - 875fa64577da ("mm/hugetlb_vmemmap: fix race with speculative PFN 2024-07-21 17:15:46 -07:00
probes.h
processor.h riscv: mm: Do not restrict mmap address based on hint 2024-08-29 06:03:29 -07:00
ptrace.h
sbi.h riscv: Fix RISCV_ALTERNATIVE_EARLY 2024-09-03 07:57:55 -07:00
scs.h riscv: Use separate IRQ shadow call stacks 2023-10-27 14:43:09 -07:00
seccomp.h
sections.h riscv: Check if the code to patch lies in the exit section 2024-01-09 10:58:59 -08:00
semihost.h
set_memory.h
signal32.h
simd.h riscv: vector: Fix a typo of preempt_v 2024-03-15 10:17:38 -07:00
smp.h riscv: Use IPIs for remote cache/TLB flushes by default 2024-04-29 10:49:26 -07:00
soc.h
sparsemem.h
stackprotector.h
stacktrace.h riscv: declare overflow_stack as exported from traps.c 2024-02-07 09:55:27 -08:00
string.h
suspend.h riscv: Do not save the scratch CSR during suspend 2024-04-28 14:50:36 -07:00
switch_to.h riscv: Include riscv_set_icache_flush_ctx prctl 2024-04-18 08:10:58 -07:00
sync_core.h membarrier: riscv: Provide core serializing command 2024-02-15 08:04:14 -08:00
syscall.h riscv: Implement syscall wrappers 2023-08-23 14:16:36 -07:00
syscall_table.h riscv: convert to generic syscall table 2024-07-10 14:23:38 +02:00
syscall_wrapper.h riscv: Mark __se_sys_* functions __used 2024-03-26 14:11:03 -07:00
thread_info.h riscv: enable HAVE_ARCH_STACKLEAK 2024-07-26 05:50:47 -07:00
timex.h init: consolidate prototypes in linux/init.h 2023-06-09 17:44:16 -07:00
tlb.h RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -07:00
tlbbatch.h riscv: Add support for BATCHED_UNMAP_TLB_FLUSH 2024-01-11 08:01:53 -08:00
tlbflush.h riscv: mm: Use a fixed layout for the MM context ID 2024-04-29 10:49:33 -07:00
topology.h sched/topology: Add a new arch_scale_freq_ref() method 2023-12-23 15:52:34 +01:00
trace.h riscv: Add tracepoints for SBI calls and returns 2024-07-10 13:23:09 -07:00
uaccess.h riscv: Fix spurious errors from __get/put_kernel_nofault 2024-03-26 08:34:48 -07:00
unistd.h riscv: convert to generic syscall table 2024-07-10 14:23:38 +02:00
uprobes.h riscv: Only consider swbp/ss handlers for correct privileged mode 2023-09-20 06:45:27 -07:00
vdso.h
vector.h riscv: vector: adjust minimum Vector requirement to ZVE32X 2024-05-30 14:33:10 -07:00
vendor_extensions.h riscv: cpufeature: Extract common elements from extension checking 2024-07-22 15:36:57 -07:00
vendorid_list.h riscv: errata: Rename defines for Andes 2024-03-12 07:13:12 -07:00
vermagic.h
vmalloc.h Revert "riscv: mm: support Svnapot in huge vmap" 2024-02-29 10:21:22 -08:00
word-at-a-time.h kernel.h: removed REPEAT_BYTE from kernel.h 2024-02-01 09:47:59 -08:00
xip_fixup.h riscv: Fixed wrong register in XIP_FIXUP_FLASH_OFFSET macro 2024-01-09 19:33:21 -08:00
xor.h riscv: Add vector extension XOR implementation 2024-01-16 07:13:55 -08:00