Re: [PATCH] PCI: endpoint: pci-epf-test: Roll back BAR mapping when subrange setup fails

From: Manivannan Sadhasivam

Date: Mon Mar 16 2026 - 23:28:33 EST


On Tue, Mar 17, 2026 at 11:57:06AM +0900, Koichiro Den wrote:
> On Mon, Mar 16, 2026 at 05:19:26PM +0100, Niklas Cassel wrote:
> > On Mon, Mar 16, 2026 at 11:02:25PM +0900, Koichiro Den wrote:
> > > When the BAR subrange mapping test on DWC-based platforms fails due to
> > > insufficient free inbound iATU regions,
> > > pci_epf_test_bar_subrange_setup() returns an error (-ENOSPC) but does
> > > not restore the original BAR mapping. This causes subsequent test runs
> > > to become confusing, since the failure may leave room for the next
> > > subrange mapping test to pass.
> > >
> > > Fix this by restoring the original BAR mapping when preparation of the
> > > subrange mapping fails, so that no side effect remains regardless of the
> > > test success or failure.
> > >
> > > Fixes: 6c5e6101423b ("PCI: endpoint: pci-epf-test: Add BAR subrange mapping test support")
> > > Reported-by: Christian Bruel <christian.bruel@xxxxxxxxxxx>
> > > Closes: https://lore.kernel.org/linux-pci/b2b03ebe-9482-4a13-b22f-7b44da096eed@xxxxxxxxxxx/
> > > Signed-off-by: Koichiro Den <den@xxxxxxxxxxxxx>
> > > ---
> > > drivers/pci/endpoint/functions/pci-epf-test.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
> > > index 14e61ebe1f11..f44c36f5cac5 100644
> > > --- a/drivers/pci/endpoint/functions/pci-epf-test.c
> > > +++ b/drivers/pci/endpoint/functions/pci-epf-test.c
> > > @@ -898,16 +898,22 @@ static void pci_epf_test_bar_subrange_setup(struct pci_epf_test *epf_test,
> > > bar->submap = submap;
> > > bar->num_submap = nsub;
> > >
> > > ret = pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, bar);
> > > if (ret) {
> > > dev_err(&epf->dev, "pci_epc_set_bar() failed: %d\n", ret);
> > > bar->submap = old_submap;
> > > bar->num_submap = old_nsub;
> > > + ret = pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, bar);
> > > + if (ret)
> > > + dev_warn(&epf->dev,
> > > + "failed to restore the original BAR mapping: %d\n",
> >
> > Nit:
> > I would use a capitalized F:
> > "Failed to restore ..."
> >
> > in order to match most other prints in this file.
>
> Agree. Bjorn or Mani, please feel free to fix this up (i.e. s/failed/Failed/)
> when applying, to avoid a respin for such a minor change.
>

Reviewed-by: Manivannan Sadhasivam <mani@xxxxxxxxxx>

I hope Bjorn will merge this patch for -rcX. But it also warrants tested-by from
Christian.

- Mani

--
மணிவண்ணன் சதாசிவம்