public inbox for linux-pci@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure
@ 2026-04-07 12:04 Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup Christian Bruel
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Christian Bruel @ 2026-04-07 12:04 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Krzysztof Wilczyński,
	Kishon Vijay Abraham I, Shuah Khan, Bjorn Helgaas, Arnd Bergmann,
	Greg Kroah-Hartman, Koichiro Den, Niklas Cassel
  Cc: fabrice.gasnier, linux-pci, linux-kselftest, linux-kernel,
	Christian Bruel, Frank Li

For platforms with a limited iATU inbound window entries, pci_epc_set_bar()
might fail to allocate the ATU entries for subrange maps requiring more
than 1 slot.
For the dwc controller, this failure is reported with -ENOSPC in
dw_pcie_ep_set_bar(). In this case, the epf test cannot be run and needs
to be skipped.

For other controllers (Rockchip, RCar, Cadence) the .set_bar functions do
not use this error.

Depends on:
https://lore.kernel.org/linux-pci/20260320140139.2415480-1-den@valinux.co.jp/

Signed-off-by: Christian Bruel <christian.bruel@foss.st.com>
---
Changes in v4:
- Rebase to pci/endpoint
- Added Koichiro and Frank 'Reviewed-by:'
- Link to v3: https://lore.kernel.org/r/20260323-skip-bar_subrange-tests-if-enospc-v3-0-4780f296a5b4@foss.st.com

Changes in v3:
- Remove 'BAR' from SKIP print message (Niklas)
- Added 'Reviewed-by: Niklas Cassel <cassel@kernel.org>' tag
- Link to v2: https://lore.kernel.org/r/20260323-skip-bar_subrange-tests-if-enospc-v2-0-2080f878134d@foss.st.com

Changes in v2:
- Rebased, reordered patches
- Clarified reporting message in selftest
- Renamed STATUS_BAR_SUBRANGE_SETUP_NOPSC STATUS_NO_RESOURCE
- Link to v1: https://lore.kernel.org/r/20260318-skip-bar_subrange-tests-if-enospc-v1-0-f1a49534ebea@foss.st.com

---
Christian Bruel (3):
      PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup
      misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case
      selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC

 drivers/misc/pci_endpoint_test.c                         | 3 ++-
 drivers/pci/endpoint/functions/pci-epf-test.c            | 3 +++
 tools/testing/selftests/pci_endpoint/pci_endpoint_test.c | 2 ++
 3 files changed, 7 insertions(+), 1 deletion(-)
---
base-commit: 5ab7a225888baa5474def18ba3b0a298d27e6ba0
change-id: 20260318-skip-bar_subrange-tests-if-enospc-c26f03038e92

