On 11/11/22 03:50, Christophe Leroy wrote: > NO_IRQ is a relic from the old days. It is not used anymore in core > functions. By the way, function irq_of_parse_and_map() returns value 0 > on error. > > In some drivers, NO_IRQ is erroneously used to check the return of > irq_of_parse_and_map(). > > It is not a real bug today because the only architectures using the > drivers being fixed by this patch define NO_IRQ as 0, but there are > architectures which define NO_IRQ as -1. If one day those > architectures start using the non fixed drivers, there will be a > problem. > > Long time ago Linus advocated for not using NO_IRQ, see > https://lkml.org/lkml/2005/11/21/221 . He re-iterated the same view > recently in https://lkml.org/lkml/2022/10/12/622 > > So test !irq instead of tesing irq == NO_IRQ. > > Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> > --- > drivers/ata/sata_dwc_460ex.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/ata/sata_dwc_460ex.c b/drivers/ata/sata_dwc_460ex.c > index e3263e961045..5fb80ccde65b 100644 > --- a/drivers/ata/sata_dwc_460ex.c > +++ b/drivers/ata/sata_dwc_460ex.c > @@ -242,7 +242,7 @@ static int sata_dwc_dma_init_old(struct platform_device *pdev, > > /* Get SATA DMA interrupt number */ > hsdev->dma->irq = irq_of_parse_and_map(np, 1); > - if (hsdev->dma->irq == NO_IRQ) { > + if (!hsdev->dma->irq) { > dev_err(dev, "no SATA DMA irq\n"); > return -ENODEV; > } > @@ -1180,7 +1180,7 @@ static int sata_dwc_probe(struct platform_device *ofdev) > > /* Get SATA interrupt number */ > irq = irq_of_parse_and_map(np, 0); > - if (irq == NO_IRQ) { > + if (!irq) { > dev_err(dev, "no SATA DMA irq\n"); > return -ENODEV; > } You can also remove the: #ifndef NO_IRQ #define NO_IRQ 0 #endif at the top of the file. -- Damien Le Moal Western Digital Research