linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc
@ 2020-09-15 13:45 Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 1/3] PCI: iproc: fix out of bound array access Srinath Mannam
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Srinath Mannam @ 2020-09-15 13:45 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui
  Cc: bcm-kernel-feedback-list, linux-pci, linux-arm-kernel,
	linux-kernel, Srinath Mannam

This patch series contains fixes and improvements to pcie iproc driver.

This patch set is based on Linux-5.9.0-rc2.

Changes from v1:
  - Addressed Bjorn's review comments
     - pcie_print_link_status is used to print Link information.
     - Added IARR1/IMAP1 window map definition.

Bharat Gooty (1):
  PCI: iproc: fix out of bound array access

Roman Bacik (1):
  PCI: iproc: fix invalidating PAXB address mapping

Srinath Mannam (1):
  PCI: iproc: Display PCIe Link information

 drivers/pci/controller/pcie-iproc.c | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

-- 
2.17.1


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

* [PATCH v2 1/3] PCI: iproc: fix out of bound array access
  2020-09-15 13:45 [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Srinath Mannam
@ 2020-09-15 13:45 ` Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 2/3] PCI: iproc: fix invalidating PAXB address mapping Srinath Mannam
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Srinath Mannam @ 2020-09-15 13:45 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui
  Cc: bcm-kernel-feedback-list, linux-pci, linux-arm-kernel,
	linux-kernel, Bharat Gooty

From: Bharat Gooty <bharat.gooty@broadcom.com>

Declare the full size array for all revisions of PAX register sets
to avoid potentially out of bound access of the register array
when they are being initialized in the 'iproc_pcie_rev_init'
function.

Fixes: 06324ede76cdf ("PCI: iproc: Improve core register population")
Signed-off-by: Bharat Gooty <bharat.gooty@broadcom.com>
---
 drivers/pci/controller/pcie-iproc.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
index 905e93808243..d901b9d392b8 100644
--- a/drivers/pci/controller/pcie-iproc.c
+++ b/drivers/pci/controller/pcie-iproc.c
@@ -307,7 +307,7 @@ enum iproc_pcie_reg {
 };
 
 /* iProc PCIe PAXB BCMA registers */
-static const u16 iproc_pcie_reg_paxb_bcma[] = {
+static const u16 iproc_pcie_reg_paxb_bcma[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]		= 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]	= 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]	= 0x124,
@@ -318,7 +318,7 @@ static const u16 iproc_pcie_reg_paxb_bcma[] = {
 };
 
 /* iProc PCIe PAXB registers */
-static const u16 iproc_pcie_reg_paxb[] = {
+static const u16 iproc_pcie_reg_paxb[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]		= 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]	= 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]	= 0x124,
@@ -334,7 +334,7 @@ static const u16 iproc_pcie_reg_paxb[] = {
 };
 
 /* iProc PCIe PAXB v2 registers */
-static const u16 iproc_pcie_reg_paxb_v2[] = {
+static const u16 iproc_pcie_reg_paxb_v2[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]		= 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]	= 0x120,
 	[IPROC_PCIE_CFG_IND_DATA]	= 0x124,
@@ -363,7 +363,7 @@ static const u16 iproc_pcie_reg_paxb_v2[] = {
 };
 
 /* iProc PCIe PAXC v1 registers */
-static const u16 iproc_pcie_reg_paxc[] = {
+static const u16 iproc_pcie_reg_paxc[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_CLK_CTRL]		= 0x000,
 	[IPROC_PCIE_CFG_IND_ADDR]	= 0x1f0,
 	[IPROC_PCIE_CFG_IND_DATA]	= 0x1f4,
@@ -372,7 +372,7 @@ static const u16 iproc_pcie_reg_paxc[] = {
 };
 
 /* iProc PCIe PAXC v2 registers */
-static const u16 iproc_pcie_reg_paxc_v2[] = {
+static const u16 iproc_pcie_reg_paxc_v2[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_MSI_GIC_MODE]	= 0x050,
 	[IPROC_PCIE_MSI_BASE_ADDR]	= 0x074,
 	[IPROC_PCIE_MSI_WINDOW_SIZE]	= 0x078,
-- 
2.17.1


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

* [PATCH v2 2/3] PCI: iproc: fix invalidating PAXB address mapping
  2020-09-15 13:45 [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 1/3] PCI: iproc: fix out of bound array access Srinath Mannam
@ 2020-09-15 13:45 ` Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 3/3] PCI: iproc: Display PCIe Link information Srinath Mannam
  2020-09-16 22:08 ` [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Bjorn Helgaas
  3 siblings, 0 replies; 8+ messages in thread
From: Srinath Mannam @ 2020-09-15 13:45 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui
  Cc: bcm-kernel-feedback-list, linux-pci, linux-arm-kernel,
	linux-kernel, Roman Bacik, Srinath Mannam

From: Roman Bacik <roman.bacik@broadcom.com>

Second stage bootloader prior to Linux boot may use all inbound windows
including IARR1/IMAP1. We need to ensure all previous configuration of
inbound windows are invalidated during the initialization stage of the
Linux iProc PCIe driver. Add fix to define and invalidate IARR1/IMAP1
because it was missed in previous patch.

Fixes: 9415743e4c8a ("PCI: iproc: Invalidate PAXB address mapping")
Signed-off-by: Roman Bacik <roman.bacik@broadcom.com>
Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
---
 drivers/pci/controller/pcie-iproc.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
index d901b9d392b8..cc5b7823edeb 100644
--- a/drivers/pci/controller/pcie-iproc.c
+++ b/drivers/pci/controller/pcie-iproc.c
@@ -192,8 +192,15 @@ static const struct iproc_pcie_ib_map paxb_v2_ib_map[] = {
 		.imap_window_offset = 0x4,
 	},
 	{
-		/* IARR1/IMAP1 (currently unused) */
-		.type = IPROC_PCIE_IB_MAP_INVALID,
+		/* IARR1/IMAP1 */
+		.type = IPROC_PCIE_IB_MAP_MEM,
+		.size_unit = SZ_1M,
+		.region_sizes = { 8 },
+		.nr_sizes = 1,
+		.nr_windows = 8,
+		.imap_addr_offset = 0x4,
+		.imap_window_offset = 0x8,
+
 	},
 	{
 		/* IARR2/IMAP2 */
@@ -351,6 +358,8 @@ static const u16 iproc_pcie_reg_paxb_v2[IPROC_PCIE_MAX_NUM_REG] = {
 	[IPROC_PCIE_OMAP3]		= 0xdf8,
 	[IPROC_PCIE_IARR0]		= 0xd00,
 	[IPROC_PCIE_IMAP0]		= 0xc00,
+	[IPROC_PCIE_IARR1]		= 0xd08,
+	[IPROC_PCIE_IMAP1]		= 0xd70,
 	[IPROC_PCIE_IARR2]		= 0xd10,
 	[IPROC_PCIE_IMAP2]		= 0xcc0,
 	[IPROC_PCIE_IARR3]		= 0xe00,
-- 
2.17.1


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

* [PATCH v2 3/3] PCI: iproc: Display PCIe Link information
  2020-09-15 13:45 [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 1/3] PCI: iproc: fix out of bound array access Srinath Mannam
  2020-09-15 13:45 ` [PATCH v2 2/3] PCI: iproc: fix invalidating PAXB address mapping Srinath Mannam
