linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V5 0/1] Intel Sky Lake-E host root ports check.
@ 2022-03-31  7:35 Shlomo Pongratz
  2022-03-31  7:35 ` [PATCH V5 1/1] " Shlomo Pongratz
  0 siblings, 1 reply; 4+ messages in thread
From: Shlomo Pongratz @ 2022-03-31  7:35 UTC (permalink / raw)
  To: linux-pci
  Cc: linux-kernel, andrew.maier, logang, bhelgaas, jgg, helgaas,
	Shlomo Pongratz

Changes in v5: 

Address Logan Gunthorpe, Jason Gunthorpe and Bjorn Helgaas comments.
Fix indentation.
Update comments.

Changes in v4: 

Address Bjorn Helgaas and Jason Gunthorpe comments.
Replace the implementation of pci_is_root_port with a simple check
pci_pcie_type(root) != PCI_EXP_TYPE_ROOT_PORT and remove the added
IS_ROOT_PORT flag.
Update patch text.

Changes in v3: 

Use Jason Gunthorpe suggestion, that is add a flag 'IS_ROOT_PORT'
instead of 'port' and then just ignore the slot number entirely for root ports.

Changes in v2: 

Change comment and description based on Logan Gunthorpe comments.


v1:

In commit 7b94b53db34f ("PCI/P2PDMA: Add Intel Sky Lake-E Root Ports B, C, D to
the whitelist")
Andrew Maier added the Sky Lake-E additional devices
2031, 2032 and 2033 root ports to the already existing 2030 device.

The Intel devices 2030, 2031, 2032 and 2033 which are root ports A, B, C and D,
respectively and if all exist they will occupy slots 0 till 3 in that order.

The original code handled only the case where the devices in the whitelist are 
host bridges and assumed that they will be found on slot 0.

This assumption doesn't hold for root ports so an explicit test was added to
cover this case.


Shlomo Pongratz (1):
  Intel Sky Lake-E host root ports check.

 drivers/pci/p2pdma.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

-- 
2.17.1


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

* [PATCH V5 1/1] Intel Sky Lake-E host root ports check.
  2022-03-31  7:35 [PATCH V5 0/1] Intel Sky Lake-E host root ports check Shlomo Pongratz
@ 2022-03-31  7:35 ` Shlomo Pongratz
  2022-03-31 14:31   ` Bjorn Helgaas
  0 siblings, 1 reply; 4+ messages in thread
From: Shlomo Pongratz @ 2022-03-31  7:35 UTC (permalink / raw)
  To: linux-pci
  Cc: linux-kernel, andrew.maier, logang, bhelgaas, jgg, helgaas,
	Shlomo Pongratz

In commit 7b94b53db34f ("PCI/P2PDMA: Add Intel Sky Lake-E Root Ports B, C, D to
the whitelist")
Andrew Maier added the Sky Lake-E additional devices
2031, 2032 and 2033 root ports to the already existing 2030 device.

The Intel devices 2030, 2031, 2032 and 2033 which are root ports A, B, C and D,
respectively and if all exist they will occupy slots 0 till 3 in that order.

The original code handled only the case where the devices in the whitelist are
host bridges and assumed that they will be found on slot 0.

This assumption doesn't hold for root ports so an explicit test was added to
cover this case.

Signed-off-by: Shlomo Pongratz <shlomop@pliops.com>
---
 drivers/pci/p2pdma.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
index 30b1df3c9d2f..87c62ca0976d 100644
--- a/drivers/pci/p2pdma.c
+++ b/drivers/pci/p2pdma.c
@@ -327,15 +327,18 @@ static const struct pci_p2pdma_whitelist_entry {
 
 /*
  * This lookup function tries to find the PCI device corresponding to a given
- * host bridge.
+ * host bridge or a root port.
  *
  * It assumes the host bridge device is the first PCI device in the
- * bus->devices list and that the devfn is 00.0. These assumptions should hold
- * for all the devices in the whitelist above.
+ * bus->devices list and that the devfn is 00.0. The first assumption should
+ * hold for all the devices in the whitelist above, however the second one
+ * doesn't always holds for root ports, for example Intel SkyLake-E devices
+ * 2030, 2031, 2032 and 2033 which are root ports (A, B, C and D respectively).
+ * So being a root port is checked explicitly.
  *
- * This function is equivalent to pci_get_slot(host->bus, 0), however it does
- * not take the pci_bus_sem lock seeing __host_bridge_whitelist() must not
- * sleep.
+ * This function is equivalent to pci_get_slot(host->bus, 0) (except for
+ * the root port test), however it does not take the pci_bus_sem lock seeing
+ * __host_bridge_whitelist() must not sleep.
  *
  * For this to be safe, the caller should hold a reference to a device on the
  * bridge, which should ensure the host_bridge device will not be freed
@@ -350,7 +353,14 @@ static struct pci_dev *pci_host_bridge_dev(struct pci_host_bridge *host)
 
 	if (!root)
 		return NULL;
-	if (root->devfn != PCI_DEVFN(0, 0))
+
+	/* Verify that the device is a host bridge or a root port
+	 * It is assumed that host bridges have a 0 devfn, (common practice)
+	 * but some of the entries in the whitelist are root ports that can
+	 * have any devfn
+	 */
+	if (root->devfn != PCI_DEVFN(0, 0) &&
+	    pci_pcie_type(root) != PCI_EXP_TYPE_ROOT_PORT)
 		return NULL;
 
 	return root;
-- 
2.17.1


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

* Re: [PATCH V5 1/1] Intel Sky Lake-E host root ports check.
  2022-03-31  7:35 ` [PATCH V5 1/1] " Shlomo Pongratz
