linux-stable/include/linux
Rafael J. Wysocki 9ed9895370 driver core: Functional dependencies tracking support
Currently, there is a problem with taking functional dependencies
between devices into account.

What I mean by a "functional dependency" is when the driver of device
B needs device A to be functional and (generally) its driver to be
present in order to work properly.  This has certain consequences
for power management (suspend/resume and runtime PM ordering) and
shutdown ordering of these devices.  In general, it also implies that
the driver of A needs to be working for B to be probed successfully
and it cannot be unbound from the device before the B's driver.

Support for representing those functional dependencies between
devices is added here to allow the driver core to track them and act
on them in certain cases where applicable.

The argument for doing that in the driver core is that there are
quite a few distinct use cases involving device dependencies, they
are relatively hard to get right in a driver (if one wants to
address all of them properly) and it only gets worse if multiplied
by the number of drivers potentially needing to do it.  Morever, at
least one case (asynchronous system suspend/resume) cannot be handled
in a single driver at all, because it requires the driver of A to
wait for B to suspend (during system suspend) and the driver of B to
wait for A to resume (during system resume).

For this reason, represent dependencies between devices as "links",
with the help of struct device_link objects each containing pointers
to the "linked" devices, a list node for each of them, status
information, flags, and an RCU head for synchronization.

Also add two new list heads, representing the lists of links to the
devices that depend on the given one (consumers) and to the devices
depended on by it (suppliers), and a "driver presence status" field
(needed for figuring out initial states of device links) to struct
device.

The entire data structure consisting of all of the lists of link
objects for all devices is protected by a mutex (for link object
addition/removal and for list walks during device driver probing
and removal) and by SRCU (for list walking in other case that will
be introduced by subsequent change sets).  If CONFIG_SRCU is not
selected, however, an rwsem is used for protecting the entire data
structure.

In addition, each link object has an internal status field whose
value reflects whether or not drivers are bound to the devices
pointed to by the link or probing/removal of their drivers is in
progress etc.  That field is only modified under the device links
mutex, but it may be read outside of it in some cases (introduced by
subsequent change sets), so modifications of it are annotated with
WRITE_ONCE().

New links are added by calling device_link_add() which takes three
arguments: pointers to the devices in question and flags.  In
particular, if DL_FLAG_STATELESS is set in the flags, the link status
is not to be taken into account for this link and the driver core
will not manage it.  In turn, if DL_FLAG_AUTOREMOVE is set in the
flags, the driver core will remove the link automatically when the
consumer device driver unbinds from it.

One of the actions carried out by device_link_add() is to reorder
the lists used for device shutdown and system suspend/resume to
put the consumer device along with all of its children and all of
its consumers (and so on, recursively) to the ends of those lists
in order to ensure the right ordering between all of the supplier
and consumer devices.

For this reason, it is not possible to create a link between two
devices if the would-be supplier device already depends on the
would-be consumer device as either a direct descendant of it or a
consumer of one of its direct descendants or one of its consumers
and so on.

There are two types of link objects, persistent and non-persistent.
The persistent ones stay around until one of the target devices is
deleted, while the non-persistent ones are removed automatically when
the consumer driver unbinds from its device (ie. they are assumed to
be valid only as long as the consumer device has a driver bound to
it).  Persistent links are created by default and non-persistent
links are created when the DL_FLAG_AUTOREMOVE flag is passed
to device_link_add().

Both persistent and non-persistent device links can be deleted
with an explicit call to device_link_del().

Links created without the DL_FLAG_STATELESS flag set are managed
by the driver core using a simple state machine.  There are 5 states
each link can be in: DORMANT (unused), AVAILABLE (the supplier driver
is present and functional), CONSUMER_PROBE (the consumer driver is
probing), ACTIVE (both supplier and consumer drivers are present and
functional), and SUPPLIER_UNBIND (the supplier driver is unbinding).
The driver core updates the link state automatically depending on
what happens to the linked devices and for each link state specific
actions are taken in addition to that.

