On Wed, Jul 22, 2020 at 10:05:52AM -0700, Dey, Megha wrote: > > > On 7/21/2020 9:25 AM, Jason Gunthorpe wrote: > > On Tue, Jul 21, 2020 at 09:02:41AM -0700, Dave Jiang wrote: > > > From: Megha Dey <megha.dey@xxxxxxxxx> > > > > > > The dev-msi interrupts are to be allocated/freed only for custom devices, > > > not standard PCI-MSIX devices. > > > > > > These interrupts are device-defined and they are distinct from the already > > > existing msi interrupts: > > > pci-msi: Standard PCI MSI/MSI-X setup format > > > platform-msi: Platform custom, but device-driver opaque MSI setup/control > > > arch-msi: fallback for devices not assigned to the generic PCI domain > > > dev-msi: device defined IRQ domain for ancillary devices. For e.g. DSA > > > portal devices use device specific IMS(Interrupt message store) interrupts. > > > > > > dev-msi interrupts are represented by their own device-type. That means > > > dev->msi_list is never contended for different interrupt types. It > > > will either be all PCI-MSI or all device-defined. > > > > Not sure I follow this, where is the enforcement that only dev-msi or > > normal MSI is being used at one time on a single struct device? > > > > So, in the dev_msi_alloc_irqs, I first check if the dev_is_pci.. > If it is a pci device, it is forbidden to use dev-msi and must use the pci > subsystem calls. dev-msi is to be used for all other custom devices, mdev or > otherwise. What prevents creating a dev-msi directly on the struct pci_device ? Jason