2022-11-11 13:58:56

by Thomas Gleixner

[permalink] [raw]
Subject: [patch 02/39] iommu/vt-d: Remove bogus check for multi MSI-X

PCI/Multi-MSI is MSI specific and not supported for MSI-X.

Signed-off-by: Thomas Gleixner <[email protected]>
---
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;

/*



2022-11-16 16:18:56

by Ashok Raj

[permalink] [raw]
Subject: Re: [patch 02/39] iommu/vt-d: Remove bogus check for multi MSI-X

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 <[email protected]>
> ---
> 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?

2022-11-16 18:00:44

by Ashok Raj

[permalink] [raw]
Subject: Re: [patch 02/39] iommu/vt-d: Remove bogus check for multi MSI-X

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 <[email protected]>
> >> ---
> >> 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 <[email protected]>

2022-11-16 18:01:05

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [patch 02/39] iommu/vt-d: Remove bogus check for multi MSI-X

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 <[email protected]>
>> ---
>> 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



2022-11-17 15:28:32

by tip-bot2 for Jacob Pan

[permalink] [raw]
Subject: [tip: irq/core] iommu/vt-d: Remove bogus check for multi MSI-X

The following commit has been merged into the irq/core branch of tip:

Commit-ID: 527f378c42eaac0b48a8c6ff16da99a6177ff9e3
Gitweb: https://git.kernel.org/tip/527f378c42eaac0b48a8c6ff16da99a6177ff9e3
Author: Thomas Gleixner <[email protected]>
AuthorDate: Fri, 11 Nov 2022 14:54:17 +01:00
Committer: Thomas Gleixner <[email protected]>
CommitterDate: Thu, 17 Nov 2022 15:15:18 +01:00

iommu/vt-d: Remove bogus check for multi MSI-X

PCI/Multi-MSI is MSI specific and not supported for MSI-X.

Signed-off-by: Thomas Gleixner <[email protected]>
Reviewed-by: Ashok Raj <[email protected]>
Link: https://lore.kernel.org/r/[email protected]

---
drivers/iommu/intel/irq_remapping.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c
index 5962bb5..0b80a27 100644
--- a/drivers/iommu/intel/irq_remapping.c
+++ b/drivers/iommu/intel/irq_remapping.c
@@ -1334,8 +1334,7 @@ static int intel_irq_remapping_alloc(struct irq_domain *domain,

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;

/*