All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
@ 2026-06-21  6:54 Emmanuel Grumbach
  2026-06-21  7:12 ` sashiko-bot
  2026-06-21  8:10 ` Lukas Wunner
  0 siblings, 2 replies; 5+ messages in thread
From: Emmanuel Grumbach @ 2026-06-21  6:54 UTC (permalink / raw)
  To: linux-pci, helgaas; +Cc: linux-wireless, Miri Korenblit, Emmanuel Grumbach

The Intel wireless BE200 device fails to copy the TLP Attributes from a
Request to the Completion.
Since there is no caching involved the device anyway, disable the
NoSnoop and Relaxed ordering on the root port.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 drivers/pci/quirks.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c0242f3e9f06..e9f070d07b2c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4674,6 +4674,13 @@ static void quirk_chelsio_T5_disable_root_port_attributes(struct pci_dev *pdev)
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
 			 quirk_chelsio_T5_disable_root_port_attributes);
 
+/*
+ * The Intel wireless BE200 fails to copy TLP Attributes from a Request to the
+ * Completion it generates.
+ */
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x272b,
+			 quirk_disable_root_port_attributes);
+
 /*
  * pci_acs_ctrl_enabled - compare desired ACS controls with those provided
  *			  by a device
-- 
2.54.0


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

* Re: [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
  2026-06-21  6:54 [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200 Emmanuel Grumbach
@ 2026-06-21  7:12 ` sashiko-bot
  2026-06-21  7:30   ` Grumbach, Emmanuel
  2026-06-21  8:10 ` Lukas Wunner
  1 sibling, 1 reply; 5+ messages in thread
From: sashiko-bot @ 2026-06-21  7:12 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-pci

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Missing suspend/resume fixup hook for Intel BE200 PCIe erratum workaround
--

commit ebcdab6d68a92d23aa6cf1713e8e72d87f0e6279
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200

This commit disables NoSnoop and Relaxed ordering on the root port for the
Intel wireless BE200 device because it fails to copy TLP Attributes from a
Request to the Completion. 

> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -4674,6 +4674,13 @@ static void quirk_chelsio_T5_disable_root_port_attributes(struct pci_dev *pdev)
>  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
>  			 quirk_chelsio_T5_disable_root_port_attributes);
>  
> +/*
> + * The Intel wireless BE200 fails to copy TLP Attributes from a Request to the
> + * Completion it generates.
> + */
> +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x272b,
> +			 quirk_disable_root_port_attributes);

[Severity: High]
Will this workaround survive a system suspend and resume cycle?

When the Intel BE200 device is hotplugged, the upstream Root Port's
configuration state is saved at boot time by pcie_portdrv_probe(), which calls
pci_save_state(). The workaround modifies the Root Port's current
configuration to disable Relaxed Ordering and No Snoop, but it does not update
the Root Port's saved state array.

Upon system suspend, the PCI core skips saving the Root Port's state because
its state_saved flag is already true. During resume, pci_restore_state()
restores the Root Port to its original boot-time state, which would re-enable
the problematic attributes.

Should there also be a DECLARE_PCI_FIXUP_RESUME_EARLY hook registered here to
ensure the workaround is re-applied when the device resumes?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260621065451.21650-1-emmanuel.grumbach@intel.com?part=1

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

* Re: [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
  2026-06-21  7:12 ` sashiko-bot
@ 2026-06-21  7:30   ` Grumbach, Emmanuel
  0 siblings, 0 replies; 5+ messages in thread
From: Grumbach, Emmanuel @ 2026-06-21  7:30 UTC (permalink / raw)
  To: sashiko-reviews@lists.linux.dev; +Cc: linux-pci@vger.kernel.org

On Sun, 2026-06-21 at 07:12 +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential
> issue(s) to consider:
> - [High] Missing suspend/resume fixup hook for Intel BE200 PCIe
> erratum workaround
> --
> 
> commit ebcdab6d68a92d23aa6cf1713e8e72d87f0e6279
> Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
> 
> PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
> 
> This commit disables NoSnoop and Relaxed ordering on the root port
> for the
> Intel wireless BE200 device because it fails to copy TLP Attributes
> from a
> Request to the Completion. 
> 
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
> > @@ -4674,6 +4674,13 @@ static void
> > quirk_chelsio_T5_disable_root_port_attributes(struct pci_dev *pdev)
> >  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
> >  			
> > quirk_chelsio_T5_disable_root_port_attributes);
> >  
> > +/*
> > + * The Intel wireless BE200 fails to copy TLP Attributes from a
> > Request to the
> > + * Completion it generates.
> > + */
> > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x272b,
> > +			 quirk_disable_root_port_attributes);
> 
> [Severity: High]
> Will this workaround survive a system suspend and resume cycle?
> 
> When the Intel BE200 device is hotplugged, the upstream Root Port's
> configuration state is saved at boot time by pcie_portdrv_probe(),
> which calls
> pci_save_state(). The workaround modifies the Root Port's current
> configuration to disable Relaxed Ordering and No Snoop, but it does
> not update
> the Root Port's saved state array.

