[PATCH 5/9] PCI: dwc: Replace BAR_RESERVED with BAR_DISABLED in glue drivers

Niklas Cassel cassel at kernel.org
Wed Feb 25 06:56:34 PST 2026


On Mon, Feb 23, 2026 at 10:16:51AM +0530, Manikanta Maddireddy wrote:
> 
> On 18/02/26 3:45 am, Frank Li wrote:
> > On Tue, Feb 17, 2026 at 10:27:11PM +0100, Niklas Cassel wrote:
> > > Most DWC based EPC glue drivers that have BARs marked as BAR_RESERVED in
> > > epc_features also call dw_pcie_ep_reset_bar() for these reserved BARs in
> > > ep->ops->init().
> > > 
> > > An EPF driver will be able to get/enable BARs that have been disabled/reset
> > > unless they are marked as BAR_RESERVED (see pci_epc_get_next_free_bar()).
> > > 
> > > Thus all EPC drivers that have a BAR marked as BAR_RESERVED in epc_features
> > > AND call dw_pcie_ep_reset_bar() should really be marked as BAR_DISABLED.
> > > 
> > > BARs that are marked as BAR_RESERVED in epc_features but for which
> > > dw_pcie_ep_reset_bar() is not called in ep->ops->init() are still kept as
> > > BAR_RESERVED.
> > combine the same condition together to make easy to read. like
> > 
> > "For BAR_RESERVED bars, change to BAR_DISABLED if call dw_pcie_ep_reset_bar().
> > and keep as BAR_RESERVED if not dw_pcie_ep_reset_bar() in ep-ops-init()"
> > 
> > Frank
> > 
> > > No EPC drivers outside drivers/pci/controllers/dwc mark their BARs as
> > > BAR_RESERVED, so there is nothing to do in non-DWC based EPC drivers.
> > > 
> > > Signed-off-by: Niklas Cassel <cassel at kernel.org>

Note: the proper tag is Tested-by.
(I noticed that b4 did not pick up your tags.)

> Tested by: Manikanta Maddireddy <mmaddireddy at nvidia.com>
> > > ---
> > >   drivers/pci/controller/dwc/pci-imx6.c         | 12 ++++++------
> > >   drivers/pci/controller/dwc/pcie-rcar-gen4.c   |  6 +++---
> > >   drivers/pci/controller/dwc/pcie-tegra194.c    |  8 ++++----
> > >   drivers/pci/controller/dwc/pcie-uniphier-ep.c |  4 ++--

> I see BAR_RESERVED in pci-keystone.c driver in linux-next branch.
> Do you have any patch which changed BAR_RESERVED to different type
> in pci-keystone.c driver?

No, I did not change keystone, because that is the only DWC base glue driver
that has never disabled these BARs by default.

I will add a TODO to the keystone driver:

diff --git a/drivers/pci/controller/dwc/pci-keystone.c b/drivers/pci/controller/dwc/pci-keystone.c
index 20fa4dadb82a..576a78a9f6e5 100644
--- a/drivers/pci/controller/dwc/pci-keystone.c
+++ b/drivers/pci/controller/dwc/pci-keystone.c
@@ -933,6 +933,11 @@ static const struct pci_epc_features ks_pcie_am654_epc_features = {
        DWC_EPC_COMMON_FEATURES,
        .msi_capable = true,
        .msix_capable = true,
+       /*
+        * TODO: BAR_RESERVED should either be replaced with BAR_DISABLED or,
+        * if the should continue to be enabled, then the driver should define
+        * what is behind the reserved BARs, see struct pci_epc_bar_rsvd_region.
+        */
        .bar[BAR_0] = { .type = BAR_RESERVED, },
        .bar[BAR_1] = { .type = BAR_RESERVED, },
        .bar[BAR_2] = { .type = BAR_RESIZABLE, },



More information about the linux-arm-kernel mailing list