Michael S. Tsirkin wrote: >> @@ -925,8 +926,9 @@ >> if (dev->no_msi) >> return status; >> >> - if (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_MSI) >> - return -EINVAL; >> + for (bus = dev->bus; bus; bus = bus->parent) >> + if (bus->bus_flags & PCI_BUS_FLAGS_NO_MSI) >> + return -EINVAL; >> >> temp = dev->irq; >> > > It seems we must add this loop to pci_enable_msix as well. > Right, thanks. Greg, what do you think of putting the attached patch in 2.6.17 ? By the way, do we need to check dev->no_msi in pci_enable_msix() too ? For 2.6.18, I don't know what's the best. We could drop the fact that bus flags should be inherited and keep looking at parent busses. It might be good to add a pci_check_flag_in_parent_busses(dev, flag) to provide a generic way to do my for loop. thanks, Brice Signed-off-by: Brice Goglin