On Wed, Apr 02, 2025 at 10:57:00AM +0200, Niklas Cassel wrote: > Commit a402006d48a9 ("misc: pci_endpoint_test: Remove global 'irq_type' > and 'no_msi'") changed so that the default IRQ vector requested by > pci_endpoint_test_probe() was no longer the module param 'irq_type', > but instead test->irq_type. test->irq_type is by default > IRQ_TYPE_UNDEFINED (until someone calls ioctl(PCITEST_SET_IRQTYPE)). > > However, the commit also changed so that after initializing test->irq_type > to IRQ_TYPE_UNDEFINED, it also overrides it with driver_data->irq_type, if > the PCI device and vendor ID provides driver_data. > > This causes a regression for PCI device and vendor IDs that do not provide > driver_data, and the driver now fails to probe on such platforms. > > Considering that the pci endpoint selftests and the old pcitest always > call ioctl(PCITEST_SET_IRQTYPE) before performing any test that requires > IRQs, simply remove the allocation of IRQs in pci_endpoint_test_probe(), > and defer it until ioctl(PCITEST_SET_IRQTYPE) has been called. > > A positive side effect of this is that even if the endpoint controller has > issues with IRQs, the user can do still do all the tests/ioctls() that do > not require working IRQs, e.g. PCITEST_BAR and PCITEST_BARS. > > This also means that we can remove the now unused irq_type from > driver_data. The irq_type will always be the one configured by the user > using ioctl(PCITEST_SET_IRQTYPE). (A user that does not know, or care > which irq_type that is used, can use PCITEST_IRQ_TYPE_AUTO. This has > superseded the need for a default irq_type in driver_data.) > > Fixes: a402006d48a9c ("misc: pci_endpoint_test: Remove global 'irq_type' and 'no_msi'") > Signed-off-by: Niklas Cassel <cassel@xxxxxxxxxx> Considering that e.g. NXP platforms are currently broken without this, this should go into v6.15 IMHO. Kind regards, Niklas