NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PR/57437 CVS commit: src/lib/libpthread
The following reply was made to PR port-arm/57437; it has been noted by GNATS.
From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
To: Vasily Dybala <Vasily.Dybala%kaspersky.com@localhost>
Cc: gnats-bugs%netbsd.org@localhost,
port-arm-maintainer%netbsd.org@localhost,
gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: PR/57437 CVS commit: src/lib/libpthread
Date: Fri, 26 May 2023 10:29:54 +0000
> Date: Fri, 26 May 2023 08:03:18 +0000
> From: Vasily Dybala <Vasily.Dybala%kaspersky.com@localhost>
>
> Fix looks ok, but pthread__smt_wake() call from
> pthread_mutex_unlock() will call SEV instruction which does not have
> paired WFE in pthread_mutex_lock().
We could add a call to pthread__smt_wake in pthread_mutex_unlock to
match a pthread__smt_wait in pthread__mutex_pause, but that's not
enough on its own, because currently pthread__mutex_spin calls
pthread__mutex_pause in a loop and might just WFE again without
realizing it can make progress after it has been woken by SEV.
So we would need to restructure pthread__mutex_spin so that it calls
pthread__smt_wait exactly once after it examines the owner and
determines the owner is still running on a CPU.
That may be worthwhile, but it's a little more involved to implement,
because the surrounding logic has to be conditionalized on which style
of spin loop. So I picked the less-risky and less-involved option to
commit now. We can try the WFE/SEV approach for pthread_mutex (and
rwlock and, if it's still relevant, simple lock) later.
> I will check patch during next week.
Great, thanks!
Home |
Main Index |
Thread Index |
Old Index