linux/drivers/net/ethernet
Jon Cooper daf37b556e sfc: PIO:Restrict to 64bit arch and use 64-bit writes.
Fixes:ee45fd92c739
("sfc: Use TX PIO for sufficiently small packets")

The linux net driver uses memcpy_toio() in order to copy into
the PIO buffers.
Even on a 64bit machine this causes 32bit accesses to a write-
combined memory region.
There are hardware limitations that mean that only 64bit
naturally aligned accesses are safe in all cases.
Due to being write-combined memory region two 32bit accesses
may be coalesced to form a 64bit non 64bit aligned access.
Solution was to open-code the memory copy routines using pointers
and to only enable PIO for x86_64 machines.

Not tested on platforms other than x86_64 because this patch
disables the PIO feature on other platforms.
Compile-tested on x86 to ensure that works.

The WARN_ON_ONCE() code in the previous version of this patch
has been moved into the internal sfc debug driver as the
assertion was unnecessary in the upstream kernel code.

This bug fix applies to v3.13 and v3.14 stable branches.

Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-06-11 15:36:21 -07:00
..
3com Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
8390 net/apne: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO 2014-04-12 01:59:38 -04:00
adaptec
adi bfin_mac: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
aeroflex net: greth: remove empty MDIO bus reset function 2014-03-28 01:38:01 -04:00
allwinner net: sun4i-emac: add promiscuous support 2014-04-12 01:59:38 -04:00
alteon drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
altera Altera TSE: Disable Multicast filtering to workaround problem 2014-05-15 16:46:46 -04:00
amd hplance: fix ram size in comment 2014-06-05 15:14:21 -07:00
apple
arc arc_emac: add clock handling 2014-04-27 19:46:17 -04:00
atheros atl1e: remove open-coded skb_cow_head. 2014-03-29 17:49:47 -04:00
broadcom bnx2x: Fix kernel crash and data miscompare after EEH recovery 2014-06-03 18:37:38 -07:00
brocade bna: remove open-coded skb_cow_head. 2014-03-29 17:49:47 -04:00
cadence net: macb: Fix race between HW and driver 2014-05-05 17:11:18 -04:00
calxeda xgmac: Call dev_kfree/consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:18:56 -07:00
chelsio cxgb4: Decode PCIe Gen3 link speed 2014-04-30 16:12:21 -04:00
cirrus cs89x0: Call dev_consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:18:58 -07:00
cisco net: enic: include irq.h for irqreturn_t definitions 2014-04-03 14:04:34 -04:00
davicom dm9000: Call dev_consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:18:59 -07:00
dec uli526x: Call dev_kfree/consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:00 -07:00
dlink sundance: Call dev_kfree_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:01 -07:00
emulex be2net: enable interrupts in EEH resume 2014-05-14 15:36:39 -04:00
faraday net: ftgmac100: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
freescale gianfar: Call netif_carrier_off() prior to registration 2014-06-05 15:03:46 -07:00
fujitsu drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hp
i825xx i825xx: Call dev_kfree_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:02 -07:00
ibm emac: aggregation of v1-2 PLB errors for IER register 2014-05-30 16:29:57 -07:00
icplus drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
intel e1000e: Restrict MDIO Slow Mode workaround to relevant parts 2014-05-05 13:03:27 -07:00
marvell net: mvmdio: Check for a valid interrupt instead of an error 2014-05-02 16:18:54 -04:00
mellanox net/mlx4_core: Reset RoCE VF gids when guest driver goes down 2014-05-30 16:57:52 -07:00
micrel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-25 20:29:20 -04:00
microchip
moxa drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
myricom myri10ge: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-02-18 15:33:32 -05:00
natsemi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
neterion vxge: Call dev_kfree_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:07 -07:00
nuvoton
nvidia forcedeth: Call dev_kfree_skb_any instead of kfree_skb. 2014-03-24 21:19:08 -07:00
nxp drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
octeon
oki-semi net: ptp: do not reimplement PTP/BPF classifier 2014-03-31 00:45:09 -04:00
packetengines net: packetengines: slight optimization of addr 2013-12-31 16:48:32 -05:00
pasemi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
qlogic qlcnic: Initialize mailbox cmd structure to zero 2014-06-05 15:06:09 -07:00
rdc r6040: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
realtek net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irq 2014-03-14 22:41:36 -04:00
renesas sh_eth: fix SH7619/771x support 2014-06-03 19:28:42 -07:00
samsung net: sxgbe: Added set function for interrupt on complete 2014-04-30 16:12:22 -04:00
seeq drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
sfc sfc: PIO:Restrict to 64bit arch and use 64-bit writes. 2014-06-11 15:36:21 -07:00
sgi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
silan sc92031: Call dev_consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:08 -07:00
sis sis900: Call dev_kfree_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:09 -07:00
smsc net: driver: smsc: set NOCARRIER flag in dev at driver initialization 2014-06-03 18:20:38 -07:00
stmicro stmmac: Remove unbalanced clk_disable call 2014-05-22 15:16:23 -04:00
sun net: cassini: use nested lock annotation 2014-05-09 16:34:10 -04:00
tehuti net: Spelling s/transmition/transmission/ 2014-01-14 17:11:26 -08:00
ti net: davinci_emac: Remove unwanted debug/error message 2014-06-02 23:13:38 -07:00
tile tilepro: Call dev_consume_skb_any instead of kfree_skb. 2014-03-24 21:19:12 -07:00
toshiba spider_net: Call dev_consume_skb_any instead of dev_kfree_skb. 2014-03-24 21:19:13 -07:00
tundra drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
via Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-25 20:29:20 -04:00
wiznet net: w5100: Use devm_ioremap_resource() 2014-02-28 16:57:24 -05:00
xilinx net: emaclite: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
xircom ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
xscale net: ptp: move PTP classifier in its own file 2014-04-01 16:43:18 -04:00
dnet.c dnet: remove empty MDIO bus reset function 2014-03-28 01:38:02 -04:00
dnet.h
ec_bhf.c Driver for Beckhoff CX5020 EtherCAT master module. 2014-05-08 22:59:25 -04:00
ethoc.c net: ethoc: remove empty MDIO bus function 2014-03-28 01:38:02 -04:00
fealnx.c
jme.c jme: Fix unmap loop counting error: 2014-05-14 15:11:22 -04:00
jme.h
Kconfig net: ec_bhf: Add runtime dependencies 2014-06-02 17:02:28 -07:00
korina.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
lantiq_etop.c netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
Makefile Driver for Beckhoff CX5020 EtherCAT master module. 2014-05-08 22:59:25 -04:00
netx-eth.c ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
s6gmac.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00