On Wed, Jan 18 2023 at 10:22, Johan Hovold wrote: > On Tue, Jan 17, 2023 at 10:23:20PM +0100, Thomas Gleixner wrote: >> On Mon, Jan 16 2023 at 14:50, Johan Hovold wrote: >> > The global irq_domain_mutex is now held in all paths that update the >> > revmap structures so there is no longer any need for the revmap mutex. >> >> This can also go after the 3rd race fix, but ... >> >> > static void irq_domain_clear_mapping(struct irq_domain *domain, >> > irq_hw_number_t hwirq) >> > { >> > + lockdep_assert_held(&irq_domain_mutex); >> >> these lockdep asserts want to be part of the [dis]association race >> fixes. They are completely unrelated to the removal of the revmap_mutex. > > No, they are very much related to the removal of the revmap_mutex. These > functions deal with the revmap structures which before this patch were > clearly only modified with the revmap_mutex held. > > The lockdep assert is here to guarantee that my claim that all current > (and future) paths that end up modifying these structures do so under > the irq_domain_mutex instead. > >> Your race fixes change the locking and you want to ensure that all >> callers comply right there, no? > > I want to make sure that all callers of these function comply, yes. > That's why the asserts belong in this patch. You can do this in a two step approach. 1) Add the new locking and ensure that the lock is held when the functions are called 2) Safely remove the revmap_mutex because you already established that revmap is protected by some other means Thanks, tglx