Message ID | 20221111122013.713848846@linutronix.de |
---|---|
State | New |
Headers | show |
Series | genirq, PCI/MSI: Support for per device MSI and PCI/IMS - Part 1 cleanups | expand |
On Fri, Nov 11, 2022 at 02:54:17PM +0100, Thomas Gleixner wrote: > PCI/Multi-MSI is MSI specific and not supported for MSI-X. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > --- > drivers/iommu/intel/irq_remapping.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > --- a/drivers/iommu/intel/irq_remapping.c > +++ b/drivers/iommu/intel/irq_remapping.c > @@ -1334,8 +1334,7 @@ static int intel_irq_remapping_alloc(str > > if (!info || !iommu) > return -EINVAL; > - if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI && > - info->type != X86_IRQ_ALLOC_TYPE_PCI_MSIX) > + if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI) > return -EINVAL; > > /* > This check is only making sure that when multi-msi is requested that the type has to be either MSI/MSIX. Wouldn't this change return -EINVAL when type = MSIX?
On Wed, Nov 16 2022 at 07:52, Ashok Raj wrote: > On Fri, Nov 11, 2022 at 02:54:17PM +0100, Thomas Gleixner wrote: >> PCI/Multi-MSI is MSI specific and not supported for MSI-X. >> >> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> >> --- >> drivers/iommu/intel/irq_remapping.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> --- a/drivers/iommu/intel/irq_remapping.c >> +++ b/drivers/iommu/intel/irq_remapping.c >> @@ -1334,8 +1334,7 @@ static int intel_irq_remapping_alloc(str >> >> if (!info || !iommu) >> return -EINVAL; >> - if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI && >> - info->type != X86_IRQ_ALLOC_TYPE_PCI_MSIX) >> + if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI) >> return -EINVAL; >> >> /* >> > > This check is only making sure that when multi-msi is requested that the > type has to be either MSI/MSIX. MSI-X does not support multi vector allocations on a single entry. > Wouldn't this change return -EINVAL when type = MSIX? Rightfully so. MSIX vectors are allocated one by one. Has been that way forever. Thanks, tglx
On Wed, Nov 16, 2022 at 06:02:30PM +0100, Thomas Gleixner wrote: > On Wed, Nov 16 2022 at 07:52, Ashok Raj wrote: > > On Fri, Nov 11, 2022 at 02:54:17PM +0100, Thomas Gleixner wrote: > >> PCI/Multi-MSI is MSI specific and not supported for MSI-X. > >> > >> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > >> --- > >> drivers/iommu/intel/irq_remapping.c | 3 +-- > >> 1 file changed, 1 insertion(+), 2 deletions(-) > >> > >> --- a/drivers/iommu/intel/irq_remapping.c > >> +++ b/drivers/iommu/intel/irq_remapping.c > >> @@ -1334,8 +1334,7 @@ static int intel_irq_remapping_alloc(str > >> > >> if (!info || !iommu) > >> return -EINVAL; > >> - if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI && > >> - info->type != X86_IRQ_ALLOC_TYPE_PCI_MSIX) > >> + if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI) > >> return -EINVAL; > >> > >> /* > >> > > > > This check is only making sure that when multi-msi is requested that the > > type has to be either MSI/MSIX. > > MSI-X does not support multi vector allocations on a single entry. > > > Wouldn't this change return -EINVAL when type = MSIX? > > Rightfully so. MSIX vectors are allocated one by one. Has been that way > forever. > I thought why block multi-vector allocation on MSIX, but if there is no use case makes perfect sense. Thanks for the clarification. Reviewed-by: Ashok Raj <ashok.raj@intel.com>
--- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -1334,8 +1334,7 @@ static int intel_irq_remapping_alloc(str if (!info || !iommu) return -EINVAL; - if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI && - info->type != X86_IRQ_ALLOC_TYPE_PCI_MSIX) + if (nr_irqs > 1 && info->type != X86_IRQ_ALLOC_TYPE_PCI_MSI) return -EINVAL; /*
PCI/Multi-MSI is MSI specific and not supported for MSI-X. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- drivers/iommu/intel/irq_remapping.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)