diff options
author | Borislav Petkov <bp@suse.de> | 2022-02-14 00:03:04 +0300 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2022-02-14 00:03:04 +0300 |
commit | c0f6799de2a08f3860e8c13f85a7b9db51563ee0 (patch) | |
tree | 4ef1dde004954a7cc28a508df005c4dfe4d4cb99 /scripts | |
parent | 754e0b0e35608ed5206d6a67a791563c631cec07 (diff) | |
parent | b008893b08dcc8c30d756db05c229a1491bcb992 (diff) | |
download | linux-c0f6799de2a08f3860e8c13f85a7b9db51563ee0.tar.xz |
Merge tip:locking/core into tip:ras/core
Pick up helpers inlining work in order to address more noinstr fallout
in the MCE code.
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/atomic/fallbacks/read_acquire | 11 | ||||
-rwxr-xr-x | scripts/atomic/fallbacks/set_release | 7 |
2 files changed, 16 insertions, 2 deletions
diff --git a/scripts/atomic/fallbacks/read_acquire b/scripts/atomic/fallbacks/read_acquire index 803ba7561076..a0ea1d26e6b2 100755 --- a/scripts/atomic/fallbacks/read_acquire +++ b/scripts/atomic/fallbacks/read_acquire @@ -2,6 +2,15 @@ cat <<EOF static __always_inline ${ret} arch_${atomic}_read_acquire(const ${atomic}_t *v) { - return smp_load_acquire(&(v)->counter); + ${int} ret; + + if (__native_word(${atomic}_t)) { + ret = smp_load_acquire(&(v)->counter); + } else { + ret = arch_${atomic}_read(v); + __atomic_acquire_fence(); + } + + return ret; } EOF diff --git a/scripts/atomic/fallbacks/set_release b/scripts/atomic/fallbacks/set_release index 86ede759f24e..05cdb7f42477 100755 --- a/scripts/atomic/fallbacks/set_release +++ b/scripts/atomic/fallbacks/set_release @@ -2,6 +2,11 @@ cat <<EOF static __always_inline void arch_${atomic}_set_release(${atomic}_t *v, ${int} i) { - smp_store_release(&(v)->counter, i); + if (__native_word(${atomic}_t)) { + smp_store_release(&(v)->counter, i); + } else { + __atomic_release_fence(); + arch_${atomic}_set(v, i); + } } EOF |