diff mbox series

pata_ep93xx: fix deferred probing

Message ID 215f70ac-64fd-bf56-a5d2-79b2ffe24d5e@omprussia.ru
State New
Headers show
Series pata_ep93xx: fix deferred probing | expand

Commit Message

Sergey Shtylyov March 19, 2021, 8:24 p.m. UTC
The driver overrides the error codes returned by platform_get_irq() to
-ENXIO, 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: 2fff27512600 ("PATA host controller driver for ep93xx")
Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru>

---
This patch is against the 'master' branch of Jens Axboe's 'linux-block.git'
repo.

 drivers/ata/pata_ep93xx.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Sergey Shtylyov March 19, 2021, 8:37 p.m. UTC | #1
Hello!

On 3/19/21 11:24 PM, Sergey Shtylyov wrote:

> The driver overrides the error codes returned by platform_get_irq() to
> -ENXIO, 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: 2fff27512600 ("PATA host controller driver for ep93xx")
> Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru>
> 
> ---
> This patch is against the 'master' branch of Jens Axboe's 'linux-block.git'
> repo.
> 
>  drivers/ata/pata_ep93xx.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> Index: linux-block/drivers/ata/pata_ep93xx.c
> ===================================================================
> --- linux-block.orig/drivers/ata/pata_ep93xx.c
> +++ linux-block/drivers/ata/pata_ep93xx.c
> @@ -928,7 +928,11 @@ static int ep93xx_pata_probe(struct plat
>  	/* INT[3] (IRQ_EP93XX_EXT3) line connected as pull down */
>  	irq = platform_get_irq(pdev, 0);
>  	if (irq < 0) {
> -		err = -ENXIO;
> +		err = irq;
> +		goto err_rel_gpio;
> +	}
> +	if (!irq) {
> +		err = -EINVAL;

   Hm, this patch should be split in two, it appears... don't take it as yet please. :-)

[...]

MBR, Sergey
diff mbox series

Patch

Index: linux-block/drivers/ata/pata_ep93xx.c
===================================================================
--- linux-block.orig/drivers/ata/pata_ep93xx.c
+++ linux-block/drivers/ata/pata_ep93xx.c
@@ -928,7 +928,11 @@  static int ep93xx_pata_probe(struct plat
 	/* INT[3] (IRQ_EP93XX_EXT3) line connected as pull down */
 	irq = platform_get_irq(pdev, 0);
 	if (irq < 0) {
-		err = -ENXIO;
+		err = irq;
+		goto err_rel_gpio;
+	}
+	if (!irq) {
+		err = -EINVAL;
 		goto err_rel_gpio;
 	}