Message ID | 20220310062035.2084669-1-chi.minghao@zte.com.cn (mailing list archive) |
---|---|
State | Superseded |
Commit | bf2b83425b599d897e64a2509388f16da2ce6fd4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [V2] net: mv643xx_eth: use platform_get_irq() instead of platform_get_resource() | expand |
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Thu, 10 Mar 2022 06:20:35 +0000 you wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > It is not recommened to use platform_get_resource(pdev, IORESOURCE_IRQ) > for requesting IRQ's resources any more, as they can be not ready yet in > case of DT-booting. > > platform_get_irq() instead is a recommended way for getting IRQ even if > it was not retrieved earlier. > > [...] Here is the summary with links: - [V2] net: mv643xx_eth: use platform_get_irq() instead of platform_get_resource() https://git.kernel.org/netdev/net-next/c/bf2b83425b59 You are awesome, thank you!
On Thu, 10 Mar 2022 06:20:35 +0000 cgel.zte@gmail.com wrote: > @@ -3189,9 +3188,10 @@ static int mv643xx_eth_probe(struct platform_device *pdev) > timer_setup(&mp->rx_oom, oom_timer_wrapper, 0); > > > - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); > - BUG_ON(!res); > - dev->irq = res->start; > + irq = platform_get_irq(pdev, 0); > + if (WARN_ON(irq < 0)) > + return irq; You can't just return from here, there are operations that need to be undone, look at the end of this function :/ Please follow up with an incremental fix ASAP. > + dev->irq = irq; >
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index c31cbbae0eca..34fa5ab21d62 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -3092,8 +3092,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev) struct mv643xx_eth_private *mp; struct net_device *dev; struct phy_device *phydev = NULL; - struct resource *res; - int err; + int err, irq; pd = dev_get_platdata(&pdev->dev); if (pd == NULL) { @@ -3189,9 +3188,10 @@ static int mv643xx_eth_probe(struct platform_device *pdev) timer_setup(&mp->rx_oom, oom_timer_wrapper, 0); - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - BUG_ON(!res); - dev->irq = res->start; + irq = platform_get_irq(pdev, 0); + if (WARN_ON(irq < 0)) + return irq; + dev->irq = irq; dev->netdev_ops = &mv643xx_eth_netdev_ops;