That's a good point, but I'm not sure we really test well hotplug...

> 
> Upon system suspend, the PCI core skips saving the Root Port's state
> because
> its state_saved flag is already true. During resume,
> pci_restore_state()
> restores the Root Port to its original boot-time state, which would
> re-enable
> the problematic attributes.
> 
> Should there also be a DECLARE_PCI_FIXUP_RESUME_EARLY hook registered
> here to
> ensure the workaround is re-applied when the device resumes?

I'll have to check if suspend / resume cycles were part of the tests
being conducted.

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

* Re: [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
  2026-06-21  6:54 [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200 Emmanuel Grumbach
  2026-06-21  7:12 ` sashiko-bot
@ 2026-06-21  8:10 ` Lukas Wunner
  2026-06-21  8:28   ` Grumbach, Emmanuel
  1 sibling, 1 reply; 5+ messages in thread
From: Lukas Wunner @ 2026-06-21  8:10 UTC (permalink / raw)
  To: Emmanuel Grumbach; +Cc: linux-pci, helgaas, linux-wireless, Miri Korenblit

On Sun, Jun 21, 2026 at 09:54:51AM +0300, Emmanuel Grumbach wrote:
> The Intel wireless BE200 device fails to copy the TLP Attributes from a
> Request to the Completion.
> Since there is no caching involved the device anyway, disable the
> NoSnoop and Relaxed ordering on the root port.

Is there a public Specification Update which could be linked in the
commit message and/or code comment?

Thanks,

Lukas

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

* Re: [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200
  2026-06-21  8:10 ` Lukas Wunner
@ 2026-06-21  8:28   ` Grumbach, Emmanuel
  0 siblings, 0 replies; 5+ messages in thread
From: Grumbach, Emmanuel @ 2026-06-21  8:28 UTC (permalink / raw)
  To: lukas@wunner.de
  Cc: linux-wireless@vger.kernel.org, linux-pci@vger.kernel.org,
	Korenblit, Miriam Rachel, helgaas@kernel.org

On Sun, 2026-06-21 at 10:10 +0200, Lukas Wunner wrote:
> On Sun, Jun 21, 2026 at 09:54:51AM +0300, Emmanuel Grumbach wrote:
> > The Intel wireless BE200 device fails to copy the TLP Attributes
> > from a
> > Request to the Completion.
> > Since there is no caching involved the device anyway, disable the
> > NoSnoop and Relaxed ordering on the root port.
> 
> Is there a public Specification Update which could be linked in the
> commit message and/or code comment?
> 
> 

Not really.
We just have tested our device with Jetson Thor and saw that it doesn't
work. Happens that the PCI controller on Jetson Thor is doing things
that very few PCI controllers do and this undercovered this bad
behavior on the BE200 side.

We don't have a more formal publication about this issue.


> Thanks,
> 
> Lukas

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

end of thread, other threads:[~2026-06-21  8:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-21  6:54 [PATCH] PCI: Disable NoSnoop and Relaxed ordering for Intel wireless BE200 Emmanuel Grumbach
2026-06-21  7:12 ` sashiko-bot
2026-06-21  7:30   ` Grumbach, Emmanuel
2026-06-21  8:10 ` Lukas Wunner
2026-06-21  8:28   ` Grumbach, Emmanuel

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.