linux_dsm_epyc7002/drivers/net
Guilherme G. Piccoli 7f6c553902 i40e: use valid online CPU on q_vector initialization
Currently, the q_vector initialization routine sets the affinity_mask
of a q_vector based on v_idx value. Meaning a loop iterates on v_idx,
which is an incremental value, and the cpumask is created based on
this value.

This is a problem in systems with multiple logical CPUs per core (like in
SMT scenarios). If we disable some logical CPUs, by turning SMT off for
example, we will end up with a sparse cpu_online_mask, i.e., only the first
CPU in a core is online, and incremental filling in q_vector cpumask might
lead to multiple offline CPUs being assigned to q_vectors.

Example: if we have a system with 8 cores each one containing 8 logical
CPUs (SMT == 8 in this case), we have 64 CPUs in total. But if SMT is
disabled, only the 1st CPU in each core remains online, so the
cpu_online_mask in this case would have only 8 bits set, in a sparse way.

In general case, when SMT is off the cpu_online_mask has only C bits set:
0, 1*N, 2*N, ..., C*(N-1)  where
C == # of cores;
N == # of logical CPUs per core.
In our example, only bits 0, 8, 16, 24, 32, 40, 48, 56 would be set.

This patch changes the way q_vector's affinity_mask is created: it iterates
on v_idx, but consumes the CPU index from the cpu_online_mask instead of
just using the v_idx incremental value.

No functional changes were introduced.

Signed-off-by: Guilherme G Piccoli <gpiccoli@linux.vnet.ibm.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2016-07-14 23:39:12 -07:00
..
appletalk treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
arcnet arcnet: com90xx: add __init attribute 2016-04-19 20:17:45 -04:00
bonding bonding: set carrier off for devices created through netlink 2016-07-14 16:17:43 -07:00
caif
can can: kvaser_usb: Add support for more Kvaser Leaf v2 devices 2016-06-23 11:16:41 +02:00
cris treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
dsa net: dsa: mv88e6xxx: remove bridge work 2016-05-16 13:46:24 -04:00
ethernet i40e: use valid online CPU on q_vector initialization 2016-07-14 23:39:12 -07:00
fddi net: skfb: remove obsolete -I cflag 2016-06-15 22:06:06 -07:00
fjes fjes: Fix unnecessary spinlock_irqsave 2016-05-09 22:05:51 -04:00
hamradio Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-05-17 16:26:30 -07:00
hippi
hyperv hv_netvsc: set nvdev link after populating chn_table 2016-05-16 13:26:01 -04:00
ieee802154 net: ieee802154/adf7242: syntax error ifdef DEBUG 2016-05-19 11:30:56 -07:00
ipvlan ipvlan: Fix failure path in dev registration during link creation 2016-04-28 17:23:08 -04:00
irda net: irda: avoid null pointer dereference 2016-05-19 11:30:57 -07:00
phy net: phy: dp83867: Fix initialization of PHYCR register 2016-07-02 14:48:58 -04:00
plip
ppp ppp: defer netns reference release for ppp channel 2016-07-08 23:46:37 -04:00
slip treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
team team: Fix possible deadlock during team enslave 2016-06-22 16:31:03 -04:00
usb r8152: Add support for setting pass through MAC address on RTL8153-AD 2016-07-11 19:42:30 -07:00
vmxnet3 vmxnet3: segCnt can be 1 for LRO packets 2016-06-10 00:15:11 -07:00
wan treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
wimax treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
wireless wireless-drivers fixes for 4.7 2016-06-23 15:22:31 -04:00
xen-netback xen-netback: only deinitialized hash if it was initialized 2016-05-20 17:41:18 -04:00
dummy.c
eql.c
geneve.c geneve: fix max_mtu setting 2016-07-04 14:50:22 -07:00
gtp.c gtp: put back reference to netns when not required anymore 2016-05-12 12:27:15 -04:00
ifb.c ifb: support more features 2016-05-09 00:00:28 -04:00
Kconfig gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
LICENSE.SRC
loopback.c
macsec.c macsec: set actual real device for xmit when !protect_frames 2016-07-01 16:35:56 -04:00
macvlan.c macvlan: fix failure during registration v3 2016-04-26 15:17:18 -04:00
macvtap.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-09 15:59:24 -04:00
Makefile gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c drivers: net: remove NETDEV_TX_LOCKED 2016-04-26 15:53:05 -04:00
sb1000.c
Space.c net: Fix coding style warnings and errors. 2016-05-19 11:48:27 -07:00
sungem_phy.c
tun.c tuntap: correctly wake up process during uninit 2016-05-20 19:28:37 -04:00
veth.c veth: Update features to include all tunnel GSO types 2016-04-21 14:14:59 -04:00
virtio_net.c virtio_net: fix virtnet_open and virtnet_probe competing for try_fill_recv 2016-05-31 14:21:09 -07:00
vrf.c net: vrf: replace hard tab with space in assignment 2016-06-23 15:14:43 -04:00
vxlan.c ovs/vxlan: fix rtnl notifications on iface deletion 2016-06-14 22:21:44 -07:00
xen-netfront.c