linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
@ 2020-12-07 13:08 Paul Menzel
  2020-12-07 17:44 ` Kuppuswamy, Sathyanarayanan
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Menzel @ 2020-12-07 13:08 UTC (permalink / raw)
  To: Kuppuswamy Sathyanarayanan
  Cc: Bjorn Helgaas, linux-pci, LKML, Mario Limonciello, Mika Westerberg

[Bringing the issue up on the list in case the Linux Bugzilla is not 
monitored/used.]


Dear Linux folks,


On Intel Tiger Lake Dell laptop, Linux logs the error below [1].

     [    0.507307] pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
     [    0.508835] pci 0000:00:07.2: DPC: RP PIO log size 0 is invalid

     $ lspci -nn -s 00:07
     00:07.0 PCI bridge [0604]: Intel Corporation Tiger Lake-LP 
Thunderbolt PCI Express Root Port #0 [8086:9a23] (rev 01)
     00:07.2 PCI bridge [0604]: Intel Corporation Tiger Lake-LP 
Thunderbolt PCI Express Root Port #2 [8086:9a27] (rev 01)

Commit 2700561817 (PCI/DPC: Cache DPC capabilities in 
pci_init_capabilities()) [1] probably introduced it in Linux 5.7.

What does this error actually mean?

	pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8;
	if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) {
		pci_err(pdev, "RP PIO log size %u is invalid\n",
			pdev->dpc_rp_log_size);
		pdev->dpc_rp_log_size = 0;
	}

(I guess `cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE` is zero too?)

Is it a firmware issue or a hardware issue?


Kind regards,

Paul


[1]: https://bugzilla.kernel.org/show_bug.cgi?id=209943
      "pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid"
[2]: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=27005618178ef9e9bf9c42fd91101771c92e9308

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

* Re: pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
  2020-12-07 13:08 pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid Paul Menzel
@ 2020-12-07 17:44 ` Kuppuswamy, Sathyanarayanan
  2020-12-07 23:13   ` Bjorn Helgaas
  0 siblings, 1 reply; 3+ messages in thread
From: Kuppuswamy, Sathyanarayanan @ 2020-12-07 17:44 UTC (permalink / raw)
  To: Paul Menzel
  Cc: Bjorn Helgaas, linux-pci, LKML, Mario Limonciello, Mika Westerberg

Hi,

On 12/7/20 5:08 AM, Paul Menzel wrote:
> [Bringing the issue up on the list in case the Linux Bugzilla is not monitored/used.]
> 
> 
> Dear Linux folks,
> 
> 
> On Intel Tiger Lake Dell laptop, Linux logs the error below [1].
> 
>      [    0.507307] pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
>      [    0.508835] pci 0000:00:07.2: DPC: RP PIO log size 0 is invalid
> 
>      $ lspci -nn -s 00:07
>      00:07.0 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt PCI Express Root Port #0 
> [8086:9a23] (rev 01)
>      00:07.2 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt PCI Express Root Port #2 
> [8086:9a27] (rev 01)
> 
> Commit 2700561817 (PCI/DPC: Cache DPC capabilities in pci_init_capabilities()) [1] probably 
> introduced it in Linux 5.7.
> 
> What does this error actually mean?
> 
>      pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8;
>      if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) {
>          pci_err(pdev, "RP PIO log size %u is invalid\n",
>              pdev->dpc_rp_log_size);
>          pdev->dpc_rp_log_size = 0;
As per PCIe spec r5.0, sec 7.9.15.2, valid RP log size is 4 or greater. Please see
the text copied from spec

- - - -
RP PIO Log Size - This field indicates how many DWORDs are allocated for the RP
PIO log registers, comprised by the RP PIO Header Log, the RP PIO ImpSpec Log,
and RP PIO TLP Prefix Log. If the Root Port supports RP Extensions for DPC, the
value of this field must be 4 or greater; otherwise, the value of
this field must be 0. See Section 7.9.15.11 , Section 7.9.15.12 , and Section 7.9.15.13 .
- - - -

In this case, since "(!(cap & PCI_EXP_DPC_CAP_RP_EXT))" condition is false, RP
EXT is supported. If RP EXT is supported, valid log size should be at-least 4.


>      }
> 
> (I guess `cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE` is zero too?)
> 
> Is it a firmware issue or a hardware issue?
I think this could be hardware issue.
> 
> 
> Kind regards,
> 
> Paul
> 
> 
> [1]: https://bugzilla.kernel.org/show_bug.cgi?id=209943
>       "pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid"
> [2]: 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=27005618178ef9e9bf9c42fd91101771c92e9308 
> 

-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer

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

* Re: pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
  2020-12-07 17:44 ` Kuppuswamy, Sathyanarayanan
