Hello,


diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
index 
55e128ed82f00ae13b6fe9768cdbe56adbe8f9da..34ba06fb53f04e48c1c05f4aae85e6ecd03ef447
 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_BAR_SUBRANGE_SETUP_NOSPC                BIT(18)
#define PCI_ENDPOINT_TEST_LOWER_SRC_ADDR 0x0c
  #define PCI_ENDPOINT_TEST_UPPER_SRC_ADDR      0x10
@@ -476,8 +477,11 @@ static int pci_endpoint_test_bar_subrange_cmd(struct 
pci_endpoint_test *test,
                return -ETIMEDOUT;
status = pci_endpoint_test_readl(test, PCI_ENDPOINT_TEST_STATUS);
-       if (status & fail_bit)
+       if (status & fail_bit) {
+               if (status & STATUS_BAR_SUBRANGE_SETUP_NOSPC)
+                       return -ENOSPC;

Perhaps this should be something like:

if (command == COMMAND_BAR_SUBRANGE_SETUP && status & 
STATUS_BAR_SUBRANGE_SETUP_SKIP)

I'm not sure about replacing STATUS_BAR_SUBRANGE_SETUP_NOSPC by STATUS_BAR_SUBRANGE_SETUP_SKIP

The selftest will use if (ret == -ENOSPC), so we need to return this information (bellow). and semantically SKIP does not imply ENOPSC (instead of the contrary)

as you prefer,



Personally, I'm not a big fan of having a common function for both
pci_endpoint_test_bar_subrange_setup() and
pci_endpoint_test_bar_subrange_clear() and then sending in parameters
for which bits to check. It make it hard to have small differences
between them (like checking for an bit that is only valid for one of
the commands).

I can understand why Koichiro wrote it why he did, but since we now
want differences, perhaps add a preparation patch that makes it two
separate functions?

It is not like pci_endpoint_test_bar_subrange_cmd() is a big function
anyway.


To minimize changes, what about something like:

 unsigned int fail_bit = status & fail_bits;

 if (fail_bit == STATUS_BAR_SUBRANGE_SETUP_NOSPC)
   return -ENOSPC;

 if (fail_bit == STATUS_BAR_SUBRANGE_SETUP_FAIL)
   return -EIO;

called with

       pci_endpoint_test_bar_subrange_cmd(...,
       STATUS_BAR_SUBRANGE_SETUP_FAIL | STATUS_BAR_SUBRANGE_SETUP_NOSPC);

replacing the fail_bit parameter with fail_bits.

Thus we don't need to specialize the test with 'command', But I prefer to let Koichiro refactor the function if it is better

thank you,

Christian


Kind regards,
Niklas


Reply via email to