* [PATCH v2 0/2] Add IPROC PCIe new features @ 2019-02-05 4:56 Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 1/2] PCI: iproc: Add CRS check in config read Srinath Mannam ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Srinath Mannam @ 2019-02-05 4:56 UTC (permalink / raw) To: Bjorn Helgaas, Lorenzo Pieralisi, Ray Jui, Scott Branden Cc: bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel, Srinath Mannam This patch set extends support of new IPROC PCIe host controller features - Add CRS check using controller register status flags - Add 32bit outbound window mapping configuration This patch set is based on Linux-5.0-rc2. Changes from v1: - Addressed Bjorn Helgaas comments. - Removed set order mode patch from patchset. Srinath Mannam (2): PCI: iproc: Add CRS check in config read PCI: iproc: Add PCIe 32bit outbound memory configuration drivers/pci/controller/pcie-iproc.c | 44 +++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] PCI: iproc: Add CRS check in config read 2019-02-05 4:56 [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam @ 2019-02-05 4:57 ` Srinath Mannam 2019-02-12 18:12 ` Lorenzo Pieralisi 2019-02-05 4:57 ` [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam 2 siblings, 1 reply; 8+ messages in thread From: Srinath Mannam @ 2019-02-05 4:57 UTC (permalink / raw) To: Bjorn Helgaas, Lorenzo Pieralisi, Ray Jui, Scott Branden Cc: bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel, Srinath Mannam In the current implementation, config read output data 0xffff0001 is assumed as CRS completion. But sometimes 0xffff0001 can be a valid data. IPROC PCIe host controller has a register to show config read request status flags like SC, UR, CRS and CA. So that extra check is added to confirm the CRS using status flags before reissue config read. Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> Reviewed-by: Ray Jui <ray.jui@broadcom.com> --- drivers/pci/controller/pcie-iproc.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c index c20fd6b..b882255 100644 --- a/drivers/pci/controller/pcie-iproc.c +++ b/drivers/pci/controller/pcie-iproc.c @@ -60,6 +60,10 @@ #define APB_ERR_EN_SHIFT 0 #define APB_ERR_EN BIT(APB_ERR_EN_SHIFT) +#define CFG_RD_SUCCESS 0 +#define CFG_RD_UR 1 +#define CFG_RD_CRS 2 +#define CFG_RD_CA 3 #define CFG_RETRY_STATUS 0xffff0001 #define CFG_RETRY_STATUS_TIMEOUT_US 500000 /* 500 milliseconds */ @@ -289,6 +293,9 @@ enum iproc_pcie_reg { IPROC_PCIE_IARR4, IPROC_PCIE_IMAP4, + /* config read status */ + IPROC_PCIE_CFG_RD_STATUS, + /* link status */ IPROC_PCIE_LINK_STATUS, @@ -350,6 +357,7 @@ static const u16 iproc_pcie_reg_paxb_v2[] = { [IPROC_PCIE_IMAP3] = 0xe08, [IPROC_PCIE_IARR4] = 0xe68, [IPROC_PCIE_IMAP4] = 0xe70, + [IPROC_PCIE_CFG_RD_STATUS] = 0xee0, [IPROC_PCIE_LINK_STATUS] = 0xf0c, [IPROC_PCIE_APB_ERR_EN] = 0xf40, }; @@ -474,10 +482,12 @@ static void __iomem *iproc_pcie_map_ep_cfg_reg(struct iproc_pcie *pcie, return (pcie->base + offset); } -static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) +static unsigned int iproc_pcie_cfg_retry(struct iproc_pcie *pcie, + void __iomem *cfg_data_p) { int timeout = CFG_RETRY_STATUS_TIMEOUT_US; unsigned int data; + u32 status; /* * As per PCIe spec r3.1, sec 2.3.2, CRS Software Visibility only @@ -498,6 +508,15 @@ static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) */ data = readl(cfg_data_p); while (data == CFG_RETRY_STATUS && timeout--) { + /* + * CRS state is set in CFG_RD status register + * This will handle the case where CFG_RETRY_STATUS is + * valid config data. + */ + status = iproc_pcie_read_reg(pcie, IPROC_PCIE_CFG_RD_STATUS); + if (status != CFG_RD_CRS) + return data; + udelay(1); data = readl(cfg_data_p); } @@ -576,7 +595,7 @@ static int iproc_pcie_config_read(struct pci_bus *bus, unsigned int devfn, if (!cfg_data_p) return PCIBIOS_DEVICE_NOT_FOUND; - data = iproc_pcie_cfg_retry(cfg_data_p); + data = iproc_pcie_cfg_retry(pcie, cfg_data_p); *val = data; if (size <= 2) -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] PCI: iproc: Add CRS check in config read 2019-02-05 4:57 ` [PATCH v2 1/2] PCI: iproc: Add CRS check in config read Srinath Mannam @ 2019-02-12 18:12 ` Lorenzo Pieralisi 2019-02-13 3:57 ` Srinath Mannam 0 siblings, 1 reply; 8+ messages in thread From: Lorenzo Pieralisi @ 2019-02-12 18:12 UTC (permalink / raw) To: Srinath Mannam Cc: Bjorn Helgaas, Ray Jui, Scott Branden, bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel On Tue, Feb 05, 2019 at 10:27:00AM +0530, Srinath Mannam wrote: > In the current implementation, config read output data 0xffff0001 is > assumed as CRS completion. But sometimes 0xffff0001 can be a valid data. > > IPROC PCIe host controller has a register to show config read request > status flags like SC, UR, CRS and CA. So that extra check is added to > confirm the CRS using status flags before reissue config read. > > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> > Reviewed-by: Ray Jui <ray.jui@broadcom.com> > --- > drivers/pci/controller/pcie-iproc.c | 23 +++++++++++++++++++++-- > 1 file changed, 21 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c > index c20fd6b..b882255 100644 > --- a/drivers/pci/controller/pcie-iproc.c > +++ b/drivers/pci/controller/pcie-iproc.c > @@ -60,6 +60,10 @@ > #define APB_ERR_EN_SHIFT 0 > #define APB_ERR_EN BIT(APB_ERR_EN_SHIFT) > > +#define CFG_RD_SUCCESS 0 > +#define CFG_RD_UR 1 > +#define CFG_RD_CRS 2 > +#define CFG_RD_CA 3 > #define CFG_RETRY_STATUS 0xffff0001 > #define CFG_RETRY_STATUS_TIMEOUT_US 500000 /* 500 milliseconds */ > > @@ -289,6 +293,9 @@ enum iproc_pcie_reg { > IPROC_PCIE_IARR4, > IPROC_PCIE_IMAP4, > > + /* config read status */ > + IPROC_PCIE_CFG_RD_STATUS, > + > /* link status */ > IPROC_PCIE_LINK_STATUS, > > @@ -350,6 +357,7 @@ static const u16 iproc_pcie_reg_paxb_v2[] = { > [IPROC_PCIE_IMAP3] = 0xe08, > [IPROC_PCIE_IARR4] = 0xe68, > [IPROC_PCIE_IMAP4] = 0xe70, > + [IPROC_PCIE_CFG_RD_STATUS] = 0xee0, So, with the *current* code, on controllers that does not support this register you won't be able to get any HW whose config space register value reads 0xffff0001 to work, is that correct ? Lorenzo > [IPROC_PCIE_LINK_STATUS] = 0xf0c, > [IPROC_PCIE_APB_ERR_EN] = 0xf40, > }; > @@ -474,10 +482,12 @@ static void __iomem *iproc_pcie_map_ep_cfg_reg(struct iproc_pcie *pcie, > return (pcie->base + offset); > } > > -static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) > +static unsigned int iproc_pcie_cfg_retry(struct iproc_pcie *pcie, > + void __iomem *cfg_data_p) > { > int timeout = CFG_RETRY_STATUS_TIMEOUT_US; > unsigned int data; > + u32 status; > > /* > * As per PCIe spec r3.1, sec 2.3.2, CRS Software Visibility only > @@ -498,6 +508,15 @@ static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) > */ > data = readl(cfg_data_p); > while (data == CFG_RETRY_STATUS && timeout--) { > + /* > + * CRS state is set in CFG_RD status register > + * This will handle the case where CFG_RETRY_STATUS is > + * valid config data. > + */ > + status = iproc_pcie_read_reg(pcie, IPROC_PCIE_CFG_RD_STATUS); > + if (status != CFG_RD_CRS) > + return data; > + > udelay(1); > data = readl(cfg_data_p); > } > @@ -576,7 +595,7 @@ static int iproc_pcie_config_read(struct pci_bus *bus, unsigned int devfn, > if (!cfg_data_p) > return PCIBIOS_DEVICE_NOT_FOUND; > > - data = iproc_pcie_cfg_retry(cfg_data_p); > + data = iproc_pcie_cfg_retry(pcie, cfg_data_p); > > *val = data; > if (size <= 2) > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] PCI: iproc: Add CRS check in config read 2019-02-12 18:12 ` Lorenzo Pieralisi @ 2019-02-13 3:57 ` Srinath Mannam 0 siblings, 0 replies; 8+ messages in thread From: Srinath Mannam @ 2019-02-13 3:57 UTC (permalink / raw) To: Lorenzo Pieralisi Cc: Bjorn Helgaas, Ray Jui, Scott Branden, BCM Kernel Feedback, linux-pci, iommu, Linux Kernel Mailing List Hi Lorenzo, Thanks for review, please see my comments below inline. On Tue, Feb 12, 2019 at 11:42 PM Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> wrote: > > On Tue, Feb 05, 2019 at 10:27:00AM +0530, Srinath Mannam wrote: > > In the current implementation, config read output data 0xffff0001 is > > assumed as CRS completion. But sometimes 0xffff0001 can be a valid data. > > > > IPROC PCIe host controller has a register to show config read request > > status flags like SC, UR, CRS and CA. So that extra check is added to > > confirm the CRS using status flags before reissue config read. > > > > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> > > Reviewed-by: Ray Jui <ray.jui@broadcom.com> > > --- > > drivers/pci/controller/pcie-iproc.c | 23 +++++++++++++++++++++-- > > 1 file changed, 21 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c > > index c20fd6b..b882255 100644 > > --- a/drivers/pci/controller/pcie-iproc.c > > +++ b/drivers/pci/controller/pcie-iproc.c > > @@ -60,6 +60,10 @@ > > #define APB_ERR_EN_SHIFT 0 > > #define APB_ERR_EN BIT(APB_ERR_EN_SHIFT) > > > > +#define CFG_RD_SUCCESS 0 > > +#define CFG_RD_UR 1 > > +#define CFG_RD_CRS 2 > > +#define CFG_RD_CA 3 > > #define CFG_RETRY_STATUS 0xffff0001 > > #define CFG_RETRY_STATUS_TIMEOUT_US 500000 /* 500 milliseconds */ > > > > @@ -289,6 +293,9 @@ enum iproc_pcie_reg { > > IPROC_PCIE_IARR4, > > IPROC_PCIE_IMAP4, > > > > + /* config read status */ > > + IPROC_PCIE_CFG_RD_STATUS, > > + > > /* link status */ > > IPROC_PCIE_LINK_STATUS, > > > > @@ -350,6 +357,7 @@ static const u16 iproc_pcie_reg_paxb_v2[] = { > > [IPROC_PCIE_IMAP3] = 0xe08, > > [IPROC_PCIE_IARR4] = 0xe68, > > [IPROC_PCIE_IMAP4] = 0xe70, > > + [IPROC_PCIE_CFG_RD_STATUS] = 0xee0, > > So, with the *current* code, on controllers that does not support this > register you won't be able to get any HW whose config space register > value reads 0xffff0001 to work, is that correct ? > Yes, this feature(register) is available only in "iProc PCIe PAXB v2" controller for other controllers it will not applicable. Regards, Srinath. > Lorenzo > > > [IPROC_PCIE_LINK_STATUS] = 0xf0c, > > [IPROC_PCIE_APB_ERR_EN] = 0xf40, > > }; > > @@ -474,10 +482,12 @@ static void __iomem *iproc_pcie_map_ep_cfg_reg(struct iproc_pcie *pcie, > > return (pcie->base + offset); > > } > > > > -static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) > > +static unsigned int iproc_pcie_cfg_retry(struct iproc_pcie *pcie, > > + void __iomem *cfg_data_p) > > { > > int timeout = CFG_RETRY_STATUS_TIMEOUT_US; > > unsigned int data; > > + u32 status; > > > > /* > > * As per PCIe spec r3.1, sec 2.3.2, CRS Software Visibility only > > @@ -498,6 +508,15 @@ static unsigned int iproc_pcie_cfg_retry(void __iomem *cfg_data_p) > > */ > > data = readl(cfg_data_p); > > while (data == CFG_RETRY_STATUS && timeout--) { > > + /* > > + * CRS state is set in CFG_RD status register > > + * This will handle the case where CFG_RETRY_STATUS is > > + * valid config data. > > + */ > > + status = iproc_pcie_read_reg(pcie, IPROC_PCIE_CFG_RD_STATUS); > > + if (status != CFG_RD_CRS) > > + return data; > > + > > udelay(1); > > data = readl(cfg_data_p); > > } > > @@ -576,7 +595,7 @@ static int iproc_pcie_config_read(struct pci_bus *bus, unsigned int devfn, > > if (!cfg_data_p) > > return PCIBIOS_DEVICE_NOT_FOUND; > > > > - data = iproc_pcie_cfg_retry(cfg_data_p); > > + data = iproc_pcie_cfg_retry(pcie, cfg_data_p); > > > > *val = data; > > if (size <= 2) > > -- > > 2.7.4 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration 2019-02-05 4:56 [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 1/2] PCI: iproc: Add CRS check in config read Srinath Mannam @ 2019-02-05 4:57 ` Srinath Mannam 2019-02-12 18:37 ` Lorenzo Pieralisi 2019-02-05 4:57 ` [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam 2 siblings, 1 reply; 8+ messages in thread From: Srinath Mannam @ 2019-02-05 4:57 UTC (permalink / raw) To: Bjorn Helgaas, Lorenzo Pieralisi, Ray Jui, Scott Branden Cc: bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel, Srinath Mannam, Abhishek Shah, Ray Jui Add configuration to support IPROC PCIe host controller outbound memory window mapping with SOC address range inside 4GB boundary, which is 32 bit AXI address. Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> Signed-off-by: Abhishek Shah <abhishek.shah@broadcom.com> Signed-off-by: Ray Jui <ray.jui@broadcom.com> Reviewed-by: Scott Branden <scott.branden@broadcom.com> Reviewed-by: Vikram Prakash <vikram.prakash@broadcom.com> --- drivers/pci/controller/pcie-iproc.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c index b882255..080f142 100644 --- a/drivers/pci/controller/pcie-iproc.c +++ b/drivers/pci/controller/pcie-iproc.c @@ -955,8 +955,25 @@ static int iproc_pcie_setup_ob(struct iproc_pcie *pcie, u64 axi_addr, resource_size_t window_size = ob_map->window_sizes[size_idx] * SZ_1M; - if (size < window_size) - continue; + /* + * Keep iterating until we reach the last window and + * with the minimal window size at index zero. In this + * case, we take a compromise by mapping it using the + * minimum window size that can be supported + */ + if (size < window_size) { + if (size_idx > 0 || window_idx > 0) + continue; + + /* + * For the corner case of reaching the minimal + * window size that can be supported on the + * last window + */ + axi_addr = ALIGN_DOWN(axi_addr, window_size); + pci_addr = ALIGN_DOWN(pci_addr, window_size); + size = window_size; + } if (!IS_ALIGNED(axi_addr, window_size) || !IS_ALIGNED(pci_addr, window_size)) { -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration 2019-02-05 4:57 ` [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration Srinath Mannam @ 2019-02-12 18:37 ` Lorenzo Pieralisi 2019-02-13 4:51 ` Srinath Mannam 0 siblings, 1 reply; 8+ messages in thread From: Lorenzo Pieralisi @ 2019-02-12 18:37 UTC (permalink / raw) To: Srinath Mannam Cc: Bjorn Helgaas, Ray Jui, Scott Branden, bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel, Abhishek Shah, Ray Jui On Tue, Feb 05, 2019 at 10:27:01AM +0530, Srinath Mannam wrote: > Add configuration to support IPROC PCIe host controller outbound memory > window mapping with SOC address range inside 4GB boundary, which is 32 bit > AXI address. I do not understand what this means, explain it to me and rewrite the commit log accordingly. What does this solve ? Why do we need this patch or rephrased, what is missing in the current driver ? > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> > Signed-off-by: Abhishek Shah <abhishek.shah@broadcom.com> > Signed-off-by: Ray Jui <ray.jui@broadcom.com> > Reviewed-by: Scott Branden <scott.branden@broadcom.com> > Reviewed-by: Vikram Prakash <vikram.prakash@broadcom.com> Review tags should be given on public mailing lists, these ones seem to come from non-public review cycles in which case you must drop them. > drivers/pci/controller/pcie-iproc.c | 21 +++++++++++++++++++-- > 1 file changed, 19 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c > index b882255..080f142 100644 > --- a/drivers/pci/controller/pcie-iproc.c > +++ b/drivers/pci/controller/pcie-iproc.c > @@ -955,8 +955,25 @@ static int iproc_pcie_setup_ob(struct iproc_pcie *pcie, u64 axi_addr, > resource_size_t window_size = > ob_map->window_sizes[size_idx] * SZ_1M; > > - if (size < window_size) > - continue; > + /* > + * Keep iterating until we reach the last window and > + * with the minimal window size at index zero. In this > + * case, we take a compromise by mapping it using the > + * minimum window size that can be supported See above, I do not understand clearly what this means. Lorenzo > + */ > + if (size < window_size) { > + if (size_idx > 0 || window_idx > 0) > + continue; > + > + /* > + * For the corner case of reaching the minimal > + * window size that can be supported on the > + * last window > + */ > + axi_addr = ALIGN_DOWN(axi_addr, window_size); > + pci_addr = ALIGN_DOWN(pci_addr, window_size); > + size = window_size; > + } > > if (!IS_ALIGNED(axi_addr, window_size) || > !IS_ALIGNED(pci_addr, window_size)) { > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration 2019-02-12 18:37 ` Lorenzo Pieralisi @ 2019-02-13 4:51 ` Srinath Mannam 0 siblings, 0 replies; 8+ messages in thread From: Srinath Mannam @ 2019-02-13 4:51 UTC (permalink / raw) To: Lorenzo Pieralisi Cc: Bjorn Helgaas, Ray Jui, Scott Branden, BCM Kernel Feedback, linux-pci, iommu, Linux Kernel Mailing List, Abhishek Shah, Ray Jui Hi Lorenzo, Thanks for review, please see my comments below inline. On Wed, Feb 13, 2019 at 12:07 AM Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> wrote: > > On Tue, Feb 05, 2019 at 10:27:01AM +0530, Srinath Mannam wrote: > > Add configuration to support IPROC PCIe host controller outbound memory > > window mapping with SOC address range inside 4GB boundary, which is 32 bit > > AXI address. > > I do not understand what this means, explain it to me and rewrite the > commit log accordingly. > This is about "I/O regions" addressing given through ranges DT property. In the current driver "I/O regions" address mapping to corresponding PCI memory address in controller outbound registers is supports above 32-bit address. > What does this solve ? Why do we need this patch or rephrased, what > is missing in the current driver ? With this patch, If ranges DT property has below 32-bit I/O regions address then it will be added in the outbound mapping. This will help to access I/O region from CPU in 32-bit. I will update commit log and send next patch set. Ex: 1. ranges DT property for current driver is, ranges = <0x83000000 0x0 0x40000000 0x4 0x00000000 0 0x40000000>; I/O region address is 0x400000000 2. ranges DT property with this patch, ranges = <0x83000000 0x0 0x42000000 0x0 0x42000000 0 0x2000000>; I/O region address is 0x42000000 Regards, Srinath. > > > Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com> > > Signed-off-by: Abhishek Shah <abhishek.shah@broadcom.com> > > Signed-off-by: Ray Jui <ray.jui@broadcom.com> > > Reviewed-by: Scott Branden <scott.branden@broadcom.com> > > Reviewed-by: Vikram Prakash <vikram.prakash@broadcom.com> > > Review tags should be given on public mailing lists, these ones seem > to come from non-public review cycles in which case you must drop > them. > > > drivers/pci/controller/pcie-iproc.c | 21 +++++++++++++++++++-- > > 1 file changed, 19 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c > > index b882255..080f142 100644 > > --- a/drivers/pci/controller/pcie-iproc.c > > +++ b/drivers/pci/controller/pcie-iproc.c > > @@ -955,8 +955,25 @@ static int iproc_pcie_setup_ob(struct iproc_pcie *pcie, u64 axi_addr, > > resource_size_t window_size = > > ob_map->window_sizes[size_idx] * SZ_1M; > > > > - if (size < window_size) > > - continue; > > + /* > > + * Keep iterating until we reach the last window and > > + * with the minimal window size at index zero. In this > > + * case, we take a compromise by mapping it using the > > + * minimum window size that can be supported > > See above, I do not understand clearly what this means. > > Lorenzo > > > + */ > > + if (size < window_size) { > > + if (size_idx > 0 || window_idx > 0) > > + continue; > > + > > + /* > > + * For the corner case of reaching the minimal > > + * window size that can be supported on the > > + * last window > > + */ > > + axi_addr = ALIGN_DOWN(axi_addr, window_size); > > + pci_addr = ALIGN_DOWN(pci_addr, window_size); > > + size = window_size; > > + } > > > > if (!IS_ALIGNED(axi_addr, window_size) || > > !IS_ALIGNED(pci_addr, window_size)) { > > -- > > 2.7.4 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 0/2] Add IPROC PCIe new features 2019-02-05 4:56 [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 1/2] PCI: iproc: Add CRS check in config read Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration Srinath Mannam @ 2019-02-05 4:57 ` Srinath Mannam 2 siblings, 0 replies; 8+ messages in thread From: Srinath Mannam @ 2019-02-05 4:57 UTC (permalink / raw) To: Bjorn Helgaas, Lorenzo Pieralisi, Ray Jui, Scott Branden Cc: bcm-kernel-feedback-list, linux-pci, iommu, linux-kernel, Srinath Mannam This patch set extends support of new IPROC PCIe host controller features - Add CRS state check using controller register status flags - Add 32bit outbound window mapping configuration This patch set is based on Linux-5.0-rc2. Changes from v1: - Addressed Bjorn Helgaas comments. - Removed set order mode patch from patchset. Srinath Mannam (2): PCI: iproc: Add CRS state check in config read PCI: iproc: Add PCIe 32bit outbound memory configuration drivers/pci/controller/pcie-iproc.c | 44 +++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-02-13 4:52 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-02-05 4:56 [PATCH v2 0/2] Add IPROC PCIe new features Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 1/2] PCI: iproc: Add CRS check in config read Srinath Mannam 2019-02-12 18:12 ` Lorenzo Pieralisi 2019-02-13 3:57 ` Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 2/2] PCI: iproc: Add PCIe 32bit outbound memory configuration Srinath Mannam 2019-02-12 18:37 ` Lorenzo Pieralisi 2019-02-13 4:51 ` Srinath Mannam 2019-02-05 4:57 ` [PATCH v2 0/2] Add IPROC PCIe new features 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).