twx-linux/include/linux
Alexei Starovoitov fec56f5890 bpf: Introduce BPF trampoline
Introduce BPF trampoline concept to allow kernel code to call into BPF programs
with practically zero overhead.  The trampoline generation logic is
architecture dependent.  It's converting native calling convention into BPF
calling convention.  BPF ISA is 64-bit (even on 32-bit architectures). The
registers R1 to R5 are used to pass arguments into BPF functions. The main BPF
program accepts only single argument "ctx" in R1. Whereas CPU native calling
convention is different. x86-64 is passing first 6 arguments in registers
and the rest on the stack. x86-32 is passing first 3 arguments in registers.
sparc64 is passing first 6 in registers. And so on.

The trampolines between BPF and kernel already exist.  BPF_CALL_x macros in
include/linux/filter.h statically compile trampolines from BPF into kernel
helpers. They convert up to five u64 arguments into kernel C pointers and
integers. On 64-bit architectures this BPF_to_kernel trampolines are nops. On
32-bit architecture they're meaningful.

The opposite job kernel_to_BPF trampolines is done by CAST_TO_U64 macros and
__bpf_trace_##call() shim functions in include/trace/bpf_probe.h. They convert
kernel function arguments into array of u64s that BPF program consumes via
R1=ctx pointer.

This patch set is doing the same job as __bpf_trace_##call() static
trampolines, but dynamically for any kernel function. There are ~22k global
kernel functions that are attachable via nop at function entry. The function
arguments and types are described in BTF.  The job of btf_distill_func_proto()
function is to extract useful information from BTF into "function model" that
architecture dependent trampoline generators will use to generate assembly code
to cast kernel function arguments into array of u64s.  For example the kernel
function eth_type_trans has two pointers. They will be casted to u64 and stored
into stack of generated trampoline. The pointer to that stack space will be
passed into BPF program in R1. On x86-64 such generated trampoline will consume
16 bytes of stack and two stores of %rdi and %rsi into stack. The verifier will
make sure that only two u64 are accessed read-only by BPF program. The verifier
will also recognize the precise type of the pointers being accessed and will
not allow typecasting of the pointer to a different type within BPF program.

The tracing use case in the datacenter demonstrated that certain key kernel
functions have (like tcp_retransmit_skb) have 2 or more kprobes that are always
active.  Other functions have both kprobe and kretprobe.  So it is essential to
keep both kernel code and BPF programs executing at maximum speed. Hence
generated BPF trampoline is re-generated every time new program is attached or
detached to maintain maximum performance.

To avoid the high cost of retpoline the attached BPF programs are called
directly. __bpf_prog_enter/exit() are used to support per-program execution
stats.  In the future this logic will be optimized further by adding support
for bpf_stats_enabled_key inside generated assembly code. Introduction of
preemptible and sleepable BPF programs will completely remove the need to call
to __bpf_prog_enter/exit().

Detach of a BPF program from the trampoline should not fail. To avoid memory
allocation in detach path the half of the page is used as a reserve and flipped
after each attach/detach. 2k bytes is enough to call 40+ BPF programs directly
which is enough for BPF tracing use cases. This limit can be increased in the
future.

BPF_TRACE_FENTRY programs have access to raw kernel function arguments while
BPF_TRACE_FEXIT programs have access to kernel return value as well. Often
kprobe BPF program remembers function arguments in a map while kretprobe
fetches arguments from a map and analyzes them together with return value.
BPF_TRACE_FEXIT accelerates this typical use case.

Recursion prevention for kprobe BPF programs is done via per-cpu
bpf_prog_active counter. In practice that turned out to be a mistake. It
caused programs to randomly skip execution. The tracing tools missed results
they were looking for. Hence BPF trampoline doesn't provide builtin recursion
prevention. It's a job of BPF program itself and will be addressed in the
follow up patches.

