From: Niklas Cassel <cassel@kernel.org>
To: Frank Li <Frank.li@nxp.com>
Cc: "Manivannan Sadhasivam" <mani@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Manikanta Maddireddy" <mmaddireddy@nvidia.com>,
"Koichiro Den" <den@valinux.co.jp>,
"Damien Le Moal" <dlemoal@kernel.org>,
linux-pci@vger.kernel.org
Subject: Re: [PATCH 7/9] PCI: endpoint: pci-epf-test: Advertise reserved BARs
Date: Wed, 18 Feb 2026 11:43:27 +0100 [thread overview]
Message-ID: <aZWXzzul8xRaDQgm@ryzen> (raw)
In-Reply-To: <aZTzn-R6f9acu-2J@lizhi-Precision-Tower-5810>
On Tue, Feb 17, 2026 at 06:02:55PM -0500, Frank Li wrote:
> On Tue, Feb 17, 2026 at 10:27:13PM +0100, Niklas Cassel wrote:
> > Advertise reserved BARs as reserved in the Capabilities register,
> > such that the host side driver will be able to skip reserved BARs.
> >
> > Signed-off-by: Niklas Cassel <cassel@kernel.org>
> > ---
> > drivers/pci/endpoint/functions/pci-epf-test.c | 24 +++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
> > index 0cb7af0919dc..4c7e42fe5d8e 100644
> > --- a/drivers/pci/endpoint/functions/pci-epf-test.c
> > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c
> > @@ -64,6 +64,12 @@
> > #define CAP_MSIX BIT(2)
> > #define CAP_INTX BIT(3)
> > #define CAP_SUBRANGE_MAPPING BIT(4)
> > +#define CAP_BAR0_RESERVED BIT(5)
> > +#define CAP_BAR1_RESERVED BIT(6)
> > +#define CAP_BAR2_RESERVED BIT(7)
> > +#define CAP_BAR3_RESERVED BIT(8)
> > +#define CAP_BAR4_RESERVED BIT(9)
> > +#define CAP_BAR5_RESERVED BIT(10)
> >
> > #define PCI_EPF_TEST_BAR_SUBRANGE_NSUB 2
> >
> > @@ -1106,6 +1112,24 @@ static void pci_epf_test_set_capabilities(struct pci_epf *epf)
> > epf_test->epc_features->subrange_mapping)
> > caps |= CAP_SUBRANGE_MAPPING;
> >
> > + if (epf_test->epc_features->bar[BAR_0].type == BAR_RESERVED)
> > + caps |= CAP_BAR0_RESERVED;
>
> Is it BAR_DISABLE? suppose BAR_RESERVED redefine as hardware MMIO mapped
> bar
A BAR that is defined as BAR_DISABLE will always be disabled by the EPC
driver, so the host side driver will not see the BAR in the first place.
If you try to run pci_endpoint_test against a disabled BAR, the size will
be zero, and pci_endpoint_test will return -ENODATA:
https://github.com/torvalds/linux/blob/v6.19/drivers/misc/pci_endpoint_test.c#L300-L302
and the pci_endpoint selftest will print SKIP for that test case.
BAR_RESERVED is describing a BAR that has hardware backed resources, e.g. eDMA
registers, iATU registers, MSI-X table. These BARs are never disabled by an
EPC driver by default. See the kdoc for these enum values here:
https://lore.kernel.org/linux-pci/20260217212707.2450423-15-cassel@kernel.org/
Thus, we need to tell pci_endpoint_test that these reserved BARs (which are
not disabled) has to be skipped, because if we perfrom READ/WRITE tests
against these BARs, bad things will happen. E.g. if you write to a BAR that
exposes iATU registers, you will clear/overwrite the current inbound addresss
translation configured by the endpoint.
Kind regards,
Niklas
next prev parent reply other threads:[~2026-02-18 10:43 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-17 21:27 [PATCH 0/9] PCI: endpoint differentiate between disabled and reserved BARs Niklas Cassel
2026-02-17 21:27 ` Niklas Cassel
2026-02-17 21:27 ` [PATCH 1/9] PCI: endpoint: Introduce pci_epc_bar_type BAR_64BIT_UPPER Niklas Cassel
2026-02-17 21:57 ` Frank Li
2026-02-23 3:57 ` Manikanta Maddireddy
2026-02-23 10:14 ` Geert Uytterhoeven
2026-02-24 13:54 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 2/9] PCI: endpoint: Describe reserved subregions within BARs Niklas Cassel
2026-02-23 4:06 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 3/9] PCI: dw-rockchip: Describe RK3588 BAR4 DMA ctrl window Niklas Cassel
2026-02-17 21:27 ` Niklas Cassel
2026-02-23 4:10 ` Manikanta Maddireddy
2026-02-23 4:10 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 4/9] PCI: endpoint: Introduce pci_epc_bar_type BAR_DISABLED Niklas Cassel
2026-02-17 22:03 ` Frank Li
2026-02-18 10:33 ` Niklas Cassel
2026-02-18 16:01 ` Frank Li
2026-02-23 4:17 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 5/9] PCI: dwc: Replace BAR_RESERVED with BAR_DISABLED in glue drivers Niklas Cassel
2026-02-17 22:15 ` Frank Li
2026-02-23 4:46 ` Manikanta Maddireddy
2026-02-25 14:56 ` Niklas Cassel
2026-02-17 21:27 ` [PATCH 6/9] PCI: dwc: Disable BARs in common code instead of in each glue driver Niklas Cassel
2026-02-17 21:27 ` Niklas Cassel
2026-02-17 23:00 ` Frank Li
2026-02-17 23:00 ` Frank Li
2026-02-23 4:55 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 7/9] PCI: endpoint: pci-epf-test: Advertise reserved BARs Niklas Cassel
2026-02-17 23:02 ` Frank Li
2026-02-18 10:43 ` Niklas Cassel [this message]
2026-02-18 16:00 ` Frank Li
2026-02-19 9:35 ` Niklas Cassel
2026-02-19 17:12 ` Frank Li
2026-02-23 4:57 ` Manikanta Maddireddy
2026-02-17 21:27 ` [PATCH 8/9] misc: pci_endpoint_test: Give reserved BARs a distinct error code Niklas Cassel
2026-02-17 21:45 ` Niklas Cassel
2026-02-17 23:07 ` Frank Li
2026-02-18 10:44 ` Niklas Cassel
2026-02-23 5:00 ` Manikanta Maddireddy
2026-02-25 15:46 ` Niklas Cassel
2026-02-17 21:27 ` [PATCH 9/9] selftests: pci_endpoint: Skip reserved BARs Niklas Cassel
2026-02-17 23:11 ` Frank Li
2026-02-23 5:03 ` Manikanta Maddireddy
2026-02-23 3:49 ` [PATCH 0/9] PCI: endpoint differentiate between disabled and " Manikanta Maddireddy
2026-02-23 3:49 ` Manikanta Maddireddy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZWXzzul8xRaDQgm@ryzen \
--to=cassel@kernel.org \
--cc=Frank.li@nxp.com \
--cc=bhelgaas@google.com \
--cc=den@valinux.co.jp \
--cc=dlemoal@kernel.org \
--cc=kishon@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mani@kernel.org \
--cc=mmaddireddy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.