twx-linux/include/linux
Alexei Starovoitov bd4cf0ed33 net: filter: rework/optimize internal BPF interpreter's instruction set
This patch replaces/reworks the kernel-internal BPF interpreter with
an optimized BPF instruction set format that is modelled closer to
mimic native instruction sets and is designed to be JITed with one to
one mapping. Thus, the new interpreter is noticeably faster than the
current implementation of sk_run_filter(); mainly for two reasons:

1. Fall-through jumps:

  BPF jump instructions are forced to go either 'true' or 'false'
  branch which causes branch-miss penalty. The new BPF jump
  instructions have only one branch and fall-through otherwise,
  which fits the CPU branch predictor logic better. `perf stat`
  shows drastic difference for branch-misses between the old and
  new code.

2. Jump-threaded implementation of interpreter vs switch
   statement:

  Instead of single table-jump at the top of 'switch' statement,
  gcc will now generate multiple table-jump instructions, which
  helps CPU branch predictor logic.

Note that the verification of filters is still being done through
sk_chk_filter() in classical BPF format, so filters from user- or
kernel space are verified in the same way as we do now, and same
restrictions/constraints hold as well.

We reuse current BPF JIT compilers in a way that this upgrade would
even be fine as is, but nevertheless allows for a successive upgrade
of BPF JIT compilers to the new format.

The internal instruction set migration is being done after the
probing for JIT compilation, so in case JIT compilers are able to
create a native opcode image, we're going to use that, and in all
other cases we're doing a follow-up migration of the BPF program's
instruction set, so that it can be transparently run in the new
interpreter.

In short, the *internal* format extends BPF in the following way (more
details can be taken from the appended documentation):

  - Number of registers increase from 2 to 10
  - Register width increases from 32-bit to 64-bit
  - Conditional jt/jf targets replaced with jt/fall-through
  - Adds signed > and >= insns
  - 16 4-byte stack slots for register spill-fill replaced
    with up to 512 bytes of multi-use stack space
  - Introduction of bpf_call insn and register passing convention
    for zero overhead calls from/to other kernel functions
  - Adds arithmetic right shift and endianness conversion insns
  - Adds atomic_add insn
  - Old tax/txa insns are replaced with 'mov dst,src' insn

Performance of two BPF filters generated by libpcap resp. bpf_asm
was measured on x86_64, i386 and arm32 (other libpcap programs
have similar performance differences):

fprog #1 is taken from Documentation/networking/filter.txt:
tcpdump -i eth0 port 22 -dd

fprog #2 is taken from 'man tcpdump':
tcpdump -i eth0 'tcp port 22 and (((ip[2:2] - ((ip[0]&0xf)<<2)) -
   ((tcp[12]&0xf0)>>2)) != 0)' -dd

Raw performance data from BPF micro-benchmark: SK_RUN_FILTER on the
same SKB (cache-hit) or 10k SKBs (cache-miss); time in ns per call,
smaller is better:

--x86_64--
         fprog #1  fprog #1   fprog #2  fprog #2
         cache-hit cache-miss cache-hit cache-miss
old BPF      90       101        192       202
new BPF      31        71         47        97
old BPF jit  12        34         17        44
new BPF jit TBD

--i386--
         fprog #1  fprog #1   fprog #2  fprog #2
         cache-hit cache-miss cache-hit cache-miss
old BPF     107       136        227       252
new BPF      40       119         69       172

--arm32--
         fprog #1  fprog #1   fprog #2  fprog #2
         cache-hit cache-miss cache-hit cache-miss
old BPF     202       300        475       540
new BPF     180       270        330       470
old BPF jit  26       182         37       202
new BPF jit TBD

Thus, without changing any userland BPF filters, applications on
top of AF_PACKET (or other families) such as libpcap/tcpdump, cls_bpf
classifier, netfilter's xt_bpf, team driver's load-balancing mode,
and many more will have better interpreter filtering performance.

While we are replacing the internal BPF interpreter, we also need
to convert seccomp BPF in the same step to make use of the new
internal structure since it makes use of lower-level API details
without being further decoupled through higher-level calls like
sk_unattached_filter_{create,destroy}(), for example.

Just as for normal socket filtering, also seccomp BPF experiences
a time-to-verdict speedup:

