linux/drivers/net/ethernet
Benjamin Poirier fff200caf6 e1000e: Ignore TSYNCRXCTL when getting I219 clock attributes
There have been multiple reports of crashes that look like
kernel: RIP: 0010:[<ffffffff8110303f>] timecounter_read+0xf/0x50
[...]
kernel: Call Trace:
kernel:  [<ffffffffa0806b0f>] e1000e_phc_gettime+0x2f/0x60 [e1000e]
kernel:  [<ffffffffa0806c5d>] e1000e_systim_overflow_work+0x1d/0x80 [e1000e]
kernel:  [<ffffffff810992c5>] process_one_work+0x155/0x440
kernel:  [<ffffffff81099e16>] worker_thread+0x116/0x4b0
kernel:  [<ffffffff8109f422>] kthread+0xd2/0xf0
kernel:  [<ffffffff8163184f>] ret_from_fork+0x3f/0x70

These can be traced back to the fact that e1000e_systim_reset() skips the
timecounter_init() call if e1000e_get_base_timinca() returns -EINVAL, which
leads to a null deref in timecounter_read().

Commit 83129b37ef ("e1000e: fix systim issues", v4.2-rc1) reworked
e1000e_get_base_timinca() in such a way that it can return -EINVAL for
e1000_pch_spt if the SYSCFI bit is not set in TSYNCRXCTL.

Some experimentation has shown that on I219 (e1000_pch_spt, "MAC: 12")
adapters, the E1000_TSYNCRXCTL_SYSCFI flag is unstable; TSYNCRXCTL reads
sometimes don't have the SYSCFI bit set. Retrying the read shortly after
finds the bit to be set. This was observed at boot (probe) but also link up
and link down.

Moreover, the phc (PTP Hardware Clock) seems to operate normally even after
reads where SYSCFI=0. Therefore, remove this register read and
unconditionally set the clock parameters.

Reported-by: Achim Mildenberger <admin@fph.physik.uni-karlsruhe.de>
Message-Id: <20180425065243.g5mqewg5irkwgwgv@f2>
Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1075876
Fixes: 83129b37ef ("e1000e: fix systim issues")
Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-06-04 09:45:53 -07:00
..
3com Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
8390 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
adaptec
aeroflex
agere
alacritech
allwinner
alteon
altera
amazon
amd Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-26 19:46:15 -04:00
apm
apple
aquantia net: aquantia: Limit number of vectors to actually allocated irqs 2018-05-08 00:06:44 -04:00
arc
atheros
aurora
broadcom bnx2x: Collect the device debug information during Tx timeout. 2018-05-28 22:52:52 -04:00
brocade
cadence drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
calxeda
cavium drivers/net: Fix various unnecessary characters after logging newlines 2018-05-30 13:24:08 -04:00
chelsio cxgb4: Add FORCE_PAUSE bit to 32 bit port caps 2018-05-31 15:23:26 -04:00
cirrus
cisco enic: set DMA mask to 47 bit 2018-05-24 23:05:30 -04:00
cortina
davicom
dec
dlink
emulex be2net: Fix error detection logic for BE3 2018-05-29 10:57:25 -04:00
ezchip
faraday
freescale net: ethernet: freescale: fix false-positive string overflow warning 2018-05-30 13:16:44 -04:00
fujitsu
hisilicon net: hns3: Optimize the VF's process of updating multicast MAC 2018-06-01 14:23:58 -04:00
hp
huawei net-next/hinic: add pci device ids for 25ge and 100ge card 2018-05-08 00:07:42 -04:00
i825xx
ibm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-26 19:46:15 -04:00
intel e1000e: Ignore TSYNCRXCTL when getting I219 clock attributes 2018-06-04 09:45:53 -07:00
marvell net: mvpp2: Split the PPv2 driver to a dedicated directory 2018-06-01 11:29:35 -04:00
mediatek net: mediatek: use of_device_get_match_data() 2018-04-16 13:43:07 -04:00
mellanox net/mlx5: Make function mlx5_fpga_tls_send_teardown_cmd() static 2018-06-03 10:36:31 -04:00
micrel
microchip
moxa
mscc net: mscc: Add SPDX identifier 2018-05-18 11:30:25 -04:00
myricom
natsemi net/sonic: Use dma_mapping_error() 2018-05-31 14:17:33 -04:00
neterion net: vxge: fix spelling mistake in macro VXGE_HW_ERR_PRIVILAGED_OPEARATION 2018-05-23 14:50:02 -04:00
netronome nfp: abm: report correct MQ stats 2018-05-29 09:49:17 -04:00
ni net: nixge: Address compiler warnings about signedness 2018-05-07 23:30:03 -04:00
nuvoton
nvidia
nxp
oki-semi
packetengines
pasemi
qlogic qed*: Add link change count value to ethtool statistics display. 2018-05-31 14:02:13 -04:00
qualcomm net: qcom/emac: fix device tree initialization 2018-05-29 10:06:15 -04:00
rdc
realtek 8139too: Remove unnecessary netif_napi_del() 2018-05-25 16:35:45 -04:00
renesas Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-21 16:01:54 -04:00
rocker rocker: rocker_main: Ignore bridge VLAN events 2018-05-31 14:13:43 -04:00
samsung
seeq
sfc sfc: stop the TX queue before pushing new buffers 2018-05-25 14:49:37 -04:00
sgi
silan
sis
smsc arch: remove obsolete architecture ports 2018-04-02 20:20:12 -07:00
socionext Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-06-03 09:31:58 -04:00
stmicro net: stmmac: add dwmac-4.20a compatible 2018-05-28 23:08:29 -04:00
sun net: ethernet: sun: niu set correct packet size in skb 2018-05-04 13:20:46 -04:00
synopsys
tehuti
ti net: netcp: ethss: remove unnecessary pointer set to NULL 2018-06-03 10:39:48 -04:00
toshiba
tundra
via
wiznet
xilinx net: axienet: remove stale comment of axienet_open 2018-06-03 10:59:32 -04:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c net: ethoc: Remove useless test before clk_disable_unprepare 2018-05-16 14:44:29 -04:00
fealnx.c
jme.c
jme.h
Kconfig net: ethernet: Sort Kconfig sourcing alphabetically 2018-05-21 12:14:47 -04:00
korina.c
lantiq_etop.c
Makefile net: mscc: Add initial Ocelot switch support 2018-05-15 16:41:15 -04:00
netx-eth.c