On Wed, Dec 13, 2023 at 10:07:28PM +0800, Kent Gibson wrote: > On Wed, Dec 13, 2023 at 03:56:27PM +0200, Andy Shevchenko wrote: > > On Tue, Dec 12, 2023 at 01:42:52PM +0800, Kent Gibson wrote: > > > Reduce the time holding the gpio_lock by snapshotting the desc flags, > > > rather than testing them individually while holding the lock. > > > > > > Accept that the calculation of the used field is inherently racy, and > > > only check the availabilty of the line from pinctrl if other checks > > > pass, so avoiding the check for lines that are otherwise in use. > > > > ... > > > > > - bool ok_for_pinctrl; > > > - unsigned long flags; > > > + unsigned long iflags, dflags; > > > > With a preliminary conversion to cleanup.h this whole change becomes cleaner, > > no? > > > > You mean the scoped guards? Dunno - haven't used them. > Care to provide more detail? > Ok, so changing the spin_lock/unlock to scoped_guard(spinlock_irqsave, &gpio_lock) { ... } you no longer need the iflags at all, and can rename dflags to flags. Got it. Cheers, Kent.