Hi Will, > On Sun, Dec 14, 2025 at 11:22:44AM +0000, Yeoreum Yun wrote: > > Refactor futex atomic operations using ll/sc method with > > clearing PSTATE.PAN to prepare to apply FEAT_LSUI on them. > > > > Signed-off-by: Yeoreum Yun <[email protected]> > > Reviewed-by: Catalin Marinas <[email protected]> > > --- > > arch/arm64/include/asm/futex.h | 128 +++++++++++++++++++++------------ > > 1 file changed, 82 insertions(+), 46 deletions(-) > > > > diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h > > index bc06691d2062..f8cb674bdb3f 100644 > > --- a/arch/arm64/include/asm/futex.h > > +++ b/arch/arm64/include/asm/futex.h > > @@ -7,17 +7,21 @@ > > > > #include <linux/futex.h> > > #include <linux/uaccess.h> > > +#include <linux/stringify.h> > > > > #include <asm/errno.h> > > > > #define FUTEX_MAX_LOOPS 128 /* What's the largest number you can think > > of? */ > > > > -#define __futex_atomic_op(insn, ret, oldval, uaddr, tmp, oparg) > > \ > > -do { > > \ > > +#define LLSC_FUTEX_ATOMIC_OP(op, insn) > > \ > > +static __always_inline int \ > > +__llsc_futex_atomic_##op(int oparg, u32 __user *uaddr, int *oval) \ > > +{ \ > > unsigned int loops = FUTEX_MAX_LOOPS; \ > > + int ret, oldval, tmp; \ > > \ > > uaccess_enable_privileged(); \ > > - asm volatile( \ > > + asm volatile("// __llsc_futex_atomic_" #op "\n" \ > > " prfm pstl1strm, %2\n" \ > > "1: ldxr %w1, %2\n" > > \ > > insn "\n" \ > > @@ -35,45 +39,103 @@ do { > > \ > > : "r" (oparg), "Ir" (-EAGAIN) \ > > : "memory"); \ > > uaccess_disable_privileged(); \ > > -} while (0) > > + \ > > + if (!ret) \ > > + *oval = oldval; \ > > + \ > > + return ret; \ > > +} > > + > > +LLSC_FUTEX_ATOMIC_OP(add, "add %w3, %w1, %w5") > > +LLSC_FUTEX_ATOMIC_OP(or, "orr %w3, %w1, %w5") > > +LLSC_FUTEX_ATOMIC_OP(and, "and %w3, %w1, %w5") > > +LLSC_FUTEX_ATOMIC_OP(eor, "eor %w3, %w1, %w5") > > +LLSC_FUTEX_ATOMIC_OP(set, "mov %w3, %w5") > > Since you're reworking this code, how about we take the opportunity to > use named arguments instead of the numbers?
Okay. Let me try this. -- Sincerely, Yeoreum Yun