BPF trampoline is intended to be used beyond tracing and fentry/fexit use cases
in the future. For example to remove retpoline cost from XDP programs.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20191114185720.1641606-5-ast@kernel.org
2019-11-15 23:41:51 +01:00
..
amba
avf
bcma
byteorder
can linux-can-next-for-5.4-20190904 2019-09-05 12:17:50 +02:00
ceph libceph: add function that clears osd client's abort_err 2019-09-16 12:06:23 +02:00
clk clk: add include guard to clk-conf.h 2019-09-17 10:27:46 -07:00
crush
decompress
dma
dsa net: dsa: sja1105: Fix sleeping while atomic in .port_hwtstamp_set 2019-10-02 12:19:53 -04:00
extcon
firmware firmware: broadcom: add OP-TEE based BNXT f/w manager 2019-10-31 11:00:45 -07:00
fpga
fsl bus: fsl-mc: add the fsl_mc_get_endpoint function 2019-10-31 14:19:45 -07:00
gpio gpiolib: Initialize the hardware with a callback 2019-10-15 01:18:46 +02:00
greybus staging: greybus: fix more header declarations 2019-08-28 17:24:22 +02:00
hsi
i3c i3c: add addr and lvr to i2c_dev_desc structure 2019-08-11 10:48:28 +02:00
iio chrome platform changes for v5.4 2019-09-19 14:14:28 -07:00
input Merge branch 'next' into for-linus 2019-09-16 09:56:27 -07:00
irqchip irqchip: Add include guard to irq-partition-percpu.h 2019-08-20 10:35:46 +01:00
isdn
lockd
mailbox mailbox: mediatek: cmdq: clear the event in cmdq initial flow 2019-09-17 00:40:05 -05:00
mfd - New Drivers 2019-09-23 19:37:49 -07:00
mlx4
mlx5 net/mlx5: Fix flow counter list auto bits struct 2019-10-29 16:27:17 -07:00
mmc dma-mapping updates for 5.4: 2019-09-19 13:27:23 -07:00
mtd This pull-request contains the following changes for MTD: 2019-09-21 10:59:54 -07:00
mux
netfilter netfilter: ipset: move ip_set_get_ip_port() to ip_set_bitmap_port.c. 2019-10-07 23:59:02 +02:00
netfilter_arp netfilter: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +02:00
netfilter_bridge netfilter: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +02:00
netfilter_ipv4 netfilter: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +02:00
netfilter_ipv6 netfilter: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +02:00
perf
phy
pinctrl pinctrl/gpio: Take MUX usage into account 2019-08-23 11:09:41 +02:00
platform_data dmaengine: imx-sdma: fix size check for sdma script_number 2019-10-14 13:33:44 +05:30
power
qed RDMA subsystem updates for 5.4 2019-09-21 10:26:24 -07:00
raid
regulator regulator: add missing 'static inline' to a helper's stub 2019-09-03 12:37:16 +01:00
remoteproc
reset
rpmsg
rtc
sched Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-09-28 12:39:07 -07:00
soc drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
soundwire soundwire: stream: make stream name a const pointer 2019-09-04 14:57:28 +05:30
spi spi: Add a PTP system timestamp to the transfer structure 2019-10-08 17:38:15 +01:00
ssb
sunrpc SUNRPC: Destroy the back channel when we destroy the host transport 2019-10-30 12:04:35 -04:00
ulpi
unaligned
usb USB changes for 5.4-rc1 2019-09-18 10:33:46 -07:00
wimax wimax: no need to check return value of debugfs_create functions 2019-08-10 15:25:47 -07:00
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_iort.h
acpi_pmtmr.h
acpi.h Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
adb.h
adfs_fs.h
adxl.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
ahci-remap.h
aio.h
alarmtimer.h alarmtimers: Avoid rtc.h include 2019-08-20 22:09:52 +02:00
alcor_pci.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
anon_inodes.h
apm_bios.h
apm-emulation.h
apple_bl.h
apple-gmux.h
arch_topology.h
arm_sdei.h
arm-cci.h
arm-smccc.h
armada-37xx-rwtm-mailbox.h
ascii85.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-mci.h
atmel-ssc.h
atomic-fallback.h
atomic.h
attribute_container.h
audit.h kill LOOKUP_NO_EVAL, don't bother including namei.h from audit.h 2019-08-30 21:29:32 -04:00
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h writeback, memcg: Implement foreign dirty flushing 2019-08-27 09:22:38 -06:00
backing-dev.h writeback: Separate out wb_get_lookup() from wb_get_create() 2019-08-27 09:22:38 -06:00
backlight.h backlight: Expose brightness curve type through sysfs 2019-09-02 15:55:03 +01:00
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
binfmts.h
bio.h
bit_spinlock.h
bitfield.h
bitmap.h bitmap.h: fix kernel-doc warning and typo 2019-10-14 15:04:01 -07:00
bitops.h lib: introduce copy_struct_from_user() helper 2019-10-01 15:45:03 +02:00
bitrev.h
bits.h
blk_types.h blkcg: implement blk-iocost 2019-08-28 21:17:12 -06:00
blk-cgroup.h blkcg: separate blkcg_conf_get_disk() out of blkg_conf_prep() 2019-08-28 21:17:04 -06:00
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h block: Delay default elevator initialization 2019-09-05 19:52:34 -06:00
blk-pm.h
blkdev.h for-5.4/post-2019-09-24 2019-09-24 16:31:50 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bottom_half.h
bpf_lirc.h
bpf_trace.h
bpf_types.h bpf: Replace prog_raw_tp+btf_id with prog_tracing 2019-10-31 15:16:59 +01:00
bpf_verifier.h bpf: Implement accurate raw_tp context access via BTF 2019-10-17 16:44:35 +02:00
bpf-cgroup.h
bpf.h bpf: Introduce BPF trampoline 2019-11-15 23:41:51 +01:00
bpfilter.h
brcmphy.h net: phy: broadcom: add 1000Base-X support for BCM54616S 2019-10-23 20:42:52 -07:00
bsearch.h
bsg-lib.h
bsg.h
btf.h bpf: Prepare btf_ctx_access for non raw_tp use case 2019-10-24 18:41:08 -07:00
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h kprobes: Prohibit probing on BUG() and WARN() address 2019-09-05 10:15:16 +02:00
build_bug.h
build-salt.h
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cgroup_rdma.h
cgroup_subsys.h
cgroup-defs.h
cgroup.h
circ_buf.h
cleancache.h
clk-provider.h Merge branches 'clk-init-destroy', 'clk-doc', 'clk-imx' and 'clk-allwinner' into clk-next 2019-09-19 15:31:27 -07:00
clk.h We have a small collection of core framework updates this time, mostly around 2019-09-20 15:45:07 -07:00
clkdev.h
clock_cooling.h
clockchips.h
clocksource.h
cm4000_cs.h
cma.h
cmdline-parser.h
cn_proc.h
cnt32_to_63.h
coda.h
compaction.h mm, compaction: raise compaction priority after it withdrawns 2019-09-24 15:54:10 -07:00
compat.h
compiler_attributes.h compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use 2019-10-11 09:26:05 -07:00
compiler_types.h Make use of gcc 9's "asm inline()" (Rasmus Villemoes): 2019-09-21 09:47:19 -07:00
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler.h include/linux/compiler.h: fix Oops for Clang-compiled kernels 2019-09-08 14:53:58 +02:00
completion.h
component.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
const.h
container.h driver-core: add include guard to linux/container.h 2019-09-04 13:38:26 +02:00
context_tracking_state.h
context_tracking.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
counter_enum.h
counter.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h cpu/SMT: create and export cpu_smt_possible() 2019-09-24 13:37:28 +02:00
cpufeature.h
cpufreq.h cpufreq: Use per-policy frequency QoS 2019-10-21 02:05:21 +02:00
cpuhotplug.h
cpuidle_haltpoll.h cpuidle-haltpoll: vcpu hotplug support 2019-09-03 09:36:36 +02:00
cpuidle.h Power management updates for 5.4-rc1 2019-09-17 19:15:14 -07:00
cpumask.h cpumask: nicer for_each_cpumask_and() signature 2019-09-25 17:51:40 -07:00
cpuset.h
crash_core.h
crash_dump.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc32poly.h
crc64.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h selinux/stable-5.4 PR 20190917 2019-09-23 11:21:04 -07:00
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
delayed_call.h
devcoredump.h
devfreq_cooling.h
devfreq-event.h PM / devfreq: events: extend events by type of counted data 2019-08-25 12:44:38 +09:00
devfreq.h
device_cgroup.h
device-mapper.h
device.h USB changes for 5.4-rc1 2019-09-18 10:33:46 -07:00
devpts_fs.h
digsig.h
dim.h DIM: fix dim.h kernel-doc and headers 2019-10-09 19:33:43 -07:00
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-bufio.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma-buf.h dma-buf: rename reservation_object to dma_resv 2019-08-13 09:09:30 +02:00
dma-contiguous.h dma-direct: fix zone selection after an unaddressable CMA allocation 2019-08-21 07:14:10 +09:00
dma-debug.h
dma-direct.h
dma-direction.h
dma-fence-array.h
dma-fence-chain.h
dma-fence.h dma-fence: Store the timestamp in the same union as the cb_list 2019-08-17 18:46:33 +01:00
dma-iommu.h
dma-mapping.h dma-mapping updates for 5.4: 2019-09-19 13:27:23 -07:00
dma-noncoherent.h dma-mapping: remove arch_dma_mmap_pgprot 2019-08-29 16:43:22 +02:00
dma-resv.h dma-buf: Restore seqlock around dma_resv updates 2019-08-16 12:40:58 +01:00
dmaengine.h
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
ds2782_battery.h
dtlk.h
dw_apb_timer.h
dynamic_debug.h dynamic_debug: provide dynamic_hex_dump stub 2019-10-22 12:54:44 -07:00
dynamic_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h EDAC: Prefer 'unsigned int' to bare use of 'unsigned' 2019-09-03 19:21:19 +02:00
edd.h
eeprom_93cx6.h
eeprom_93xx46.h
efi-bgrt.h
efi.h x86, efi: Never relocate kernel below lowest acceptable address 2019-10-31 09:40:19 +01:00
efs_vh.h
eisa.h
elevator.h block: Introduce elevator features 2019-09-05 19:52:33 -06:00
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
energy_model.h
err.h
errno.h
error-injection.h
errqueue.h
errseq.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
evm.h
export.h symbol namespaces: revert to previous __ksymtab name scheme 2019-10-18 15:32:52 +02:00
exportfs.h
ext2_fs.h
extable.h bpf: Add support for BTF pointers to x86 JIT 2019-10-17 16:44:36 +02:00
extcon-provider.h
extcon.h
f2fs_fs.h f2fs: include charset encoding information in the superblock 2019-08-23 07:57:13 -07:00
f75375s.h
falloc.h
fanotify.h
fault-inject.h
fb.h
fbcon.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h
fec.h
file.h
filter.h bpf: Support doubleword alignment in bpf_jit_binary_alloc 2019-11-15 22:25:00 +01:00
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_proportions.h
font.h
frame.h
freezer.h
frontswap.h
fs_context.h fuse update for 5.4 2019-09-25 09:55:59 -07:00
fs_enet_pd.h
fs_parser.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_types.h
fs_uart_pd.h
fs.h Highlights: 2019-09-27 17:00:27 -07:00
fscache-cache.h
fscache.h
fscrypt.h fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS ioctl 2019-08-12 19:18:50 -07:00
fsi-occ.h
fsi-sbefifo.h
fsi.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsl-diu-fb.h
fsldma.h
fsnotify_backend.h notify: export symbols for use by the knfsd file cache 2019-08-19 11:00:39 -04:00
fsnotify.h
fsverity.h fs-verity: implement FS_IOC_MEASURE_VERITY ioctl 2019-08-12 19:33:50 -07:00
ftrace_irq.h
ftrace.h
futex.h
fwnode.h device property: Remove duplicate test for NULL 2019-08-26 11:40:24 +02:00
gameport.h
gcd.h
genalloc.h
generic-radix-tree.h
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h net: fix sk_page_frag() recursion from memory reclaim 2019-10-28 16:17:31 -07:00
glob.h
gnss.h
goldfish.h
gpio_keys.h
gpio-pxa.h
gpio.h Linux 5.3-rc7 2019-09-05 11:40:54 +02:00
greybus.h staging: greybus: move core include files to include/linux/greybus/ 2019-08-27 19:02:59 +02:00
hardirq.h
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 HID: core: Add printk_once variants to hid_warn() etc 2019-09-18 15:58:13 +02:00
hiddev.h
hidraw.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hmm.h hmm: use mmu_notifier_get/put for 'struct hmm' 2019-08-20 09:35:02 -03:00
host1x.h
hp_sdc.h
hpet.h
hrtimer_defs.h
hrtimer.h hrtimer: Add kernel doc annotation for HRTIMER_MODE_HARD 2019-08-28 13:01:25 +02:00
htcpld.h
huge_mm.h libnvdimm fixes v5.4-rc1 2019-09-29 10:33:41 -07:00
hugetlb_cgroup.h
hugetlb_inline.h
hugetlb.h mm: introduce page_size() 2019-09-24 15:54:08 -07:00
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h hwmon: Fix HWMON_P_MIN_ALARM mask 2019-10-02 06:36:50 -07:00
hwspinlock.h
hyperv.h - First round of vmbus hibernation support from Dexuan Cui. 2019-09-24 12:36:31 -07:00
hypervisor.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-mux.h
i2c-pxa.h
i2c-smbus.h
i2c.h Merge branch 'i2c/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-09-24 16:48:02 -07:00
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idle_inject.h powercap: idle_inject: Use higher resolution for idle injection 2019-09-03 11:33:29 +02:00
idr.h
ieee80211.h
ieee802154.h
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 net: remove unnecessary variables and callback 2019-10-24 14:53:49 -07:00
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_rmnet.h
if_tap.h
if_team.h team: fix nested locking lockdep warning 2019-10-24 14:53:48 -07:00
if_tun.h
if_tunnel.h
if_vlan.h net: remove unnecessary variables and callback 2019-10-24 14:53:49 -07:00
igmp.h
ihex.h
ima.h Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
imx-media.h
in6.h
in.h
indirect_call_wrapper.h
inet_diag.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_task.h posix-cpu-timers: Create a container struct 2019-08-28 11:50:33 +02:00
init.h
initrd.h
inotify.h
input-polldev.h
input.h Input: add support for polling to input devices 2019-08-20 12:04:07 -07:00
integrity.h
intel_rapl.h
intel_th.h
intel-iommu.h Merge branches 'arm/omap', 'arm/exynos', 'arm/smmu', 'arm/mediatek', 'arm/qcom', 'arm/renesas', 'x86/amd', 'x86/vt-d' and 'core' into next 2019-09-11 12:39:19 +02:00
intel-ish-client-if.h
intel-pti.h
intel-svm.h
interconnect-provider.h interconnect: Add pre_aggregate() callback 2019-08-13 23:02:48 +03:00
interconnect.h interconnect: Add support for path tags 2019-08-13 23:02:44 +03:00
interrupt.h Power management updates for 5.4-rc1 2019-09-17 19:15:14 -07:00
interval_tree_generic.h augmented rbtree: add new RB_DECLARE_CALLBACKS_MAX macro 2019-09-25 17:51:39 -07:00
interval_tree.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io-pgtable.h Merge branch 'arm/smmu' into arm/mediatek 2019-08-30 16:12:10 +02:00
io.h
ioc3.h
iocontext.h
iomap.h iomap: move the iomap_dio_rw ->end_io callback into a structure 2019-09-19 15:32:45 -07:00
iommu-helper.h
iommu.h iommu: Add helpers to set/get default domain type 2019-08-23 10:09:58 +02:00
iopoll.h
ioport.h resource: add a not device managed request_free_mem_region variant 2019-08-20 09:39:41 -03:00
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h
ipc.h
ipmi_smi.h
ipmi-fru.h
ipmi.h
ipv6_route.h
ipv6.h
irq_cpustat.h
irq_poll.h
irq_sim.h
irq_work.h
irq.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isicom.h
iversion.h
jbd2.h jbd2: remove jbd2_journal_inode_add_[write|wait] 2019-09-24 15:54:07 -07:00
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan-checks.h
kasan.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kcore.h
kcov.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_stat.h
kernel-page-flags.h
kernel.h kernel.h: Add non_block_start/end() 2019-09-07 04:28:05 -03:00
kernelcapi.h
kernfs.h
kexec.h Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
key-type.h
key.h afs: Provide an RCU-capable key lookup 2019-09-02 11:43:54 +01:00
keyboard.h
keyctl.h
kfifo.h
kgdb.h kgdb: don't use a notifier to enter kgdb at panic; call directly 2019-09-25 17:51:40 -07:00
khugepaged.h khugepaged: enable collapse pmd for pte-mapped THP 2019-09-24 15:54:11 -07:00
klist.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
kthread.h
ktime.h
kvm_host.h kvm: x86, powerpc: do not allow clearing largepages debugfs entry 2019-09-30 18:52:00 +02:00
kvm_irqfd.h
kvm_para.h
kvm_types.h
l2tp.h
lantiq.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-class-flash.h
led-lm3530.h
leds_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-lp3952.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds-ti-lmu-common.h
leds.h leds: core: Fix leds.h structure documentation 2019-10-08 22:05:58 +02:00
libata.h
libfdt_env.h
libfdt.h
libgcc.h
libnvdimm.h libnvdimm/security: Introduce a 'frozen' attribute 2019-08-29 13:49:13 -07:00
libps2.h
license.h
lightnvm.h
limits.h
linkage.h
linkmode.h net: phylink: use more linkmode_* 2019-10-15 20:40:06 -07:00
linux_logo.h
lis3lv02d.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
list.h
livepatch.h
llc.h
llist.h
lockdep.h
lockref.h
log2.h
logic_pio.h lib: logic_pio: Add logic_pio_unregister_range() 2019-08-13 14:54:24 +08:00
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
lz4.h
lzo.h
mailbox_client.h
mailbox_controller.h
maple.h
marvell_phy.h
math64.h
max17040_battery.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mcb.h
mdev.h
mdio-bitbang.h
mdio-gpio.h
mdio-mux.h
mdio.h include: mdio: Add driver data helpers 2019-09-05 12:32:05 +02:00
mei_cl_bus.h
mem_encrypt.h
memblock.h
memcontrol.h mm, memcg: make scan aggression always exclude protection 2019-10-07 15:47:20 -07:00
memfd.h
memory_hotplug.h
memory.h drivers/base/memory.c: don't store end_section_nr in memory blocks 2019-09-24 15:54:09 -07:00
mempolicy.h Revert "Revert "mm, thp: restore node-local hugepage allocations"" 2019-09-28 14:05:38 -07:00
mempool.h
memremap.h libnvdimm fixes v5.4-rc1 2019-09-29 10:33:41 -07:00
memstick.h
mic_bus.h
micrel_phy.h net: phy: micrel: Update KSZ87xx PHY name 2019-10-17 16:31:52 -07:00
microchipphy.h
migrate_mode.h
migrate.h mm: remove the unused MIGRATE_PFN_DEVICE flag 2019-08-20 09:35:03 -03:00
mii.h net: phy: fix write to mii-ctrl1000 register 2019-10-04 18:11:08 -07:00
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h
mm_types_task.h fork: improve error message for corrupted page tables 2019-09-25 17:51:40 -07:00
mm_types.h Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-09-28 12:39:07 -07:00
mm-arch-hooks.h
mm.h mm: treewide: clarify pgtable_page_{ctor,dtor}() naming 2019-09-26 10:10:44 -07:00
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h mm/mmu_notifiers: annotate with might_sleep() 2019-09-07 04:28:04 -03:00
mmzone.h mm: thp: extract split_queue_* into a struct 2019-09-24 15:54:11 -07:00
mnt_namespace.h
mod_devicetable.h
module_signature.h
module.h Merge branch 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity 2019-09-27 19:37:27 -07:00
moduleloader.h
moduleparam.h
mount.h
moxtet.h bus: Add support for Moxtet bus 2019-08-14 15:30:35 +02:00
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h
mroute_base.h net: fib_notifier: propagate extack down to the notifier block callback 2019-10-04 11:10:56 -07:00
mroute.h
msdos_fs.h
msg.h
msi.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h fs/namei.c: keep track of nd->root refcount status 2019-09-03 09:30:45 -04:00
nd.h
ndctl.h
net.h
netdev_features.h
netdevice.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-11-02 13:54:56 -07:00
netfilter_bridge.h netfilter: move nf_bridge_frag_data struct definition to a more appropriate header. 2019-09-13 12:35:33 +02:00
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h netfilter: move nf_bridge_frag_data struct definition to a more appropriate header. 2019-09-13 12:35:33 +02:00
netfilter.h netfilter: add and use nf_hook_slow_list() 2019-10-17 12:20:48 +02:00
netlink.h
netpoll.h
nfs3.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h NFS: Refactor nfs_instantiate() for dentry referencing callers 2019-09-20 15:15:24 -04:00
nfs_iostat.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
nospec.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb_transport.h
ntb.h
nubus.h
numa.h
nvme-fc-driver.h scsi: qla2xxx: Modify NVMe include directives 2019-08-12 21:34:08 -04:00
nvme-fc.h
nvme-rdma.h
nvme-tcp.h
nvme.h nvme-pci: Add support for variable IO SQ element size 2019-08-29 12:55:02 -07:00
nvmem-consumer.h
nvmem-provider.h
nvram.h
objagg.h
of_address.h
of_clk.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h gpio: of: Make of_gpio_simple_xlate() private 2019-09-11 14:46:02 +01:00
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of_reserved_mem.h
of.h
oid_registry.h
olpc-ec.h
omap-dma.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h
openvswitch.h
oprofile.h
osq_lock.h
overflow.h
packing.h
padata.h padata: remove cpu_index from the parallel_queue 2019-09-13 21:15:41 +10:00
page_counter.h
page_ext.h mm, page_owner: rename flag indicating that page is allocated 2019-10-14 15:04:00 -07:00
page_idle.h
page_owner.h
page_ref.h
page-flags-layout.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h mm: page cache: store only head pages in i_pages 2019-09-24 15:54:08 -07:00
pagevec.h
pagewalk.h pagewalk: separate function pointers from iterator data 2019-09-07 04:28:04 -03:00
parman.h
parport_pc.h
parport.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h PCI/ACPI: Move _HPP & _HPX functions to pci-acpi.c 2019-08-28 15:25:53 -05:00
pci_ids.h pci-v5.4-changes 2019-09-23 19:16:01 -07:00
pci-acpi.h
pci-ats.h
pci-dma-compat.h
pci-ecam.h
pci-ep-cfs.h
pci-epc.h
pci-epf.h
pci-p2pdma.h PCI/P2PDMA: Introduce pci_p2pdma_unmap_sg() 2019-08-16 08:41:26 -05:00
pci.h pci-v5.4-changes 2019-09-23 19:16:01 -07:00
pda_power.h
pe.h
percpu_counter.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
perf_event.h perf/headers: Fix spelling s/EACCESS/EACCES/, s/privilidge/privilege/ 2019-10-28 11:02:01 +01:00
perf_regs.h
personality.h
pfn_t.h
pfn.h
phonet.h
phy_fixed.h net: fixed_phy: Add forward declaration for struct gpio_desc; 2019-09-05 11:54:14 +02:00
phy_led_triggers.h
phy.h net: phy: add support for clause 37 auto-negotiation 2019-10-23 20:42:52 -07:00
phylink.h
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
pl353-smc.h
platform_device.h driver core: platform: Add platform_get_irq_byname_optional() 2019-10-07 12:52:44 +02:00
plist.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h PM: QoS: Drop frequency QoS types from device PM QoS 2019-10-21 02:05:21 +02:00
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h PM / wakeup: Show wakeup sources stats in sysfs 2019-08-21 00:20:40 +02:00
pm-trace.h
pm.h
pmbus.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix-clock.h
posix-timers.h posix-cpu-timers: Always clear head pointer on dequeue 2019-09-05 21:16:22 +02:00
power_supply.h
powercap.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h
pps-gpio.h
pr.h
preempt.h
prefetch.h
prime_numbers.h
printk.h lib/hexdump: make print_hex_dump_bytes() a nop on !DEBUG builds 2019-09-25 17:51:39 -07:00
proc_fs.h
proc_ns.h
processor.h
profile.h
projid.h
property.h software node: Add software_node_find_by_name() 2019-08-26 11:35:13 +02:00
psci.h
pseudo_fs.h
psi_types.h
psi.h
psp-sev.h
pstore_ram.h
pstore.h
pti.h
ptp_classify.h
ptp_clock_kernel.h
ptr_ring.h
ptrace.h
purgatory.h
pvclock_gtod.h
pwm_backlight.h
pwm.h pwm: Ensure pwm_apply_state() doesn't modify the state argument 2019-09-21 03:25:10 +02:00
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qcom-geni-se.h
qnx6_fs.h
quota.h
quotaops.h quota: fix wrong condition in is_quota_modification() 2019-09-12 12:09:16 +02:00
radix-tree.h
raid_class.h
ramfs.h vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount API 2019-09-12 21:05:34 -04:00
random.h fdt: add support for rng-seed 2019-08-23 16:39:26 +01:00
range.h
ras.h
ratelimit.h
rational.h
rbtree_augmented.h augmented rbtree: rework the RB_DECLARE_CALLBACKS macro definition 2019-09-25 17:51:39 -07:00
rbtree_latch.h
rbtree.h
rcu_node_tree.h
rcu_segcblist.h rcu/nocb: Atomic ->len field in rcu_segcblist structure 2019-08-13 14:35:49 -07:00
rcu_sync.h
rculist_bl.h
rculist_nulls.h
rculist.h
rcupdate_wait.h
rcupdate.h Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-09-16 17:25:49 -07:00
rcutiny.h rcu: Don't include <linux/ktime.h> in rcutiny.h 2019-08-26 16:27:01 -07:00
rcutree.h
rcuwait.h tasks, sched/core: With a grace period after finish_task_switch(), remove unnecessary code 2019-09-25 17:42:29 +02:00
reboot-mode.h
reboot.h
reciprocal_div.h
refcount.h
regmap.h
regset.h
relay.h
remoteproc.h
reset-controller.h
reset.h
resource_ext.h
resource.h
restart_block.h
rfkill.h
rhashtable-types.h
rhashtable.h
ring_buffer.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
rmi.h
rndis.h
rodata_test.h
root_dev.h cifs: Add support for root file systems 2019-09-16 11:43:38 -05:00
rpmsg.h
rslib.h
rtc.h
rtmutex.h
rtnetlink.h
rtsx_common.h
rtsx_pci.h
rtsx_usb.h
rwlock_api_smp.h
rwlock_types.h
rwlock.h
rwsem.h
s3c_adc_battery.h
sbitmap.h
scatterlist.h
scc.h
sched_clock.h
sched.h arm64: entry.S: Do not preempt from IRQ before all cpufeatures are enabled 2019-10-16 09:51:43 -07:00
scif.h
scmi_protocol.h firmware: arm_scmi: Add RESET protocol in SCMI v2.0 2019-08-12 12:23:02 +01:00
scpi_protocol.h
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h efi/efi_test: Lock down /dev/efi_test and require CAP_SYS_ADMIN 2019-10-31 09:40:21 +01:00
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
seg6.h
selection.h
sem.h
semaphore.h
seq_buf.h
seq_file_net.h
seq_file.h
seqlock.h
seqno-fence.h
serdev.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
set_memory.h
sfi_acpi.h
sfi.h
sfp.h net: sfp: move fwnode parsing into sfp-bus layer 2019-10-16 14:31:59 -04:00
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h
shmem_fs.h vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount API 2019-09-12 21:05:34 -04:00
shrinker.h mm: shrinker: make shrinker not depend on memcg kmem 2019-09-24 15:54:11 -07:00
signal_types.h
signal.h signal: Allow cifs and drbd to receive their terminating signals 2019-08-19 06:34:13 -05:00
signalfd.h
siox.h
siphash.h
sirfsoc_dma.h
sizes.h
skb_array.h
skbuff.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-11-02 13:54:56 -07:00
skmsg.h net: sockmap: use bitmap for copy info 2019-10-07 09:58:27 -04:00
slab_def.h
slab.h mm, sl[aou]b: guarantee natural alignment for kmalloc(power-of-two) 2019-10-07 15:47:20 -07:00
slimbus.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h net: increase SOMAXCONN to 4096 2019-10-31 14:01:40 -07:00
sonet.h
sony-laptop.h
sonypi.h
sort.h media: lib/sort.c: implement sort() variant taking context argument 2019-08-19 13:14:53 -03:00
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h
spmi.h
sram.h
srcu.h
srcutiny.h
srcutree.h
ssbi.h
stackdepot.h
stackleak.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
stm.h
stmmac.h net: stmmac: Only enable enhanced addressing mode when needed 2019-10-03 12:00:50 -07:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h lib/string: Make memzero_explicit() inline instead of external 2019-10-08 13:27:05 +02:00
stringhash.h
stringify.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap_cgroup.h
swap_slots.h
swap.h mm: introduce MADV_PAGEOUT 2019-09-25 17:51:41 -07:00
swapfile.h
swapops.h
swiotlb.h swiotlb: Split size parameter to map/unmap APIs 2019-09-11 12:34:29 +02:00
switchtec.h
sxgbe_platform.h
sync_core.h
sync_file.h
synclink.h
sys_soc.h
sys.h
syscalls.h ipc: fix sparc64 ipc() wrapper 2019-09-07 21:42:25 +02:00
syscore_ops.h
sysctl.h
sysfs.h sysfs: Fixes __BIN_ATTR_WO() macro 2019-10-02 10:06:45 +02:00
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h block: centralize PI remapping logic to the block layer 2019-09-17 20:03:49 -06:00
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: add TCP_INFO status for failed client TFO 2019-10-25 19:25:37 -07:00
tee_drv.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thread_info.h uaccess: add missing __must_check attributes 2019-09-25 17:51:40 -07:00
threads.h
thunderbolt.h thunderbolt: Add support for Intel Ice Lake 2019-08-26 12:15:06 +03:00
ti_wilink_st.h
ti-emif-sram.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time32.h
time64.h vfs: Add file timestamp range support 2019-08-30 07:27:17 -07:00
time.h
timecounter.h
timekeeper_internal.h timekeeping/vsyscall: Prevent math overflow in BOOTTIME update 2019-08-23 02:12:11 +02:00
timekeeping32.h
timekeeping.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h posix-cpu-timers: Utilize timerqueue for storage 2019-08-28 11:50:43 +02:00
timex.h
tnum.h bpf: add include guard to tnum.h 2019-08-20 17:05:05 +02:00
topology.h Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-09-16 17:25:49 -07:00
torture.h
toshiba.h
tpm_command.h
tpm_eventlog.h efi/tpm: Only set 'efi_tpm_final_log_size' after successful event log parsing 2019-10-07 15:24:36 +02:00
tpm.h
trace_clock.h
trace_events.h tracing: Make exported ftrace_set_clr_event non-static 2019-08-31 06:51:49 -04:00
trace_seq.h
trace.h
tracefs.h
tracehook.h
tracepoint-defs.h
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
typecheck.h
types.h
u64_stats_sync.h
uaccess.h uaccess: Add strict non-pagefault kernel-space read function 2019-11-02 12:39:12 -07:00
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uio_driver.h
uio.h
umh.h
unicode.h
uprobes.h
usb_usual.h
usb.h usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
vbox_utils.h
verification.h
vermagic.h Kbuild: Handle PREEMPT_RT for version string and magic 2019-08-14 01:10:42 +09:00
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via_i2c.h
via-core.h
via-gpio.h
via.h
videodev2.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_net.h
virtio_ring.h
virtio_vsock.h vsock/virtio: remove unused 'work' field from 'struct virtio_vsock_pkt' 2019-10-28 04:25:04 -04:00
virtio.h
visorbus.h
vlynq.h
vm_event_item.h
vm_sockets.h
vmacache.h
vmalloc.h mm/vmalloc: modify struct vmap_area to reduce its size 2019-09-24 15:54:10 -07:00
vme.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt_buffer.h
vt_kern.h
vt.h
vtime.h
w1-gpio.h
w1.h w1: add 1-wire master driver for IP block found in SGI ASICs 2019-09-04 14:34:31 +02:00
wait_bit.h
wait.h Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-09-17 12:35:15 -07:00
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
wmi.h
workqueue.h workqueue: unconfine alloc/apply/free_workqueue_attrs() 2019-09-13 21:15:39 +10:00
writeback.h writeback, memcg: Implement cgroup_writeback_by_id() 2019-08-27 09:22:38 -06:00
ww_mutex.h
xarray.h xarray.h: fix kernel-doc warning 2019-10-14 15:04:01 -07:00
xattr.h
xxhash.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h zpool: add malloc_support_movable to zpool_driver 2019-09-24 15:54:12 -07:00
zsmalloc.h
zstd.h
zutil.h