@ 2020-09-15 13:45 ` Srinath Mannam
  2020-09-17  1:52   ` Rob Herring
  2020-09-16 22:08 ` [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Bjorn Helgaas
  3 siblings, 1 reply; 8+ messages in thread
From: Srinath Mannam @ 2020-09-15 13:45 UTC (permalink / raw)
  To: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui
  Cc: bcm-kernel-feedback-list, linux-pci, linux-arm-kernel,
	linux-kernel, Srinath Mannam

After successful linkup more comprehensive information about PCIe link
speed and link width will be displayed to the console.

Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
---
 drivers/pci/controller/pcie-iproc.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
index cc5b7823edeb..8ef2d1fe392c 100644
--- a/drivers/pci/controller/pcie-iproc.c
+++ b/drivers/pci/controller/pcie-iproc.c
@@ -1479,6 +1479,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
 {
 	struct device *dev;
 	int ret;
+	struct pci_dev *pdev;
 	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
 
 	dev = pcie->dev;
@@ -1542,6 +1543,11 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
 		goto err_power_off_phy;
 	}
 
+	for_each_pci_bridge(pdev, host->bus) {
+		if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
+			pcie_print_link_status(pdev);
+	}
+
 	return 0;
 
 err_power_off_phy:
-- 
2.17.1


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

* Re: [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc
  2020-09-15 13:45 [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Srinath Mannam
                   ` (2 preceding siblings ...)
  2020-09-15 13:45 ` [PATCH v2 3/3] PCI: iproc: Display PCIe Link information Srinath Mannam
@ 2020-09-16 22:08 ` Bjorn Helgaas
  2020-09-17  2:44   ` Srinath Mannam
  3 siblings, 1 reply; 8+ messages in thread
From: Bjorn Helgaas @ 2020-09-16 22:08 UTC (permalink / raw)
  To: Srinath Mannam
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui,
	bcm-kernel-feedback-list, linux-pci, linux-arm-kernel,
	linux-kernel

On Tue, Sep 15, 2020 at 07:15:38PM +0530, Srinath Mannam wrote:
> This patch series contains fixes and improvements to pcie iproc driver.
> 
> This patch set is based on Linux-5.9.0-rc2.
> 
> Changes from v1:
>   - Addressed Bjorn's review comments
>      - pcie_print_link_status is used to print Link information.
>      - Added IARR1/IMAP1 window map definition.
> 
> Bharat Gooty (1):
>   PCI: iproc: fix out of bound array access
> 
> Roman Bacik (1):
>   PCI: iproc: fix invalidating PAXB address mapping

You didn't update thest subject lines so they match.
https://lore.kernel.org/r/20200326194810.GA11112@google.com

> Srinath Mannam (1):
>   PCI: iproc: Display PCIe Link information
> 
>  drivers/pci/controller/pcie-iproc.c | 29 ++++++++++++++++++++++-------
>  1 file changed, 22 insertions(+), 7 deletions(-)
> 
> -- 
> 2.17.1
> 

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

* Re: [PATCH v2 3/3] PCI: iproc: Display PCIe Link information
  2020-09-15 13:45 ` [PATCH v2 3/3] PCI: iproc: Display PCIe Link information Srinath Mannam
