linux_dsm_epyc7002/drivers/net
Jacob Keller 759dc4a7e6 i40e: initialize our affinity_mask based on cpu_possible_mask
On older kernels a call to irq_set_affinity_hint does not guarantee that
the IRQ affinity will be set. If nothing else on the system sets the IRQ
affinity this can result in a bug in the i40e_napi_poll() routine where
we notice that our interrupt fired on the "wrong" CPU according to our
internal affinity_mask variable.

This results in a bug where we continuously tell NAPI to stop polling to
move the interrupt to a new CPU, but the CPU never changes because our
affinity mask does not match the actual mask setup for the IRQ.

The root problem is a mismatched affinity mask value. So lets initialize
the value to cpu_possible_mask instead. This ensures that prior to the
first time we get an IRQ affinity notification we'll have the mask set
to include every possible CPU.

We use cpu_possible_mask instead of cpu_online_mask since the former is
almost certainly never going to change, while the later might change
after we've made a copy.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2017-08-27 16:09:03 -07:00
..
appletalk drivers/net: Fix ptr_ret.cocci warnings. 2017-07-25 12:27:06 -07:00
arcnet arcnet: com20020-pci: constify attribute_group structures. 2017-07-18 12:04:56 -07:00
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-08-15 20:23:23 -07:00
caif
can can: constify platform_device_id 2017-08-13 20:12:23 -07:00
cris
dsa net: dsa: mv88e6xxx: make irq_chip const 2017-08-20 20:02:29 -07:00
ethernet i40e: initialize our affinity_mask based on cpu_possible_mask 2017-08-27 16:09:03 -07:00
fddi net: defxx: constify eisa_device_id 2017-08-19 17:13:41 -07:00
fjes
hamradio hamradio: baycom: make hdlcdrv_ops const 2017-08-07 14:26:46 -07:00
hippi
hyperv hv_netvsc: Fix rndis_filter_close error during netvsc_remove 2017-08-24 21:55:59 -07:00
ieee802154 mrf24j40: Fix en error handling path in 'mrf24j40_probe()' 2017-07-25 13:17:31 +02:00
ipvlan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-08-09 16:28:45 -07:00
irda net: irda: stir4200: constify usb_device_id 2017-08-08 17:47:58 -07:00
phy net: mdio-gpio: make mdiobb_ops const 2017-08-22 14:22:18 -07:00
plip
ppp ppp: fix xmit recursion detection on ppp channels 2017-08-08 21:06:11 -07:00
slip
team team: use a larger struct for mac address 2017-07-29 11:25:05 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-08-09 16:28:45 -07:00
vmxnet3
wan wan: dscc4: convert to plain DMA API 2017-08-11 14:42:28 -07:00
wimax
wireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-08-15 20:23:23 -07:00
xen-netback
dummy.c
eql.c
geneve.c geneve: use netlink_ext_ack for error reporting in rtnl operations 2017-08-11 13:45:02 -07:00
gtp.c gtp: Initialize 64-bit per-cpu stats correctly 2017-08-01 20:06:07 -07:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c
macvlan.c macvlan: add offload features for encapsulation 2017-08-18 16:06:54 -07:00
macvtap.c
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tap.c tun/tap: use paren's with sizeof 2017-08-16 11:01:57 -07:00
tun.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-08-21 17:06:42 -07:00
veth.c
virtio_net.c net: drop unused attribute argument from sysfs queue funcs 2017-08-18 22:38:31 -07:00
vrf.c net: vrf: Drop local rtable and rt6_info 2017-08-13 20:05:12 -07:00
vsockmon.c
vxlan.c vxlan: change vxlan_[config_]validate() to use netlink_ext_ack for error reporting 2017-08-13 20:00:29 -07:00
xen-netfront.c