linux-imx/kernel/sched
Andrea Parri a2977c0ca3 membarrier: riscv: Add full memory barrier in switch_mm()
commit d6cfd1770f upstream.

The membarrier system call requires a full memory barrier after storing
to rq->curr, before going back to user-space.  The barrier is only
needed when switching between processes: the barrier is implied by
mmdrop() when switching from kernel to userspace, and it's not needed
when switching from userspace to kernel.

Rely on the feature/mechanism ARCH_HAS_MEMBARRIER_CALLBACKS and on the
primitive membarrier_arch_switch_mm(), already adopted by the PowerPC
architecture, to insert the required barrier.

Fixes: fab957c11e ("RISC-V: Atomic and Locking Code")
Signed-off-by: Andrea Parri <parri.andrea@gmail.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://lore.kernel.org/r/20240131144936.29190-2-parri.andrea@gmail.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: WangYuli <wangyuli@uniontech.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-09-12 11:11:45 +02:00
..
autogroup.c
autogroup.h
build_policy.c
build_utility.c
clock.c
completion.c
core_sched.c
core.c membarrier: riscv: Add full memory barrier in switch_mm() 2024-09-12 11:11:45 +02:00
cpuacct.c
cpudeadline.c
cpudeadline.h
cpufreq_schedutil.c cpufreq: schedutil: Update next_freq when cpufreq_limits change 2023-10-05 22:09:50 +02:00
cpufreq.c
cpupri.c sched/rt: Fix live lock between select_fallback_rq() and RT push 2023-09-28 22:58:13 +02:00
cpupri.h
cputime.c sched/cputime: Fix mul_u64_u64_div_u64() precision for cputime 2024-08-14 13:58:47 +02:00
deadline.c sched: Fix stop_one_cpu_nowait() vs hotplug 2023-11-20 11:58:52 +01:00
debug.c
fair.c sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks 2024-08-03 08:54:14 +02:00
features.h
idle.c kernel/sched: Modify initial boot task idle setup 2023-09-19 10:48:04 +02:00
isolation.c sched/isolation: Fix boot crash when maxcpus < first housekeeping CPU 2024-06-12 11:11:24 +02:00
loadavg.c
Makefile
membarrier.c sched/membarrier: reduce the ability to hammer on sys_membarrier 2024-02-23 09:25:27 +01:00
pelt.c
pelt.h
psi.c sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath 2024-07-18 13:21:25 +02:00
rt.c sched/rt: Disallow writing invalid values to sched_rt_period_us 2024-03-01 13:34:47 +01:00
sched-pelt.h
sched.h sched/fair: set_load_weight() must also call reweight_task() for SCHED_IDLE tasks 2024-08-03 08:54:14 +02:00
smp.h
stats.c profiling: remove profile=sleep support 2024-08-14 13:58:47 +02:00
stats.h sched: Move psi_account_irqtime() out of update_rq_clock_task() hotpath 2024-07-18 13:21:25 +02:00
stop_task.c
swait.c
topology.c sched/topology: Handle NUMA_NO_NODE in sched_numa_find_nth_cpu() 2024-08-29 17:33:24 +02:00
wait_bit.c
wait.c