Since v6.17, X550 adapters without VFs can crash the host on an MDD
event, as reported by Melissa on netdev [0], by Viacheslav on
intel-wired-lan [1], and by Proxmox VE users [2].

Patch 1 fixes the NULL pointer dereference, and the out-of-bounds
vfinfo write for events on PF pools with SR-IOV enabled too. Patch 2
stops enabling MDD without VFs, which is how such setups get MDD events
at all. Why the hardware flags PF queues is still unclear to me, all
reports show tx:80000.

For completness sake, on E610, the tx hang path in
ixgbe_handle_mdd_event() looks like it can still reach vfinfo for pools
without a VF if VT mode is enabled without VFs, e.g. with macvlan
offload, that's not fixed here.

Tested on a Supermicro H11DSi-NT with its onboard X550: without this
series RDRXCTL.MDP_EN is set whenever the link is up, also without VFs
or after removing them again. With it, MDD is only enabled while VFs
exist.
Patch 1 is not tested in-depth yet though, as I have no reproducer for
the MDD events themselves, so any testing by the reporters would be more
than welcome.

[0] 
https://lore.kernel.org/netdev/bqzPMb-F5iRWe7S2DWkQDhsK8u9ZoIaK34sF2pHpAjP6WHFb70Weq3pc8ZIVUoIx2EbPHd6HLBzz1HHd3xb5rxRZ9F3w1L6TQAd87S18CPQ=@proton.me/
[1] https://lore.kernel.org/all/[email protected]/
[2] https://bugzilla.proxmox.com/show_bug.cgi?id=7874

Thomas Lamprecht (2):
  ixgbe: fix NULL pointer dereference on MDD event without VFs
  ixgbe: do not enable MDD without VFs

 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c  |  2 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 16 +++++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)


base-commit: 7704c4c5bb127673b4f0ead839919db573559e38
-- 
2.47.3


Reply via email to