On Wed, Jul 21, 2021 at 09:11:28PM +0200, Thomas Gleixner wrote: > When MSI-X is enabled the ordering of calls is: > > msix_map_region(); > msix_setup_entries(); > pci_msi_setup_msi_irqs(); > msix_program_entries(); > > This has a few interesting issues: > > 1) msix_setup_entries() allocates the msi descriptors and initializes them s/msi/MSI/ (one or two more below) > except for the msi_desc:masked member which is left zero initialized. > > 2) pci_msi_setup_msi_irqs() allocates the interrupt descriptors and sets > up the MSI interrupts which ends up in pci_write_msi_msg() unless the > interrupt chip provides it's own irq_write_msi_msg() function. s/it's/its/ > 3) msix_program_entries() does not do what the name suggests. It solely > updates the entries array (if not NULL) and initializes the masked > member for each msi descriptor by reading the hardware state and then > masks the entry.