On 5/19/21 10:33 AM, Geert Uytterhoeven wrote: >> The driver overrides the error codes returned by platform_get_irq() to >> -EINVAL, so if it returns -EPROBE_DEFER, the driver would fail the probe >> permanently instead of the deferred probing. Switch to propagating the >> error code upstream, still checking/overriding IRQ0 as libata regards it >> as "no IRQ" (thus polling) anyway... >> >> Fixes: 9ec36cafe43b ("of/irq: do irq resolution in platform_get_irq") >> Signed-off-by: Sergey Shtylyov <s.shtylyov@xxxxxxxxxxxx> > > Thanks for your patch, which is now commit 4a24efa16e7db023 > ("sata_highbank: fix deferred probing") in block/for-next. > >> --- linux-block.orig/drivers/ata/sata_highbank.c >> +++ linux-block/drivers/ata/sata_highbank.c >> @@ -469,10 +469,12 @@ static int ahci_highbank_probe(struct pl >> } >> >> irq = platform_get_irq(pdev, 0); >> - if (irq <= 0) { >> + if (irq < 0) { >> dev_err(dev, "no irq\n"); > > This message should not be printed in case of -EPROBE_DEFER... I fact, platform_get_irq() now prints erors, even checking for EPROBE_DEFER, so the message may be removed completely... :-) > >> - return -EINVAL; >> + return irq; [...] MBR, Sergey