linux-stable/arch/riscv/include/asm
Alexandre Ghiti 1d84afaf02
riscv: Fix fully ordered LR/SC xchg[8|16]() implementations
The fully ordered versions of xchg[8|16]() using LR/SC lack the
necessary memory barriers to guarantee the order.

Fix this by matching what is already implemented in the fully ordered
versions of cmpxchg() using LR/SC.

Suggested-by: Andrea Parri <parri.andrea@gmail.com>
Reported-by: Andrea Parri <parri.andrea@gmail.com>
Closes: https://lore.kernel.org/linux-riscv/ZlYbupL5XgzgA0MX@andrea/T/#u
Fixes: a8ed2b7a2c ("riscv/cmpxchg: Implement xchg for variables of size 1 and 2")
Signed-off-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Reviewed-by: Andrea Parri <parri.andrea@gmail.com>
Link: https://lore.kernel.org/r/20240530145546.394248-1-alexghiti@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-05-30 09:43:14 -07:00
..
vdso riscv: Using TOOLCHAIN_HAS_ZIHINTPAUSE marco replace zihintpause 2023-10-31 19:15:54 -07:00
Kbuild
acenv.h RISC-V: Add support to build the ACPI core 2023-06-01 08:45:01 -07:00
acpi.h RISC-V: ACPI: RHCT: Add function to get CBO block sizes 2023-10-26 09:40:33 -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 work around gcc bugs with 'asm goto' with outputs 2024-02-09 15:57:48 -08: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
atomic.h Merge patch series "Rework & improve riscv cmpxchg.h and atomic.h" 2024-04-28 14:50:33 -07:00
barrier.h riscv/barrier: Add missing space after ',' 2024-03-19 18:52:25 -07:00
bitops.h RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -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 riscv: Fix fully ordered LR/SC xchg[8|16]() implementations 2024-05-30 09:43:14 -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 RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -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
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 ftrace: riscv: move from REGS to ARGS 2024-05-22 16:12:48 -07:00
futex.h
gdb_xml.h
gpr-num.h
hugetlb.h mm: convert arch_clear_hugepage_flags to take a folio 2024-04-25 20:56:15 -07:00
hwcap.h RISC-V Patches for the 6.9 Merge Window 2024-03-22 10:41:13 -07:00
hwprobe.h RISC-V: hwprobe: Introduce which-cpus flag 2024-01-03 03:36:49 -08:00
image.h
insn-def.h RISC-V: capitalise CMO op macros 2023-11-05 09:11:23 -08:00
insn.h RISC-V Patches for the 6.6 Merge Window, Part 1 2023-09-01 08:09:48 -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 work around gcc bugs with 'asm goto' with outputs 2024-02-09 15:57:48 -08:00
kasan.h
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_aia_aplic.h RISC-V: KVM: Add APLIC related defines 2023-06-18 21:24:36 +05:30
kvm_aia_imsic.h RISC-V: KVM: Add IMSIC related defines 2023-06-18 21:24:34 +05:30
kvm_host.h RISCV: KVM: Introduce vcpu->reset_cntx_lock 2024-04-22 10:39:03 +05:30
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 Merge patch series "riscv: ASID-related and UP-related TLB flush enhancements" 2024-04-30 10:35:48 -07:00
mmu_context.h
mmzone.h
module.h
module.lds.h
numa.h
page.h Merge patch series "riscv: 64-bit NOMMU fixes and enhancements" 2024-04-28 14:50:35 -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: Fix text patching when IPI are used 2024-04-16 18:27:47 -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: Remove PGDIR_SIZE_L3 and TASK_SIZE_MIN 2024-05-16 12:59:57 -07:00
pgtable-bits.h riscv: Improve PTDUMP to show RSW with non-zero value 2023-11-05 09:41:53 -08:00
pgtable.h Merge patch series "riscv: access_ok() optimization" 2024-05-22 16:12:47 -07:00
probes.h
processor.h Merge patch series "riscv: Create and document PR_RISCV_SET_ICACHE_FLUSH_CTX prctl" 2024-04-30 10:35:42 -07:00
ptrace.h
sbi.h Merge patch series "riscv: Extension parsing fixes" 2024-05-22 16:12:58 -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_wrapper.h riscv: Mark __se_sys_* functions __used 2024-03-26 14:11:03 -07:00
thread_info.h Merge patch series "riscv: support kernel-mode Vector" 2024-01-16 07:14:04 -08: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
uaccess.h riscv: Fix spurious errors from __get/put_kernel_nofault 2024-03-26 08:34:48 -07:00
unistd.h
uprobes.h riscv: Only consider swbp/ss handlers for correct privileged mode 2023-09-20 06:45:27 -07:00
vdso.h
vector.h RISC-V: add helper function to read the vector VLEN 2024-01-22 17:55:15 -08: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