All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
@ 2021-11-04 18:01 Marc Zyngier
  2021-11-04 18:01 ` [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability Marc Zyngier
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Marc Zyngier @ 2021-11-04 18:01 UTC (permalink / raw)
  To: linux-pci, linux-kernel
  Cc: Bjorn Helgaas, Thomas Gleixner, Rui Salvaterra, kernel-team

Rui reported[1] that his Nvidia ION system stopped working with 5.15,
with the AHCI device failing to get any MSI. A rapid investigation
revealed that although the device doesn't advertise MSI masking, it
actually needs it. Quality hardware indeed.

Anyway, the couple of patches below are an attempt at dealing with the
issue in a more or less generic way.

[1] https://lore.kernel.org/r/CALjTZvbzYfBuLB+H=fj2J+9=DxjQ2Uqcy0if_PvmJ-nU-qEgkg@mail.gmail.com

Marc Zyngier (2):
  PCI: MSI: Deal with devices lying about their MSI mask capability
  PCI: Add MSI masking quirk for Nvidia ION AHCI

 drivers/pci/msi.c    | 3 +++
 drivers/pci/quirks.c | 6 ++++++
 include/linux/pci.h  | 2 ++
 3 files changed, 11 insertions(+)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability
  2021-11-04 18:01 [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Marc Zyngier
@ 2021-11-04 18:01 ` Marc Zyngier
  2021-11-11  8:57   ` [tip: irq/urgent] PCI/MSI: " tip-bot2 for Marc Zyngier
  2021-11-04 18:01 ` [PATCH 2/2] PCI: Add MSI masking quirk for Nvidia ION AHCI Marc Zyngier
  2021-11-05 13:14 ` [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Thomas Gleixner
  2 siblings, 1 reply; 10+ messages in thread
From: Marc Zyngier @ 2021-11-04 18:01 UTC (permalink / raw)
  To: linux-pci, linux-kernel
  Cc: Bjorn Helgaas, Thomas Gleixner, Rui Salvaterra, kernel-team

It appears that some devices are lying about their mask capability,
pretending that they don't have it, while they actually do.
The net result is that now that we don't enable MSIs on such
endpoint.

Add a new per-device flag to deal with this. Further patches will
make use of it, sadly.

Signed-off-by: Marc Zyngier <maz@kernel.org>
---
 drivers/pci/msi.c   | 3 +++
 include/linux/pci.h | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 0099a00af361..2f9ec7210991 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -479,6 +479,9 @@ msi_setup_entry(struct pci_dev *dev, int nvec, struct irq_affinity *affd)
 		goto out;
 
 	pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
+	/* Lies, damned lies, and MSIs */
+	if (dev->dev_flags & PCI_DEV_FLAGS_HAS_MSI_MASKING)
+		control |= PCI_MSI_FLAGS_MASKBIT;
 
 	entry->msi_attrib.is_msix	= 0;
 	entry->msi_attrib.is_64		= !!(control & PCI_MSI_FLAGS_64BIT);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index cd8aa6fce204..152a4d74f87f 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -233,6 +233,8 @@ enum pci_dev_flags {
 	PCI_DEV_FLAGS_NO_FLR_RESET = (__force pci_dev_flags_t) (1 << 10),
 	/* Don't use Relaxed Ordering for TLPs directed at this device */
 	PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11),
+	/* Device does honor MSI masking despite saying otherwise */
+	PCI_DEV_FLAGS_HAS_MSI_MASKING = (__force pci_dev_flags_t) (1 << 12),
 };
 
 enum pci_irq_reroute_variant {
-- 
2.30.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 2/2] PCI: Add MSI masking quirk for Nvidia ION AHCI
  2021-11-04 18:01 [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Marc Zyngier
  2021-11-04 18:01 ` [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability Marc Zyngier
@ 2021-11-04 18:01 ` Marc Zyngier
  2021-11-05 13:14 ` [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Thomas Gleixner
  2 siblings, 0 replies; 10+ messages in thread
From: Marc Zyngier @ 2021-11-04 18:01 UTC (permalink / raw)
  To: linux-pci, linux-kernel
  Cc: Bjorn Helgaas, Thomas Gleixner, Rui Salvaterra, kernel-team

The ION AHCI device pretends that MSI masking isn't a thing,
while it actually implements it and needs MSIs to be unmasked
to work. Add a quirk to that effect.

Reported-by: Rui Salvaterra <rsalvaterra@gmail.com>
Tested-by: Rui Salvaterra <rsalvaterra@gmail.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/CALjTZvbzYfBuLB+H=fj2J+9=DxjQ2Uqcy0if_PvmJ-nU-qEgkg@mail.gmail.com
---
 drivers/pci/quirks.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 4537d1ea14fd..89c7c99cd1bb 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5795,3 +5795,9 @@ static void apex_pci_fixup_class(struct pci_dev *pdev)
 }
 DECLARE_PCI_FIXUP_CLASS_HEADER(0x1ac1, 0x089a,
 			       PCI_CLASS_NOT_DEFINED, 8, apex_pci_fixup_class);
+
+static void nvidia_ion_ahci_fixup(struct pci_dev *pdev)
+{
+	pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
-- 
2.30.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-04 18:01 [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Marc Zyngier
  2021-11-04 18:01 ` [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability Marc Zyngier
  2021-11-04 18:01 ` [PATCH 2/2] PCI: Add MSI masking quirk for Nvidia ION AHCI Marc Zyngier
@ 2021-11-05 13:14 ` Thomas Gleixner
  2021-11-16 10:21   ` Rui Salvaterra
  2 siblings, 1 reply; 10+ messages in thread
From: Thomas Gleixner @ 2021-11-05 13:14 UTC (permalink / raw)
  To: Marc Zyngier, linux-pci, linux-kernel
  Cc: Bjorn Helgaas, Rui Salvaterra, kernel-team

On Thu, Nov 04 2021 at 18:01, Marc Zyngier wrote:
> Rui reported[1] that his Nvidia ION system stopped working with 5.15,
> with the AHCI device failing to get any MSI. A rapid investigation
> revealed that although the device doesn't advertise MSI masking, it
> actually needs it. Quality hardware indeed.
>
> Anyway, the couple of patches below are an attempt at dealing with the
> issue in a more or less generic way.
>
> [1] https://lore.kernel.org/r/CALjTZvbzYfBuLB+H=fj2J+9=DxjQ2Uqcy0if_PvmJ-nU-qEgkg@mail.gmail.com
>
> Marc Zyngier (2):
>   PCI: MSI: Deal with devices lying about their MSI mask capability
>   PCI: Add MSI masking quirk for Nvidia ION AHCI
>
>  drivers/pci/msi.c    | 3 +++
>  drivers/pci/quirks.c | 6 ++++++
>  include/linux/pci.h  | 2 ++
>  3 files changed, 11 insertions(+)

Groan.

Reviewed-by: Thomas Gleixner <tglx@linutronix.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [tip: irq/urgent] PCI/MSI: Deal with devices lying about their MSI mask capability
  2021-11-04 18:01 ` [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability Marc Zyngier
@ 2021-11-11  8:57   ` tip-bot2 for Marc Zyngier
  0 siblings, 0 replies; 10+ messages in thread
From: tip-bot2 for Marc Zyngier @ 2021-11-11  8:57 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Marc Zyngier, Thomas Gleixner, Bjorn Helgaas, x86, linux-kernel

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

Commit-ID:     2226667a145db2e1f314d7f57fd644fe69863ab9
Gitweb:        https://git.kernel.org/tip/2226667a145db2e1f314d7f57fd644fe69863ab9
Author:        Marc Zyngier <maz@kernel.org>
AuthorDate:    Thu, 04 Nov 2021 18:01:29 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Thu, 11 Nov 2021 09:50:30 +01:00

PCI/MSI: Deal with devices lying about their MSI mask capability

It appears that some devices are lying about their mask capability,
pretending that they don't have it, while they actually do.
The net result is that now that we don't enable MSIs on such
endpoint.

Add a new per-device flag to deal with this. Further patches will
make use of it, sadly.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20211104180130.3825416-2-maz@kernel.org
Cc: Bjorn Helgaas <helgaas@kernel.org>
---
 drivers/pci/msi.c   | 3 +++
 include/linux/pci.h | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 6da7910..7043301 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -477,6 +477,9 @@ msi_setup_entry(struct pci_dev *dev, int nvec, struct irq_affinity *affd)
 		goto out;
 
 	pci_read_config_word(dev, dev->msi_cap + PCI_MSI_FLAGS, &control);
+	/* Lies, damned lies, and MSIs */
+	if (dev->dev_flags & PCI_DEV_FLAGS_HAS_MSI_MASKING)
+		control |= PCI_MSI_FLAGS_MASKBIT;
 
 	entry->msi_attrib.is_msix	= 0;
 	entry->msi_attrib.is_64		= !!(control & PCI_MSI_FLAGS_64BIT);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index c8afbee..d0dba7f 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -233,6 +233,8 @@ enum pci_dev_flags {
 	PCI_DEV_FLAGS_NO_FLR_RESET = (__force pci_dev_flags_t) (1 << 10),
 	/* Don't use Relaxed Ordering for TLPs directed at this device */
 	PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 11),
+	/* Device does honor MSI masking despite saying otherwise */
+	PCI_DEV_FLAGS_HAS_MSI_MASKING = (__force pci_dev_flags_t) (1 << 12),
 };
 
 enum pci_irq_reroute_variant {

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-05 13:14 ` [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Thomas Gleixner
@ 2021-11-16 10:21   ` Rui Salvaterra
  2021-11-16 10:39     ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Rui Salvaterra @ 2021-11-16 10:21 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Marc Zyngier, linux-pci, linux-kernel, Bjorn Helgaas,
	kernel-team, stable, gregkh

Hi, Thomas,

On Fri, 5 Nov 2021 at 13:14, Thomas Gleixner <tglx@linutronix.de> wrote:
>
> On Thu, Nov 04 2021 at 18:01, Marc Zyngier wrote:
> > Rui reported[1] that his Nvidia ION system stopped working with 5.15,
> > with the AHCI device failing to get any MSI. A rapid investigation
> > revealed that although the device doesn't advertise MSI masking, it
> > actually needs it. Quality hardware indeed.
> >
> > Anyway, the couple of patches below are an attempt at dealing with the
> > issue in a more or less generic way.
> >
> > [1] https://lore.kernel.org/r/CALjTZvbzYfBuLB+H=fj2J+9=DxjQ2Uqcy0if_PvmJ-nU-qEgkg@mail.gmail.com
> >
> > Marc Zyngier (2):
> >   PCI: MSI: Deal with devices lying about their MSI mask capability
> >   PCI: Add MSI masking quirk for Nvidia ION AHCI
> >
> >  drivers/pci/msi.c    | 3 +++
> >  drivers/pci/quirks.c | 6 ++++++
> >  include/linux/pci.h  | 2 ++
> >  3 files changed, 11 insertions(+)
>
> Groan.
>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>

Just a reminder, to make sure this doesn't fall through the cracks.
It's already in 5.16, but needs to be backported to 5.15. I'm not
seeing it in Greg's 5.15 stable queue yet.

Thanks,
Rui

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-16 10:21   ` Rui Salvaterra
@ 2021-11-16 10:39     ` Greg KH
  2021-11-16 10:47       ` Rui Salvaterra
  0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2021-11-16 10:39 UTC (permalink / raw)
  To: Rui Salvaterra
  Cc: Thomas Gleixner, Marc Zyngier, linux-pci, linux-kernel,
	Bjorn Helgaas, kernel-team, stable

On Tue, Nov 16, 2021 at 10:21:18AM +0000, Rui Salvaterra wrote:
> Hi, Thomas,
> 
> On Fri, 5 Nov 2021 at 13:14, Thomas Gleixner <tglx@linutronix.de> wrote:
> >
> > On Thu, Nov 04 2021 at 18:01, Marc Zyngier wrote:
> > > Rui reported[1] that his Nvidia ION system stopped working with 5.15,
> > > with the AHCI device failing to get any MSI. A rapid investigation
> > > revealed that although the device doesn't advertise MSI masking, it
> > > actually needs it. Quality hardware indeed.
> > >
> > > Anyway, the couple of patches below are an attempt at dealing with the
> > > issue in a more or less generic way.
> > >
> > > [1] https://lore.kernel.org/r/CALjTZvbzYfBuLB+H=fj2J+9=DxjQ2Uqcy0if_PvmJ-nU-qEgkg@mail.gmail.com
> > >
> > > Marc Zyngier (2):
> > >   PCI: MSI: Deal with devices lying about their MSI mask capability
> > >   PCI: Add MSI masking quirk for Nvidia ION AHCI
> > >
> > >  drivers/pci/msi.c    | 3 +++
> > >  drivers/pci/quirks.c | 6 ++++++
> > >  include/linux/pci.h  | 2 ++
> > >  3 files changed, 11 insertions(+)
> >
> > Groan.
> >
> > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> 
> Just a reminder, to make sure this doesn't fall through the cracks.
> It's already in 5.16, but needs to be backported to 5.15. I'm not
> seeing it in Greg's 5.15 stable queue yet.

What is the git commit ids of these changes in Linus's tree?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-16 10:39     ` Greg KH
@ 2021-11-16 10:47       ` Rui Salvaterra
  2021-11-16 10:56         ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Rui Salvaterra @ 2021-11-16 10:47 UTC (permalink / raw)
  To: Greg KH
  Cc: Thomas Gleixner, Marc Zyngier, linux-pci, linux-kernel,
	Bjorn Helgaas, kernel-team, stable

Hi, Greg,

On Tue, 16 Nov 2021 at 10:39, Greg KH <gregkh@linuxfoundation.org> wrote:
>
> What is the git commit ids of these changes in Linus's tree?

2226667a145d ("PCI/MSI: Deal with devices lying about their MSI mask
capability")
f21082fb20db ("PCI: Add MSI masking quirk for Nvidia ION AHCI")

Thanks,
Rui

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-16 10:47       ` Rui Salvaterra
@ 2021-11-16 10:56         ` Greg KH
  2021-11-19 14:05           ` Greg KH
  0 siblings, 1 reply; 10+ messages in thread
From: Greg KH @ 2021-11-16 10:56 UTC (permalink / raw)
  To: Rui Salvaterra
  Cc: Thomas Gleixner, Marc Zyngier, linux-pci, linux-kernel,
	Bjorn Helgaas, kernel-team, stable

On Tue, Nov 16, 2021 at 10:47:23AM +0000, Rui Salvaterra wrote:
> Hi, Greg,
> 
> On Tue, 16 Nov 2021 at 10:39, Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > What is the git commit ids of these changes in Linus's tree?
> 
> 2226667a145d ("PCI/MSI: Deal with devices lying about their MSI mask
> capability")
> f21082fb20db ("PCI: Add MSI masking quirk for Nvidia ION AHCI")

Thanks, I'll queue them up in the next round of releases after the
current ones are out.

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability
  2021-11-16 10:56         ` Greg KH
@ 2021-11-19 14:05           ` Greg KH
  0 siblings, 0 replies; 10+ messages in thread
From: Greg KH @ 2021-11-19 14:05 UTC (permalink / raw)
  To: Rui Salvaterra
  Cc: Thomas Gleixner, Marc Zyngier, linux-pci, linux-kernel,
	Bjorn Helgaas, kernel-team, stable

On Tue, Nov 16, 2021 at 11:56:32AM +0100, Greg KH wrote:
> On Tue, Nov 16, 2021 at 10:47:23AM +0000, Rui Salvaterra wrote:
> > Hi, Greg,
> > 
> > On Tue, 16 Nov 2021 at 10:39, Greg KH <gregkh@linuxfoundation.org> wrote:
> > >
> > > What is the git commit ids of these changes in Linus's tree?
> > 
> > 2226667a145d ("PCI/MSI: Deal with devices lying about their MSI mask
> > capability")
> > f21082fb20db ("PCI: Add MSI masking quirk for Nvidia ION AHCI")
> 
> Thanks, I'll queue them up in the next round of releases after the
> current ones are out.

Now queued up.

greg k-h

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-11-19 14:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 18:01 [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Marc Zyngier
2021-11-04 18:01 ` [PATCH 1/2] PCI: MSI: Deal with devices lying about their MSI mask capability Marc Zyngier
2021-11-11  8:57   ` [tip: irq/urgent] PCI/MSI: " tip-bot2 for Marc Zyngier
2021-11-04 18:01 ` [PATCH 2/2] PCI: Add MSI masking quirk for Nvidia ION AHCI Marc Zyngier
2021-11-05 13:14 ` [PATCH 0/2] PCI: MSI: Deal with devices lying about their masking capability Thomas Gleixner
2021-11-16 10:21   ` Rui Salvaterra
2021-11-16 10:39     ` Greg KH
2021-11-16 10:47       ` Rui Salvaterra
2021-11-16 10:56         ` Greg KH
2021-11-19 14:05           ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.