05-sim-long_jumps.c of libseccomp was used as micro-benchmark:

  seccomp_rule_add_exact(ctx,...
  seccomp_rule_add_exact(ctx,...

  rc = seccomp_load(ctx);

  for (i = 0; i < 10000000; i++)
     syscall(199, 100);

'short filter' has 2 rules
'large filter' has 200 rules

'short filter' performance is slightly better on x86_64/i386/arm32
'large filter' is much faster on x86_64 and i386 and shows no
               difference on arm32

--x86_64-- short filter
old BPF: 2.7 sec
 39.12%  bench  libc-2.15.so       [.] syscall
  8.10%  bench  [kernel.kallsyms]  [k] sk_run_filter
  6.31%  bench  [kernel.kallsyms]  [k] system_call
  5.59%  bench  [kernel.kallsyms]  [k] trace_hardirqs_on_caller
  4.37%  bench  [kernel.kallsyms]  [k] trace_hardirqs_off_caller
  3.70%  bench  [kernel.kallsyms]  [k] __secure_computing
  3.67%  bench  [kernel.kallsyms]  [k] lock_is_held
  3.03%  bench  [kernel.kallsyms]  [k] seccomp_bpf_load
new BPF: 2.58 sec
 42.05%  bench  libc-2.15.so       [.] syscall
  6.91%  bench  [kernel.kallsyms]  [k] system_call
  6.25%  bench  [kernel.kallsyms]  [k] trace_hardirqs_on_caller
  6.07%  bench  [kernel.kallsyms]  [k] __secure_computing
  5.08%  bench  [kernel.kallsyms]  [k] sk_run_filter_int_seccomp

--arm32-- short filter
old BPF: 4.0 sec
 39.92%  bench  [kernel.kallsyms]  [k] vector_swi
 16.60%  bench  [kernel.kallsyms]  [k] sk_run_filter
 14.66%  bench  libc-2.17.so       [.] syscall
  5.42%  bench  [kernel.kallsyms]  [k] seccomp_bpf_load
  5.10%  bench  [kernel.kallsyms]  [k] __secure_computing
new BPF: 3.7 sec
 35.93%  bench  [kernel.kallsyms]  [k] vector_swi
 21.89%  bench  libc-2.17.so       [.] syscall
 13.45%  bench  [kernel.kallsyms]  [k] sk_run_filter_int_seccomp
  6.25%  bench  [kernel.kallsyms]  [k] __secure_computing
  3.96%  bench  [kernel.kallsyms]  [k] syscall_trace_exit

--x86_64-- large filter
old BPF: 8.6 seconds
    73.38%    bench  [kernel.kallsyms]  [k] sk_run_filter
    10.70%    bench  libc-2.15.so       [.] syscall
     5.09%    bench  [kernel.kallsyms]  [k] seccomp_bpf_load
     1.97%    bench  [kernel.kallsyms]  [k] system_call
new BPF: 5.7 seconds
    66.20%    bench  [kernel.kallsyms]  [k] sk_run_filter_int_seccomp
    16.75%    bench  libc-2.15.so       [.] syscall
     3.31%    bench  [kernel.kallsyms]  [k] system_call
     2.88%    bench  [kernel.kallsyms]  [k] __secure_computing

--i386-- large filter
old BPF: 5.4 sec
new BPF: 3.8 sec

--arm32-- large filter
old BPF: 13.5 sec
 73.88%  bench  [kernel.kallsyms]  [k] sk_run_filter
 10.29%  bench  [kernel.kallsyms]  [k] vector_swi
  6.46%  bench  libc-2.17.so       [.] syscall
  2.94%  bench  [kernel.kallsyms]  [k] seccomp_bpf_load
  1.19%  bench  [kernel.kallsyms]  [k] __secure_computing
  0.87%  bench  [kernel.kallsyms]  [k] sys_getuid
new BPF: 13.5 sec
 76.08%  bench  [kernel.kallsyms]  [k] sk_run_filter_int_seccomp
 10.98%  bench  [kernel.kallsyms]  [k] vector_swi
  5.87%  bench  libc-2.17.so       [.] syscall
  1.77%  bench  [kernel.kallsyms]  [k] __secure_computing
  0.93%  bench  [kernel.kallsyms]  [k] sys_getuid

BPF filters generated by seccomp are very branchy, so the new
internal BPF performance is better than the old one. Performance
gains will be even higher when BPF JIT is committed for the
new structure, which is planned in future work (as successive
JIT migrations).

BPF has also been stress-tested with trinity's BPF fuzzer.

Joint work with Daniel Borkmann.

Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Cc: Hagen Paul Pfeifer <hagen@jauu.net>
Cc: Kees Cook <keescook@chromium.org>
Cc: Paul Moore <pmoore@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: H. Peter Anvin <hpa@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-31 00:45:09 -04:00
..
amba
bcma Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
byteorder
can can: allow to change the device mtu for CAN FD capable devices 2014-03-07 09:18:23 +01:00
ceph ceph: remove xattr when null value is given to setxattr() 2014-02-17 12:37:09 -08:00
clk ARM: OMAP2+: clock: fix clkoutx2 with CLK_SET_RATE_PARENT 2014-02-19 12:07:55 -07:00
crush
decompress
dma
extcon
fsl/bestcomm
gpio gpio: consumer.h: Move forward declarations outside #ifdef 2014-02-06 10:22:56 +01:00
hsi
i2c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-01-24 17:17:30 -08:00
iio
input
irqchip Xtensa patchset for 3.14-rc1 2014-01-25 10:49:30 -08:00
isdn
lockd
mfd mfd: tps65217: Naturalise cross-architecture discrepancies 2014-02-19 13:30:30 +00:00
mlx4 net/mlx4: Implement vxlan ndo calls 2014-03-28 16:29:35 -04:00
mlx5 mlx5: Add include of <linux/slab.h> because of kzalloc()/kfree() use 2014-02-13 20:48:02 -08:00
mmc brcmfmac: add BCM4354 SDIO interface support 2014-03-17 13:44:14 -04:00
mtd mtd: mtdram: add missing 'const' 2014-01-20 11:55:23 -08:00
netfilter netfilter: ipset: add forceadd kernel support for hash set types 2014-03-06 09:31:43 +01:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
phy drivers: phy: Add support for optional phys 2014-02-05 05:48:43 +00:00
pinctrl pinctrl: Add void * to pinctrl_pin_desc 2014-01-16 14:25:37 +01:00
platform_data Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2014-01-31 09:31:14 -08:00
power
raid
regulator
rtc
sched Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-01-31 08:59:46 -08:00
spi Merge remote-tracking branches 'spi/fix/doc', 'spi/fix/nuc900' and 'spi/fix/rspi' into spi-linus 2014-02-11 12:08:27 +00:00
ssb ssb: gpio: add own IRQ domain 2014-01-24 22:39:54 +01:00
sunrpc Merge branch 'for-3.14' of git://linux-nfs.org/~bfields/linux 2014-01-30 10:18:43 -08:00
unaligned
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_pmtmr.h
acpi.h Merge branch 'acpi-modules' 2014-01-17 01:59:38 +01:00
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm_bios.h
apm-emulation.h
apple_bl.h
arcdevice.h
arm-cci.h
asn1_ber_bytecode.h
asn1_decoder.h
asn1.h
assoc_array_priv.h
assoc_array.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h
ath9k_platform.h
atm_suni.h
atm_tcp.h
atm.h
atmdev.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmel-mci.h
atmel-pwm-bl.h
atmel-ssc.h
atomic.h
attribute_container.h
audit.h audit: Send replies in the proper network namespace. 2014-02-28 19:44:55 -08:00
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev.h
backlight.h
balloon_compaction.h
basic_mmio_gpio.h
bcd.h
bch.h
bcm47xx_wdt.h
bfin_mac.h
binfmts.h execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
bio.h block: Fix cloning of discard/write same bios 2014-02-11 08:40:45 -07:00
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blk_types.h
blk-iopoll.h
blk-mq.h blk-mq: support partial I/O completions 2014-02-21 08:58:49 -08:00
blkdev.h Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-02-14 10:45:18 -08:00
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h memblock, bootmem: restore goal for alloc_low 2014-01-30 16:56:54 -08:00
bottom_half.h sched/preempt, locking: Rework local_bh_{dis,en}able() 2014-01-13 17:32:27 +01:00
brcmphy.h net: phy: add Broadcom BCM7xxx internal PHY driver 2014-02-14 00:27:58 -05:00
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h
c2port.h
cache.h printk/cache: mark printk_once test variable __read_mostly 2014-01-23 16:36:56 -08:00
capability.h
cb710.h
cciss_ioctl.h
ccp.h crypto: ccp - CCP device enabled/disabled changes 2014-01-15 11:33:40 +08:00
cdev.h
cdrom.h
cfag12864b.h
cgroup_subsys.h
cgroup.h cgroup: protect modifications to cgroup_idr with cgroup_mutex 2014-02-11 10:38:30 -05:00
circ_buf.h
cleancache.h
clk-private.h
clk-provider.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-01-30 17:07:18 -08:00
clk.h
clkdev.h
clksrc-dbx500-prcmu.h
clockchips.h
clocksource.h
cm4000_cs.h
cmdline-parser.h block: remove unrelated header files and export symbol 2014-01-21 20:18:26 -08:00
cn_proc.h
cnt32_to_63.h
coda_psdev.h
coda.h
com20020.h
compaction.h mm: compaction: encapsulate defer reset logic 2014-01-21 16:19:48 -08:00
compat.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-02-01 10:43:45 -08:00
compiler-gcc3.h
compiler-gcc4.h compiler/gcc4: Make quirk for asm_volatile_goto() unconditional 2014-02-13 12:34:05 +01:00
compiler-gcc.h
compiler-intel.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2014-01-23 18:11:00 -08:00
compiler.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2014-01-23 18:11:00 -08:00
completion.h
component.h drivers/base: provide an infrastructure for componentised subsystems 2014-01-10 16:27:36 -08:00
concap.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
container.h
context_tracking_state.h
context_tracking.h
cordic.h
coredump.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h
cpufreq.h cpufreq: Add boost frequency support in core 2014-01-17 02:00:44 +01:00
cpuidle.h
cpumask.h
cpuset.h
crash_dump.h crash_dump: fix compilation error (on MIPS at least) 2014-01-15 14:19:42 +07:00
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h
crypto.h
cryptohash.h
cryptouser.h
cs5535.h
ctype.h
cuda.h
cyclades.h
cycx_x25.h
davinci_emac.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
devfreq.h
device_cgroup.h
device-mapper.h
device.h Revert "kernfs, sysfs, driver-core: implement kernfs_remove_self() and its wrappers" 2014-01-13 14:05:13 -08:00
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma_remapping.h
dma-attrs.h
dma-buf.h dma-buf: update debugfs output 2014-02-13 10:08:52 +05:30
dma-contiguous.h
dma-debug.h dma-debug: introduce debug_dma_assert_idle() 2014-01-21 16:19:41 -08:00
dma-direction.h
dma-mapping.h
dmaengine.h Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd_genl_api.h
drbd_genl.h
drbd_limits.h
drbd.h
ds1286.h
ds2782_battery.h
ds17287rtc.h
dtlk.h
dw_apb_timer.h
dw_dmac.h
dynamic_debug.h
dynamic_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h
edd.h
edma.h
eeprom_93cx6.h
eeprom_93xx46.h
efi-bgrt.h
efi.h
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h etherdevice: Use ether_addr_copy to copy an Ethernet address 2014-01-15 15:39:33 -08:00
ethtool.h ethtool: Document the general convention for VLAs in kernel space 2014-02-12 17:33:03 -05:00
eventfd.h
eventpoll.h
evm.h
export.h export: declare ksymtab symbols 2014-01-16 10:23:02 +10:30
exportfs.h
ext2_fs.h
extcon.h
f2fs_fs.h
f75375s.h
falloc.h
fanotify.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h introduce __fcheck_files() to fix rcu_dereference_check_fdtable(), kill rcu_my_thread_group_empty() 2014-01-25 03:14:36 -05:00
fec.h
file.h get rid of fget_light() 2014-03-10 11:44:42 -04:00
filter.h net: filter: rework/optimize internal BPF interpreter's instruction set 2014-03-31 00:45:09 -04:00
fips.h
firewire.h firewire: don't use PREPARE_DELAYED_WORK 2014-03-07 10:19:57 -05:00
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_array.h reciprocal_divide: update/correction of the algorithm 2014-01-21 23:17:20 -08:00
flex_proportions.h
fmc-sdb.h
fmc.h
font.h
freezer.h
frontswap.h
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fs.h get rid of fget_light() 2014-03-10 11:44:42 -04:00
fscache-cache.h
fscache.h
fsl_devices.h
fsl_hypervisor.h
fsl-diu-fb.h
fsnotify_backend.h fsnotify: Allocate overflow events with proper type 2014-02-25 11:18:06 +01:00
fsnotify.h
ftrace_event.h tracing: Fix array size mismatch in format string 2014-03-20 13:21:05 -04:00
ftrace_irq.h
ftrace.h
futex.h
gameport.h
gcd.h
genalloc.h include/linux/genalloc.h: spinlock_t needs spinlock_types.h 2014-01-23 16:36:52 -08:00
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
gpio_keys.h
gpio_mouse.h
gpio-fan.h
gpio-pxa.h
gpio.h
gsmmux.h
hardirq.h sched/preempt, locking: Rework local_bh_{dis,en}able() 2014-01-13 17:32:27 +01:00
hash.h
hashtable.h
hdlc.h
hdlcdrv.h
hdmi.h
hid-debug.h
hid-roccat.h
hid-sensor-hub.h
hid-sensor-ids.h
hid.h
hiddev.h
hidraw.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
htirq.h
huge_mm.h mm: close PageTail race 2014-03-04 07:55:47 -08:00
hugetlb_cgroup.h mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE 2014-01-23 16:36:50 -08:00
hugetlb_inline.h
hugetlb.h mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE 2014-01-23 16:36:50 -08:00
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h Drivers: hv: vmbus: Specify the target CPU that should receive notification 2014-02-07 08:27:34 -08:00
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-gpio.h
i2c-mux-gpio.h
i2c-mux-pinctrl.h
i2c-mux.h
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pnx.h i2c: pnx: Use devm_*() functions 2014-01-16 11:15:50 +01:00
i2c-pxa.h
i2c-smbus.h Update Jean Delvare's e-mail address 2014-01-29 20:40:08 +01:00
i2c-xiic.h
i2c.h i2c: update i2c_algorithm documentation 2014-01-26 22:48:35 +01:00
i2o.h
i7300_idle.h
i8042.h
i8253.h
i82593.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next 2014-03-20 11:53:20 -04:00
if_arp.h
if_bridge.h
if_eql.h
if_ether.h
if_fddi.h
if_frad.h
if_link.h
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h vlan: make a new function vlan_dev_vlan_proto() and export 2014-03-26 16:41:28 -04:00
igmp.h
ihex.h
ima.h
in6.h
in.h
inet_diag.h
inet_lro.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_task.h Merge git://git.infradead.org/users/eparis/audit 2014-01-23 18:08:10 -08:00
init.h
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel_mid_dma.h
intel_pmic_gpio.h
intel-iommu.h
interrupt.h genirq: Add devm_request_any_context_irq() 2014-02-09 15:27:21 +01:00
interval_tree_generic.h
interval_tree.h
io-mapping.h
io.h
ioc3.h
ioc4.h
iocontext.h
iommu-helper.h
iommu.h
ioport.h
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h ipc,mqueue: remove limits for the amount of system-wide queues 2014-02-25 15:25:45 -08:00
ipc.h ipc: change kern_ipc_perm.deleted type to bool 2014-01-27 21:02:39 -08:00
ipmi_smi.h
ipmi-fru.h
ipmi.h
ipv6_route.h
ipv6.h ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams 2014-01-19 19:53:18 -08:00
irq_cpustat.h
irq_work.h
irq.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isdn_divertif.h
isdn_ppp.h net: isdn: use sk_unattached_filter api 2014-03-31 00:45:09 -04:00
isdn.h
isdnif.h
isicom.h
jbd2.h
jbd_common.h
jbd.h
jhash.h
jiffies.h sched/nohz: Fix overflow error in scheduler_tick_max_deferment() 2014-01-16 00:08:12 +01:00
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h
jz4740-adc.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kcmp.h
kconfig.h
kcore.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_stat.h
kernel-page-flags.h
kernel.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
kernelcapi.h
kernfs.h sysfs: fix namespace refcnt leak 2014-02-25 07:37:52 -08:00
kexec.h kexec: add sysctl to disable kexec_load 2014-01-23 16:37:03 -08:00
key-type.h
key.h
keyboard.h
kfifo.h
kgdb.h kgdb/kdb: Fix no KDB config problem 2014-01-25 08:55:09 +01:00
khugepaged.h
klist.h
kmemcheck.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject_ns.h
kobject.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h mm/rmap: use rmap_walk() in page_referenced() 2014-01-21 16:19:45 -08:00
kthread.h
ktime.h
kvm_host.h
kvm_para.h
kvm_types.h
l2tp.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-lm3530.h
leds_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h
lglock.h
lguest_launcher.h
lguest.h
libata.h libata: disable LPM for some WD SATA-I devices 2014-01-16 09:49:10 -05:00
libfdt_env.h
libfdt.h
libps2.h
license.h
linkage.h arch: use ASM_NL instead of ';' for assembler new line character in the macro 2014-01-27 21:45:29 +01:00
linux_logo.h
lis3lv02d.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
list.h
llc.h
llist.h
lockdep.h
lockref.h
log2.h
lp.h
lru_cache.h
lsm_audit.h
lz4.h
lzo.h
m48t86.h
mailbox.h
maple.h
marvell_phy.h
math64.h
max17040_battery.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mdio-bitbang.h
mdio-gpio.h
mdio-mux.h
mdio.h
mei_cl_bus.h
memblock.h mm: free memblock.memory in free_all_bootmem 2014-01-23 16:36:51 -08:00
memcontrol.h memcg, slab: clean up memcg cache initialization/destruction 2014-01-23 16:36:51 -08:00
memory_hotplug.h
memory.h
mempolicy.h mm, mempolicy: remove unneeded functions for UMA configs 2014-01-21 16:19:44 -08:00
mempool.h
memstick.h
mg_disk.h
micrel_phy.h
migrate_mode.h
migrate.h mm/migrate: remove unused function, fail_migrate_page() 2014-01-21 16:19:49 -08:00
mii.h
miscdevice.h Bluetooth: allocate static minor for vhci 2014-02-18 09:49:04 -08:00
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h
mm_types.h
mm.h mm: numa: bugfix for LAST_CPUPID_NOT_IN_PAGE_FLAGS 2014-03-04 07:55:50 -08:00
mman.h mm: add overcommit_kbytes sysctl variable 2014-01-21 16:19:44 -08:00
mmdebug.h mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE 2014-01-23 16:36:50 -08:00
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
mnt_namespace.h
mod_devicetable.h
module.h module: fix coding style 2014-01-16 10:23:03 +10:30
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls.h UAPI: add MPLS label stack definition 2014-03-04 13:51:06 -05:00
mroute6.h
mroute.h
msdos_fs.h
msg.h ipc: whitespace cleanup 2014-01-27 21:02:39 -08:00
msi.h
msm_mdp.h
mutex-debug.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mxm-wmi.h
n_r3964.h
namei.h
nbd.h
net.h net: replace macros net_random and net_srandom with direct calls to prandom 2014-01-14 15:15:25 -08:00
netdev_features.h vlan: Warn the user if lowerdev has bad vlan features. 2014-03-28 17:16:51 -04:00
netdevice.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
netfilter_bridge.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink.h
netpoll.h netpoll: Rename netpoll_rx_enable/disable to netpoll_poll_disable/enable 2014-03-29 17:58:37 -04:00
nfs3.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h NFS client bugfixes for Linux 3.14 2014-01-31 15:39:07 -08:00
nfs_idmap.h
nfs_iostat.h
nfs_page.h
nfs_xdr.h NFSv4: Fix another nfs4_sequence corruptor 2014-03-01 13:51:53 -06:00
nfs.h
nfsacl.h
nilfs2_fs.h
nl802154.h ieee802154: add netlink APIs for smartMAC configuration 2014-02-17 16:42:39 -05:00
nls.h nls: have register_nls() set ->owner 2014-01-25 03:14:05 -05:00
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
ntb.h
nubus.h
numa.h
nvme.h NVMe: Abort timed out commands 2014-01-27 19:27:53 -05:00
nvram.h
nwpserial.h
nx842.h
of_address.h
of_device.h of/device: Nullify match table in of_match_device() for CONFIG_OF=n 2014-02-05 10:04:37 -06:00
of_dma.h
of_fdt.h
of_gpio.h
of_iommu.h
of_irq.h
of_mdio.h phylib: Add of_phy_attach 2014-01-13 14:29:49 -08:00
of_mtd.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of.h of: restructure for_each macros to fix compile warnings 2014-02-05 09:51:54 -06:00
oid_registry.h
olpc-ec.h
omap-dma.h
omap-iommu.h
omap-mailbox.h
omapfb.h
oom.h
openvswitch.h
oprofile.h
oxu210hp.h
padata.h
page_cgroup.h
page-debug-flags.h
page-flags-layout.h
page-flags.h swap: add a simple detector for inappropriate swapin readahead 2014-02-06 13:48:51 -08:00
page-isolation.h
pageblock-flags.h
pagemap.h mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE 2014-01-23 16:36:50 -08:00
pagevec.h
parport_pc.h
parport.h
parser.h lib/parser.c: add match_wildcard() function 2014-01-23 16:36:55 -08:00
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h
pci_ids.h
pci-acpi.h
pci-aspm.h
pci-ats.h
pci-dma.h
pci.h PCI/MSI: Add pci_enable_msi_exact() and pci_enable_msix_exact() 2014-02-13 10:48:02 -07:00
pcieport_if.h
pda_power.h
percpu_counter.h
percpu_ida.h percpu_ida: Make percpu_ida_alloc + callers accept task state bitmask 2014-01-23 20:17:18 +00:00
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h mm: dump page when hitting a VM_BUG_ON using VM_BUG_ON_PAGE 2014-01-23 16:36:50 -08:00
perf_event.h perf/x86: Fix active_entry initialization 2014-01-12 10:16:07 +01:00
perf_regs.h
personality.h
pfn.h
phonedev.h
phonet.h
phy_fixed.h
phy.h net: phy: allow PHY drivers to implement their own software reset 2014-02-17 16:40:09 -05:00
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h fuse: fix pipe_buf_operations 2014-01-22 19:36:57 +01:00
pktcdvd.h
platform_device.h
plist.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeup.h
pm.h Merge branches 'pm-sleep', 'pm-runtime' and 'pm-apm' 2014-01-12 23:50:03 +01:00
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h
posix_acl_xattr.h fs: add generic xattr_acl handlers 2014-01-25 23:58:17 -05:00
posix_acl.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-01-28 08:38:04 -08:00
posix-clock.h
posix-timers.h
power_supply.h
powercap.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h
pps-gpio.h
preempt_mask.h sched/preempt, locking: Rework local_bh_{dis,en}able() 2014-01-13 17:32:27 +01:00
preempt.h sched/preempt/x86: Fix voluntary preempt for x86 2014-01-23 14:48:35 +01:00
prefetch.h
printk.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
prio_heap.h
proc_fs.h
proc_ns.h
profile.h
projid.h
proportions.h
pstore_ram.h
pstore.h
pti.h
ptp_classify.h net: ptp: do not reimplement PTP/BPF classifier 2014-03-31 00:45:09 -04:00
ptp_clock_kernel.h ptp: introduce programmable pins. 2014-03-21 14:21:13 -04:00
ptrace.h
pvclock_gtod.h
pwm_backlight.h
pwm.h
pxa2xx_ssp.h
pxa168_eth.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h
raid_class.h
ramfs.h fs/ramfs/file-nommu.c: make ramfs_nommu_get_unmapped_area() and ramfs_nommu_mmap() static 2014-01-23 16:36:58 -08:00
random.h random32: add prandom_u32_max and convert open coded users 2014-01-21 23:17:20 -08:00
range.h
ratelimit.h
rational.h
rbtree_augmented.h
rbtree.h
rculist_bl.h
rculist_nulls.h
rculist.h
rcupdate.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2014-01-28 08:38:04 -08:00
rcutiny.h
rcutree.h
reboot.h
reciprocal_div.h reciprocal_divide: update/correction of the algorithm 2014-01-21 23:17:20 -08:00
regmap.h
regset.h
relay.h
remoteproc.h
res_counter.h
reservation.h
reset-controller.h reset: Silence warning in reset-controller.h 2014-01-16 12:00:56 -08:00
reset.h
resource.h
resume-trace.h
rfkill-gpio.h
rfkill-regulator.h
rfkill.h
ring_buffer.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h mm: fix swapops.h:131 bug if remap_file_pages raced migration 2014-03-20 22:09:09 -07:00
rndis.h
root_dev.h
rotary_encoder.h
rpmsg.h
rslib.h
rtc-ds2404.h
rtc-v3020.h
rtc.h
rtmutex.h rtmutex: Turn the plist into an rb-tree 2014-01-13 13:41:50 +01:00
rtnetlink.h
rwlock_api_smp.h locking: Optimize lock_bh functions 2014-01-13 13:47:36 +01:00
rwlock_types.h
rwlock.h
rwsem-spinlock.h
rwsem.h rwsem: add rwsem_is_contended 2014-01-28 13:20:09 -08:00
rxrpc.h
s3c_adc_battery.h
sa11x0-dma.h
scatterlist.h
scc.h
sched_clock.h
sched.h execve: use 'struct filename *' for executable name passing 2014-02-05 12:54:53 -08:00
screen_info.h
sctp.h sctp: fix missing SCTP mailing list address update 2014-01-19 19:55:50 -08:00
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h net: filter: rework/optimize internal BPF interpreter's instruction set 2014-03-31 00:45:09 -04:00
securebits.h
security.h selinux: add gfp argument to security_xfrm_policy_alloc and fix callers 2014-03-10 08:30:02 +01:00
selection.h
selinux.h
sem.h
semaphore.h
seq_file_net.h
seq_file.h
seqlock.h seqlock: Use raw_ prefix instead of _no_lockdep 2014-01-12 10:13:59 +01:00
serial_8250.h
serial_bcm63xx.h MIPS: BCM63XX: move UART register definitions 2014-01-23 13:02:36 +01:00
serial_core.h
serial_max3100.h
serial_mfd.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
sfi_acpi.h
sfi.h
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h ipc: whitespace cleanup 2014-01-27 21:02:39 -08:00
shmem_fs.h
shrinker.h
signal.h
signalfd.h
sirfsoc_dma.h
sizes.h
skbuff.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
slab_def.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-01-25 11:17:34 -08:00
slab.h mm: fix GFP_THISNODE callers and clarify 2014-03-10 17:26:19 -07:00
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h smp.h: fix x86+cpu.c sparse warnings about arch nonboot CPU calls 2014-02-10 16:01:42 -08:00
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h net: update comments of "struct msghdr" with the more accurate RFC3542 ones 2014-01-22 21:57:05 -08:00
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h locking: Optimize lock_bh functions 2014-01-13 13:47:36 +01:00
spinlock_api_up.h locking: Optimize lock_bh functions 2014-01-13 13:47:36 +01:00
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h splice: fix unexpected size truncation 2014-01-27 21:02:40 -08:00
srcu.h
ssbi.h mfd: ssbi: Constify buffer in ssbi_write 2014-01-21 08:28:07 +00:00
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
ste_modem_shm.h
stmmac.h stmmac: Fix kernel crashes for jumbo frames 2014-01-21 17:05:27 -08:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
superhyway.h
suspend.h
svga.h
swab.h
swap.h
swapfile.h
swapops.h
swiotlb.h
sxgbe_platform.h net: sxgbe: add basic framework for Samsung 10Gb ethernet driver 2014-03-26 16:49:31 -04:00
synclink.h
sys_soc.h
sys.h
syscalls.h sched: Add 'flags' argument to sched_{set,get}attr() syscalls 2014-02-21 21:27:10 +01:00
syscore_ops.h
sysctl.h
sysfs.h Revert "kernfs, sysfs, driver-core: implement kernfs_remove_self() and its wrappers" 2014-01-13 14:05:13 -08:00
syslog.h
sysrq.h
sysv_fs.h
task_io_accounting_ops.h
task_io_accounting.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h tcp: switch rtt estimations to usec resolution 2014-02-26 17:08:40 -05:00
tegra-ahb.h
tegra-cpuidle.h
tegra-powergate.h ARM: tegra: fix tegra_powergate_sequence_power_up() inline 2014-01-14 08:01:10 -08:00
tegra-soc.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thinkpad_acpi.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h tick: Rename tick_check_idle() to tick_irq_enter() 2014-01-15 23:05:31 +01:00
tifm.h
timb_dma.h
timb_gpio.h
time.h
timekeeper_internal.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
topology.h
toshiba.h
tpm_command.h
tpm.h
trace_clock.h
trace_seq.h
tracehook.h
tracepoint.h tracing: Do not add event files for modules that fail tracepoints 2014-03-03 21:11:05 -05:00
transport_class.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h tty: Fix ref counting for port krefs 2014-02-14 13:39:29 -08:00
typecheck.h
types.h
u64_stats_sync.h net: Replace u64_stats_fetch_begin_bh to u64_stats_fetch_begin_irq 2014-03-14 22:41:36 -04:00
uaccess.h sched/preempt: Take away preempt_enable_no_resched() from modules 2014-01-13 13:47:37 +01:00
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uinput.h
uio_driver.h
uio.h
uprobes.h
usb_usual.h
usb.h Revert "usb: xhci: Link TRB must not occur within a USB payload burst" 2014-02-07 14:30:03 -08:00
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
uts.h
utsname.h
uuid.h
uwb.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via_i2c.h
via-core.h
via-gpio.h
via.h
video_output.h
videodev2.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_mmio.h
virtio_ring.h
virtio_scsi.h
virtio.h
vlynq.h
vm_event_item.h mm, x86: Account for TLB flushes only when debugging 2014-01-25 09:10:41 +01:00
vm_sockets.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h * Avoid WARN_ON() when mapping BGRT on Baytrail (EFI 32-bit). 2014-02-07 11:27:30 -08:00
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt_buffer.h
vt_kern.h
vt.h
vtime.h
w1-gpio.h drivers/w1/masters/w1-gpio.c: add strong pullup emulation 2014-01-23 16:37:04 -08:00
wait.h sched: Fix warning on make htmldocs caused by wait.h 2014-01-22 10:25:39 +01:00
wanrouter.h
watchdog.h
wireless.h
wl12xx.h wl1251: move power GPIO handling into the driver 2014-02-28 14:08:26 -05:00
wm97xx.h
workqueue.h workqueue: add args to workqueue lockdep name 2014-02-14 09:05:39 -05:00
writeback.h Revert "writeback: do not sync data dirtied after sync start" 2014-02-22 02:02:28 +01:00
ww_mutex.h
xattr.h
xilinxfb.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zsmalloc.h zsmalloc: add copyright 2014-01-30 16:56:55 -08:00
zutil.h