@ 2020-09-17  1:52   ` Rob Herring
  2020-09-17  3:12     ` Srinath Mannam
  0 siblings, 1 reply; 8+ messages in thread
From: Rob Herring @ 2020-09-17  1:52 UTC (permalink / raw)
  To: Srinath Mannam
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui, linux-pci,
	bcm-kernel-feedback-list, linux-kernel, linux-arm-kernel

On Tue, Sep 15, 2020 at 07:15:41PM +0530, Srinath Mannam wrote:
> After successful linkup more comprehensive information about PCIe link
> speed and link width will be displayed to the console.
> 
> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
> ---
>  drivers/pci/controller/pcie-iproc.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> index cc5b7823edeb..8ef2d1fe392c 100644
> --- a/drivers/pci/controller/pcie-iproc.c
> +++ b/drivers/pci/controller/pcie-iproc.c
> @@ -1479,6 +1479,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
>  {
>  	struct device *dev;
>  	int ret;
> +	struct pci_dev *pdev;
>  	struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
>  
>  	dev = pcie->dev;
> @@ -1542,6 +1543,11 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
>  		goto err_power_off_phy;
>  	}
>  
> +	for_each_pci_bridge(pdev, host->bus) {
> +		if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
> +			pcie_print_link_status(pdev);
> +	}

If this information is useful for 1 host implementation, why not all of 
them and put this in a common spot.

Rob

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

