On Tue, Dec 03 2024 at 15:36, Frank Li wrote: > The follow steps trigger kernel dump warning and > platform_device_msi_init_and_alloc_irqs() return false. > > 1: platform_device_msi_init_and_alloc_irqs(); > 2: platform_device_msi_free_irqs_all(); > 3: platform_device_msi_init_and_alloc_irqs(); > > Do below two things in platform_device_msi_init_and_alloc_irqs(). > - msi_create_device_irq_domain() > - msi_domain_alloc_irqs_range() > > But only call msi_domain_free_irqs_all() in > platform_device_msi_free_irqs_all(), which missed call > msi_remove_device_irq_domain(). It's not a missed call. It's intentional as all existing users remove the device afterwards. > This cause above kernel dump when call > platform_device_msi_init_and_alloc_irqs() again. Sure, but that's not a fix and not required for stable because no existing driver is affected by this unless I'm missing something. What's the actual use case for this? You describe in great length what fails, which is nice, but I'm missing the larger picture here. Thanks, tglx