* [PATCH v3 0/9] PCI: endpoint: set prefetchable bit for 64-bit BARs
@ 2024-03-13 10:57 Niklas Cassel
2024-03-13 10:58 ` [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested Niklas Cassel
0 siblings, 1 reply; 9+ messages in thread
From: Niklas Cassel @ 2024-03-13 10:57 UTC (permalink / raw)
To: Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas, Shawn Lin,
Heiko Stuebner, Kishon Vijay Abraham I
Cc: Shradha Todi, Damien Le Moal, Niklas Cassel, linux-pci,
linux-rockchip, linux-arm-kernel
Shradha Todi wanted to add prefetchable BAR support by adding more things
to epc_features:
https://lore.kernel.org/linux-pci/20240228134448.56372-1-shradha.t@samsung.com/T/#t
The series starts off with some generic cleanups and fixes which was needed
to make the implementation of the actual feature easier.
The final patch in the series sets the prefetchable bit for all backing memory
that the EPF core allocates for a 64-bit BAR.
Kind regards,
Niklas
Changes since V2:
-Fixed warning when building with W=1 reported by kernel test robot.
Niklas Cassel (9):
PCI: endpoint: pci-epf-test: Fix incorrect loop increment
PCI: endpoint: Allocate a 64-bit BAR if that is the only option
PCI: endpoint: pci-epf-test: Remove superfluous code
PCI: endpoint: pci-epf-test: Simplify pci_epf_test_alloc_space() loop
PCI: endpoint: pci-epf-test: Simplify pci_epf_test_set_bar() loop
PCI: endpoint: pci-epf-test: Clean up pci_epf_test_unbind()
PCI: cadence: Set a 64-bit BAR if requested
PCI: rockchip-ep: Set a 64-bit BAR if requested
PCI: endpoint: Set prefetch when allocating memory for 64-bit BARs
.../pci/controller/cadence/pcie-cadence-ep.c | 5 +-
drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
drivers/pci/endpoint/functions/pci-epf-test.c | 70 +++++++------------
drivers/pci/endpoint/pci-epf-core.c | 10 ++-
4 files changed, 33 insertions(+), 54 deletions(-)
--
2.44.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-03-13 10:57 [PATCH v3 0/9] PCI: endpoint: set prefetchable bit for 64-bit BARs Niklas Cassel
@ 2024-03-13 10:58 ` Niklas Cassel
2024-03-15 5:47 ` Manivannan Sadhasivam
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Niklas Cassel @ 2024-03-13 10:58 UTC (permalink / raw)
To: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner
Cc: Shradha Todi, Damien Le Moal, Niklas Cassel, linux-pci,
linux-rockchip, linux-arm-kernel
Ever since commit f25b5fae29d4 ("PCI: endpoint: Setting a BAR size > 4 GB
is invalid if 64-bit flag is not set") it has been impossible to get the
.set_bar() callback with a BAR size > 4 GB, if the BAR was also not
requested to be configured as a 64-bit BAR.
It is however possible that an EPF driver configures a BAR as 64-bit,
even if the requested size is < 4 GB.
Respect the requested BAR configuration, just like how it is already
repected with regards to the prefetchable bit.
Signed-off-by: Niklas Cassel <cassel@kernel.org>
---
drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c
index c9046e97a1d2..57472cf48997 100644
--- a/drivers/pci/controller/pcie-rockchip-ep.c
+++ b/drivers/pci/controller/pcie-rockchip-ep.c
@@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
} else {
bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
- bool is_64bits = sz > SZ_2G;
+ bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
if (is_64bits && (bar & 1))
return -EINVAL;
--
2.44.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-03-13 10:58 ` [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested Niklas Cassel
@ 2024-03-15 5:47 ` Manivannan Sadhasivam
2024-04-12 17:51 ` Bjorn Helgaas
2024-04-12 18:59 ` Bjorn Helgaas
2 siblings, 0 replies; 9+ messages in thread
From: Manivannan Sadhasivam @ 2024-03-15 5:47 UTC (permalink / raw)
To: Niklas Cassel
Cc: Shawn Lin, Lorenzo Pieralisi, Krzysztof Wilczyński,
Rob Herring, Bjorn Helgaas, Heiko Stuebner, Shradha Todi,
Damien Le Moal, linux-pci, linux-rockchip, linux-arm-kernel
On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> Ever since commit f25b5fae29d4 ("PCI: endpoint: Setting a BAR size > 4 GB
> is invalid if 64-bit flag is not set") it has been impossible to get the
> .set_bar() callback with a BAR size > 4 GB, if the BAR was also not
> requested to be configured as a 64-bit BAR.
>
> It is however possible that an EPF driver configures a BAR as 64-bit,
> even if the requested size is < 4 GB.
2 GB
>
> Respect the requested BAR configuration, just like how it is already
> repected with regards to the prefetchable bit.
>
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
Ah, I missed this one. But the same comment as previous one applies to this
patch also.
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> ---
> drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c
> index c9046e97a1d2..57472cf48997 100644
> --- a/drivers/pci/controller/pcie-rockchip-ep.c
> +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> } else {
> bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> - bool is_64bits = sz > SZ_2G;
> + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
>
> if (is_64bits && (bar & 1))
> return -EINVAL;
> --
> 2.44.0
>
--
மணிவண்ணன் சதாசிவம்
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-03-13 10:58 ` [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested Niklas Cassel
2024-03-15 5:47 ` Manivannan Sadhasivam
@ 2024-04-12 17:51 ` Bjorn Helgaas
2024-04-12 21:39 ` Niklas Cassel
2024-04-12 18:59 ` Bjorn Helgaas
2 siblings, 1 reply; 9+ messages in thread
From: Bjorn Helgaas @ 2024-04-12 17:51 UTC (permalink / raw)
To: Niklas Cassel
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> Ever since commit f25b5fae29d4 ("PCI: endpoint: Setting a BAR size > 4 GB
> is invalid if 64-bit flag is not set") it has been impossible to get the
> .set_bar() callback with a BAR size > 4 GB, if the BAR was also not
> requested to be configured as a 64-bit BAR.
>
> It is however possible that an EPF driver configures a BAR as 64-bit,
> even if the requested size is < 4 GB.
>
> Respect the requested BAR configuration, just like how it is already
> repected with regards to the prefetchable bit.
Does this (and the similar cadence patch) need a Fixes: tag for
f25b5fae29d4?
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
> ---
> drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c
> index c9046e97a1d2..57472cf48997 100644
> --- a/drivers/pci/controller/pcie-rockchip-ep.c
> +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> } else {
> bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> - bool is_64bits = sz > SZ_2G;
> + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
>
> if (is_64bits && (bar & 1))
> return -EINVAL;
> --
> 2.44.0
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-03-13 10:58 ` [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested Niklas Cassel
2024-03-15 5:47 ` Manivannan Sadhasivam
2024-04-12 17:51 ` Bjorn Helgaas
@ 2024-04-12 18:59 ` Bjorn Helgaas
2024-04-12 22:02 ` Niklas Cassel
2 siblings, 1 reply; 9+ messages in thread
From: Bjorn Helgaas @ 2024-04-12 18:59 UTC (permalink / raw)
To: Niklas Cassel
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> ...
> --- a/drivers/pci/controller/pcie-rockchip-ep.c
> +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> } else {
> bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> - bool is_64bits = sz > SZ_2G;
> + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
>
> if (is_64bits && (bar & 1))
> return -EINVAL;
Completely unrelated to *these* patches, but the BAR_CFG_CTRL
definitions in both cadence and rockchip lead to some awkward case
analysis:
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS 0x4
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS 0x5
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS 0x6
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS 0x7
if (is_64bits && is_prefetch)
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS;
else if (is_prefetch)
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS;
else if (is_64bits)
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS;
else
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS;
that *could* be just something like this:
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM 0x4
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS 0x2
#define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH 0x1
ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM;
if (is_64bits)
ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS;
if (is_prefetch)
ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH;
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-04-12 17:51 ` Bjorn Helgaas
@ 2024-04-12 21:39 ` Niklas Cassel
2024-04-12 22:00 ` Bjorn Helgaas
0 siblings, 1 reply; 9+ messages in thread
From: Niklas Cassel @ 2024-04-12 21:39 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Fri, Apr 12, 2024 at 12:51:27PM -0500, Bjorn Helgaas wrote:
> On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> > Ever since commit f25b5fae29d4 ("PCI: endpoint: Setting a BAR size > 4 GB
> > is invalid if 64-bit flag is not set") it has been impossible to get the
> > .set_bar() callback with a BAR size > 4 GB, if the BAR was also not
> > requested to be configured as a 64-bit BAR.
> >
> > It is however possible that an EPF driver configures a BAR as 64-bit,
> > even if the requested size is < 4 GB.
> >
> > Respect the requested BAR configuration, just like how it is already
> > repected with regards to the prefetchable bit.
>
> Does this (and the similar cadence patch) need a Fixes: tag for
> f25b5fae29d4?
I don't think so.
Both patches are about respecting the configuration requested by an EPF
driver.
So if an EPF driver requests a 64-bit BAR, the EPC driver should configure
that. (Regardless of the size that the EPF driver requests for the BAR.)
If we really want a Fixes-tag, I would imagine that it will be the respective
initial commits that added these drivers (pcie-cadence-ep.c and
pcie-rockchip-ep.c), as it has been this way since then.
If you look at the EPF drivers we currently have, they will currently only
request a 64-bit BAR if any of the BARs can only be configured as a 64-bit
BAR because of hardware limitiations.
$ git grep only_64bit
Neither of these two drivers have any such hardware limitiations,
so these commits are currently a bit pointless.
However, the drivers should of course do the right thing, because other
EPC drivers might look at them and copy their code.
And who knows, maybe sometime in the future there will be an EPF driver
that will explicitly request a 64-bit BAR, regardless of size.
TL;DR: I don't think these two commits are worth backporting.
>
> > Signed-off-by: Niklas Cassel <cassel@kernel.org>
> > ---
> > drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c
> > index c9046e97a1d2..57472cf48997 100644
> > --- a/drivers/pci/controller/pcie-rockchip-ep.c
> > +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> > @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> > } else {
> > bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> > - bool is_64bits = sz > SZ_2G;
> > + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
> >
> > if (is_64bits && (bar & 1))
> > return -EINVAL;
> > --
> > 2.44.0
> >
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-04-12 21:39 ` Niklas Cassel
@ 2024-04-12 22:00 ` Bjorn Helgaas
0 siblings, 0 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2024-04-12 22:00 UTC (permalink / raw)
To: Niklas Cassel
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Fri, Apr 12, 2024 at 11:39:39PM +0200, Niklas Cassel wrote:
> On Fri, Apr 12, 2024 at 12:51:27PM -0500, Bjorn Helgaas wrote:
> > On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> > > Ever since commit f25b5fae29d4 ("PCI: endpoint: Setting a BAR size > 4 GB
> > > is invalid if 64-bit flag is not set") it has been impossible to get the
> > > .set_bar() callback with a BAR size > 4 GB, if the BAR was also not
> > > requested to be configured as a 64-bit BAR.
> > >
> > > It is however possible that an EPF driver configures a BAR as 64-bit,
> > > even if the requested size is < 4 GB.
> > >
> > > Respect the requested BAR configuration, just like how it is already
> > > repected with regards to the prefetchable bit.
> >
> > Does this (and the similar cadence patch) need a Fixes: tag for
> > f25b5fae29d4?
>
> I don't think so.
>
> Both patches are about respecting the configuration requested by an EPF
> driver.
>
> So if an EPF driver requests a 64-bit BAR, the EPC driver should configure
> that. (Regardless of the size that the EPF driver requests for the BAR.)
>
> If we really want a Fixes-tag, I would imagine that it will be the respective
> initial commits that added these drivers (pcie-cadence-ep.c and
> pcie-rockchip-ep.c), as it has been this way since then.
>
> If you look at the EPF drivers we currently have, they will currently only
> request a 64-bit BAR if any of the BARs can only be configured as a 64-bit
> BAR because of hardware limitiations.
>
> $ git grep only_64bit
>
> Neither of these two drivers have any such hardware limitiations,
> so these commits are currently a bit pointless.
>
> However, the drivers should of course do the right thing, because other
> EPC drivers might look at them and copy their code.
>
> And who knows, maybe sometime in the future there will be an EPF driver
> that will explicitly request a 64-bit BAR, regardless of size.
>
> TL;DR: I don't think these two commits are worth backporting.
OK, thanks!
> > > Signed-off-by: Niklas Cassel <cassel@kernel.org>
> > > ---
> > > drivers/pci/controller/pcie-rockchip-ep.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c
> > > index c9046e97a1d2..57472cf48997 100644
> > > --- a/drivers/pci/controller/pcie-rockchip-ep.c
> > > +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> > > @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> > > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> > > } else {
> > > bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> > > - bool is_64bits = sz > SZ_2G;
> > > + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
> > >
> > > if (is_64bits && (bar & 1))
> > > return -EINVAL;
> > > --
> > > 2.44.0
> > >
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-04-12 18:59 ` Bjorn Helgaas
@ 2024-04-12 22:02 ` Niklas Cassel
2024-04-12 22:11 ` Bjorn Helgaas
0 siblings, 1 reply; 9+ messages in thread
From: Niklas Cassel @ 2024-04-12 22:02 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Fri, Apr 12, 2024 at 01:59:01PM -0500, Bjorn Helgaas wrote:
> On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> > ...
>
> > --- a/drivers/pci/controller/pcie-rockchip-ep.c
> > +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> > @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> > } else {
> > bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> > - bool is_64bits = sz > SZ_2G;
> > + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
> >
> > if (is_64bits && (bar & 1))
> > return -EINVAL;
>
> Completely unrelated to *these* patches, but the BAR_CFG_CTRL
> definitions in both cadence and rockchip lead to some awkward case
> analysis:
>
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS 0x4
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS 0x5
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS 0x6
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS 0x7
>
> if (is_64bits && is_prefetch)
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS;
> else if (is_prefetch)
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS;
> else if (is_64bits)
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS;
> else
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS;
>
> that *could* be just something like this:
>
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM 0x4
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS 0x2
> #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH 0x1
>
> ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM;
> if (is_64bits)
> ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS;
> if (is_prefetch)
> ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH;
If you send the cleanup patches, I will send the Reviewed-by tags ;)
Kind regards,
Niklas
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested
2024-04-12 22:02 ` Niklas Cassel
@ 2024-04-12 22:11 ` Bjorn Helgaas
0 siblings, 0 replies; 9+ messages in thread
From: Bjorn Helgaas @ 2024-04-12 22:11 UTC (permalink / raw)
To: Niklas Cassel
Cc: Manivannan Sadhasivam, Shawn Lin, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Heiko Stuebner, Shradha Todi, Damien Le Moal, linux-pci,
linux-rockchip, linux-arm-kernel
On Sat, Apr 13, 2024 at 12:02:12AM +0200, Niklas Cassel wrote:
> On Fri, Apr 12, 2024 at 01:59:01PM -0500, Bjorn Helgaas wrote:
> > On Wed, Mar 13, 2024 at 11:58:00AM +0100, Niklas Cassel wrote:
> > > ...
> >
> > > --- a/drivers/pci/controller/pcie-rockchip-ep.c
> > > +++ b/drivers/pci/controller/pcie-rockchip-ep.c
> > > @@ -153,7 +153,7 @@ static int rockchip_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
> > > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_IO_32BITS;
> > > } else {
> > > bool is_prefetch = !!(flags & PCI_BASE_ADDRESS_MEM_PREFETCH);
> > > - bool is_64bits = sz > SZ_2G;
> > > + bool is_64bits = !!(flags & PCI_BASE_ADDRESS_MEM_TYPE_64);
> > >
> > > if (is_64bits && (bar & 1))
> > > return -EINVAL;
> >
> > Completely unrelated to *these* patches, but the BAR_CFG_CTRL
> > definitions in both cadence and rockchip lead to some awkward case
> > analysis:
> >
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS 0x4
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS 0x5
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS 0x6
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS 0x7
> >
> > if (is_64bits && is_prefetch)
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_64BITS;
> > else if (is_prefetch)
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH_MEM_32BITS;
> > else if (is_64bits)
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_64BITS;
> > else
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM_32BITS;
> >
> > that *could* be just something like this:
> >
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM 0x4
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS 0x2
> > #define ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH 0x1
> >
> > ctrl = ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_MEM;
> > if (is_64bits)
> > ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_64BITS;
> > if (is_prefetch)
> > ctrl |= ROCKCHIP_PCIE_CORE_BAR_CFG_CTRL_PREFETCH;
>
> If you send the cleanup patches, I will send the Reviewed-by tags ;)
Fair enough :)
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-04-12 22:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-13 10:57 [PATCH v3 0/9] PCI: endpoint: set prefetchable bit for 64-bit BARs Niklas Cassel
2024-03-13 10:58 ` [PATCH v3 8/9] PCI: rockchip-ep: Set a 64-bit BAR if requested Niklas Cassel
2024-03-15 5:47 ` Manivannan Sadhasivam
2024-04-12 17:51 ` Bjorn Helgaas
2024-04-12 21:39 ` Niklas Cassel
2024-04-12 22:00 ` Bjorn Helgaas
2024-04-12 18:59 ` Bjorn Helgaas
2024-04-12 22:02 ` Niklas Cassel
2024-04-12 22:11 ` 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).