For example, if the supplier driver unbinds from its device, the
driver core will also unbind the drivers of all of its consumers
automatically under the assumption that they cannot function
properly without the supplier.  Analogously, the driver core will
only allow the consumer driver to bind to its device if the
supplier driver is present and functional (ie. the link is in
the AVAILABLE state).  If that's not the case, it will rely on
the existing deferred probing mechanism to wait for the supplier
driver to become available.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-10-31 11:36:20 -06:00
..
amba fbdev changes for 4.9 2016-10-12 11:01:37 -07:00
bcma Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-10-05 10:11:24 -07:00
byteorder
can can: dev: fix deadlock reported after bus-off 2016-09-22 10:01:21 +02:00
ceph ceph: handle CEPH_SESSION_REJECT message 2016-10-03 16:13:50 +02:00
clk
crush
decompress
dma dmaengine: hsu: refactor hsu_dma_do_irq() to return int 2016-09-15 21:15:40 +05:30
extcon extcon: adc-jack: Remove the usage of extcon_set_state() 2016-09-10 16:48:46 +05:30
firmware/meson
fpga
fsl
gpio treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
hsi
i2c
iio Second set of iio new device support, features and cleanups for the 4.9 cycle. 2016-09-14 20:42:03 +02:00
input
irqchip irqchip/gic-v3-its: Fix entry size mask for GITS_BASER 2016-10-17 16:26:29 +01:00
isdn
lockd
mailbox
mfd - Core Frameworks 2016-10-07 08:35:35 -07:00
mlx4 Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
mlx5 net/mlx5: Add MLX5_ARRAY_SET64 to fix BUILD_BUG_ON 2016-10-13 10:13:24 -04:00
mmc MMC core: 2016-10-05 11:34:53 -07:00
mtd Introduction of the MTD pairing scheme concept. 2016-10-08 20:56:54 -07:00
netfilter netfilter: conntrack: remove packet hotpath stats 2016-09-12 19:59:39 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 19:43:08 -07:00
phy phy: Add reset callback 2016-09-10 17:31:39 +05:30
pinctrl
platform_data media updates for v4.9-rc1 2016-10-11 13:22:22 -07:00
power power: supply: bq27xxx_battery: allow kernel poll_interval parameter runtime update 2016-09-21 02:08:04 +02:00
qed qed: Add RoCE ll2 & GSI support 2016-10-03 23:22:47 -04:00
raid Merge tag 'md/4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shli/md 2016-10-07 09:45:43 -07:00
regulator Merge remote-tracking branches 'regulator/topic/of', 'regulator/topic/pv88080', 'regulator/topic/rk808', 'regulator/topic/set-voltage' and 'regulator/topic/tps65218' into regulator-next 2016-09-30 09:13:58 -07:00
reset
rtc
sched
soc
spi Merge remote-tracking branches 'spi/topic/fsl-espi', 'spi/topic/imx', 'spi/topic/jcore', 'spi/topic/loopback' and 'spi/topic/meson' into spi-next 2016-09-30 09:14:10 -07:00
ssb
sunrpc NFS client updates for Linux 4.9 2016-10-13 21:28:20 -07:00
ulpi usb: patches for v4.9 merge window 2016-09-14 20:37:50 +02:00
unaligned
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi.h ACPI/PCI: pci_link: penalize SCI correctly 2016-10-24 14:18:14 +02:00
acpi_dma.h
acpi_iort.h ACPI: Add new IORT functions to support MSI domain handling 2016-09-12 20:32:40 +01:00
acpi_pmtmr.h
adb.h
adfs_fs.h
aer.h PCI/AER: Remove duplicate AER severity translation 2016-09-20 14:35:59 -05:00
agp_backend.h
agpgart.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
apple-gmux.h
apple_bl.h
arm-cci.h
arm-smccc.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
ath9k_platform.h
atm.h
atm_suni.h
atm_tcp.h
atmdev.h
atmel-mci.h
atmel-ssc.h
atmel_pdc.h
atmel_serial.h tty/serial: atmel: fix fractional baud rate computation 2016-09-27 12:54:03 +02:00
atmel_tc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h autofs4: move linux/auto_dev-ioctl.h to uapi/linux 2016-10-11 15:06:31 -07:00
auto_fs.h autofs: move inclusion of linux/limits.h to uapi 2016-10-11 15:06:31 -07:00
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h
backing-dev.h
backlight.h
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
bfin_mac.h
binfmts.h
bio.h block: export bio_free_pages to other modules 2016-09-22 07:48:03 -06:00
bit_spinlock.h
bitfield.h add basic register-field manipulation macros 2016-09-09 12:09:24 +03:00
bitmap.h
bitops.h mm/vmalloc.c: fix align value calculation error 2016-10-07 18:46:26 -07:00
bitrev.h
blk-cgroup.h Merge branch 'for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup 2016-10-14 12:18:50 -07:00
blk-mq-pci.h blk-mq: provide a default queue mapping for PCI device 2016-09-15 08:42:03 -06:00
blk-mq.h Merge branch 'for-4.9/block-smp' of git://git.kernel.dk/linux-block 2016-10-09 17:32:20 -07:00
blk_types.h block: remove bio_destructor_t 2016-09-14 09:18:06 -06:00
blkdev.h blk-mq: introduce blk_mq_delay_kick_requeue_list() 2016-09-14 11:48:34 -06:00
blkpg.h
blktrace_api.h
blockgroup_lock.h blockgroup_lock.h: simplify definition of NR_BG_LOCKS 2016-09-15 18:29:06 -04:00
bma150.h
bootmem.h mm/nobootmem.c: remove duplicate macro ARCH_LOW_ADDRESS_LIMIT statements 2016-10-07 18:46:28 -07:00
bottom_half.h
bpf.h bpf: allow access into map value arrays 2016-09-29 01:35:35 -04:00
bpf_verifier.h bpf: allow access into map value arrays 2016-09-29 01:35:35 -04:00
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h add basic register-field manipulation macros 2016-09-09 12:09:24 +03:00
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cec-funcs.h
cec.h
cfag12864b.h
cgroup-defs.h
cgroup.h Merge branch 'for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup 2016-10-14 12:18:50 -07:00
cgroup_subsys.h
circ_buf.h
cleancache.h
clk-provider.h clk: core: add __init decoration for CLK_OF_DECLARE_DRIVER function 2016-10-17 15:27:27 -07:00
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 mm, compaction: restrict full priority to non-costly orders 2016-10-07 18:46:29 -07:00
compat.h compat: remove compat_printk() 2016-09-27 21:20:53 -04:00
compiler-clang.h
compiler-gcc.h latent_entropy: Mark functions with __latent_entropy 2016-10-10 14:51:45 -07:00
compiler-intel.h
compiler.h This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
completion.h
component.h
concap.h
configfs.h
connector.h
console.h console: don't prefer first registered if DT specifies stdout-path 2016-10-07 18:46:30 -07:00
console_struct.h
consolemap.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 nmi_backtrace: generate one-line reports for idle cpus 2016-10-07 18:46:30 -07:00
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpufeature.h
cpufreq.h cpufreq: fix overflow in cpufreq_table_find_index_dl() 2016-10-20 16:35:50 +02:00
cpuhotplug.h clocksource: Add J-Core timer/clocksource driver 2016-10-20 20:10:17 +02:00
cpuidle.h
cpumask.h
cpuset.h
cputime.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
cred.h cred: simpler, 1D supplementary groups 2016-10-07 18:46:30 -07:00
crypto.h
cryptohash.h
cs5535.h
ctype.h include/linux/ctype.h: make isdigit() table lookupless 2016-10-11 15:06:30 -07:00
cuda.h
cyclades.h
davinci_emac.h
dax.h dax: provide an iomap based fault handler 2016-09-19 11:24:50 +10:00
dca.h
dcache.h vfs: make argument of d_real_inode() const 2016-09-16 12:44:20 +02:00
dccp.h
dcookies.h
debug_locks.h
debugfs.h debugfs: improve DEFINE_DEBUGFS_ATTRIBUTE for !CONFIG_DEBUG_FS 2016-10-28 02:42:19 -04:00
debugobjects.h
delay.h
delayacct.h
delayed_call.h
dell-led.h
devcoredump.h
devfreq-event.h
devfreq.h
devfreq_cooling.h
device-mapper.h dm rq: add DM_MAPIO_DELAY_REQUEUE to delay requeue of blk-mq requests 2016-09-14 13:56:38 -04:00
device.h driver core: Functional dependencies tracking support 2016-10-31 11:36:20 -06:00
device_cgroup.h
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm.h
dlm_plock.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-debug: add support for resource mappings 2016-09-26 22:16:41 +05:30
dma-direction.h
dma-iommu.h iommu/dma: Avoid PCI host bridge windows 2016-09-16 09:34:22 +01:00
dma-mapping.h dma-mapping: introduce the DMA_ATTR_NO_WARN attribute 2016-10-11 15:06:32 -07:00
dma_remapping.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_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h
edd.h
edma.h
eeprom_93cx6.h
eeprom_93xx46.h
efi-bgrt.h
efi.h * Refactor the EFI memory map code into architecture neutral files 2016-09-13 20:21:55 +02: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
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
evm.h
export.h Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-10-14 14:26:58 -07:00
exportfs.h exportfs: be careful to only return expected errors. 2016-10-06 09:07:44 -04:00
ext2_fs.h
extable.h
extcon.h include: extcon: Fix compilation error caused because of incomplete merge 2016-09-16 08:53:41 +02:00
f2fs_fs.h f2fs: use crc and cp version to determine roll-forward recovery 2016-09-30 10:05:46 -07:00
f75375s.h
falloc.h vfs: add a FALLOC_FL_UNSHARE mode to fallocate to unshare a range of blocks 2016-10-03 09:11:14 -07:00
fanotify.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
fec.h
fence-array.h
fence.h
file.h
filter.h bpf: add BPF_CALL_x macros for declaring helpers 2016-09-09 19:36:04 -07:00
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_array.h
flex_proportions.h
fmc-sdb.h
fmc.h
font.h
frame.h
freezer.h
frontswap.h
fs.h Merge branch 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs 2016-10-14 17:23:33 -07:00
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fscrypto.h Lots of bug fixes and cleanups. 2016-10-07 15:15:33 -07:00
fsl-diu-fb.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsldma.h
fsnotify.h fsnotify: support overlayfs 2016-09-16 12:44:20 +02:00
fsnotify_backend.h fanotify: use notification_lock instead of access_lock 2016-10-07 18:46:26 -07:00
ftrace.h This release cycle is rather small. Just a few fixes to tracing. 2016-10-06 11:48:41 -07:00
ftrace_irq.h
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h latent_entropy: Mark functions with __latent_entropy 2016-10-10 14:51:45 -07:00
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h
glob.h
goldfish.h
gpio-fan.h
gpio-pxa.h
gpio.h
gpio_keys.h
gpio_mouse.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 HID: add missing \n to end of dev_warn messages 2016-09-29 10:40:13 +02:00
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
htirq.h
huge_mm.h thp: reduce usage of huge zero page's atomic counter 2016-10-07 18:46:28 -07:00
hugetlb.h mm: remove unnecessary condition in remove_inode_hugepages 2016-10-07 18:46:29 -07:00
hugetlb_cgroup.h
hugetlb_inline.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h hwmon: (core) Add basic pwm attribute support to new API 2016-09-08 21:34:15 -07:00
hwspinlock.h
hyperv.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-10-05 10:11:24 -07:00
hypervisor.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-gpio.h
i2c-mux-gpio.h
i2c-mux-pinctrl.h
i2c-mux.h
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c-smbus.h
i2c-xiic.h
i2c.h i2c: export i2c_adapter_depth() 2016-09-24 10:48:18 +02:00
i7300_idle.h
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
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 net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_team.h Fixing a bug in team driver due to incorrect 'unsigned int' to 'int' conversion 2016-10-07 23:50:39 -04:00
if_tun.h
if_tunnel.h
if_vlan.h vlan: Check for vlan ethernet types for 8021.q or 802.1ad 2016-09-08 17:10:28 -07:00
igmp.h
ihex.h
ima.h
in.h
in6.h
inet.h
inet_diag.h net: inet: diag: expose the socket mark to privileged processes. 2016-09-08 16:13:09 -07:00
inetdevice.h
init.h This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
init_ohci1394_dma.h
init_task.h sched/core: Free the stack early if CONFIG_THREAD_INFO_IN_TASK 2016-09-16 09:18:54 +02:00
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h
intel-svm.h
intel_pmic_gpio.h
interrupt.h genirq/affinity: Remove old irq spread infrastructure 2016-09-14 22:11:09 +02:00
interval_tree.h
interval_tree_generic.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io.h x86/io: add interface to reserve io memtype for a resource range. (v1.1) 2016-10-26 15:45:38 +10:00
ioc3.h
ioc4.h
iocontext.h
iomap.h iomap: add IOMAP_REPORT 2016-10-20 15:51:28 +11:00
iommu-common.h
iommu-helper.h
iommu.h iommu: Introduce iommu_fwspec 2016-09-16 09:34:15 +01:00
iopoll.h
ioport.h
ioprio.h block: remove IOPRIO_BITS 2016-09-14 09:18:09 -06:00
iova.h
ip.h
ipack.h
ipc.h
ipc_namespace.h
ipmi-fru.h
ipmi.h
ipmi_smi.h
ipv6.h ipv6 addrconf: implement RFC7559 router solicitation backoff 2016-09-30 01:54:28 -04:00
ipv6_route.h
irq.h Merge branch 'irq/urgent' into irq/core 2016-09-20 23:20:32 +02:00
irq_cpustat.h
irq_poll.h
irq_work.h
irqbypass.h
irqchip.h
irqdesc.h genirq: Expose interrupt information through sysfs 2016-09-14 15:28:15 +02:00
irqdomain.h
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
jbd2.h
jhash.h
jiffies.h jiffies: add time comparison functions for 64 bit jiffies 2016-10-07 18:46:26 -07:00
journal-head.h
joystick.h
jump_label.h Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-10-03 13:22:39 -07:00
jump_label_ratelimit.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan-checks.h
kasan.h kprobes: Unpoison stack in jprobe_return() for KASAN 2016-10-16 11:02:31 +02:00
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h kconfig.h: remove config_enabled() macro 2016-10-27 18:43:43 -07:00
kcore.h
kcov.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h printk: reinstate KERN_CONT for printing continuation lines 2016-10-09 12:23:38 -07:00
kernel-page-flags.h
kernel.h min/max: remove sparse warnings when they're nested 2016-10-07 18:46:30 -07:00
kernel_stat.h
kernelcapi.h
kernfs.h
kexec.h kdump, vmcoreinfo: report memory sections virtual addresses 2016-10-11 15:06:33 -07:00
key-type.h
key.h
keyboard.h
kfifo.h
kgdb.h
khugepaged.h
klist.h
kmemcheck.h
kmemleak.h mm: kmemleak: avoid using __va() on addresses that don't have a lowmem mapping 2016-10-11 15:06:33 -07:00
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
kthread.h kthread: add kerneldoc for kthread_create() 2016-10-11 15:06:33 -07:00
ktime.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-10-05 10:11:24 -07:00
kvm_host.h kvm: create per-vcpu dirs in debugfs 2016-09-16 16:57:47 +02:00
kvm_irqfd.h
kvm_para.h
kvm_types.h
l2tp.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: gpio: introduce gpio_blink_set_t 2016-09-15 16:49:39 +02:00
leds_pwm.h
lguest.h
lguest_launcher.h
libata.h libata: remove <asm-generic/libata-portmap.h> 2016-09-22 11:50:29 -04:00
libfdt.h
libfdt_env.h
libnvdimm.h libnvdimm, region: move region-mapping input-paramters to nd_mapping_desc 2016-09-30 19:13:42 -07:00
libps2.h
license.h
lightnvm.h lightnvm: expose device geometry through sysfs 2016-09-21 07:57:31 -06:00
linkage.h
linux_logo.h
lis3lv02d.h
list.h list: Expand list_first_entry_or_null() 2016-09-14 12:57:43 -07:00
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
livepatch.h
llc.h
llist.h
lockdep.h lockdep: make MAX_LOCKDEP_SUBCLASSES unconditionally visible 2016-09-24 10:48:32 +02:00
lockref.h
log2.h
lp.h
lru_cache.h
lsm_audit.h lsm,audit,selinux: Introduce a new audit data type LSM_AUDIT_DATA_FILE 2016-09-19 13:42:38 -04:00
lsm_hooks.h Merge branch 'stable-4.9' of git://git.infradead.org/users/pcmoore/selinux into next 2016-09-19 12:27:10 +10: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 bus: mvebu-mbus: Provide stub function for mvebu_mbus_get_io_win_info() 2016-09-15 21:13:50 +05:30
mc6821.h
mc146818rtc.h
mcb.h mcb: Add a dma_device to mcb_device 2016-09-27 12:33:47 +02:00
mdio-bitbang.h
mdio-mux.h
mdio.h
mei_cl_bus.h
memblock.h mm/memblock.c: expose total reserved memory 2016-10-07 18:46:28 -07:00
memcontrol.h mm: memcontrol: consolidate cgroup socket tracking 2016-10-07 18:46:29 -07:00
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
memremap.h
memstick.h
mg_disk.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate.h
migrate_mode.h
mii.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm-arch-hooks.h
mm.h mm: unexport __get_user_pages() 2016-10-24 19:13:20 -07:00
mm_inline.h
mm_types.h kernel, oom: fix potential pgd_lock deadlock from __mmdrop 2016-10-07 18:46:27 -07:00
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: remove per-zone hashtable of bitlock waitqueues 2016-10-27 09:27:57 -07:00
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h mnt: Add a per mount namespace limit on the number of mounts 2016-09-30 12:46:48 -05:00
mpage.h
mpi.h
mpls.h
mpls_iptunnel.h
mroute.h ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route 2016-09-25 23:41:39 -04:00
mroute6.h ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route 2016-09-25 23:41:39 -04:00
msdos_fs.h
msg.h
msi.h genirq/msi: Add cpumask allocation to alloc_msi_entry 2016-09-14 22:11:08 +02:00
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h
nd.h libnvdimm, namespace: sort namespaces by dpa at init 2016-10-07 09:20:53 -07:00
net.h
netdev_features.h
netdevice.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-09-25 23:34:19 +02:00
netfilter.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-09-25 23:34:19 +02:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h netfilter: replace list_head with single linked list 2016-09-25 14:38:48 +02:00
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
nfs.h
nfs3.h
nfs4.h NFSv4.1: Allow revoked stateids to skip the call to TEST_STATEID 2016-09-27 14:34:01 -04:00
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h nfs: allow blocking locks to be awoken by lock callbacks 2016-09-22 15:54:27 -04:00
nfs_iostat.h
nfs_page.h
nfs_xdr.h pnfs: add a new mechanism to select a layout driver according to an ordered list 2016-09-19 13:11:13 -04:00
nfsacl.h
nl802154.h
nls.h
nmi.h nmi_backtrace: add more trigger_*_cpu_backtrace() methods 2016-10-07 18:46:30 -07:00
node.h
nodemask.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb.h
ntb_transport.h
nubus.h
numa.h
nvme-rdma.h
nvme.h nvme.h: add an enum for cns values 2016-10-19 11:36:22 -06:00
nvmem-consumer.h
nvmem-provider.h
nvram.h
of.h of: Add array read functions with min/max size limits 2016-09-15 08:33:01 -05:00
of_address.h
of_device.h
of_dma.h
of_fdt.h of/serial: move earlycon early_param handling to serial 2016-09-28 17:43:15 +02:00
of_gpio.h gpio: OF: localize some gpiochip init functions 2016-10-03 23:38:11 +02:00
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h of/irq: Break out msi-map lookup (again) 2016-09-16 09:34:14 +01:00
of_pdt.h
of_platform.h
of_reserved_mem.h
oid_registry.h
olpc-ec.h
omap-dma.h dmaengine/ARM: omap-dma: Fix the DMAengine compile test on non OMAP configs 2016-09-28 08:53:14 +05:30
omap-dmaengine.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h mm, oom: enforce exit_oom_victim on current task 2016-10-07 18:46:28 -07:00
openvswitch.h
oprofile.h
osq_lock.h
oxu210hp.h
padata.h padata: Convert to hotplug state machine 2016-09-19 21:44:30 +02:00
page-flags-layout.h
page-flags.h
page-isolation.h
page_counter.h
page_ext.h mm/page_owner: don't define fields on struct page_ext by hard-coding 2016-10-07 18:46:27 -07:00
page_idle.h
page_owner.h mm/page_owner: move page_owner specific function to page_owner.c 2016-10-07 18:46:27 -07:00
page_ref.h
pageblock-flags.h
pagemap.h mm: split gfp_mask and mapping flags into separate fields 2016-10-11 15:06:34 -07:00
pagevec.h
parport.h
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-dma-compat.h
pci-dma.h
pci-ecam.h
pci.h PCI changes for the v4.9 merge window: 2016-10-07 11:46:37 -07:00
pci_hotplug.h
pci_ids.h
pcieport_if.h
pda_power.h
pe.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h locking/percpu-rwsem: Add down_read_preempt_disable() 2016-09-22 15:25:54 +02:00
percpu.h
percpu_counter.h
percpu_ida.h
perf_event.h perf/powerpc: Don't call perf_event_disable() from atomic context 2016-10-28 11:06:25 +02:00
perf_regs.h
personality.h
pfn.h
pfn_t.h
phonet.h
phy.h net: ethernet: mediatek: add extension of phy-mode for TRGMII 2016-09-22 08:21:21 -04:00
phy_fixed.h
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h pipe: fix comment in pipe_buf_operations 2016-10-05 18:24:00 -04:00
pkeys.h pkeys: Remove easily triggered WARN 2016-10-14 11:36:59 -07:00
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm-trace.h
pm.h driver core: Functional dependencies tracking support 2016-10-31 11:36:20 -06:00
pm2301_charger.h
pm_clock.h
pm_domain.h PM / Domains: Add support for removing nested PM domains by provider 2016-09-13 02:49:34 +02:00
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pmem.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h
posix-clock.h
posix-timers.h
posix_acl.h Merge remote-tracking branch 'jk/vfs' into work.misc 2016-10-08 11:06:08 -04:00
posix_acl_xattr.h posix_acl: uapi header split 2016-09-27 21:52:00 -04:00
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
printk.h printk: reinstate KERN_CONT for printing continuation lines 2016-10-09 12:23:38 -07:00
proc_fs.h
proc_ns.h nsfs: add ioctl to get a parent namespace 2016-09-22 19:59:41 -05:00
profile.h
projid.h
property.h include/linux/property.h: fix typo/compile error 2016-09-30 15:26:52 -07:00
psci.h
pstore.h pstore/pmsg: drop bounce buffer 2016-09-08 15:01:10 -07:00
pstore_ram.h pstore/pmsg: drop bounce buffer 2016-09-08 15:01:10 -07:00
pti.h
ptp_classify.h
ptp_clock_kernel.h ptp_clock: future-proofing drivers against PTP subsystem becoming optional 2016-09-22 02:18:33 -04:00
ptr_ring.h
ptrace.h
pvclock_gtod.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h spi: pxa2xx: Default thresholds to PXA configuration 2016-09-12 20:01:43 +01:00
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h radix-tree: 'slot' can be NULL in radix_tree_next_slot() 2016-10-11 15:06:30 -07:00
raid_class.h
ramfs.h
random.h This adds a new gcc plugin named "latent_entropy". It is designed to 2016-10-15 10:03:15 -07:00
range.h
ras.h
ratelimit.h
rational.h
rbtree.h
rbtree_augmented.h
rbtree_latch.h
rcu_sync.h
rculist.h
rculist_bl.h
rculist_nulls.h
rcupdate.h
rcutiny.h
rcutree.h
reboot.h
reciprocal_div.h
regmap.h regmap: Allow longer flag masks for read and write 2016-09-16 12:06:24 +01:00
regset.h
relay.h relay: Use irq_work instead of plain timer for deferred wakeup 2016-10-11 15:06:32 -07:00
remoteproc.h remoteproc: Split driver and consumer dereferencing 2016-10-02 22:50:21 -07:00
reservation.h
reset-controller.h
reset.h
resource.h
resource_ext.h
rfkill-regulator.h
rfkill.h
rhashtable.h rhashtable: Add rhlist interface 2016-09-20 04:43:36 -04:00
ring_buffer.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
rmi.h
rndis.h
root_dev.h
rpmsg.h rpmsg: Allow callback to return errors 2016-09-08 22:15:25 -07:00
rslib.h
rtc.h
rtmutex.h
rtnetlink.h
rwlock.h
rwlock_api_smp.h
rwlock_types.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h
sa11x0-dma.h
sbitmap.h sbitmap: push alloc policy into sbitmap_queue 2016-09-17 08:39:12 -06:00
scatterlist.h
scc.h
sched.h thp: reduce usage of huge zero page's atomic counter 2016-10-07 18:46:28 -07:00
sched_clock.h
scif.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 'stable-4.9' of git://git.infradead.org/users/pcmoore/selinux into next 2016-09-19 12:27:10 +10:00
selection.h
selinux.h
sem.h ipc/sem.c: fix complex_count vs. simple op race 2016-10-11 15:06:33 -07:00
semaphore.h
seq_buf.h
seq_file.h seq/proc: modify seq_put_decimal_[u]ll to take a const char *, not char 2016-10-07 18:46:30 -07:00
seq_file_net.h
seqlock.h
seqno-fence.h
serial.h
serial_8250.h
serial_bcm63xx.h
serial_core.h ACPI: parse SPCR and enable matching console 2016-09-28 17:46:46 +02:00
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serio.h
sfi.h
sfi_acpi.h
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h
shmem_fs.h
shrinker.h
signal.h
signalfd.h
sirfsoc_dma.h
sizes.h
skb_array.h
skbuff.h Merge branch 'work.splice_read' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-10-07 15:36:58 -07:00
slab.h
slab_def.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.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h new iov_iter flavour: pipe-backed 2016-10-05 18:23:36 -04:00
spmi.h
srcu.h
ssbi.h
stackdepot.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
ste_modem_shm.h
stm.h
stmmac.h
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string.h
string_helpers.h
stringhash.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h PM / sleep: enable suspend-to-idle even without registered suspend_ops 2016-09-13 02:17:19 +02:00
svga.h
sw842.h
swab.h
swait.h
swap.h mm, swap: add swap_cluster_list 2016-10-07 18:46:27 -07:00
swap_cgroup.h
swapfile.h
swapops.h
swiotlb.h
sxgbe_platform.h
sync_file.h
synclink.h
sys.h
sys_soc.h
syscalls.h generic syscalls: kill cruft from removed pkey syscalls 2016-10-17 09:50:56 -07:00
syscore_ops.h
sysctl.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2016-10-06 09:52:23 -07:00
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h scsi: sd: Move DIF protection types to t10-pi.h 2016-09-15 09:51:14 -04:00
task_io_accounting.h
task_io_accounting_ops.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h tcp: export data delivery rate 2016-09-21 00:23:00 -04:00
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h thermal: Enhance thermal_zone_device_update for events 2016-09-27 14:35:21 +08:00
thinkpad_acpi.h
thread_info.h sched/core, x86: Make struct thread_info arch specific again 2016-10-20 13:27:47 +02:00
threads.h
ti_wilink_st.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time.h
time64.h
timecounter.h
timekeeper_internal.h
timekeeping.h timekeeping: Include the correct header for errno definitions 2016-09-22 17:02:55 +02:00
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
topology.h
torture.h
toshiba.h
tpm.h
tpm_command.h
trace_clock.h
trace_events.h
trace_seq.h
tracefs.h
tracehook.h
tracepoint-defs.h
tracepoint.h
transport_class.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
u64_stats_sync.h u64_stats: Introduce IRQs disabled helpers 2016-09-30 11:46:40 +02:00
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uinput.h
uio.h Merge branch 'work.splice_read' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-10-10 13:38:49 -07:00
uio_driver.h
uprobes.h
usb.h
usb_usual.h scsi: introduce a quirk for false cache reporting 2016-09-13 08:08:24 +02:00
usbdevice_fs.h
user-return-notifier.h
user.h
user_namespace.h Merge branch 'nsfs-ioctls' into HEAD 2016-09-22 20:00:36 -05:00
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
uwb.h
verification.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via-core.h
via-gpio.h
via.h
via_i2c.h
videodev2.h
virtio.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_mmio.h
virtio_net.h
virtio_ring.h
virtio_vsock.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
wait.h sched/wait: Introduce init_wait_entry() 2016-09-30 10:54:03 +02:00
wanrouter.h
watchdog.h watchdog: add watchdog pretimeout governor framework 2016-10-08 10:27:10 +02:00
win_minmax.h lib/win_minmax: windowed min or max estimator 2016-09-21 00:22:59 -04:00
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
workqueue.h
writeback.h mm, vmscan: get rid of throttle_vm_writeout 2016-10-07 18:46:27 -07:00
ww_mutex.h
xattr.h vfs: Remove {get,set,remove}xattr inode operations 2016-10-07 21:48:36 -04:00
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zutil.h