| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Date: Tue, 16 May 2017 14:06:12 +0200 |
| Subject: ata: libahci: properly propagate return value of platform_get_irq() |
| |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| |
| |
| [ Upstream commit c034640a32f8456018d9c8c83799ead683046b95 ] |
| |
| When platform_get_irq() fails, it returns an error code, which |
| libahci_platform and replaces it by -EINVAL. This commit fixes that by |
| propagating the error code. It fixes the situation where |
| platform_get_irq() returns -EPROBE_DEFER because the interrupt |
| controller is not available yet, and generally looks like the right |
| thing to do. |
| |
| We pay attention to not show the "no irq" message when we are in an |
| EPROBE_DEFER situation, because the driver probing will be retried |
| later on, once the interrupt controller becomes available to provide |
| the interrupt. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Reviewed-by: Hans de Goede <hdegoede@redhat.com> |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/ata/libahci_platform.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/ata/libahci_platform.c |
| +++ b/drivers/ata/libahci_platform.c |
| @@ -514,8 +514,9 @@ int ahci_platform_init_host(struct platf |
| |
| irq = platform_get_irq(pdev, 0); |
| if (irq <= 0) { |
| - dev_err(dev, "no irq\n"); |
| - return -EINVAL; |
| + if (irq != -EPROBE_DEFER) |
| + dev_err(dev, "no irq\n"); |
| + return irq; |
| } |
| |
| hpriv->irq = irq; |