linux/drivers/net/ethernet
Liwei Song b09457e7a1 ixgbe: initialize u64_stats_sync structures early at ixgbe_probe
Fix the following CallTrace:
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 71 PID: 1 Comm: swapper/0 Not tainted 4.8.8-WR9.0.0.1_standard #11
Hardware name: Intel Corporation S2600WTT/S2600WTT,
BIOS GRNDSDP1.86B.0036.R05.1407140519 07/14/2014
 00200086 00200086 eb5e1ab8 c144dd70 00000000 00000000 eb5e1af8 c10af89a
 c1d23de4 eb5e1af8 00000009 eb5d8600 eb5d8638 eb5e1af8 c10b14d8 00000009
 0000000a c1d32911 00000000 00000000 e44c826c eb5d8000 eb5e1b74 c10b214e
Call Trace:
 [<c144dd70>] dump_stack+0x5f/0x8f
 [<c10af89a>] register_lock_class+0x25a/0x4c0
 [<c10b14d8>] ? check_irq_usage+0x88/0xc0
 [<c10b214e>] __lock_acquire+0x5e/0x17a0
 [<c1abdb9b>] ? _raw_spin_unlock_irqrestore+0x3b/0x70
 [<c10cf14a>] ? rcu_read_lock_sched_held+0x8a/0x90
 [<c10b3c5f>] lock_acquire+0x9f/0x1f0
 [<c1922dcf>] ? dev_get_stats+0x5f/0x110
 [<c176e6b3>] ixgbe_get_stats64+0x113/0x320
 [<c1922dcf>] ? dev_get_stats+0x5f/0x110
 [<c1922dcf>] dev_get_stats+0x5f/0x110
 [<c1ab5415>] rtnl_fill_stats+0x40/0x105
 [<c193dd45>] rtnl_fill_ifinfo+0x4c5/0xd20
 [<c11c5115>] ? __kmalloc_node_track_caller+0x1a5/0x410
 [<c1917487>] ? __kmalloc_reserve.isra.42+0x27/0x80
 [<c191754f>] ? __alloc_skb+0x6f/0x270
 [<c1942291>] rtmsg_ifinfo_build_skb+0x71/0xd0
 [<c194230a>] rtmsg_ifinfo.part.23+0x1a/0x50
 [<c1923dad>] ? call_netdevice_notifiers_info+0x2d/0x60
 [<c194236b>] rtmsg_ifinfo+0x2b/0x40
 [<c192f997>] register_netdevice+0x3d7/0x4d0
 [<c192faa7>] register_netdev+0x17/0x30
 [<c177b83d>] ixgbe_probe+0x118d/0x1610
 [<c1498202>] local_pci_probe+0x32/0x80
 [<c1498172>] ? pci_match_device+0xd2/0x100
 [<c14991e0>] pci_device_probe+0xc0/0x110
 [<c1652cc5>] driver_probe_device+0x1c5/0x280
 [<c1498172>] ? pci_match_device+0xd2/0x100
 [<c1652e09>] __driver_attach+0x89/0x90
 [<c1652d80>] ? driver_probe_device+0x280/0x280
 [<c165114f>] bus_for_each_dev+0x4f/0x80
 [<c165269e>] driver_attach+0x1e/0x20
 [<c1652d80>] ? driver_probe_device+0x280/0x280
 [<c1652317>] bus_add_driver+0x1a7/0x220
 [<c1653a79>] driver_register+0x59/0xe0
 [<c1f897b8>] ? igb_init_module+0x49/0x49
 [<c1497b2a>] __pci_register_driver+0x4a/0x50
 [<c1f8985d>] ixgbe_init_module+0xa5/0xc4
 [<c1000485>] do_one_initcall+0x35/0x150
 [<c107e818>] ? parameq+0x18/0x70
 [<c1f395d8>] ? repair_env_string+0x12/0x51
 [<c107ead0>] ? parse_args+0x260/0x3b0
 [<c1074f73>] ? __usermodehelper_set_disable_depth+0x43/0x50
 [<c1f39e90>] kernel_init_freeable+0x19b/0x267
 [<c1f395c6>] ? set_debug_rodata+0xf/0xf
 [<c10b1e7b>] ? trace_hardirqs_on+0xb/0x10
 [<c1abdc02>] ? _raw_spin_unlock_irq+0x32/0x50
 [<c1085f0b>] ? finish_task_switch+0xab/0x1f0
 [<c1085ec9>] ? finish_task_switch+0x69/0x1f0
 [<c1ab6a30>] kernel_init+0x10/0x110
 [<c108bd65>] ? schedule_tail+0x25/0x80
 [<c1abe422>] ret_from_kernel_thread+0xe/0x24
 [<c1ab6a20>] ? rest_init+0x130/0x130

This CallTrace occurred on 32-bit kernel with CONFIG_PROVE_LOCKING
enabled.