@ 2020-12-07 23:13   ` Bjorn Helgaas
  0 siblings, 0 replies; 3+ messages in thread
From: Bjorn Helgaas @ 2020-12-07 23:13 UTC (permalink / raw)
  To: Kuppuswamy, Sathyanarayanan
  Cc: Paul Menzel, Bjorn Helgaas, linux-pci, LKML, Mario Limonciello,
	Mika Westerberg

On Mon, Dec 07, 2020 at 09:44:20AM -0800, Kuppuswamy, Sathyanarayanan wrote:
> On 12/7/20 5:08 AM, Paul Menzel wrote:
> > [Bringing the issue up on the list in case the Linux Bugzilla is not monitored/used.]
> > 
> > 
> > Dear Linux folks,
> > 
> > 
> > On Intel Tiger Lake Dell laptop, Linux logs the error below [1].
> > 
> >      [    0.507307] pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid
> >      [    0.508835] pci 0000:00:07.2: DPC: RP PIO log size 0 is invalid
> > 
> >      $ lspci -nn -s 00:07
> >      00:07.0 PCI bridge [0604]: Intel Corporation Tiger Lake-LP
> > Thunderbolt PCI Express Root Port #0 [8086:9a23] (rev 01)
> >      00:07.2 PCI bridge [0604]: Intel Corporation Tiger Lake-LP
> > Thunderbolt PCI Express Root Port #2 [8086:9a27] (rev 01)
> > 
> > Commit 2700561817 (PCI/DPC: Cache DPC capabilities in
> > pci_init_capabilities()) [1] probably introduced it in Linux 5.7.
> > 
> > What does this error actually mean?
> > 
> >      pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8;
> >      if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) {
> >          pci_err(pdev, "RP PIO log size %u is invalid\n",
> >              pdev->dpc_rp_log_size);
> >          pdev->dpc_rp_log_size = 0;
> As per PCIe spec r5.0, sec 7.9.15.2, valid RP log size is 4 or greater. Please see
> the text copied from spec
> 
> - - - -
> RP PIO Log Size - This field indicates how many DWORDs are allocated for the RP
> PIO log registers, comprised by the RP PIO Header Log, the RP PIO ImpSpec Log,
> and RP PIO TLP Prefix Log. If the Root Port supports RP Extensions for DPC, the
> value of this field must be 4 or greater; otherwise, the value of
> this field must be 0. See Section 7.9.15.11 , Section 7.9.15.12 , and Section 7.9.15.13 .
> - - - -
> 
> In this case, since "(!(cap & PCI_EXP_DPC_CAP_RP_EXT))" condition is false, RP
> EXT is supported. If RP EXT is supported, valid log size should be at-least 4.
> 
> 
> >      }
> > 
> > (I guess `cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE` is zero too?)
> > 
> > Is it a firmware issue or a hardware issue?
> I think this could be hardware issue.

I agree, it looks like a hardware issue.  I posted this to the
bugzilla before I saw this email:

  I assume the only problem is the "DPC: RP PIO log size 0 is invalid"
  message itself?

  It sure looks like the device is out of spec because PCIe r5.0, sec
  7.9.15.2, says

    RP PIO Log Size - This field indicates how many DWORDs are
    allocated for the RP PIO log registers, comprised by the RP PIO
    Header Log, the RP PIO ImpSpec Log, and RP PIO TLP Prefix Log. If
    the Root Port supports RP Extensions for DPC, the value of this
    field must be 4 or greater; otherwise, the value of this field
    must be 0.

  Maybe we just need to tone down the message to pci_info()?  It looks
  like dpc_process_rp_pio_error() would do the right thing even when
  dpc_rp_log_size == 0.

  In the attached messages, the firmware retains control of AER, so
  Linux never tries to use DPC itself anyway.

> > [1]: https://bugzilla.kernel.org/show_bug.cgi?id=209943
> >       "pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid"
> > [2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=27005618178ef9e9bf9c42fd91101771c92e9308
> > 
> 
> -- 
> Sathyanarayanan Kuppuswamy
> Linux Kernel Developer

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

end of thread, other threads:[~2020-12-07 23:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-07 13:08 pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid Paul Menzel
2020-12-07 17:44 ` Kuppuswamy, Sathyanarayanan
2020-12-07 23:13   ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).