Martin KaFai Lau
6ac99e8f23
bpf: Introduce bpf sk local storage
...
After allowing a bpf prog to
- directly read the skb->sk ptr
- get the fullsock bpf_sock by "bpf_sk_fullsock()"
- get the bpf_tcp_sock by "bpf_tcp_sock()"
- get the listener sock by "bpf_get_listener_sock()"
- avoid duplicating the fields of "(bpf_)sock" and "(bpf_)tcp_sock"
into different bpf running context.
this patch is another effort to make bpf's network programming
more intuitive to do (together with memory and performance benefit).
When bpf prog needs to store data for a sk, the current practice is to
define a map with the usual 4-tuples (src/dst ip/port) as the key.
If multiple bpf progs require to store different sk data, multiple maps
have to be defined. Hence, wasting memory to store the duplicated
keys (i.e. 4 tuples here) in each of the bpf map.
[ The smallest key could be the sk pointer itself which requires
some enhancement in the verifier and it is a separate topic. ]
Also, the bpf prog needs to clean up the elem when sk is freed.
Otherwise, the bpf map will become full and un-usable quickly.
The sk-free tracking currently could be done during sk state
transition (e.g. BPF_SOCK_OPS_STATE_CB).
The size of the map needs to be predefined which then usually ended-up
with an over-provisioned map in production. Even the map was re-sizable,
while the sk naturally come and go away already, this potential re-size
operation is arguably redundant if the data can be directly connected
to the sk itself instead of proxy-ing through a bpf map.
This patch introduces sk->sk_bpf_storage to provide local storage space
at sk for bpf prog to use. The space will be allocated when the first bpf
prog has created data for this particular sk.
The design optimizes the bpf prog's lookup (and then optionally followed by
an inline update). bpf_spin_lock should be used if the inline update needs
to be protected.
BPF_MAP_TYPE_SK_STORAGE:
-----------------------
To define a bpf "sk-local-storage", a BPF_MAP_TYPE_SK_STORAGE map (new in
this patch) needs to be created. Multiple BPF_MAP_TYPE_SK_STORAGE maps can
be created to fit different bpf progs' needs. The map enforces
BTF to allow printing the sk-local-storage during a system-wise
sk dump (e.g. "ss -ta") in the future.
The purpose of a BPF_MAP_TYPE_SK_STORAGE map is not for lookup/update/delete
a "sk-local-storage" data from a particular sk.
Think of the map as a meta-data (or "type") of a "sk-local-storage". This
particular "type" of "sk-local-storage" data can then be stored in any sk.
The main purposes of this map are mostly:
1. Define the size of a "sk-local-storage" type.
2. Provide a similar syscall userspace API as the map (e.g. lookup/update,
map-id, map-btf...etc.)
3. Keep track of all sk's storages of this "type" and clean them up
when the map is freed.
sk->sk_bpf_storage:
------------------
The main lookup/update/delete is done on sk->sk_bpf_storage (which
is a "struct bpf_sk_storage"). When doing a lookup,
the "map" pointer is now used as the "key" to search on the
sk_storage->list. The "map" pointer is actually serving
as the "type" of the "sk-local-storage" that is being
requested.
To allow very fast lookup, it should be as fast as looking up an
array at a stable-offset. At the same time, it is not ideal to
set a hard limit on the number of sk-local-storage "type" that the
system can have. Hence, this patch takes a cache approach.
The last search result from sk_storage->list is cached in
sk_storage->cache[] which is a stable sized array. Each
"sk-local-storage" type has a stable offset to the cache[] array.
In the future, a map's flag could be introduced to do cache
opt-out/enforcement if it became necessary.
The cache size is 16 (i.e. 16 types of "sk-local-storage").
Programs can share map. On the program side, having a few bpf_progs
running in the networking hotpath is already a lot. The bpf_prog
should have already consolidated the existing sock-key-ed map usage
to minimize the map lookup penalty. 16 has enough runway to grow.
All sk-local-storage data will be removed from sk->sk_bpf_storage
during sk destruction.
bpf_sk_storage_get() and bpf_sk_storage_delete():
------------------------------------------------
Instead of using bpf_map_(lookup|update|delete)_elem(),
the bpf prog needs to use the new helper bpf_sk_storage_get() and
bpf_sk_storage_delete(). The verifier can then enforce the
ARG_PTR_TO_SOCKET argument. The bpf_sk_storage_get() also allows to
"create" new elem if one does not exist in the sk. It is done by
the new BPF_SK_STORAGE_GET_F_CREATE flag. An optional value can also be
provided as the initial value during BPF_SK_STORAGE_GET_F_CREATE.
The BPF_MAP_TYPE_SK_STORAGE also supports bpf_spin_lock. Together,
it has eliminated the potential use cases for an equivalent
bpf_map_update_elem() API (for bpf_prog) in this patch.
Misc notes:
----------
1. map_get_next_key is not supported. From the userspace syscall
perspective, the map has the socket fd as the key while the map
can be shared by pinned-file or map-id.
Since btf is enforced, the existing "ss" could be enhanced to pretty
print the local-storage.
Supporting a kernel defined btf with 4 tuples as the return key could
be explored later also.
2. The sk->sk_lock cannot be acquired. Atomic operations is used instead.
e.g. cmpxchg is done on the sk->sk_bpf_storage ptr.
Please refer to the source code comments for the details in
synchronization cases and considerations.
3. The mem is charged to the sk->sk_omem_alloc as the sk filter does.
Benchmark:
---------
Here is the benchmark data collected by turning on
the "kernel.bpf_stats_enabled" sysctl.
Two bpf progs are tested:
One bpf prog with the usual bpf hashmap (max_entries = 8192) with the
sk ptr as the key. (verifier is modified to support sk ptr as the key
That should have shortened the key lookup time.)
Another bpf prog is with the new BPF_MAP_TYPE_SK_STORAGE.
Both are storing a "u32 cnt", do a lookup on "egress_skb/cgroup" for
each egress skb and then bump the cnt. netperf is used to drive
data with 4096 connected UDP sockets.
BPF_MAP_TYPE_HASH with a modifier verifier (152ns per bpf run)
27: cgroup_skb name egress_sk_map tag 74f56e832918070b run_time_ns 58280107540 run_cnt 381347633
loaded_at 2019-04-15T13:46:39-0700 uid 0
xlated 344B jited 258B memlock 4096B map_ids 16
btf_id 5
BPF_MAP_TYPE_SK_STORAGE in this patch (66ns per bpf run)
30: cgroup_skb name egress_sk_stora tag d4aa70984cc7bbf6 run_time_ns 25617093319 run_cnt 390989739
loaded_at 2019-04-15T13:47:54-0700 uid 0
xlated 168B jited 156B memlock 4096B map_ids 17
btf_id 6
Here is a high-level picture on how are the objects organized:
sk
┌──────┐
│ │
│ │
│ │
│*sk_bpf_storage─────▶ bpf_sk_storage
└──────┘ ┌───────┐
┌───────────┤ list │
│ │ │
│ │ │
│ │ │
│ └───────┘
│
│ elem
│ ┌────────┐
├─▶│ snode │
│ ├────────┤
│ │ data │ bpf_map
│ ├────────┤ ┌─────────┐
│ │map_node│◀─┬─────┤ list │
│ └────────┘ │ │ │
│ │ │ │
│ elem │ │ │
│ ┌────────┐ │ └─────────┘
└─▶│ snode │ │
├────────┤ │
bpf_map │ data │ │
┌─────────┐ ├────────┤ │
│ list ├───────▶│map_node│ │
│ │ └────────┘ │
│ │ │
│ │ elem │
└─────────┘ ┌────────┐ │
┌─▶│ snode │ │
│ ├────────┤ │
│ │ data │ │
│ ├────────┤ │
│ │map_node│◀─┘
│ └────────┘
│
│
│ ┌───────┐
sk └──────────│ list │
┌──────┐ │ │
│ │ │ │
│ │ │ │
│ │ └───────┘
│*sk_bpf_storage───────▶bpf_sk_storage
└──────┘
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2019-04-27 09:07:04 -07:00
..
amba
avf
bcma
byteorder
can
ceph
libceph: wait for latest osdmap in ceph_monc_blacklist_add()
2019-03-20 16:27:40 +01:00
clk
crush
decompress
dma
dsa
extcon
firmware
fpga
fsl
ARM: SoC driver updates for 5.1
2019-03-06 09:41:12 -08:00
gpio
hsi
i3c
iio
input
irqchip
irqchip updates for 5.1, take #2
2019-03-21 12:30:54 +01:00
isdn
lockd
mailbox
mailbox: ZynqMP IPI mailbox controller
2019-03-06 20:34:20 -06:00
mfd
- New Drivers
2019-03-08 10:02:58 -08:00
mlx4
mlx5
mlx5-updates-2019-04-02
2019-04-08 14:31:25 -07:00
mmc
mmc: core: Add discard support to sd
2019-02-28 09:16:12 +01:00
mtd
mux
netfilter
netfilter: make two functions static
2019-04-08 23:28:33 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf
phy
pinctrl
platform_data
Here's more than a handful of clk driver fixes for changes that came in
2019-04-13 14:33:56 -07:00
power
qed
raid
regulator
regulator: core: Add set/get_current_limit helpers for regmap users
2019-03-03 23:45:27 +00:00
remoteproc
reset
rpmsg
rtc
sched
ptrace: take into account saved_sigmask in PTRACE{GET,SET}SIGMASK
2019-03-29 10:01:37 -07:00
soc
soundwire
spi
ssb
sunrpc
Revert "SUNRPC: Micro-optimise when the task is known not to be sleeping"
2019-04-11 15:41:14 -04:00
ulpi
unaligned
usb
wusb: Remove unnecessary static function ckhdid_printf
2019-03-01 20:53:41 +01:00
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi.h
device-dax for 5.1
2019-03-16 13:05:32 -07:00
acpi_dma.h
acpi_iort.h
acpi_pmtmr.h
adb.h
adfs_fs.h
adxl.h
aer.h
agp_backend.h
agpgart.h
ahci-remap.h
ahci_platform.h
aio.h
alarmtimer.h
alcor_pci.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
anon_inodes.h
apm-emulation.h
apm_bios.h
apple-gmux.h
apple_bl.h
arch_topology.h
arm-cci.h
arm-smccc.h
arm_sdei.h
ascii85.h
asn1.h
asn1_ber_bytecode.h
asn1_decoder.h
assoc_array.h
assoc_array_priv.h
async.h
async_tx.h
ata.h
ata_platform.h
atalk.h
appletalk: Fix potential NULL pointer dereference in unregister_snap_client
2019-03-15 11:25:48 -07:00
ath9k_platform.h
atm.h
atm_suni.h
atm_tcp.h
atmdev.h
atmel-mci.h
atmel-ssc.h
atmel_pdc.h
atmel_tc.h
atomic-fallback.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h
backing-dev.h
writeback: fix inode cgroup switching comment
2019-03-05 21:07:21 -08:00
backlight.h
badblocks.h
balloon_compaction.h
mm: convert PG_balloon to PG_offline
2019-03-05 21:07:14 -08:00
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
binfmts.h
bio.h
block: don't use for-inside-for in bio_for_each_segment_all
2019-04-08 08:19:41 -06:00
bit_spinlock.h
bitfield.h
bitmap.h
bitops.h
include/linux/bitops.h: set_mask_bits() to return old value
2019-03-07 18:32:00 -08:00
bitrev.h
include/linux/bitrev.h: fix constant bitrev
2019-04-05 16:02:30 -10:00
bits.h
blk-cgroup.h
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h
blk-mq: introduce blk_mq_complete_request_sync()
2019-04-10 09:57:33 -06:00
blk-pm.h
blk_types.h
block: add BIO_NO_PAGE_REF flag
2019-03-18 10:44:48 -06:00
blkdev.h
block: add BLK_MQ_POLL_CLASSIC for hybrid poll and return EINVAL for unexpected value
2019-03-20 14:02:07 -06:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bottom_half.h
bpf-cgroup.h
bpf: Add file_pos field to bpf_sysctl ctx
2019-04-12 13:54:58 -07:00
bpf.h
bpf: Introduce bpf sk local storage
2019-04-27 09:07:04 -07:00
bpf_lirc.h
bpf_trace.h
bpf_types.h
bpf: Introduce bpf sk local storage
2019-04-27 09:07:04 -07:00
bpf_verifier.h
bpf: remove global variables
2019-04-23 01:50:43 +02:00
bpfilter.h
brcmphy.h
net: phy: bcm54xx: Encode link speed and activity into LEDs
2019-03-26 11:24:47 -07:00
bsearch.h
bsg-lib.h
bsg.h
btf.h
bpf: allow for key-less BTF in array map
2019-04-09 17:05:46 -07:00
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h
build-salt.h
build_bug.h
build_bug.h: add wrapper for _Static_assert
2019-03-07 18:31:59 -08:00
bvec.h
block: don't use for-inside-for in bio_for_each_segment_all
2019-04-08 08:19:41 -06:00
c2port.h
cache.h
cacheinfo.h
capability.h
audit/stable-5.1 PR 20190305
2019-03-07 12:20:11 -08:00
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cgroup-defs.h
Merge branch 'for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
2019-03-07 10:11:41 -08:00
cgroup.h
cgroup_rdma.h
cgroup_subsys.h
circ_buf.h
cleancache.h
clk-provider.h
clk.h
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
coda_psdev.h
compaction.h
include/linux/compaction.h: fix potential build error
2019-03-05 21:07:20 -08:00
compat.h
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler.h
compiler_attributes.h
compiler_types.h
completion.h
component.h
concap.h
configfs.h
connector.h
console.h
console_struct.h
consolemap.h
const.h
container.h
context_tracking.h
context_tracking_state.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
cper.h
cpu.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpufeature.h
cpufreq.h
cpuhotplug.h
cpuidle.h
cpumask.h
cpuset.h
crash_core.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc32poly.h
crc64.h
cred.h
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
init/calibrate.c: provide proper prototype
2019-03-07 18:32:01 -08:00
delayacct.h
delayed_call.h
devcoredump.h
devfreq-event.h
devfreq.h
devfreq_cooling.h
device-mapper.h
dm: add support to directly boot to a mapped device
2019-03-05 14:53:50 -05:00
device.h
driver core: remove BUS_ATTR()
2019-03-18 07:07:30 +01:00
device_cgroup.h
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm.h
dlm_plock.h
dm-bufio.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dm9000.h
dma-buf.h
dma-contiguous.h
dma-debug.h
dma-direct.h
dma-direction.h
dma-fence-array.h
dma-fence.h
dma-iommu.h
dma-mapping.h
virtio: fixes, cleanups
2019-03-10 12:47:57 -07:00
dma-noncoherent.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd.h
drbd_genl.h
drbd_genl_api.h
drbd_limits.h
ds2782_battery.h
dtlk.h
dw_apb_timer.h
dynamic_debug.h
dynamic_debug: refactor dynamic_pr_debug and friends
2019-03-07 18:32:00 -08:00
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
arm64 updates for 5.1:
2019-03-10 10:17:23 -07:00
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
energy_model.h
err.h
errno.h
vfs: Add configuration parser helpers
2019-02-28 03:28:53 -05:00
error-injection.h
errqueue.h
errseq.h
etherdevice.h
net: pass net_device argument to the eth_get_headlen
2019-04-23 18:36:34 +02:00
ethtool.h
eventfd.h
eventpoll.h
evm.h
export.h
exportfs.h
ext2_fs.h
extable.h
extcon-provider.h
extcon.h
f2fs_fs.h
f2fs: correct spelling mistake
2019-03-12 18:59:17 -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
fs: add fget_many() and fput_many()
2019-02-28 08:24:23 -07:00
filter.h
bpf: Add file_pos field to bpf_sysctl ctx
2019-04-12 13:54:58 -07:00
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_proportions.h
fmc-sdb.h
fmc.h
font.h
frame.h
freezer.h
frontswap.h
mm: rid swapoff of quadratic complexity
2019-03-05 21:07:18 -08:00
fs.h
fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock
2019-04-06 07:01:55 -10:00
fs_context.h
vfs: Implement logging through fs_context
2019-02-28 03:29:37 -05:00
fs_enet_pd.h
fs_parser.h
vfs: Add configuration parser helpers
2019-02-28 03:28:53 -05:00
fs_pin.h
fs_stack.h
fs_struct.h
fs_types.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fscrypt.h
fsi-occ.h
fsi-sbefifo.h
fsi.h
fsl-diu-fb.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsldma.h
fsnotify.h
fsnotify_backend.h
ftrace.h
ftrace_irq.h
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
generic-radix-tree.h
generic radix trees
2019-03-12 10:04:02 -07:00
genetlink.h
genhd.h
genl_magic_func.h
genetlink: make policy common to family
2019-03-22 10:38:23 -04:00
genl_magic_struct.h
getcpu.h
gfp.h
mm: shuffle GFP_* flags
2019-03-05 21:07:16 -08:00
glob.h
gnss.h
goldfish.h
gpio-pxa.h
gpio.h
gpio_keys.h
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
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hmm.h
mm/hmm: convert to use vm_fault_t
2019-03-12 10:04:00 -07:00
host1x.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
huge_mm.h
hugetlb.h
include/linux/hugetlb.h: convert to use vm_fault_t
2019-03-29 10:01:37 -07:00
hugetlb_cgroup.h
hugetlb_inline.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h
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
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idle_inject.h
idr.h
ieee80211.h
ieee802154.h
if_arp.h
if_bridge.h
bridge: broute: make broute a real ebtables table
2019-04-12 01:47:50 +02:00
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_tap.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
igmp.h
ip: fix ip_mc_may_pull() return value
2019-03-09 19:52:47 -08:00
ihex.h
ima.h
imx-media.h
in.h
in6.h
indirect_call_wrapper.h
inet.h
inet_diag.h
inetdevice.h
ipv4: Move IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN to helper
2019-03-29 10:48:03 -07:00
init.h
init_ohci1394_dma.h
init_task.h
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h
intel-pti.h
intel-svm.h
interconnect-provider.h
interconnect.h
interrupt.h
interval_tree.h
interval_tree_generic.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io-pgtable.h
io.h
ioc3.h
ioc4.h
iocontext.h
iomap.h
iommu-helper.h
iommu.h
Merge branches 'iommu/fixes', 'arm/msm', 'arm/tegra', 'arm/mediatek', 'x86/vt-d', 'x86/amd', 'hyper-v' and 'core' into next
2019-03-01 11:24:51 +01:00
iopoll.h
ioport.h
ioprio.h
iova.h
ip.h
ipack.h
ipc.h
ipc_namespace.h
ipmi-fru.h
ipmi.h
ipmi_smi.h
ipv6.h
net: ipv6: add socket option IPV6_ROUTER_ALERT_ISOLATE
2019-03-03 21:05:10 -08:00
ipv6_route.h
irq.h
genirq: Fix typo in comment of IRQD_MOVE_PCNTXT
2019-03-21 11:52:37 +01:00
irq_cpustat.h
irq_poll.h
irq_sim.h
irq_work.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
This is the bulk of GPIO changes for the v5.1 cycle:
2019-03-08 10:09:53 -08:00
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iversion.h
jbd2.h
jhash.h
jiffies.h
time: Introduce jiffies64_to_msecs()
2019-04-08 22:56:14 +02:00
journal-head.h
joystick.h
jump_label.h
jump_label_ratelimit.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan-checks.h
kasan: fix kasan_check_read/write definitions
2019-03-05 21:07:13 -08:00
kasan.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kcore.h
Linux 5.1-rc2
2019-03-28 10:58:28 +01:00
kcov.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
printk: Remove no longer used LOG_PREFIX.
2019-03-04 13:42:05 +01:00
kernel-page-flags.h
kernel.h
linux/kernel.h: Use parentheses around argument in u64_to_user_ptr()
2019-04-03 11:43:49 +02:00
kernel_stat.h
kernelcapi.h
kernfs.h
Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-03-12 14:08:19 -07:00
kexec.h
key-type.h
key.h
keyboard.h
keyctl.h
kfifo.h
kgdb.h
khugepaged.h
klist.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject.h
kobject_ns.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
mm: reuse only-pte-mapped KSM page in do_wp_page()
2019-03-05 21:07:15 -08:00
kthread.h
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2019-03-06 08:14:05 -08:00
ktime.h
kvm_host.h
KVM: fix spectrev1 gadgets
2019-04-16 15:38:07 +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-bd2802.h
leds-lp3944.h
leds-lp3952.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h
leds_pwm.h
libata.h
libfdt.h
libfdt_env.h
libgcc.h
libnvdimm.h
device-dax for 5.1
2019-03-16 13:05:32 -07:00
libps2.h
license.h
lightnvm.h
limits.h
linux/kernel.h: split *_MAX and *_MIN macros into <linux/limits.h>
2019-03-07 18:31:59 -08:00
linkage.h
linkmode.h
linux_logo.h
lis3lv02d.h
list.h
include/linux/list.h: fix list_is_first() kernel-doc
2019-03-29 10:01:37 -07:00
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
livepatch.h
llc.h
llist.h
lockdep.h
locking/lockdep: Shrink struct lock_class_key
2019-02-28 07:55:53 +01:00
lockref.h
log2.h
logic_pio.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-03-12 14:08:19 -07:00
lz4.h
lzo.h
lib/lzo: separate lzo-rle from lzo
2019-03-07 18:32:03 -08:00
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
net: mdio: rename mdio_device reset to reset_gpio
2019-04-18 17:42:54 -07:00
mei_cl_bus.h
mem_encrypt.h
memblock.h
memblock: remove memblock_{set,clear}_region_flags
2019-03-12 10:04:02 -07:00
memcontrol.h
mm: writeback: use exact memcg dirty counts
2019-04-05 16:02:31 -10:00
memfd.h
memory.h
memory_hotplug.h
xen: fixes and features for 5.1-rc1
2019-03-11 17:08:14 -07:00
mempolicy.h
mempool.h
memremap.h
memstick.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate.h
migrate_mode.h
mii.h
net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() helper
2019-03-27 22:49:06 -07:00
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm-arch-hooks.h
mm.h
Merge branch 'page-refs' (page ref overflow)
2019-04-14 15:09:40 -07:00
mm_inline.h
mm_types.h
mm: fix vm_fault_t cast in VM_FAULT_GET_HINDEX()
2019-04-05 16:02:31 -10:00
mm_types_task.h
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h
mm: remove zone_lru_lock() function, access ->lru_lock directly
2019-03-05 21:07:21 -08:00
mnt_namespace.h
mod_devicetable.h
platform-drivers-x86 for v5.1-1
2019-03-10 13:16:37 -07:00
module.h
A fairly routine cycle for docs - lots of typo fixes, some new documents,
2019-03-09 09:56:17 -08:00
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls.h
mpls_iptunnel.h
mroute.h
mroute6.h
mroute_base.h
msdos_fs.h
msg.h
msi.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h
nd.h
ndctl.h
net.h
net: rework SIOCGSTAMP ioctl handling
2019-04-19 14:07:40 -07:00
net_dim.h
netdev_features.h
netdevice.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2019-04-17 11:26:25 -07:00
netfilter.h
netfilter: replace NF_NAT_NEEDED with IS_ENABLED(CONFIG_NF_NAT)
2019-04-08 23:02:52 +02:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter: nf_tables: merge route type into core
2019-04-08 23:01:42 +02:00
netlink.h
netpoll.h
nfs.h
nfs3.h
nfs4.h
NFSv4.2: Add client support for the generic 'layouterror' RPC call
2019-03-01 16:20:16 -05:00
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
NFSv4.2: Add client support for the generic 'layouterror' RPC call
2019-03-01 16:20:16 -05:00
nfs_iostat.h
nfs_page.h
nfs_xdr.h
NFSv4.2: Add client support for the generic 'layouterror' RPC call
2019-03-01 16:20:16 -05:00
nfsacl.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
numa: make "nr_online_nodes" unsigned int
2019-03-05 21:07:20 -08:00
nospec.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb.h
ntb_transport.h
nubus.h
numa.h
nvme-fc-driver.h
nvme-fc.h
nvme-rdma.h
nvme-tcp.h
nvme.h
nvmet: fix discover log page when offsets are used
2019-04-11 17:28:30 +02:00
nvmem-consumer.h
nvmem-provider.h
nvram.h
objagg.h
of.h
of_address.h
of_clk.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h
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: mark early_init_dt_alloc_reserved_memory_arch static
2019-02-28 11:40:49 -06:00
oid_registry.h
olpc-ec.h
omap-dma.h
omap-dmaengine.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
oxu210hp.h
padata.h
page-flags-layout.h
page-flags.h
mm: better document PG_reserved
2019-03-05 21:07:19 -08:00
page-isolation.h
mm/hotplug: fix offline undo_isolate_page_range()
2019-03-29 10:01:37 -07:00
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
pageblock-flags.h
pagemap.h
filemap: kill page_cache_read usage in filemap_fault
2019-03-15 11:21:25 -07:00
pagevec.h
parman.h
parport.h
Revert "parport: daisy: use new parport device model"
2019-03-25 14:49:00 -07:00
parport_pc.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci-acpi.h
pci-aspm.h
pci-ats.h
PCI/ATS: Add inline to pci_prg_resp_pasid_required()
2019-02-28 11:09:29 +01:00
pci-dma-compat.h
pci-ecam.h
pci-ep-cfs.h
pci-epc.h
pci-epf.h
pci-p2pdma.h
pci.h
IOMMU Updates for Linux v5.1
2019-03-10 12:29:52 -07:00
pci_hotplug.h
pci_ids.h
pda_power.h
pe.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
locking/percpu-rwsem: Remove preempt_disable variants
2019-02-28 07:55:37 +01:00
percpu.h
percpu_counter.h
perf_event.h
perf/core improvements and fixes:
2019-02-28 08:29:50 +01:00
perf_regs.h
personality.h
pfn.h
pfn_t.h
phonet.h
phy.h
net: phy: improve link partner capability detection
2019-04-08 15:18:00 -07:00
phy_fixed.h
phy_led_triggers.h
phylink.h
pid.h
include/linux/pid.h: remove next_pidmap() declaration
2019-03-07 18:31:59 -08:00
pid_namespace.h
pim.h
pipe_fs_i.h
Merge branch 'page-refs' (page ref overflow)
2019-04-14 15:09:40 -07:00
pkeys.h
pktcdvd.h
pl320-ipc.h
pl353-smc.h
platform_device.h
This is the bulk of GPIO changes for the v5.1 cycle:
2019-03-08 10:09:53 -08:00
plist.h
pm-trace.h
pm.h
PM-runtime: Call pm_runtime_active|suspended_time() from sysfs
2019-03-07 11:23:17 +01:00
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
Power management updates for 5.1-rc1
2019-03-06 12:59:46 -08:00
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
PM / wakeup: Drop wakeup_source_drop()
2019-03-12 09:43:00 +01:00
pmbus.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
Drop flex_arrays
2019-03-12 10:04:03 -07:00
poll.h
posix-clock.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
power_supply.h
powercap.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
pps-gpio.h
pps_kernel.h
pr.h
preempt.h
prefetch.h
prime_numbers.h
printk.h
Printk changes for 5.1
2019-03-09 09:22:42 -08:00
proc_fs.h
signal: add pidfd_send_signal() syscall
2019-03-05 17:03:53 +01:00
proc_ns.h
processor.h
profile.h
projid.h
property.h
psci.h
psi.h
psi_types.h
psp-sev.h
pstore.h
pstore_ram.h
pti.h
ptp_classify.h
ptp_clock_kernel.h
ptr_ring.h
ptrace.h
ptrace: Remove maxargs from task_current_syscall()
2019-04-04 09:17:15 -04:00
purgatory.h
pvclock_gtod.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h
pxa168_eth.h
qcom-geni-se.h
qcom_scm.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h
raid_class.h
ramfs.h
random.h
range.h
ras.h
ratelimit.h
rational.h
rbtree.h
rbtree_augmented.h
rbtree_latch.h
rcu_node_tree.h
rcu_segcblist.h
rcu_sync.h
rculist.h
rculist_bl.h
rculist_nulls.h
rcupdate.h
rcupdate_wait.h
rcutiny.h
rcutree.h
rcuwait.h
reboot-mode.h
reboot.h
reciprocal_div.h
refcount.h
regmap.h
regset.h
relay.h
include/linux/relay.h: fix percpu annotation in struct rchan
2019-03-07 18:32:03 -08:00
remoteproc.h
reservation.h
reset-controller.h
reset.h
resource.h
resource_ext.h
restart_block.h
rfkill.h
rhashtable-types.h
rhashtable: use bit_spin_locks to protect hash bucket.
2019-04-07 19:12:12 -07:00
rhashtable.h
rhashtable: use BIT(0) for locking.
2019-04-12 17:34:45 -07:00
ring_buffer.h
tracing: kdb: Fix ftdump to not sleep
2019-03-13 09:46:10 -04:00
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
rmi.h
rndis.h
rodata_test.h
root_dev.h
rpmsg.h
rslib.h
rtc.h
rtmutex.h
rtnetlink.h
rtsx_common.h
rtsx_pci.h
rtsx_usb.h
rwlock.h
rwlock_api_smp.h
rwlock_types.h
rwsem-spinlock.h
rwsem.h
s3c_adc_battery.h
sbitmap.h
sbitmap: trivial - update comment for sbitmap_deferred_clear_bit
2019-03-22 11:01:02 -06:00
scatterlist.h
scc.h
sched.h
audit/stable-5.1 PR 20190305
2019-03-07 12:20:11 -08:00
sched_clock.h
scif.h
scmi_protocol.h
scpi_protocol.h
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2019-03-12 14:08:19 -07:00
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
selection.h
sem.h
semaphore.h
seq_buf.h
seq_file.h
seq_file_net.h
seqlock.h
seqno-fence.h
serdev.h
serial.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serio.h
set_memory.h
sfi.h
sfi_acpi.h
sfp.h
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
sha256.h
shdma-base.h
shm.h
shmem_fs.h
mm: rid swapoff of quadratic complexity
2019-03-05 21:07:18 -08:00
shrinker.h
signal.h
signal_types.h
signalfd.h
siox.h
siphash.h
inet: switch IP ID generator to siphash
2019-03-27 14:29:26 -07:00
sirfsoc_dma.h
sizes.h
skb_array.h
skbuff.h
bpf: support BPF_PROG_QUERY for BPF_FLOW_DISSECTOR attach_type
2019-04-25 23:49:06 +02:00
skmsg.h
slab.h
mm: add support for kmem caches in DMA32 zone
2019-03-29 10:01:37 -07:00
slab_def.h
slimbus.h
slub_def.h
include/linux/slub_def.h: comment fixes
2019-03-05 21:07:14 -08:00
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h
net: add documentation to socket.c
2019-03-15 15:29:47 -07:00
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.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
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string.h
lib/string.c: implement a basic bcmp
2019-04-05 16:02:30 -10:00
string_helpers.h
stringhash.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap.h
include/linux/swap.h: use offsetof() instead of custom __swapoffset macro
2019-03-14 14:36:20 -07:00
swap_cgroup.h
swap_slots.h
swapfile.h
swapops.h
swiotlb.h
virtio: fixes, cleanups
2019-03-10 12:47:57 -07:00
switchtec.h
sxgbe_platform.h
sync_core.h
sync_file.h
synclink.h
sys.h
sys_soc.h
syscalls.h
pidfd patches for v5.1-rc1
2019-03-16 13:47:14 -07:00
syscore_ops.h
sysctl.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h
task_io_accounting.h
task_io_accounting_ops.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h
tee_drv.h
tee: add cancellation support to client interface
2019-02-28 13:49:29 +01:00
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
thunderbolt.h
ti-emif-sram.h
ti_wilink_st.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time.h
time32.h
time64.h
timecounter.h
timekeeper_internal.h
timekeeping.h
timekeeping32.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
tnum.h
topology.h
torture.h
toshiba.h
tpm.h
tpm_command.h
tpm_eventlog.h
trace.h
trace_clock.h
trace_events.h
trace_seq.h
tracefs.h
tracehook.h
tracepoint-defs.h
bpf: add writable context for raw tracepoints
2019-04-26 19:04:19 -07:00
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
include/linux/types.h: use "unsigned int" instead of "unsigned"
2019-03-07 18:31:59 -08:00
u64_stats_sync.h
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uio.h
io_uring-20190323
2019-03-23 10:25:12 -07:00
uio_driver.h
umh.h
uprobes.h
usb.h
usb_usual.h
usbdevice_fs.h
user-return-notifier.h
user.h
user_namespace.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
uwb.h
vbox_utils.h
virt: vbox: Implement passing requestor info to the host for VirtualBox 6.0.x
2019-03-28 01:55:18 +09:00
verification.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
drm: move i915_kick_out_vgacon to vgaarb
2019-03-07 10:34:37 +01:00
via-core.h
via-gpio.h
via.h
via_i2c.h
videodev2.h
virtio.h
virtio: Introduce virtio_max_dma_size()
2019-03-06 11:19:15 -05:00
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio: hint if callbacks surprisingly might sleep
2019-03-06 11:19:57 -05:00
virtio_console.h
virtio_net.h
virtio_ring.h
virtio: Honour 'may_reduce_num' in vring_create_virtqueue
2019-04-08 17:05:52 -04:00
virtio_vsock.h
visorbus.h
vlynq.h
vm_event_item.h
vm_sockets.h
vmacache.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt.h
vt_buffer.h
vt_kern.h
vtime.h
w1-gpio.h
w1.h
wait.h
wait_bit.h
wanrouter.h
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
wmi.h
platform/x86: wmi: move struct wmi_device_id to mod_devicetable.h
2019-03-07 08:46:07 -08:00
workqueue.h
Driver core patches for 5.1-rc1
2019-03-06 14:52:48 -08:00
writeback.h
ww_mutex.h
xarray.h
xattr.h
xxhash.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zstd.h
zutil.h