This happens at ixgbe driver probe hardware stage, when comes to
ixgbe_get_stats64, the seqcount/seqlock still not initialize, although
this was initialize in TX/RX resources setup routin, but it was too late,
then lockdep give this Warning.

To fix this, move the u64_stats_init function to driver probe stage,
which before we get the status of seqcount and after the RX/TX ring
was finished init.

Signed-off-by: Liwei Song <liwei.song@windriver.com>
Tested-by: Krishneil Singh  <krishneil.k.singh@intel.com>
2017-05-31 04:28:30 -07:00
..
3com Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
8390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
adaptec
adi net: bfin_mac: Remove unused stats member from struct bfin_mac_local 2017-03-27 16:01:59 -07:00
aeroflex net: greth: Utilize of_get_mac_address() 2017-03-22 12:00:39 -07:00
agere
alacritech
allwinner
alteon
altera
amazon net/ena: switch to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
amd net: ethernet: update drivers to make both SW and HW TX timestamps 2017-05-21 13:37:32 -04:00
apm xgene: Check all RGMII phy mode variants 2017-05-19 19:41:43 -04:00
apple
aquantia sk_buff: remove support for csum_bad in sk_buff 2017-05-19 19:21:29 -04:00
arc net: arc_emac: switch to phy_start()/phy_stop() 2017-04-21 15:23:52 -04:00
atheros net: atheros: atl2: don't return zero on failure path in atl2_probe() 2017-05-22 12:05:01 -04:00
aurora
broadcom bnxt_en: Fix xmit_more with BQL. 2017-05-30 22:37:06 -04:00
brocade bna: ethtool: Avoid reading past end of buffer 2017-05-08 14:41:42 -04:00
cadence net: macb: fix phy interrupt parsing 2017-04-30 22:21:49 -04:00
calxeda
cavium liquidio: fix inaccurate count of napi-processed rx packets reported to Octeon 2017-05-26 14:41:48 -04:00
chelsio cxgb4: Fix netdev_features flag 2017-05-30 14:16:34 -04:00
cirrus Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
cisco enic: unmask intr only when napi is complete 2017-05-23 11:05:45 -04:00
davicom
dec Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
dlink net: dl2k: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
emulex Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
ezchip Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
faraday net: ethernet: faraday: To support device tree usage. 2017-05-18 10:10:44 -04:00
freescale net: fec: add post PHY reset delay DT property 2017-05-24 15:25:22 -04:00
fujitsu
hisilicon format-security: move static strings to const 2017-05-08 17:15:14 -07:00
hp Annotate hardware config module parameters in drivers/net/ethernet/ 2017-04-20 12:02:32 +01:00
i825xx
ibm ibmvnic: Reset sub-crqs during driver reset 2017-05-26 15:32:47 -04:00
intel ixgbe: initialize u64_stats_sync structures early at ixgbe_probe 2017-05-31 04:28:30 -07:00
marvell sky2: Use seq_puts() in sky2_debug_show() 2017-04-18 13:55:11 -04:00
mediatek Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-20 10:35:33 -04:00
mellanox Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-05-26 20:46:35 -04:00
micrel
microchip
moxa net: moxa: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
myricom
natsemi format-security: move static strings to const 2017-05-08 17:15:14 -07:00
neterion net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
netronome nfp: don't keep count for free buffers delayed kick 2017-05-30 11:27:08 -04:00
nuvoton net: nuvoton: Use net_device_stats from struct net_device 2017-04-07 07:03:33 -07:00
nvidia forcedeth: remove unnecessary carrier status check 2017-05-04 10:57:41 -04:00
nxp
oki-semi
packetengines
pasemi
qlogic qed: Cache alignemnt padding to match host 2017-05-30 12:07:04 -04:00
qualcomm net: qualcomm: add QCA7000 UART driver 2017-05-30 13:57:32 -04:00
rdc
realtek Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
renesas sh_eth: Do not print an error message for probe deferral 2017-05-18 11:21:07 -04:00
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-04-06 08:24:51 -07:00
samsung net: ethernet: update drivers to make both SW and HW TX timestamps 2017-05-21 13:37:32 -04:00
seeq
sfc net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
sgi
silan
sis
smsc Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
stmicro net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
sun ldmvsw: stop the clean timer at beginning of remove 2017-05-15 15:36:08 -04:00
synopsys net: dwc-xlgmac: add the initial ethtool support 2017-04-13 13:46:38 -04:00
tehuti net: tehuti: use new api ethtool_{get|set}_link_ksettings 2017-03-27 16:00:07 -07:00
ti net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
tile net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
toshiba format-security: move static strings to const 2017-05-08 17:15:14 -07:00
tundra
via
wiznet net: ethernet: wiznet: avoid format string exposure 2017-04-06 13:38:11 -07:00
xilinx
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c net: ethoc: Use ether_addr_copy() 2017-03-21 17:16:56 -07:00
fealnx.c
jme.c net: jme: Remove unused functions 2017-05-25 12:58:45 -04:00
jme.h
Kconfig
korina.c
lantiq_etop.c
Makefile
netx-eth.c