[PATCH v2 3/9] ata: ahci: custom irq init for host init

Hans de Goede hdegoede at redhat.com
Mon Nov 9 09:00:58 EST 2020


Hi,

On 11/4/20 4:52 PM, sven.auhagen at voleatech.de wrote:
> From: Sven Auhagen <sven.auhagen at voleatech.de>
> 
> Disable the platform irq init in ahci init platform host
> if it was initiated by a custom function.
> To check for it I am using the AHCI_HFLAG_MULTI_MSI flag.
> 
> Suggested-by: Hans de Goede <hdegoede at redhat.com>
> Signed-off-by: Sven Auhagen <sven.auhagen at voleatech.de>

The code is fine here. But I'm not entirely happy with
the commit message how about:

"""
ata: libahci_platform: Do not try to get an IRQ when AHCI_HFLAG_MULTI_MSI is set

When the ahci-host AHCI_HFLAG_MULTI_MSI flag is set then the driver must provide
a get_irq_vector callback and take care of getting the IRQs itself. So in this
case ahci_platform_init_host() should not try to get an IRQ itself.
"""

With the commit message updated to the above (or something similar) you
may add my:

Reviewed-by: Hans de Goede <hdegoede at redhat.com>

I've also just given you my Reviewed-by for patch 4 and 5, and the
result already has a Reviewed-by.

So if you can sendout a v3 of this series with the commit message for
this patch fixed, then it is ready for merging from my pov.

Regards,

Hans


> ---
>  drivers/ata/libahci_platform.c | 16 +++++++++-------
>  1 file changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c
> index de638dafce21..f6f2a111d226 100644
> --- a/drivers/ata/libahci_platform.c
> +++ b/drivers/ata/libahci_platform.c
> @@ -581,14 +581,16 @@ int ahci_platform_init_host(struct platform_device *pdev,
>  	struct ata_host *host;
>  	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");
> -		return irq;
> -	}
> +	if (!(hpriv->flags & AHCI_HFLAG_MULTI_MSI)) {
> +		irq = platform_get_irq(pdev, 0);
> +		if (irq <= 0) {
> +			if (irq != -EPROBE_DEFER)
> +				dev_err(dev, "no irq\n");
> +			return irq;
> +		}
>  
> -	hpriv->irq = irq;
> +		hpriv->irq = irq;
> +	}
>  
>  	/* prepare host */
>  	pi.private_data = (void *)(unsigned long)hpriv->flags;
> 




More information about the linux-arm-kernel mailing list