On Thu, Nov 17, 2022 at 11:07:45AM +0100, Janis Schoetterl-Glausch wrote: > cmpxchg_user_key for byte and short values is implemented via a one word > cmpxchg loop. Give up trying to perform the cmpxchg if it fails too > often because of contention on the cache line. This ensures that the > thread cannot become stuck in the kernel. > > Signed-off-by: Janis Schoetterl-Glausch <scgl@xxxxxxxxxxxxx> > --- > > > 128 might seem like a small number, but it actually seems to be plenty. > I could not get it to return EAGAIN with MAX_LOOP being 8 while 248 > vcpus/threads are hammering the same word. > This could mean that we don't actually need to limit the number of > retries, but then, I didn't simulate the absolute worst case, where > the competing threads are running on dedicated cpus. > > > arch/s390/include/asm/uaccess.h | 35 +++++++++++++++++++++++---------- > 1 file changed, 25 insertions(+), 10 deletions(-) Looks good, also applied to wip/cmpxchg_user_branch. Thanks!