On 8/19/24 21:01, Rick Wertenbroek wrote: > The pci-epf-test PCI endpoint function /drivers/pci/endpoint/function/pci-epf_test.c > is meant to be used in a PCI endpoint device inside a host computer with > the host side driver: /drivers/misc/pci_endpoint_test.c. > > The host side driver can request read/write/copy transactions from the > endpoint function and expects an IRQ from the endpoint function once > the read/write/copy transaction is finished. These can be issued with or > without DMA enabled. If the host side driver requests a read/write/copy > transaction with DMA enabled and the endpoint function does not support > DMA, the endpoint would only print an error message and wait for further > commands without sending an IRQ because pci_epf_test_raise_irq() is > skipped in pci_epf_test_cmd_handler(). This results in the host side > driver hanging indefinitely waiting for the IRQ. > > Move the DMA check into the pci_epf_test_read()/write()/copy() functions > so that they report a transfer (IO) error and that pci_epf_test_raise_irq() > is called when a transfer with DMA is requested, even if unsupported. > > The host side driver will no longer hang but report an error on transfer > (printing "NOT OKAY") thanks to the checksum because no data was moved. > > Signed-off-by: Rick Wertenbroek <rick.wertenbroek@xxxxxxxxx> Looks good. Reviewed-by: Damien Le Moal <dlemoal@xxxxxxxxxx> -- Damien Le Moal Western Digital Research