* [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30
@ 2020-07-30 17:09 Tony Nguyen
2020-07-30 17:09 ` [net 1/2] e1000e: continue to init PHY even when failed to disable ULP Tony Nguyen
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Tony Nguyen @ 2020-07-30 17:09 UTC (permalink / raw)
To: davem; +Cc: Tony Nguyen, netdev, nhorman, sassmann, jeffrey.t.kirsher
This series contains updates to the e1000e and igb drivers.
Aaron Ma allows PHY initialization to continue if ULP disable failed for
e1000e.
Francesco Ruggeri fixes race conditions in igb reset that could cause panics.
The following are changes since commit 27a2145d6f826d1fad9de06ac541b1016ced3427:
ibmvnic: Fix IRQ mapping disposal in error path
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue 1GbE
Aaron Ma (1):
e1000e: continue to init PHY even when failed to disable ULP
Francesco Ruggeri (1):
igb: reinit_locked() should be called with rtnl_lock
drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 +---
drivers/net/ethernet/intel/igb/igb_main.c | 9 +++++++++
2 files changed, 10 insertions(+), 3 deletions(-)
--
2.26.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [net 1/2] e1000e: continue to init PHY even when failed to disable ULP
2020-07-30 17:09 [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Tony Nguyen
@ 2020-07-30 17:09 ` Tony Nguyen
2020-07-30 17:09 ` [net 2/2] igb: reinit_locked() should be called with rtnl_lock Tony Nguyen
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Tony Nguyen @ 2020-07-30 17:09 UTC (permalink / raw)
To: davem
Cc: Aaron Ma, netdev, nhorman, sassmann, jeffrey.t.kirsher,
anthony.l.nguyen, Aaron Brown
From: Aaron Ma <aaron.ma@canonical.com>
After 'commit e086ba2fccda4 ("e1000e: disable s0ix entry and exit flows
for ME systems")',
ThinkPad P14s always failed to disable ULP by ME.
'commit 0c80cdbf3320 ("e1000e: Warn if disabling ULP failed")'
break out of init phy:
error log:
[ 42.364753] e1000e 0000:00:1f.6 enp0s31f6: Failed to disable ULP
[ 42.524626] e1000e 0000:00:1f.6 enp0s31f6: PHY Wakeup cause - Unicast Packet
[ 42.822476] e1000e 0000:00:1f.6 enp0s31f6: Hardware Error
When disable s0ix, E1000_FWSM_ULP_CFG_DONE will never be 1.
If continue to init phy like before, it can work as before.
iperf test result good too.
Fixes: 0c80cdbf3320 ("e1000e: Warn if disabling ULP failed")
Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/e1000e/ich8lan.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index f999cca37a8a..489bb5b59475 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -301,10 +301,8 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
*/
hw->dev_spec.ich8lan.ulp_state = e1000_ulp_state_unknown;
ret_val = e1000_disable_ulp_lpt_lp(hw, true);
- if (ret_val) {
+ if (ret_val)
e_warn("Failed to disable ULP\n");
- goto out;
- }
ret_val = hw->phy.ops.acquire(hw);
if (ret_val) {
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [net 2/2] igb: reinit_locked() should be called with rtnl_lock
2020-07-30 17:09 [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Tony Nguyen
2020-07-30 17:09 ` [net 1/2] e1000e: continue to init PHY even when failed to disable ULP Tony Nguyen
@ 2020-07-30 17:09 ` Tony Nguyen
2020-07-30 23:27 ` [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Jakub Kicinski
2020-07-31 23:52 ` David Miller
3 siblings, 0 replies; 6+ messages in thread
From: Tony Nguyen @ 2020-07-30 17:09 UTC (permalink / raw)
To: davem
Cc: Francesco Ruggeri, netdev, nhorman, sassmann, jeffrey.t.kirsher,
anthony.l.nguyen, Aaron Brown
From: Francesco Ruggeri <fruggeri@arista.com>
We observed two panics involving races with igb_reset_task.
The first panic is caused by this race condition:
kworker reboot -f
igb_reset_task
igb_reinit_locked
igb_down
napi_synchronize
__igb_shutdown
igb_clear_interrupt_scheme
igb_free_q_vectors
igb_free_q_vector
adapter->q_vector[v_idx] = NULL;
napi_disable
Panics trying to access
adapter->q_vector[v_idx].napi_state
The second panic (a divide error) is caused by this race:
kworker reboot -f tx packet
igb_reset_task
__igb_shutdown
rtnl_lock()
...
igb_clear_interrupt_scheme
igb_free_q_vectors
adapter->num_tx_queues = 0
...
rtnl_unlock()
rtnl_lock()
igb_reinit_locked
igb_down
igb_up
netif_tx_start_all_queues
dev_hard_start_xmit
igb_xmit_frame
igb_tx_queue_mapping
Panics on
r_idx % adapter->num_tx_queues
This commit applies to igb_reset_task the same changes that
were applied to ixgbe in commit 2f90b8657ec9 ("ixgbe: this patch
adds support for DCB to the kernel and ixgbe driver"),
commit 8f4c5c9fb87a ("ixgbe: reinit_locked() should be called with
rtnl_lock") and commit 88adce4ea8f9 ("ixgbe: fix possible race in
reset subtask").
Signed-off-by: Francesco Ruggeri <fruggeri@arista.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
drivers/net/ethernet/intel/igb/igb_main.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 8bb3db2cbd41..6e5861bfb0fa 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -6224,9 +6224,18 @@ static void igb_reset_task(struct work_struct *work)
struct igb_adapter *adapter;
adapter = container_of(work, struct igb_adapter, reset_task);
+ rtnl_lock();
+ /* If we're already down or resetting, just bail */
+ if (test_bit(__IGB_DOWN, &adapter->state) ||
+ test_bit(__IGB_RESETTING, &adapter->state)) {
+ rtnl_unlock();
+ return;
+ }
+
igb_dump(adapter);
netdev_err(adapter->netdev, "Reset adapter\n");
igb_reinit_locked(adapter);
+ rtnl_unlock();
}
/**
--
2.26.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30
2020-07-30 17:09 [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Tony Nguyen
2020-07-30 17:09 ` [net 1/2] e1000e: continue to init PHY even when failed to disable ULP Tony Nguyen
2020-07-30 17:09 ` [net 2/2] igb: reinit_locked() should be called with rtnl_lock Tony Nguyen
@ 2020-07-30 23:27 ` Jakub Kicinski
2020-07-31 15:33 ` Nguyen, Anthony L
2020-07-31 23:52 ` David Miller
3 siblings, 1 reply; 6+ messages in thread
From: Jakub Kicinski @ 2020-07-30 23:27 UTC (permalink / raw)
To: Tony Nguyen; +Cc: davem, netdev, nhorman, sassmann, jeffrey.t.kirsher
On Thu, 30 Jul 2020 10:09:36 -0700 Tony Nguyen wrote:
> This series contains updates to the e1000e and igb drivers.
>
> Aaron Ma allows PHY initialization to continue if ULP disable failed for
> e1000e.
>
> Francesco Ruggeri fixes race conditions in igb reset that could cause panics.
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
In the future please try to add Fixes tags on all net submissions
(patch 2). Also - are similar fixes for other Intel drivers in the
works?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30
2020-07-30 23:27 ` [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Jakub Kicinski
@ 2020-07-31 15:33 ` Nguyen, Anthony L
0 siblings, 0 replies; 6+ messages in thread
From: Nguyen, Anthony L @ 2020-07-31 15:33 UTC (permalink / raw)
To: kuba; +Cc: nhorman, davem, netdev, Kirsher, Jeffrey T, sassmann
On Thu, 2020-07-30 at 16:27 -0700, Jakub Kicinski wrote:
> On Thu, 30 Jul 2020 10:09:36 -0700 Tony Nguyen wrote:
> > This series contains updates to the e1000e and igb drivers.
> >
> > Aaron Ma allows PHY initialization to continue if ULP disable
> > failed for
> > e1000e.
> >
> > Francesco Ruggeri fixes race conditions in igb reset that could
> > cause panics.
>
> Reviewed-by: Jakub Kicinski <kuba@kernel.org>
>
> In the future please try to add Fixes tags on all net submissions
> (patch 2).
Will do.
> Also - are similar fixes for other Intel drivers in the
> works?
Jeff said he had someone looking into it. I'll track down who's working
on it.
Thanks,
Tony
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30
2020-07-30 17:09 [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Tony Nguyen
` (2 preceding siblings ...)
2020-07-30 23:27 ` [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Jakub Kicinski
@ 2020-07-31 23:52 ` David Miller
3 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2020-07-31 23:52 UTC (permalink / raw)
To: anthony.l.nguyen; +Cc: netdev, nhorman, sassmann, jeffrey.t.kirsher
From: Tony Nguyen <anthony.l.nguyen@intel.com>
Date: Thu, 30 Jul 2020 10:09:36 -0700
> This series contains updates to the e1000e and igb drivers.
>
> Aaron Ma allows PHY initialization to continue if ULP disable failed for
> e1000e.
>
> Francesco Ruggeri fixes race conditions in igb reset that could cause panics.
...
> git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue 1GbE
Pulled, thank you.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-07-31 23:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-30 17:09 [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Tony Nguyen
2020-07-30 17:09 ` [net 1/2] e1000e: continue to init PHY even when failed to disable ULP Tony Nguyen
2020-07-30 17:09 ` [net 2/2] igb: reinit_locked() should be called with rtnl_lock Tony Nguyen
2020-07-30 23:27 ` [net 0/2][pull request] Intel Wired LAN Driver Updates 2020-07-30 Jakub Kicinski
2020-07-31 15:33 ` Nguyen, Anthony L
2020-07-31 23:52 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).