On Tue, 2023-01-24 at 08:04 -0600, Nathan Lynch wrote: > At the time commit f97bb36f705d ("powerpc/rtas: Turn rtas lock into a > raw spinlock") was written, the spinlock lockup detection code called > __delay(), which will not make progress if the timebase is not > advancing. Since the interprocessor timebase synchronization sequence > for chrp, cell, and some now-unsupported Power models can temporarily > freeze the timebase through an RTAS function (freeze-time-base), the > lock that serializes most RTAS calls was converted to arch_spinlock_t > to prevent kernel hangs in the lockup detection code. > > However, commit bc88c10d7e69 ("locking/spinlock/debug: Remove > spinlock > lockup detection code") removed that inconvenient property from the > lock debug code several years ago. So now it should be safe to > reintroduce generic locks into the RTAS support code, primarily to > increase lockdep coverage. > > Making rtas_lock a spinlock_t would violate lock type nesting rules > because it can be acquired while holding raw locks, e.g. pci_lock and > irq_desc->lock. So convert it to raw_spinlock_t. There's no apparent > reason not to upgrade timebase_lock as well. > > Signed-off-by: Nathan Lynch <nath...@linux.ibm.com>
I'm no locking expert but this looks reasonable from a quick read- through. Reviewed-by: Andrew Donnellan <a...@linux.ibm.com> -- Andrew Donnellan OzLabs, ADL Canberra a...@linux.ibm.com IBM Australia Limited