diff mbox

[v7,1/8] genirq/msi: Add a new MSI_FLAG_IRQ_REMAPPING flag

Message ID 1461085990-2547-2-git-send-email-eric.auger@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Eric Auger April 19, 2016, 5:13 p.m. UTC
Let's introduce a new msi_domain_info flag value, MSI_FLAG_IRQ_REMAPPING
meant to tell the domain supports IRQ REMAPPING, also known as Interrupt
Translation Service. On Intel HW this IRQ remapping capability is
abstracted on IOMMU side while on ARM it is abstracted on MSI controller
side. This flag will be used to know whether the MSI passthrough is
safe.

Signed-off-by: Eric Auger <eric.auger@linaro.org>

---

v4 -> v5:
- seperate flag introduction from first user addition (ITS)
---
 include/linux/msi.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Robin Murphy April 22, 2016, 11:02 a.m. UTC | #1
Hi Eric,

On 19/04/16 18:13, Eric Auger wrote:
> Let's introduce a new msi_domain_info flag value, MSI_FLAG_IRQ_REMAPPING
> meant to tell the domain supports IRQ REMAPPING, also known as Interrupt
> Translation Service. On Intel HW this IRQ remapping capability is
> abstracted on IOMMU side while on ARM it is abstracted on MSI controller
> side. This flag will be used to know whether the MSI passthrough is
> safe.

Perhaps a nitpick, but given the earlier confusion about what the IOMMU 
flag actually meant this prompts me to wonder if it's worth adjusting 
the general terminology before we propagate it further. What I think we 
actually care about is that one thing or the other "provides MSI 
isolation" rather than "supports MSI remapping", since the latter is all 
to easy to misinterpret the way we did in the SMMU drivers.

Robin.

> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>
> ---
>
> v4 -> v5:
> - seperate flag introduction from first user addition (ITS)
> ---
>   include/linux/msi.h | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 8b425c6..08441b1 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -270,6 +270,8 @@ enum {
>   	MSI_FLAG_MULTI_PCI_MSI		= (1 << 3),
>   	/* Support PCI MSIX interrupts */
>   	MSI_FLAG_PCI_MSIX		= (1 << 4),
> +	/* Support MSI IRQ remapping service */
> +	MSI_FLAG_IRQ_REMAPPING		= (1 << 5),
>   };
>
>   int msi_domain_set_affinity(struct irq_data *data, const struct cpumask *mask,
>
Eric Auger April 22, 2016, 12:25 p.m. UTC | #2
Robin,
On 04/22/2016 01:02 PM, Robin Murphy wrote:
> Hi Eric,
> 
> On 19/04/16 18:13, Eric Auger wrote:
>> Let's introduce a new msi_domain_info flag value, MSI_FLAG_IRQ_REMAPPING
>> meant to tell the domain supports IRQ REMAPPING, also known as Interrupt
>> Translation Service. On Intel HW this IRQ remapping capability is
>> abstracted on IOMMU side while on ARM it is abstracted on MSI controller
>> side. This flag will be used to know whether the MSI passthrough is
>> safe.
> 
> Perhaps a nitpick, but given the earlier confusion about what the IOMMU
> flag actually meant this prompts me to wonder if it's worth adjusting
> the general terminology before we propagate it further. What I think we
> actually care about is that one thing or the other "provides MSI
> isolation" rather than "supports MSI remapping", since the latter is all
> to easy to misinterpret the way we did in the SMMU drivers.

The only concern I have is https://lkml.org/lkml/2016/4/18/283 attempts
to define a PCI bus flag dubbed PCI_BUS_FLAGS_MSI_REMAP combining the
iommu & msi layer info. In that sense x86 people may not be keen of
having different terminaologies. Anyway I will follow the consensus, if any.

Best Regards

Eric


> 
> Robin.
> 
>> Signed-off-by: Eric Auger <eric.auger@linaro.org>
>>
>> ---
>>
>> v4 -> v5:
>> - seperate flag introduction from first user addition (ITS)
>> ---
>>   include/linux/msi.h | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/include/linux/msi.h b/include/linux/msi.h
>> index 8b425c6..08441b1 100644
>> --- a/include/linux/msi.h
>> +++ b/include/linux/msi.h
>> @@ -270,6 +270,8 @@ enum {
>>       MSI_FLAG_MULTI_PCI_MSI        = (1 << 3),
>>       /* Support PCI MSIX interrupts */
>>       MSI_FLAG_PCI_MSIX        = (1 << 4),
>> +    /* Support MSI IRQ remapping service */
>> +    MSI_FLAG_IRQ_REMAPPING        = (1 << 5),
>>   };
>>
>>   int msi_domain_set_affinity(struct irq_data *data, const struct
>> cpumask *mask,
>>
>
Thomas Gleixner April 22, 2016, 3:39 p.m. UTC | #3
On Fri, 22 Apr 2016, Eric Auger wrote:
> Robin,
> On 04/22/2016 01:02 PM, Robin Murphy wrote:
> > Hi Eric,
> > 
> > On 19/04/16 18:13, Eric Auger wrote:
> >> Let's introduce a new msi_domain_info flag value, MSI_FLAG_IRQ_REMAPPING
> >> meant to tell the domain supports IRQ REMAPPING, also known as Interrupt
> >> Translation Service. On Intel HW this IRQ remapping capability is
> >> abstracted on IOMMU side while on ARM it is abstracted on MSI controller
> >> side. This flag will be used to know whether the MSI passthrough is
> >> safe.
> > 
> > Perhaps a nitpick, but given the earlier confusion about what the IOMMU
> > flag actually meant this prompts me to wonder if it's worth adjusting
> > the general terminology before we propagate it further. What I think we
> > actually care about is that one thing or the other "provides MSI
> > isolation" rather than "supports MSI remapping", since the latter is all
> > to easy to misinterpret the way we did in the SMMU drivers.
> 
> The only concern I have is https://lkml.org/lkml/2016/4/18/283 attempts
> to define a PCI bus flag dubbed PCI_BUS_FLAGS_MSI_REMAP combining the
> iommu & msi layer info. In that sense x86 people may not be keen of
> having different terminaologies. Anyway I will follow the consensus, if any.

Yes, please keep that consistent. It makes 'grep' much more conveniant.

Thanks,

	tglx
diff mbox

Patch

diff --git a/include/linux/msi.h b/include/linux/msi.h
index 8b425c6..08441b1 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -270,6 +270,8 @@  enum {
 	MSI_FLAG_MULTI_PCI_MSI		= (1 << 3),
 	/* Support PCI MSIX interrupts */
 	MSI_FLAG_PCI_MSIX		= (1 << 4),
+	/* Support MSI IRQ remapping service */
+	MSI_FLAG_IRQ_REMAPPING		= (1 << 5),
 };
 
 int msi_domain_set_affinity(struct irq_data *data, const struct cpumask *mask,