linux/drivers/net/ethernet
Jiong Wang a09d5c52c4 nfp: bpf: flag jump destination to guide insn combine optimizations
NFP eBPF offload JIT engine is doing some instruction combine based
optimizations which however must not be safe if the combined sequences
are across basic block boarders.

Currently, there are post checks during fixing jump destinations. If the
jump destination is found to be eBPF insn that has been combined into
another one, then JIT engine will raise error and abort.

This is not optimal. The JIT engine ought to disable the optimization on
such cross-bb-border sequences instead of abort.

As there is no control flow information in eBPF infrastructure that we
can't do basic block based optimizations, this patch extends the existing
jump destination record pass to also flag the jump destination, then in
instruction combine passes we could skip the optimizations if insns in the
sequence are jump targets.

Suggested-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2017-12-01 20:59:19 +01:00
..
3com net: 3com: 3c574_cs: mark expected switch fall-through 2017-11-11 19:10:06 +09:00
8390 net: 8390: pcnet_cs: mark expected switch fall-through 2017-11-11 19:10:06 +09:00
adaptec
adi treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
aeroflex License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
agere treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
alacritech Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
allwinner
alteon License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
altera
amazon treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
amd Merge branch 'akpm' (patches from Andrew) 2017-11-15 19:42:40 -08:00
apm
apple
aquantia treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
arc License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atheros treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
aurora License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
broadcom Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00
brocade
cadence net: macb: add of_node_put to error paths 2017-11-11 15:27:44 +09:00
calxeda
cavium net: thunderx: Set max queue count taking XDP_TX into account 2017-11-30 09:24:07 -05:00
chelsio Updates for 4.15 kernel merge window 2017-11-15 14:54:53 -08:00
cirrus
cisco treewide: setup_timer() -> timer_setup() (2 field) 2017-11-21 15:57:09 -08:00
davicom License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dec Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
dlink net: dl2k: remove redundant re-assignment to np 2017-11-02 15:52:19 +09:00
emulex
ezchip
faraday
freescale fsl/fman_port: mark expected switch fall-throughs 2017-11-11 18:50:33 +09:00
fujitsu
hisilicon Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-11-15 11:56:19 -08:00
hp
huawei
i825xx License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ibm ibmvnic: fix dma_mapping_error call 2017-11-18 10:37:00 +09:00
intel e1000: Fix off-by-one in debug message 2017-11-27 14:31:24 -08:00
marvell Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00
mediatek
mellanox mlxsw: spectrum_router: Update nexthop RIF on update 2017-11-28 09:55:48 -05:00
micrel Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
microchip License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
moxa
myricom treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
natsemi Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
neterion net: vxge: Fix some indentation issues 2017-11-20 11:36:30 +09:00
netronome nfp: bpf: flag jump destination to guide insn combine optimizations 2017-12-01 20:59:19 +01:00
nuvoton
nvidia forcedeth: optimize the xmit with unlikely 2017-11-30 09:35:03 -05:00
nxp
oki-semi treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
packetengines drivers/net: packetengines: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
pasemi treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
qlogic netxen: remove timespec usage 2017-11-30 09:26:31 -05:00
qualcomm Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
rdc
realtek net: realtek: r8169: implement set_link_ksettings() 2017-11-24 01:36:31 +09:00
renesas
rocker treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
samsung
seeq Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
sfc Merge branch 'akpm' (patches from Andrew) 2017-11-15 19:42:40 -08:00
sgi
silan
sis Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
smsc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
stmicro Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-29 13:10:25 -08:00
sun Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2017-11-15 11:56:19 -08:00
synopsys treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
tehuti
ti net: ethernet: davinci_emac: Deduplicate bus_find_device() by name matching 2017-11-30 09:24:08 -05:00
tile Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-11-13 17:56:58 -08:00
toshiba treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
tundra drivers/net: tundra: Convert timers to use timer_setup() 2017-11-01 12:38:45 +09:00
via net: via: via-rhine: use %p to format void * address instead of %x 2017-11-29 09:45:24 -05:00
wiznet
xilinx net: ethernet: xilinx: Mark XILINX_LL_TEMAC broken on 64-bit 2017-11-29 09:43:24 -05:00
xircom
xscale
dnet.c
dnet.h
ec_bhf.c
ethoc.c
fealnx.c fealnx: Fix building error on MIPS 2017-11-16 22:58:12 +09:00
jme.c
jme.h
Kconfig
korina.c drivers/net: korina: Convert timers to use timer_setup() 2017-10-28 19:09:49 +09:00
lantiq_etop.c
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
netx-eth.c