Best regards,
-- 
Christian Bruel <christian.bruel@foss.st.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v4 1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup
  2026-04-07 12:04 [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Christian Bruel
@ 2026-04-07 12:04 ` Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case Christian Bruel
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Christian Bruel @ 2026-04-07 12:04 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Krzysztof Wilczyński,
	Kishon Vijay Abraham I, Shuah Khan, Bjorn Helgaas, Arnd Bergmann,
	Greg Kroah-Hartman, Koichiro Den, Niklas Cassel
  Cc: fabrice.gasnier, linux-pci, linux-kselftest, linux-kernel,
	Christian Bruel, Frank Li

Set the STATUS_NO_RESOURCE status bit on pci_epc_set_bar() -ENOSPC.
Here this is used to indicate there are not enough inbound window resources
to allocate the subrange.

Signed-off-by: Christian Bruel <christian.bruel@foss.st.com>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Koichiro Den <den@valinux.co.jp>
---
 drivers/pci/endpoint/functions/pci-epf-test.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index 14e61ebe1f116ce04789b6f4c3e965296701ec53..7eb94dffac2d193477a43decd7b952c78b99eb5f 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -54,6 +54,7 @@
 #define STATUS_BAR_SUBRANGE_SETUP_FAIL		BIT(15)
 #define STATUS_BAR_SUBRANGE_CLEAR_SUCCESS	BIT(16)
 #define STATUS_BAR_SUBRANGE_CLEAR_FAIL		BIT(17)
+#define STATUS_NO_RESOURCE		BIT(18)
 
 #define FLAG_USE_DMA			BIT(0)
 
@@ -901,6 +902,8 @@ static void pci_epf_test_bar_subrange_setup(struct pci_epf_test *epf_test,
 	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);
+		if (ret == -ENOSPC)
+			status |= STATUS_NO_RESOURCE;
 		bar->submap = old_submap;
 		bar->num_submap = old_nsub;
 		kfree(submap);

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case
  2026-04-07 12:04 [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup Christian Bruel
@ 2026-04-07 12:04 ` Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC Christian Bruel
  2026-04-07 14:11 ` [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Manivannan Sadhasivam
  3 siblings, 0 replies; 6+ messages in thread
From: Christian Bruel @ 2026-04-07 12:04 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Krzysztof Wilczyński,
	Kishon Vijay Abraham I, Shuah Khan, Bjorn Helgaas, Arnd Bergmann,
	Greg Kroah-Hartman, Koichiro Den, Niklas Cassel
  Cc: fabrice.gasnier, linux-pci, linux-kselftest, linux-kernel,
	Christian Bruel, Frank Li

Return -ENOSPC when the status reports the STATUS_NO_RESOURCE bit.
This signifies to the pci_endpoint test to skip this test.

Signed-off-by: Christian Bruel <christian.bruel@foss.st.com>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Koichiro Den <den@valinux.co.jp>
---
 drivers/misc/pci_endpoint_test.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
index 38679dfb1f9b67d92a2d0d90a1a58b72ea9fde6b..dbd017cabbb92394c20d07c478518f5fefe2067e 100644
--- a/drivers/misc/pci_endpoint_test.c
+++ b/drivers/misc/pci_endpoint_test.c
@@ -61,6 +61,7 @@
 #define STATUS_BAR_SUBRANGE_SETUP_FAIL		BIT(15)
 #define STATUS_BAR_SUBRANGE_CLEAR_SUCCESS	BIT(16)
 #define STATUS_BAR_SUBRANGE_CLEAR_FAIL		BIT(17)
+#define STATUS_NO_RESOURCE			BIT(18)
 
 #define PCI_ENDPOINT_TEST_LOWER_SRC_ADDR	0x0c
 #define PCI_ENDPOINT_TEST_UPPER_SRC_ADDR	0x10
@@ -480,7 +481,7 @@ static int pci_endpoint_test_bar_subrange_cmd(struct pci_endpoint_test *test,
 
 	status = pci_endpoint_test_readl(test, PCI_ENDPOINT_TEST_STATUS);
 	if (status & fail_bit)
-		return -EIO;
+		return (status & STATUS_NO_RESOURCE) ? -ENOSPC : -EIO;
 
 	if (!(status & ok_bit))
 		return -EIO;

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v4 3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC
  2026-04-07 12:04 [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup Christian Bruel
  2026-04-07 12:04 ` [PATCH v4 2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case Christian Bruel
@ 2026-04-07 12:04 ` Christian Bruel
  2026-04-07 14:11 ` [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Manivannan Sadhasivam
  3 siblings, 0 replies; 6+ messages in thread
From: Christian Bruel @ 2026-04-07 12:04 UTC (permalink / raw)
  To: Manivannan Sadhasivam, Krzysztof Wilczyński,
	Kishon Vijay Abraham I, Shuah Khan, Bjorn Helgaas, Arnd Bergmann,
	Greg Kroah-Hartman, Koichiro Den, Niklas Cassel
  Cc: fabrice.gasnier, linux-pci, linux-kselftest, linux-kernel,
	Christian Bruel, Frank Li

Handle -ENOSPC error. Skip the test if the number of available inbound
windows is insufficient to map the subrange.

Signed-off-by: Christian Bruel <christian.bruel@foss.st.com>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Koichiro Den <den@valinux.co.jp>
---
 tools/testing/selftests/pci_endpoint/pci_endpoint_test.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
index c417fb3a198b2d92c3060938c23807cc8bea5573..588d75c97ad181d2f8e84c9b86b865439152e20d 100644
--- a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
+++ b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c
@@ -88,6 +88,8 @@ TEST_F(pci_ep_bar, BAR_SUBRANGE_TEST)
 		SKIP(return, "Subrange map is not supported");
 	if (ret == -ENOBUFS)
 		SKIP(return, "BAR is reserved");
+	if (ret == -ENOSPC)
+		SKIP(return, "Not enough inbound windows");
 	EXPECT_FALSE(ret) TH_LOG("Test failed for BAR%d", variant->barno);
 }
 

-- 
2.34.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure
  2026-04-07 12:04 [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Christian Bruel
                   ` (2 preceding siblings ...)
  2026-04-07 12:04 ` [PATCH v4 3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC Christian Bruel
@ 2026-04-07 14:11 ` Manivannan Sadhasivam
  2026-04-08 19:40   ` Bjorn Helgaas
  3 siblings, 1 reply; 6+ messages in thread
From: Manivannan Sadhasivam @ 2026-04-07 14:11 UTC (permalink / raw)
  To: Krzysztof Wilczyński, Kishon Vijay Abraham I, Shuah Khan,
	Bjorn Helgaas, Arnd Bergmann, Greg Kroah-Hartman, Koichiro Den,
	Niklas Cassel, Christian Bruel
  Cc: fabrice.gasnier, linux-pci, linux-kselftest, linux-kernel,
	Frank Li


On Tue, 07 Apr 2026 14:04:07 +0200, Christian Bruel wrote:
> For platforms with a limited iATU inbound window entries, pci_epc_set_bar()
> might fail to allocate the ATU entries for subrange maps requiring more
> than 1 slot.
> For the dwc controller, this failure is reported with -ENOSPC in
> dw_pcie_ep_set_bar(). In this case, the epf test cannot be run and needs
> to be skipped.
> 
> [...]

Applied, thanks!

[1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup
      commit: dfac277624c82b361dbb3e0fc57f577a270bebbb
[2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case
      commit: a51c75fc48c2a0d2ead2d7e8c521de0423ec8dec
[3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC
      commit: 2b729b7721bd4d0640b26790ea6c360c85a4af8c

Best regards,
-- 
Manivannan Sadhasivam <mani@kernel.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure
  2026-04-07 14:11 ` [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Manivannan Sadhasivam
@ 2026-04-08 19:40   ` Bjorn Helgaas
  0 siblings, 0 replies; 6+ messages in thread
From: Bjorn Helgaas @ 2026-04-08 19:40 UTC (permalink / raw)
  To: Manivannan Sadhasivam
  Cc: Krzysztof Wilczyński, Kishon Vijay Abraham I, Shuah Khan,
	Bjorn Helgaas, Arnd Bergmann, Greg Kroah-Hartman, Koichiro Den,
	Niklas Cassel, Christian Bruel, fabrice.gasnier, linux-pci,
	linux-kselftest, linux-kernel, Frank Li

On Tue, Apr 07, 2026 at 07:41:50PM +0530, Manivannan Sadhasivam wrote:
> On Tue, 07 Apr 2026 14:04:07 +0200, Christian Bruel wrote:
> > For platforms with a limited iATU inbound window entries, pci_epc_set_bar()
> > might fail to allocate the ATU entries for subrange maps requiring more
> > than 1 slot.
> > For the dwc controller, this failure is reported with -ENOSPC in
> > dw_pcie_ep_set_bar(). In this case, the epf test cannot be run and needs
> > to be skipped.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup
>       commit: dfac277624c82b361dbb3e0fc57f577a270bebbb
> [2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case
>       commit: a51c75fc48c2a0d2ead2d7e8c521de0423ec8dec
> [3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC
>       commit: 2b729b7721bd4d0640b26790ea6c360c85a4af8c

I squashed these together because they need to be understood together.

I'm missing the details, but it seems unfortunate that the COMMAND_*,
STATUS_*, and CAP_* definitions have to be duplicated and presumably
kept in sync in drivers/misc/pci_endpoint_test.c and
drivers/pci/endpoint/functions/pci-epf-test.c.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-04-08 19:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-07 12:04 [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Christian Bruel
2026-04-07 12:04 ` [PATCH v4 1/3] PCI: endpoint: pci-epf-test: Handle -ENOSPC in subrange_setup Christian Bruel
2026-04-07 12:04 ` [PATCH v4 2/3] misc: pci_endpoint_test: Handle -ENOSPC in subrange mapping test case Christian Bruel
2026-04-07 12:04 ` [PATCH v4 3/3] selftests: pci_endpoint: Skip BAR subrange test on -ENOSPC Christian Bruel
2026-04-07 14:11 ` [PATCH v4 0/3] Skip subrange map tests on DWC iATU allocation failure Manivannan Sadhasivam
2026-04-08 19:40   ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox