linux-next/arch/loongarch/include/asm
Huacai Chen c87e12e0e8 LoongArch: Change __my_cpu_offset definition to avoid mis-optimization
From GCC commit 3f13154553f8546a ("df-scan: remove ad-hoc handling of
global regs in asms"), global registers will no longer be forced to add
to the def-use chain. Then current_thread_info(), current_stack_pointer
and __my_cpu_offset may be lifted out of the loop because they are no
longer treated as "volatile variables".

This optimization is still correct for the current_thread_info() and
current_stack_pointer usages because they are associated to a thread.
However it is wrong for __my_cpu_offset because it is associated to a
CPU rather than a thread: if the thread migrates to a different CPU in
the loop, __my_cpu_offset should be changed.

Change __my_cpu_offset definition to treat it as a "volatile variable",
in order to avoid such a mis-optimization.

Cc: stable@vger.kernel.org
Reported-by: Xiaotian Wu <wuxiaotian@loongson.cn>
Reported-by: Miao Wang <shankerwangmiao@gmail.com>
Signed-off-by: Xing Li <lixing@loongson.cn>
Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
Signed-off-by: Rui Wang <wangrui@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-03-19 15:50:34 +08:00
..
vdso LoongArch: Add support to clone a time namespace 2023-06-29 20:58:43 +08:00
acenv.h LoongArch: Add boot and setup routines 2022-06-03 20:09:28 +08:00
acpi.h LoongArch: Change acpi_core_pic[NR_CPUS] to acpi_core_pic[MAX_CORE_PIC] 2024-02-06 12:32:05 +08:00
addrspace.h LoongArch: Use _UL() and _ULL() 2023-09-20 14:26:29 +08:00
alternative-asm.h LoongArch: Add alternative runtime patching mechanism 2022-12-14 08:36:11 +08:00
alternative.h LoongArch: Add alternative runtime patching mechanism 2022-12-14 08:36:11 +08:00
asm-extable.h LoongArch: BPF: Add BPF exception tables 2022-12-14 08:36:11 +08:00
asm-offsets.h LoongArch: Add misc common routines 2022-06-03 20:09:28 +08:00
asm-prototypes.h LoongArch: Add Loongson Binary Translation (LBT) extension support 2023-09-06 22:53:55 +08:00
asm.h LoongArch: Mark some assembler symbols as non-kprobe-able 2023-02-25 22:12:17 +08:00
asmmacro.h LoongArch: Record pc instead of offset in la_abs relocation 2023-11-21 15:03:25 +08:00
atomic.h LoongArch: Relax memory ordering for atomic operations 2023-11-08 14:12:15 +08:00
barrier.h LoongArch: Support dbar with different hints 2023-06-29 20:58:44 +08:00
bitops.h LoongArch: Add atomic/locking headers 2022-06-03 20:09:28 +08:00
bitrev.h LoongArch: Add atomic/locking headers 2022-06-03 20:09:28 +08:00
bootinfo.h LoongArch: Let cores_io_master cover the largest NR_CPUS 2024-01-17 12:43:08 +08:00
branch.h LoongArch: Make compute_return_era() return void 2022-06-25 18:06:07 +08:00
bug.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
cache.h LoongArch: Add memory management 2022-06-03 20:09:28 +08:00
cacheflush.h mm: rationalise flush_icache_pages() and flush_icache_page() 2023-08-24 16:20:25 -07:00
cacheops.h LoongArch: Refactor cache probe and flush methods 2022-10-12 16:36:14 +08:00
checksum.h LoongArch: Add checksum optimization for 64-bit system 2023-05-01 17:19:43 +08:00
clocksource.h LoongArch: Add other common headers 2022-06-03 20:09:28 +08:00
cmpxchg.h locking/arch: Rename all internal __xchg() names to __arch_xchg() 2023-04-29 09:08:44 +02:00
cpu-features.h LoongArch: Introduce hardware page table walker 2023-06-29 20:58:44 +08:00
cpu-info.h LoongArch: Add SMT (Simultaneous Multi-Threading) support 2023-06-29 20:58:43 +08:00
cpu.h LoongArch: Introduce hardware page table walker 2023-06-29 20:58:44 +08:00
cpufeature.h LoongArch: Add ELF and module support 2022-06-03 20:09:28 +08:00
crash_core.h LoongArch: Use generic interface to support crashkernel=X,[high,low] 2024-01-17 12:43:08 +08:00
delay.h LoongArch: Add some library functions 2022-06-03 20:09:28 +08:00
dma-direct.h LoongArch: Add Non-Uniform Memory Access (NUMA) support 2022-06-03 20:09:29 +08:00
dma.h LoongArch: Add PCI controller support 2022-08-12 13:10:11 +08:00
dmi.h LoongArch: Add boot and setup routines 2022-06-03 20:09:28 +08:00
efi.h efi/loongarch: Directly position the loaded image file 2023-12-19 11:16:37 +01:00
elf.h LoongArch: Fix and simplify fcsr initialization on execve() 2024-01-17 12:43:08 +08:00
entry-common.h LoongArch: Add exception/interrupt handling 2022-06-03 20:09:28 +08:00
exception.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
exec.h LoongArch: Add ELF and module support 2022-06-03 20:09:28 +08:00
extable.h LoongArch: BPF: Add BPF exception tables 2022-12-14 08:36:11 +08:00
fb.h fbdev: Rename fb_mem*() helpers 2023-05-18 11:07:54 +02:00
fixmap.h LoongArch: Use TLB for ioremap() 2022-10-12 16:36:14 +08:00
fpregdef.h LoongArch: Prepare for assemblers with proper FCSR class support 2023-06-29 20:58:43 +08:00
fpu.h LoongArch: Ensure FP/SIMD registers in the core dump file is up to date 2023-08-26 22:21:57 +08:00
ftrace.h LoongArch: Fix definition of ftrace_regs_set_instruction_pointer() 2024-01-17 12:43:08 +08:00
futex.h LoongArch: extable: Add a dedicated uaccess handler 2022-12-14 08:36:11 +08:00
gpr-num.h LoongArch: extable: Also recognize ABI names of registers 2023-06-29 20:58:43 +08:00
hardirq.h LoongArch: Fix the !CONFIG_SMP build 2022-06-08 11:00:40 +08:00
hugetlb.h LoongArch: Add memory management 2022-06-03 20:09:28 +08:00
hw_breakpoint.h LoongArch: Add hardware breakpoints/watchpoints support 2023-02-25 22:12:17 +08:00
hw_irq.h LoongArch: Add exception/interrupt handling 2022-06-03 20:09:28 +08:00
idle.h LoongArch: Add process management 2022-06-03 20:09:28 +08:00
inst.h LoongArch changes for v6.7 2023-11-12 10:58:08 -08:00
io.h LoongArch: Disable WUC for pgprot_writecombine() like ioremap_wc() 2023-10-18 08:42:52 +08:00
irq_regs.h LoongArch: Add exception/interrupt handling 2022-06-03 20:09:28 +08:00
irq.h nmi_backtrace: allow excluding an arbitrary CPU 2023-08-18 10:19:00 -07:00
irqflags.h LoongArch: Remove useless header compiler.h 2022-07-29 18:22:32 +08:00
jump_label.h work around gcc bugs with 'asm goto' with outputs 2024-02-09 15:57:48 -08:00
kasan.h LoongArch: Don't inline kasan_mem_to_shadow()/kasan_shadow_to_mem() 2023-09-20 14:26:29 +08:00
Kbuild LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
kdebug.h LoongArch: Remove five DIE_* definitions in kdebug.h 2023-06-29 20:58:44 +08:00
kexec.h LoongArch: Add kexec support 2022-10-12 16:36:19 +08:00
kfence.h LoongArch: Add KFENCE (Kernel Electric-Fence) support 2023-09-06 22:54:16 +08:00
kgdb.h LoongArch: Add basic KGDB & KDB support 2023-09-06 22:53:55 +08:00
kprobes.h LoongArch: Use larch_insn_gen_break() for kprobes 2023-06-29 20:58:44 +08:00
kvm_csr.h LoongArch: KVM: Add vcpu related header files 2023-10-02 10:01:27 +08:00
kvm_host.h LoongArch KVM changes for v6.8 2024-01-02 13:16:29 -05:00
kvm_mmu.h LoongArch: KVM: Implement kvm mmu operations 2023-10-02 10:01:28 +08:00
kvm_types.h LoongArch: KVM: Add kvm related header files 2023-10-02 10:01:20 +08:00
kvm_vcpu.h LoongArch: KVM: Add returns to SIMD stubs 2024-01-26 16:22:07 +08:00
lbt.h LoongArch: Add Loongson Binary Translation (LBT) extension support 2023-09-06 22:53:55 +08:00
linkage.h LoongArch: Use SYM_CODE_* to annotate exception handlers 2023-10-18 08:42:52 +08:00
local.h locking/local, arch: Rewrite local_add_unless() as a static inline function 2023-10-04 11:38:11 +02:00
loongarch.h LoongArch: Slightly clean up drdtime() 2023-12-09 15:49:15 +08:00
loongson.h LoongArch: Add suspend (ACPI S3) support 2022-12-14 08:41:53 +08:00
mmu_context.h LoongArch: Add process management 2022-06-03 20:09:28 +08:00
mmu.h LoongArch: Add process management 2022-06-03 20:09:28 +08:00
mmzone.h LoongArch: Use static defined zero page rather than allocated 2023-09-06 22:53:10 +08:00
module.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
module.lds.h LoongArch: module: set section addresses to 0x0 2023-04-18 19:38:58 +08:00
numa.h LoongArch: Add Non-Uniform Memory Access (NUMA) support 2022-06-03 20:09:29 +08:00
orc_header.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
orc_lookup.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
orc_types.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
page.h LoongArch: mm: Add page table mapped mode support for virt_to_page() 2023-09-06 22:53:55 +08:00
pci.h LoongArch: Add PCI controller support 2022-08-12 13:10:11 +08:00
percpu.h LoongArch: Change __my_cpu_offset definition to avoid mis-optimization 2024-03-19 15:50:34 +08:00
perf_event.h LoongArch: Add perf events support 2022-10-12 16:36:14 +08:00
pgalloc.h mm: add statistics for PUD level pagetable 2023-10-06 14:44:10 -07:00
pgtable-bits.h LoongArch: Disable WUC for pgprot_writecombine() like ioremap_wc() 2023-10-18 08:42:52 +08:00
pgtable.h mm/mglru: add dummy pmd_dirty() 2024-01-05 10:17:44 -08:00
prefetch.h LoongArch: Add other common headers 2022-06-03 20:09:28 +08:00
processor.h LoongArch: Add Loongson Binary Translation (LBT) extension support 2023-09-06 22:53:55 +08:00
ptrace.h LoongArch: Add identifier names to arguments of die() declaration 2023-08-25 23:40:26 +08:00
qspinlock.h LoongArch: Support dbar with different hints 2023-06-29 20:58:44 +08:00
regdef.h LoongArch: Add CPU definition headers 2022-06-03 20:09:28 +08:00
seccomp.h LoongArch: Add system call support 2022-06-03 20:09:28 +08:00
serial.h LoongArch: Add other common headers 2022-06-03 20:09:28 +08:00
setup.h LoongArch: Record pc instead of offset in la_abs relocation 2023-11-21 15:03:25 +08:00
smp.h LoongArch: Fix some build warnings with W=1 2023-09-20 14:26:28 +08:00
sparsemem.h LoongArch: add sparse memory vmemmap support 2022-12-11 18:12:12 -08:00
spinlock_types.h LoongArch: Add qspinlock support 2022-10-12 16:36:14 +08:00
spinlock.h LoongArch: Add qspinlock support 2022-10-12 16:36:14 +08:00
stackframe.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
stackprotector.h LoongArch: Add basic STACKPROTECTOR support 2022-12-14 08:41:53 +08:00
stacktrace.h LoongArch: Add USER_STACKTRACE support 2022-08-12 13:10:11 +08:00
string.h LoongArch: Add KASAN (Kernel Address Sanitizer) support 2023-09-06 22:54:16 +08:00
suspend.h LoongArch: Export some arch-specific pm interfaces 2023-06-29 20:58:44 +08:00
switch_to.h LoongArch: Add Loongson Binary Translation (LBT) extension support 2023-09-06 22:53:55 +08:00
syscall.h LoongArch: Add system call support 2022-06-03 20:09:28 +08:00
thread_info.h LoongArch: Add kernel livepatching support 2024-03-11 22:23:47 +08:00
time.h LoongArch: Add suspend (ACPI S3) support 2022-12-14 08:41:53 +08:00
timex.h LoongArch: Remove MIPS comment about cycle counter 2022-06-08 11:00:40 +08:00
tlb.h LoongArch: Introduce hardware page table walker 2023-06-29 20:58:44 +08:00
tlbflush.h LoongArch: Add multi-processor (SMP) support 2022-06-03 20:09:29 +08:00
topology.h LoongArch: Add Non-Uniform Memory Access (NUMA) support 2022-06-03 20:09:29 +08:00
types.h LoongArch: Add other common headers 2022-06-03 20:09:28 +08:00
uaccess.h LoongArch: Use la.pcrel instead of la.abs when it's trivially possible 2023-02-25 22:12:16 +08:00
unistd.h LoongArch: Add system call support 2022-06-03 20:09:28 +08:00
unwind_hints.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
unwind.h LoongArch: Add ORC stack unwinder support 2024-03-11 22:23:47 +08:00
uprobes.h LoongArch: Add uprobes support 2023-06-29 20:58:44 +08:00
vdso.h LoongArch: Add vDSO syscall __vdso_getcpu() 2022-08-12 13:10:11 +08:00
vermagic.h LoongArch: Add ELF and module support 2022-06-03 20:09:28 +08:00
vmalloc.h LoongArch: Add memory management 2022-06-03 20:09:28 +08:00
xor_simd.h LoongArch: Add SIMD-optimized XOR routines 2023-09-06 22:53:55 +08:00
xor.h LoongArch: Add SIMD-optimized XOR routines 2023-09-06 22:53:55 +08:00