OpenCloudOS-Kernel/drivers/net/ethernet/intel/ixgbe
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
..
Makefile ixgbe: Add X550 support function pointers 2014-12-05 09:13:07 -08:00
ixgbe.h ixgbe: Check for RSS key before setting value 2017-04-29 20:01:04 -07:00
ixgbe_82598.c ixgbe: Remove unused firmware version functions and method 2017-01-03 13:03:38 -08:00
ixgbe_82599.c scripts/spelling.txt: add "applys" pattern and fix typo instances 2017-02-27 18:43:47 -08:00
ixgbe_common.c net:add one common config ARCH_WANT_RELAX_ORDER to support relax ordering 2017-01-18 16:33:00 -05:00
ixgbe_common.h ixgbe: Implement firmware interface to access some PHYs 2017-01-03 13:03:39 -08:00
ixgbe_dcb.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb.h
ixgbe_dcb_82598.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb_82598.h
ixgbe_dcb_82599.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_dcb_82599.h ixgbe: clean up checkpatch warnings about CODE_INDENT and LEADING_SPACE 2014-05-23 05:24:04 -07:00
ixgbe_dcb_nl.c ixgbe: prefix Data Center Bridge ops struct 2017-02-16 04:02:44 -08:00
ixgbe_debugfs.c ixgbe: don't check NULL for debugfs_remove_recursive 2014-05-23 05:28:24 -07:00
ixgbe_ethtool.c ixgbe: Check for RSS key before setting value 2017-04-29 20:01:04 -07:00
ixgbe_fcoe.c ixgbe: Fix MDD events generated when FCoE+SRIOV are enabled 2016-01-08 04:15:00 -08:00
ixgbe_fcoe.h ixgbe: adds x550 specific FCoE offloads 2015-04-10 00:15:55 -07:00
ixgbe_lib.c ixgbe: add support for XDP_TX action 2017-04-29 19:58:07 -07:00
ixgbe_main.c ixgbe: initialize u64_stats_sync structures early at ixgbe_probe 2017-05-31 04:28:30 -07:00
ixgbe_mbx.c ixgbe: use BIT() macro 2016-04-25 04:15:11 -07:00
ixgbe_mbx.h ixgbe: Add PF support for VF promiscuous mode 2017-01-03 13:03:40 -08:00
ixgbe_model.h ixgbe: Fix deleting link filters for cls_u32 offloads 2016-06-29 10:05:24 -07:00
ixgbe_phy.c ixgbe: Remove driver config for KX4 PHY 2017-04-18 13:04:09 -07:00
ixgbe_phy.h ixgbe: Remove unused firmware version functions and method 2017-01-03 13:03:38 -08:00
ixgbe_ptp.c net: ethernet: update drivers to handle HWTSTAMP_FILTER_NTP_ALL 2017-05-21 13:37:32 -04:00
ixgbe_sriov.c ixgbe: Check for RSS key before setting value 2017-04-29 20:01:04 -07:00
ixgbe_sriov.h ixgbe: do not use adapter->num_vfs when setting VFs via module parameter 2017-04-18 13:25:30 -07:00
ixgbe_sysfs.c ixgbe: add Linux NICS mailing list to contact info 2014-03-12 19:05:30 -07:00
ixgbe_type.h ixgbe: Add 1000Base-T device based on X550EM_X MAC 2017-04-29 20:01:03 -07:00
ixgbe_x540.c ixgbe: Acquire PHY semaphore before device reset 2017-04-28 19:02:31 -07:00
ixgbe_x540.h ixgbe: Place SWFW semaphore in known valid state at probe 2016-04-04 17:44:50 -07:00
ixgbe_x550.c ixgbe: Add 1000Base-T device based on X550EM_X MAC 2017-04-29 20:01:03 -07:00