On Tue, Mar 11, 2025 at 03:31:43PM +0100, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > We use a notifier to implement the mechanism of informing the user-space > about changes in GPIO line status. We register with the notifier when > the GPIO character device file is opened and unregister when the last > reference to the associated file descriptor is dropped. > > Since commit fcc8b637c542 ("gpiolib: switch the line state notifier to > atomic") we use the atomic notifier variant. Atomic notifiers call > rcu_synchronize in atomic_notifier_chain_unregister() which caused a > significant performance regression in some circumstances, observed by > user-space when calling close() on the GPIO device file descriptor. > > Replace the atomic notifier with the raw variant and provide > synchronization with a read-write spinlock. > > Fixes: fcc8b637c542 ("gpiolib: switch the line state notifier to atomic") > Reported-by: David Jander <david@xxxxxxxxxxx> > Closes: https://lore.kernel.org/all/20250311110034.53959031@erd003.prtnl/ > Tested-by: David Jander <david@xxxxxxxxxxx> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> Works for me. Tested-by: Kent Gibson <warthog618@xxxxxxxxx> Cheers, Kent.