twx-linux/include/linux
Chris Down 9783aa9917 mm, memcg: proportional memory.{low,min} reclaim
cgroup v2 introduces two memory protection thresholds: memory.low
(best-effort) and memory.min (hard protection).  While they generally do
what they say on the tin, there is a limitation in their implementation
that makes them difficult to use effectively: that cliff behaviour often
manifests when they become eligible for reclaim.  This patch implements
more intuitive and usable behaviour, where we gradually mount more
reclaim pressure as cgroups further and further exceed their protection
thresholds.

This cliff edge behaviour happens because we only choose whether or not
to reclaim based on whether the memcg is within its protection limits
(see the use of mem_cgroup_protected in shrink_node), but we don't vary
our reclaim behaviour based on this information.  Imagine the following
timeline, with the numbers the lruvec size in this zone:

1. memory.low=1000000, memory.current=999999. 0 pages may be scanned.
2. memory.low=1000000, memory.current=1000000. 0 pages may be scanned.
3. memory.low=1000000, memory.current=1000001. 1000001* pages may be
   scanned. (?!)

* Of course, we won't usually scan all available pages in the zone even
  without this patch because of scan control priority, over-reclaim
  protection, etc.  However, as shown by the tests at the end, these
  techniques don't sufficiently throttle such an extreme change in input,
  so cliff-like behaviour isn't really averted by their existence alone.

Here's an example of how this plays out in practice.  At Facebook, we are
trying to protect various workloads from "system" software, like
configuration management tools, metric collectors, etc (see this[0] case
study).  In order to find a suitable memory.low value, we start by
determining the expected memory range within which the workload will be
comfortable operating.  This isn't an exact science -- memory usage deemed
"comfortable" will vary over time due to user behaviour, differences in
composition of work, etc, etc.  As such we need to ballpark memory.low,
but doing this is currently problematic:

1. If we end up setting it too low for the workload, it won't have
   *any* effect (see discussion above).  The group will receive the full
   weight of reclaim and won't have any priority while competing with the
   less important system software, as if we had no memory.low configured
   at all.

2. Because of this behaviour, we end up erring on the side of setting
   it too high, such that the comfort range is reliably covered.  However,
   protected memory is completely unavailable to the rest of the system,
   so we might cause undue memory and IO pressure there when we *know* we
   have some elasticity in the workload.

3. Even if we get the value totally right, smack in the middle of the
   comfort zone, we get extreme jumps between no pressure and full
   pressure that cause unpredictable pressure spikes in the workload due
   to the current binary reclaim behaviour.

With this patch, we can set it to our ballpark estimation without too much
worry.  Any undesirable behaviour, such as too much or too little reclaim
pressure on the workload or system will be proportional to how far our
estimation is off.  This means we can set memory.low much more
conservatively and thus waste less resources *without* the risk of the
workload falling off a cliff if we overshoot.

As a more abstract technical description, this unintuitive behaviour
results in having to give high-priority workloads a large protection
buffer on top of their expected usage to function reliably, as otherwise
we have abrupt periods of dramatically increased memory pressure which
hamper performance.  Having to set these thresholds so high wastes
resources and generally works against the principle of work conservation.
In addition, having proportional memory reclaim behaviour has other
benefits.  Most notably, before this patch it's basically mandatory to set
memory.low to a higher than desirable value because otherwise as soon as
you exceed memory.low, all protection is lost, and all pages are eligible
to scan again.  By contrast, having a gradual ramp in reclaim pressure
means that you now still get some protection when thresholds are exceeded,
which means that one can now be more comfortable setting memory.low to
lower values without worrying that all protection will be lost.  This is
important because workingset size is really hard to know exactly,
especially with variable workloads, so at least getting *some* protection
if your workingset size grows larger than you expect increases user
confidence in setting memory.low without a huge buffer on top being
needed.

Thanks a lot to Johannes Weiner and Tejun Heo for their advice and
assistance in thinking about how to make this work better.

In testing these changes, I intended to verify that:

1. Changes in page scanning become gradual and proportional instead of
   binary.

   To test this, I experimented stepping further and further down
   memory.low protection on a workload that floats around 19G workingset
   when under memory.low protection, watching page scan rates for the
   workload cgroup:

   +------------+-----------------+--------------------+--------------+
   | memory.low | test (pgscan/s) | control (pgscan/s) | % of control |
   +------------+-----------------+--------------------+--------------+
   |        21G |               0 |                  0 | N/A          |
   |        17G |             867 |               3799 | 23%          |
   |        12G |            1203 |               3543 | 34%          |
   |         8G |            2534 |               3979 | 64%          |
   |         4G |            3980 |               4147 | 96%          |
   |          0 |            3799 |               3980 | 95%          |
   +------------+-----------------+--------------------+--------------+

   As you can see, the test kernel (with a kernel containing this
   patch) ramps up page scanning significantly more gradually than the
   control kernel (without this patch).

