* [PATCH] PCI: endpoint: Add prefetch bar support
@ 2022-01-19 10:39 Li Chen
2022-01-19 20:33 ` Bjorn Helgaas
0 siblings, 1 reply; 2+ messages in thread
From: Li Chen @ 2022-01-19 10:39 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Lorenzo Pieralisi, Bjorn Helgaas,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Before this commit, epf cannot set bar to be prefetchable.
Prefetchable bar can also help epf device to use bridge's
prefetch memory window.
Signed-off-by: Li Chen <lchen@ambarella.com>
Change-Id: I1691a946d715cc161711d6eef56e7a74678a3578
---
drivers/pci/endpoint/functions/pci-epf-test.c | 4 ++++
include/linux/pci-epc.h | 2 ++
2 files changed, 6 insertions(+)
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index 90d84d3bc868..96489cfdf58d 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -817,15 +817,19 @@ static void pci_epf_configure_bar(struct pci_epf *epf,
{
struct pci_epf_bar *epf_bar;
bool bar_fixed_64bit;
+ bool bar_prefetch;
int i;
for (i = 0; i < PCI_STD_NUM_BARS; i++) {
epf_bar = &epf->bar[i];
bar_fixed_64bit = !!(epc_features->bar_fixed_64bit & (1 << i));
+ bar_prefetch = !!(epc_features->bar_prefetch & (1 << i));
if (bar_fixed_64bit)
epf_bar->flags |= PCI_BASE_ADDRESS_MEM_TYPE_64;
if (epc_features->bar_fixed_size[i])
bar_size[i] = epc_features->bar_fixed_size[i];
+ if (bar_prefetch)
+ epf_bar->flags |= PCI_BASE_ADDRESS_MEM_PREFETCH;
}
}
diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h
index a48778e1a4ee..825632d581d0 100644
--- a/include/linux/pci-epc.h
+++ b/include/linux/pci-epc.h
@@ -161,6 +161,7 @@ struct pci_epc {
* @msix_capable: indicate if the endpoint function has MSI-X capability
* @reserved_bar: bitmap to indicate reserved BAR unavailable to function driver
* @bar_fixed_64bit: bitmap to indicate fixed 64bit BARs
+ * @bar_prefetch: bitmap to indicate prefetchable BARs
* @bar_fixed_size: Array specifying the size supported by each BAR
* @align: alignment size required for BAR buffer allocation
*/
@@ -171,6 +172,7 @@ struct pci_epc_features {
unsigned int msix_capable : 1;
u8 reserved_bar;
u8 bar_fixed_64bit;
+ u8 bar_prefetch;
u64 bar_fixed_size[PCI_STD_NUM_BARS];
size_t align;
};
--
2.34.1
Regards,
Li
**********************************************************************
This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you.
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] PCI: endpoint: Add prefetch bar support
2022-01-19 10:39 [PATCH] PCI: endpoint: Add prefetch bar support Li Chen
@ 2022-01-19 20:33 ` Bjorn Helgaas
0 siblings, 0 replies; 2+ messages in thread
From: Bjorn Helgaas @ 2022-01-19 20:33 UTC (permalink / raw)
To: Li Chen
Cc: Kishon Vijay Abraham I, Lorenzo Pieralisi, Bjorn Helgaas,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
On Wed, Jan 19, 2022 at 10:39:49AM +0000, Li Chen wrote:
> Before this commit, epf cannot set bar to be prefetchable.
> Prefetchable bar can also help epf device to use bridge's
> prefetch memory window.
Please capitalize "BAR" in subject and commit log (as you did in
comment below) so we know it's an acronym.
> Signed-off-by: Li Chen <lchen@ambarella.com>
> Change-Id: I1691a946d715cc161711d6eef56e7a74678a3578
Drop the Change-Id since it is not useful upstream.
> ---
> drivers/pci/endpoint/functions/pci-epf-test.c | 4 ++++
> include/linux/pci-epc.h | 2 ++
> 2 files changed, 6 insertions(+)
>
> diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
> index 90d84d3bc868..96489cfdf58d 100644
> --- a/drivers/pci/endpoint/functions/pci-epf-test.c
> +++ b/drivers/pci/endpoint/functions/pci-epf-test.c
> @@ -817,15 +817,19 @@ static void pci_epf_configure_bar(struct pci_epf *epf,
> {
> struct pci_epf_bar *epf_bar;
> bool bar_fixed_64bit;
> + bool bar_prefetch;
> int i;
>
> for (i = 0; i < PCI_STD_NUM_BARS; i++) {
> epf_bar = &epf->bar[i];
> bar_fixed_64bit = !!(epc_features->bar_fixed_64bit & (1 << i));
> + bar_prefetch = !!(epc_features->bar_prefetch & (1 << i));
> if (bar_fixed_64bit)
> epf_bar->flags |= PCI_BASE_ADDRESS_MEM_TYPE_64;
> if (epc_features->bar_fixed_size[i])
> bar_size[i] = epc_features->bar_fixed_size[i];
> + if (bar_prefetch)
> + epf_bar->flags |= PCI_BASE_ADDRESS_MEM_PREFETCH;
> }
> }
>
> diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h
> index a48778e1a4ee..825632d581d0 100644
> --- a/include/linux/pci-epc.h
> +++ b/include/linux/pci-epc.h
> @@ -161,6 +161,7 @@ struct pci_epc {
> * @msix_capable: indicate if the endpoint function has MSI-X capability
> * @reserved_bar: bitmap to indicate reserved BAR unavailable to function driver
> * @bar_fixed_64bit: bitmap to indicate fixed 64bit BARs
> + * @bar_prefetch: bitmap to indicate prefetchable BARs
> * @bar_fixed_size: Array specifying the size supported by each BAR
> * @align: alignment size required for BAR buffer allocation
> */
> @@ -171,6 +172,7 @@ struct pci_epc_features {
> unsigned int msix_capable : 1;
> u8 reserved_bar;
> u8 bar_fixed_64bit;
> + u8 bar_prefetch;
> u64 bar_fixed_size[PCI_STD_NUM_BARS];
> size_t align;
> };
> --
> 2.34.1
>
> Regards,
> Li
>
> **********************************************************************
> This email and attachments contain Ambarella Proprietary and/or Confidential Information and is intended solely for the use of the individual(s) to whom it is addressed. Any unauthorized review, use, disclosure, distribute, copy, or print is prohibited. If you are not an intended recipient, please contact the sender by reply email and destroy all copies of the original message. Thank you.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-01-19 20:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-19 10:39 [PATCH] PCI: endpoint: Add prefetch bar support Li Chen
2022-01-19 20:33 ` 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).