* Re: [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc
  2020-09-16 22:08 ` [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Bjorn Helgaas
@ 2020-09-17  2:44   ` Srinath Mannam
  0 siblings, 0 replies; 8+ messages in thread
From: Srinath Mannam @ 2020-09-17  2:44 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui, BCM Kernel Feedback,
	linux-pci, Linux ARM, Linux Kernel Mailing List

On Thu, Sep 17, 2020 at 3:38 AM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
Hi Bjorn,
Thanks for review.
> On Tue, Sep 15, 2020 at 07:15:38PM +0530, Srinath Mannam wrote:
> > This patch series contains fixes and improvements to pcie iproc driver.
> >
> > This patch set is based on Linux-5.9.0-rc2.
> >
> > Changes from v1:
> >   - Addressed Bjorn's review comments
> >      - pcie_print_link_status is used to print Link information.
> >      - Added IARR1/IMAP1 window map definition.
> >
> > Bharat Gooty (1):
> >   PCI: iproc: fix out of bound array access
> >
> > Roman Bacik (1):
> >   PCI: iproc: fix invalidating PAXB address mapping
>
> You didn't update thest subject lines so they match.
> https://lore.kernel.org/r/20200326194810.GA11112@google.com
Yes this patchset is the latest version to the patches in the link.
My apologies that I missed to address your review comment about
the commit message of "PCI: iproc: fix out of bound array access"
in this patchset.
Thanks & Regards,
Srinath.
>
> > Srinath Mannam (1):
> >   PCI: iproc: Display PCIe Link information
> >
> >  drivers/pci/controller/pcie-iproc.c | 29 ++++++++++++++++++++++-------
> >  1 file changed, 22 insertions(+), 7 deletions(-)
> >
> > --
> > 2.17.1
> >

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

* Re: [PATCH v2 3/3] PCI: iproc: Display PCIe Link information
  2020-09-17  1:52   ` Rob Herring
@ 2020-09-17  3:12     ` Srinath Mannam
  0 siblings, 0 replies; 8+ messages in thread
From: Srinath Mannam @ 2020-09-17  3:12 UTC (permalink / raw)
  To: Rob Herring
  Cc: Lorenzo Pieralisi, Bjorn Helgaas, Ray Jui, linux-pci,
	BCM Kernel Feedback, Linux Kernel Mailing List, Linux ARM

On Thu, Sep 17, 2020 at 7:22 AM Rob Herring <robh@kernel.org> wrote:
>
Hi Rob,
Thanks for review.
> On Tue, Sep 15, 2020 at 07:15:41PM +0530, Srinath Mannam wrote:
> > After successful linkup more comprehensive information about PCIe link
> > speed and link width will be displayed to the console.
> >
> > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
> > ---
> >  drivers/pci/controller/pcie-iproc.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> > index cc5b7823edeb..8ef2d1fe392c 100644
> > --- a/drivers/pci/controller/pcie-iproc.c
> > +++ b/drivers/pci/controller/pcie-iproc.c
> > @@ -1479,6 +1479,7 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
> >  {
> >       struct device *dev;
> >       int ret;
> > +     struct pci_dev *pdev;
> >       struct pci_host_bridge *host = pci_host_bridge_from_priv(pcie);
> >
> >       dev = pcie->dev;
> > @@ -1542,6 +1543,11 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
> >               goto err_power_off_phy;
> >       }
> >
> > +     for_each_pci_bridge(pdev, host->bus) {
> > +             if (pci_pcie_type(pdev) == PCI_EXP_TYPE_ROOT_PORT)
> > +                     pcie_print_link_status(pdev);
> > +     }
>
> If this information is useful for 1 host implementation, why not all of
> them and put this in a common spot.
In common, pcie_print_link_status() is called during pci device caps
initialization, if the available link bandwidth is less than capabilities
of devices. Few EP drivers also used this function to print link
bandwidth info. This host can be configured for different link
speeds and link widths on different platforms so we thought
displaying link bandwidth after successful linkup is helpful to
know link details.

Thanks & Regards,
Srinath.
>
> Rob

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

end of thread, other threads:[~2020-09-17  3:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-15 13:45 [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Srinath Mannam
2020-09-15 13:45 ` [PATCH v2 1/3] PCI: iproc: fix out of bound array access Srinath Mannam
2020-09-15 13:45 ` [PATCH v2 2/3] PCI: iproc: fix invalidating PAXB address mapping Srinath Mannam
2020-09-15 13:45 ` [PATCH v2 3/3] PCI: iproc: Display PCIe Link information Srinath Mannam
2020-09-17  1:52   ` Rob Herring
2020-09-17  3:12     ` Srinath Mannam
2020-09-16 22:08 ` [PATCH v2 0/3] PCI: iproc: Add fixes to pcie iproc Bjorn Helgaas
2020-09-17  2:44   ` Srinath Mannam

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