2. More gradual ramp up in reclaim aggression doesn't result in
   premature OOMs.

   To test this, I wrote a script that slowly increments the number of
   pages held by stress(1)'s --vm-keep mode until a production system
   entered severe overall memory contention.  This script runs in a highly
   protected slice taking up the majority of available system memory.
   Watching vmstat revealed that page scanning continued essentially
   nominally between test and control, without causing forward reclaim
   progress to become arrested.

[0]: https://facebookmicrosites.github.io/cgroup2/docs/overview.html#case-study-the-fbtax2-project

[akpm@linux-foundation.org: reflow block comments to fit in 80 cols]
[chris@chrisdown.name: handle cgroup_disable=memory when getting memcg protection]
  Link: http://lkml.kernel.org/r/20190201045711.GA18302@chrisdown.name
Link: http://lkml.kernel.org/r/20190124014455.GA6396@chrisdown.name
Signed-off-by: Chris Down <chris@chrisdown.name>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Roman Gushchin <guro@fb.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2019-10-07 15:47:20 -07: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
extcon
firmware Char/Misc driver patches for 5.4-rc1 2019-09-18 11:14:31 -07:00
fpga
fsl
gpio gpio: Initialize the irqchip valid_mask with a callback 2019-09-11 01:09:37 +01:00
greybus staging: greybus: fix more header declarations 2019-08-28 17:24:22 +02:00
hsi
i3c
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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-09-28 17:47:33 -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: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +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 Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal 2019-09-29 10:24:23 -07:00
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
ssb
sunrpc Highlights: 2019-09-27 17:00:27 -07:00
ulpi
unaligned
usb USB changes for 5.4-rc1 2019-09-18 10:33:46 -07:00
wimax
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
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_verifier.h bpf: introduce verifier internal test flag 2019-08-28 00:30:11 +02:00
bpf-cgroup.h
bpf.h bpf: add new BPF_BTF_GET_NEXT_ID syscall command 2019-08-20 09:51:06 -07:00
bpfilter.h
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btf.h
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_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: Remove CPUFREQ_ADJUST and CPUFREQ_NOTIFY policy notifier events 2019-09-02 22:44:04 +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
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-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-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
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_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
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 Modules updates for v5.4 2019-09-22 10:34:46 -07:00
exportfs.h
ext2_fs.h
extable.h extable: Add function to search only kernel exception table 2019-08-21 22:23:48 +10: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: fix accessing bpf_sysctl.file_pos on s390 2019-09-16 11:44:05 +02: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
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
fsnotify.h
fsverity.h
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 Revert "Revert "Revert "mm, thp: consolidate THP gfp handling into alloc_hugepage_direct_gfpmask"" 2019-09-28 14:05:38 -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
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
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_rmnet.h
if_tap.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
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.h
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: Replace {devm_}led_classdev_register() macros with inlines 2019-09-01 13:33:16 +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
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
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: proportional memory.{low,min} reclaim 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
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
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
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h
mroute_base.h
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 taprio: Add support for hardware offloading 2019-09-16 21:32:57 +02: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: remove CONFIG_NETFILTER checks from headers. 2019-09-13 12:47:36 +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
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: keep owner info when freeing the page 2019-09-24 15:54:08 -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.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: Allow normal events to output AUX data 2019-08-28 11:29:38 +02: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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-09-02 11:20:17 -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 USB changes for 5.4-rc1 2019-09-18 10:33:46 -07:00
plist.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h PM: QoS: Get rid of unused flags 2019-08-21 00:38:54 +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_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 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
scif.h
scmi_protocol.h
scpi_protocol.h
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.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
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
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
signalfd.h
siox.h
siphash.h
sirfsoc_dma.h
sizes.h
skb_array.h
skbuff.h sk_buff: drop all skb extensions on free and skb scrubbing 2019-09-27 20:40:19 +02:00
skmsg.h
slab_def.h
slab.h mm, slab: move memcg_cache_params structure to mm/slab.h 2019-09-24 15:54:07 -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
sonet.h
sony-laptop.h
sonypi.h
sort.h
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: implement support for passive mode converters via dt 2019-09-11 15:27:09 +01:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h kernel-doc: core-api: include string.h into core-api 2019-09-25 17:51:39 -07: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: add BIN_ATTR_WO() macro 2019-09-04 13:37:17 +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 counter for packets received out-of-order 2019-09-16 16:26:11 +02: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
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 lib: introduce copy_struct_from_user() helper 2019-10-01 15:45:03 +02: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
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
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
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