linux_dsm_epyc7002/drivers/net/ethernet/intel/igb
Roman Gushchin bc16e47f03 igb: don't reuse pages with pfmemalloc flag
Incoming packet is dropped silently by sk_filter(), if the skb was
allocated from pfmemalloc reserves and the corresponding socket is
not marked with the SOCK_MEMALLOC flag.

Igb driver allocates pages for DMA with __skb_alloc_page(), which
calls alloc_pages_node() with the __GFP_MEMALLOC flag. So, in case
of OOM condition, igb can get pages with pfmemalloc flag set.

If an incoming packet hits the pfmemalloc page and is large enough
(small packets are copying into the memory, allocated with
netdev_alloc_skb_ip_align(), so they are not affected), it will be
dropped.

This behavior is ok under high memory pressure, but the problem is
that the igb driver reuses these mapped pages. So, packets are still
dropping even if all memory issues are gone and there is a plenty
of free memory.

In my case, some TCP sessions hang on a small percentage (< 0.1%)
of machines days after OOMs.

Fix this by avoiding reuse of such pages.

Signed-off-by: Roman Gushchin <klamm@yandex-team.ru>
Tested-by: Aaron Brown "aaron.f.brown@intel.com"
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2014-10-30 04:56:52 -07:00
..
e1000_82575.c igb: add flags to set eee advertisement mode 2014-09-06 05:00:39 -07:00
e1000_82575.h igb: add flags to set eee advertisement mode 2014-09-06 05:00:39 -07:00
e1000_defines.h igb: Workaround for i210 Errata 25: Slow System Clock 2014-07-10 01:48:28 -07:00
e1000_hw.h igb: remove blocking phy read from inside spinlock 2014-10-02 02:30:39 -07:00
e1000_i210.c igb: Workaround for i210 Errata 25: Slow System Clock 2014-07-10 01:48:28 -07:00
e1000_i210.h igb: Workaround for i210 Errata 25: Slow System Clock 2014-07-10 01:48:28 -07:00
e1000_mac.c igb: Cleanups to fix msleep warnings 2014-04-24 17:41:15 -07:00
e1000_mac.h igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
e1000_mbx.c igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
e1000_mbx.h igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
e1000_nvm.c igb/ixgbe: remove return statements for void functions 2014-05-23 05:28:41 -07:00
e1000_nvm.h igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
e1000_phy.c igb: remove redundant PHY power down register write 2014-05-27 02:10:44 -07:00
e1000_phy.h igb: remove redundant PHY power down register write 2014-05-27 02:10:44 -07:00
e1000_regs.h igb: Add message when malformed packets detected by hw 2014-07-24 03:00:37 -07:00
igb_ethtool.c igb: add flags to set eee advertisement mode 2014-09-06 05:00:39 -07:00
igb_hwmon.c igb: Cleanups to change comment style on license headers 2014-04-24 17:26:27 -07:00
igb_main.c igb: don't reuse pages with pfmemalloc flag 2014-10-30 04:56:52 -07:00
igb_ptp.c igb: separate hardware setting from the set_ts_config ioctl 2014-06-11 08:45:55 -07:00
igb.h igb: remove blocking phy read from inside spinlock 2014-10-02 02:30:39 -07:00
Makefile igb: Update license text to remove FSF address and update copyright. 2014-02-26 15:54:52 -05:00