@ 2022-03-31 14:31   ` Bjorn Helgaas
  2022-04-01 16:11     ` Shlomo Pongratz
  0 siblings, 1 reply; 4+ messages in thread
From: Bjorn Helgaas @ 2022-03-31 14:31 UTC (permalink / raw)
  To: Shlomo Pongratz
  Cc: linux-pci, linux-kernel, andrew.maier, logang, bhelgaas, jgg,
	Shlomo Pongratz

On Thu, Mar 31, 2022 at 10:35:39AM +0300, Shlomo Pongratz wrote:
> In commit 7b94b53db34f ("PCI/P2PDMA: Add Intel Sky Lake-E Root Ports B, C, D to
> the whitelist")
> Andrew Maier added the Sky Lake-E additional devices
> 2031, 2032 and 2033 root ports to the already existing 2030 device.
> 
> The Intel devices 2030, 2031, 2032 and 2033 which are root ports A, B, C and D,
> respectively and if all exist they will occupy slots 0 till 3 in that order.

Please make this a sentence.

> The original code handled only the case where the devices in the whitelist are
> host bridges and assumed that they will be found on slot 0.
> 
> This assumption doesn't hold for root ports so an explicit test was added to
> cover this case.

Please update the subject line to match the style of previous ones.

Please wrap the commit log to fit in 80 columns (including the 4
spaces added by "git log") like previous commits.

Please figure out whether you want "Sky Lake-E" or "SkyLake-E" and use
it consistently in commit log and code comments.  It seems to be
"Skylake" on intel.com, so I suggest using that.

Please use imperative mood, e.g., instead of "an explicit test was
added ...," write "add a test to cover this case."  Do the same in
code comments.

Bjorn

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

* Re: [PATCH V5 1/1] Intel Sky Lake-E host root ports check.
  2022-03-31 14:31   ` Bjorn Helgaas
@ 2022-04-01 16:11     ` Shlomo Pongratz
  0 siblings, 0 replies; 4+ messages in thread
From: Shlomo Pongratz @ 2022-04-01 16:11 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: linux-pci, linux-kernel, andrew.maier, logang, bhelgaas, jgg,
	Shlomo Pongratz

On 31/03/2022 17:31, Bjorn Helgaas wrote:
> On Thu, Mar 31, 2022 at 10:35:39AM +0300, Shlomo Pongratz wrote:
>> In commit 7b94b53db34f ("PCI/P2PDMA: Add Intel Sky Lake-E Root Ports B, C, D to
>> the whitelist")
>> Andrew Maier added the Sky Lake-E additional devices
>> 2031, 2032 and 2033 root ports to the already existing 2030 device.
>>
>> The Intel devices 2030, 2031, 2032 and 2033 which are root ports A, B, C and D,
>> respectively and if all exist they will occupy slots 0 till 3 in that order.
> Please make this a sentence.
>
>> The original code handled only the case where the devices in the whitelist are
>> host bridges and assumed that they will be found on slot 0.
>>
>> This assumption doesn't hold for root ports so an explicit test was added to
>> cover this case.
> Please update the subject line to match the style of previous ones.
>
> Please wrap the commit log to fit in 80 columns (including the 4
> spaces added by "git log") like previous commits.
>
> Please figure out whether you want "Sky Lake-E" or "SkyLake-E" and use
> it consistently in commit log and code comments.  It seems to be
> "Skylake" on intel.com, so I suggest using that.
I think that you are right and Skylake is indeed a better name,
but since Andrew Maier in his original patch used Sky Lake-E it is
better to stick with it. (SkyLake-E will be removed).
>
> Please use imperative mood, e.g., instead of "an explicit test was
> added ...," write "add a test to cover this case."  Do the same in
> code comments.
>
> Bjorn
Shlomo
------------------------------------------------------------------------
*From:* Bjorn Helgaas [mailto:helgaas@kernel.org]
*Sent:* Thursday, March 31, 2022, 5:31 PM
*To:* Shlomo Pongratz
*Cc:* linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, 
andrew.maier@eideticom.com, logang@deltatee.com, bhelgaas@google.com, 
jgg@nvidia.com, Shlomo Pongratz
*Subject:* [PATCH V5 1/1] Intel Sky Lake-E host root ports check.

> On Thu, Mar 31, 2022 at 10:35:39AM +0300, Shlomo Pongratz wrote:
>> In commit 7b94b53db34f ("PCI/P2PDMA: Add Intel Sky Lake-E Root Ports B, C, D to
>> the whitelist")
>> Andrew Maier added the Sky Lake-E additional devices
>> 2031, 2032 and 2033 root ports to the already existing 2030 device.
>>
>> The Intel devices 2030, 2031, 2032 and 2033 which are root ports A, B, C and D,
>> respectively and if all exist they will occupy slots 0 till 3 in that order.
> Please make this a sentence.
>
>> The original code handled only the case where the devices in the whitelist are
>> host bridges and assumed that they will be found on slot 0.
>>
>> This assumption doesn't hold for root ports so an explicit test was added to
>> cover this case.
> Please update the subject line to match the style of previous ones.
>
> Please wrap the commit log to fit in 80 columns (including the 4
> spaces added by "git log") like previous commits.
>
> Please figure out whether you want "Sky Lake-E" or "SkyLake-E" and use
> it consistently in commit log and code comments.  It seems to be
> "Skylake" on intel.com, so I suggest using that.
>
> Please use imperative mood, e.g., instead of "an explicit test was
> added ...," write "add a test to cover this case."  Do the same in
> code comments.
>
> Bjorn

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

end of thread, other threads:[~2022-04-01 16:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-31  7:35 [PATCH V5 0/1] Intel Sky Lake-E host root ports check Shlomo Pongratz
2022-03-31  7:35 ` [PATCH V5 1/1] " Shlomo Pongratz
2022-03-31 14:31   ` Bjorn Helgaas
2022-04-01 16:11     ` Shlomo Pongratz

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).