On 2021/12/10 7:49, Damien Le Moal wrote: > On 2021/12/09 23:59, Andy Shevchenko wrote: >> platform_get_irq() will print a message when it fails. >> No need to repeat this. >> >> While at it, drop redundant check for 0 as platform_get_irq() spills >> out a big WARN() in such case. > > The reason you should be able to remove the "if (!irq)" test is that > platform_get_irq() never returns 0. At least, that is what the function kdoc > says. But looking at platform_get_irq_optional(), which is called by > platform_get_irq(), the out label is: > > WARN(ret == 0, "0 is an invalid IRQ number\n"); > return ret; > > So 0 will be returned as-is. That is rather weird. That should be fixed to > return -ENXIO: > > if (WARN(ret == 0, "0 is an invalid IRQ number\n")) > return -ENXIO; > return ret; > > Otherwise, I do not think that removing the "if (!irq)" hunk is safe. no ? Replying to myself :) I replied before reading Sergei replies that points this out. > >> >> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> >> --- >> drivers/ata/libahci_platform.c | 7 +------ >> 1 file changed, 1 insertion(+), 6 deletions(-) >> >> diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c >> index 0910441321f7..1af642c84e7b 100644 >> --- a/drivers/ata/libahci_platform.c >> +++ b/drivers/ata/libahci_platform.c >> @@ -579,13 +579,8 @@ int ahci_platform_init_host(struct platform_device *pdev, >> int i, irq, n_ports, rc; >> >> irq = platform_get_irq(pdev, 0); >> - if (irq < 0) { >> - if (irq != -EPROBE_DEFER) >> - dev_err(dev, "no irq\n"); >> + if (irq < 0) >> return irq; >> - } >> - if (!irq) >> - return -EINVAL; >> >> hpriv->irq = irq; >> > > -- Damien Le Moal Western Digital Research