diff options
author | Mugunthan V N <mugunthanvnm@ti.com> | 2013-04-29 19:27:28 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-04-30 15:47:41 -0400 |
commit | 7dcf313a7a68adc9a060e4e41a55245c0f9a3d31 (patch) | |
tree | 1c5d094021a7eb45d977fa993b7368509adb9522 /drivers/net | |
parent | ff6e722870ddca2808b5d46159e58904f8ededf1 (diff) |
drivers: net: cpsw: fix kernel warn on cpsw irq enable
With the commit a11fbba (net/cpsw: fix irq_disable() with threaded interrupts)
from Sebastian Siewior, a kernel warning is generated as below. This warning
is generated as the irq_enabled is not initialized for the primary interface
and in probe it is initialized for the second interface. This patch moves
irq_enabled initialization from second interface to primary interface.
[ 3.049173] net eth0: phy found : id is : 0x4dd074
[ 3.054552] net eth0: phy found : id is : 0x4dd074
[ 3.070421] ------------[ cut here ]------------
[ 3.075308] WARNING: at kernel/irq/manage.c:437 enable_irq+0x3c/0x74()
[ 3.082173] Unbalanced enable for IRQ 56
[ 3.086299] Modules linked in:
[ 3.089557] [<c001abcc>] (unwind_backtrace+0x0/0xf0) from [<c004294c>] (warn_slowpath_common+0x4c/0x68)
[ 3.099450] [<c004294c>] (warn_slowpath_common+0x4c/0x68) from [<c00429fc>] (warn_slowpath_fmt+0x30/0x40)
[ 3.109521] [<c00429fc>] (warn_slowpath_fmt+0x30/0x40) from [<c00a29fc>] (enable_irq+0x3c/0x74)
[ 3.118681] [<c00a29fc>] (enable_irq+0x3c/0x74) from [<c03a7818>] (cpsw_ndo_open+0x61c/0x684)
[ 3.127669] [<c03a7818>] (cpsw_ndo_open+0x61c/0x684) from [<c0445c08>] (__dev_open+0x9c/0xf8)
[ 3.136646] [<c0445c08>] (__dev_open+0x9c/0xf8) from [<c0445e34>] (__dev_change_flags+0x78/0x13c)
[ 3.145988] [<c0445e34>] (__dev_change_flags+0x78/0x13c) from [<c0445f64>] (dev_change_flags+0x10/0x48)
[ 3.155884] [<c0445f64>] (dev_change_flags+0x10/0x48) from [<c0736d88>] (ip_auto_config+0x198/0x111c)
[ 3.165592] [<c0736d88>] (ip_auto_config+0x198/0x111c) from [<c00086a4>] (do_one_initcall+0x34/0x180)
[ 3.175309] [<c00086a4>] (do_one_initcall+0x34/0x180) from [<c07078f8>] (kernel_init_freeable+0xfc/0x1c8)
[ 3.185393] [<c07078f8>] (kernel_init_freeable+0xfc/0x1c8) from [<c04f36ec>] (kernel_init+0x8/0xe4)
[ 3.194929] [<c04f36ec>] (kernel_init+0x8/0xe4) from [<c00133d0>] (ret_from_fork+0x14/0x24)
[ 3.203712] ---[ end trace d6f979da080bc391 ]---
Cc: Sebastian Siewior <bigeasy@linutronix.de>
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/ti/cpsw.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 4e2d224dd680..59c43918883e 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c | |||
@@ -1633,7 +1633,6 @@ static int cpsw_probe_dual_emac(struct platform_device *pdev, | |||
1633 | priv_sl2->irqs_table[i] = priv->irqs_table[i]; | 1633 | priv_sl2->irqs_table[i] = priv->irqs_table[i]; |
1634 | priv_sl2->num_irqs = priv->num_irqs; | 1634 | priv_sl2->num_irqs = priv->num_irqs; |
1635 | } | 1635 | } |
1636 | priv->irq_enabled = true; | ||
1637 | ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; | 1636 | ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; |
1638 | 1637 | ||
1639 | ndev->netdev_ops = &cpsw_netdev_ops; | 1638 | ndev->netdev_ops = &cpsw_netdev_ops; |
@@ -1679,6 +1678,7 @@ static int cpsw_probe(struct platform_device *pdev) | |||
1679 | priv->msg_enable = netif_msg_init(debug_level, CPSW_DEBUG); | 1678 | priv->msg_enable = netif_msg_init(debug_level, CPSW_DEBUG); |
1680 | priv->rx_packet_max = max(rx_packet_max, 128); | 1679 | priv->rx_packet_max = max(rx_packet_max, 128); |
1681 | priv->cpts = devm_kzalloc(&pdev->dev, sizeof(struct cpts), GFP_KERNEL); | 1680 | priv->cpts = devm_kzalloc(&pdev->dev, sizeof(struct cpts), GFP_KERNEL); |
1681 | priv->irq_enabled = true; | ||
1682 | if (!ndev) { | 1682 | if (!ndev) { |
1683 | pr_err("error allocating cpts\n"); | 1683 | pr_err("error allocating cpts\n"); |
1684 | goto clean_ndev_ret; | 1684 | goto clean_ndev_ret; |