mirror-linux/include/linux
Lukas Wunner 07f4f97d7b vga_switcheroo: Use device link for HDA controller
Back in 2013, runtime PM for GPUs with integrated HDA controller was
introduced with commits 0d69704ae3 ("gpu/vga_switcheroo: add driver
control power feature. (v3)") and 246efa4a07 ("snd/hda: add runtime
suspend/resume on optimus support (v4)").

Briefly, the idea was that the HDA controller is forced on and off in
unison with the GPU.

The original code is mostly still in place even though it was never a
100% perfect solution:  E.g. on access to the HDA controller, the GPU
is powered up via vga_switcheroo_runtime_resume_hdmi_audio() but there
are no provisions to keep it resumed until access to the HDA controller
has ceased:  The GPU autosuspends after 5 seconds, rendering the HDA
controller inaccessible.

Additionally, a kludge is required when hda_intel.c probes:  It has to
check whether the GPU is powered down (check_hdmi_disabled()) and defer
probing if so.

However in the meantime (in v4.10) the driver core has gained a feature
called device links which promises to solve such issues in a clean way:
It allows us to declare a dependency from the HDA controller (consumer)
to the GPU (supplier).  The PM core then automagically ensures that the
GPU is runtime resumed as long as the HDA controller's ->probe hook is
executed and whenever the HDA controller is accessed.

By default, the HDA controller has a dependency on its parent, a PCIe
Root Port.  Adding a device link creates another dependency on its
sibling:

                            PCIe Root Port
                             ^          ^
                             |          |
                             |          |
                            HDA  ===>  GPU

The device link is not only used for runtime PM, it also guarantees that
on system sleep, the HDA controller suspends before the GPU and resumes
after the GPU, and on system shutdown the HDA controller's ->shutdown
hook is executed before the one of the GPU.  It is a complete solution.

Using this functionality is as simple as calling device_link_add(),
which results in a dmesg entry like this:

        pci 0000:01:00.1: Linked as a consumer to 0000:01:00.0

The code for the GPU-governed audio power management can thus be removed
(except where it's still needed for legacy manual power control).

The device link is added in a PCI quirk rather than in hda_intel.c.
It is therefore legal for the GPU to runtime suspend to D3cold even if
the HDA controller is not bound to a driver or if CONFIG_SND_HDA_INTEL
is not enabled, for accesses to the HDA controller will cause the GPU to
wake up regardless if they're occurring outside of hda_intel.c (think
config space readout via sysfs).

Contrary to the previous implementation, the HDA controller's power
state is now self-governed, rather than GPU-governed, whereas the GPU's
power state is no longer fully self-governed.  (The HDA controller needs
to runtime suspend before the GPU can.)

It is thus crucial that runtime PM is always activated on the HDA
controller even if CONFIG_SND_HDA_POWER_SAVE_DEFAULT is set to 0 (which
is the default), lest the GPU stays awake.  This is achieved by setting
the auto_runtime_pm flag on every codec and the AZX_DCAPS_PM_RUNTIME
flag on the HDA controller.

A side effect is that power consumption might be reduced if the GPU is
in use but the HDA controller is not, because the HDA controller is now
allowed to go to D3hot.  Before, it was forced to stay in D0 as long as
the GPU was in use.  (There is no reduction in power consumption on my
Nvidia GK107, but there might be on other chips.)

The code paths for legacy manual power control are adjusted such that
runtime PM is disabled during power off, thereby preventing the PM core
from resuming the HDA controller.

Note that the device link is not only added on vga_switcheroo capable
systems, but for *any* GPU with integrated HDA controller.  The idea is
that the HDA controller streams audio via connectors located on the GPU,
so the GPU needs to be on for the HDA controller to do anything useful.

This commit implicitly fixes an unbalanced runtime PM ref upon unbind of
hda_intel.c:  On ->probe, a runtime PM ref was previously released under
the condition "azx_has_pm_runtime(chip) || hda->use_vga_switcheroo", but
on ->remove a runtime PM ref was only acquired under the first of those
conditions.  Thus, binding and unbinding the driver twice on a
vga_switcheroo capable system caused the runtime PM refcount to drop
below zero.  The issue is resolved because the AZX_DCAPS_PM_RUNTIME flag
is now always set if use_vga_switcheroo is true.

For more information on device links please refer to:
https://www.kernel.org/doc/html/latest/driver-api/device_link.html
Documentation/driver-api/device_link.rst

Cc: Dave Airlie <airlied@redhat.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Tested-by: Kai Heng Feng <kai.heng.feng@canonical.com> # AMD PowerXpress
Tested-by: Mike Lothian <mike@fireburn.co.uk>          # AMD PowerXpress
Tested-by: Denis Lisov <dennis.lissov@gmail.com>       # Nvidia Optimus
Tested-by: Peter Wu <peter@lekensteyn.nl>              # Nvidia Optimus
Tested-by: Lukas Wunner <lukas@wunner.de>              # MacBook Pro
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Link: https://patchwork.freedesktop.org/patch/msgid/51bd38360ff502a8c42b1ebf4405ee1d3f27118d.1520068884.git.lukas@wunner.de
2018-03-13 22:58:09 +01:00
..
amba
avf
bcma
byteorder
can
ceph
clk
crush
decompress
dma
dsa
extcon
firmware/meson
fpga
fsl
gpio The is the bulk of GPIO changes for the v4.16 kernel cycle. 2018-01-31 12:25:27 -08:00
hsi
iio Staging/IIO patches for 4.16-rc1 2018-02-01 09:51:57 -08:00
input
irqchip
isdn
lockd
mailbox
mfd RTC for 4.16 2018-02-02 14:19:19 -08:00
mlx4
mlx5 Second pull request for 4.16 merge window 2018-02-06 11:09:45 -08:00
mmc mmc: slot-gpio: add a helper to check capability of GPIO WP detection 2018-01-18 09:08:56 +01:00
mtd Core changes: 2018-01-29 09:58:36 +01:00
mux
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-01-31 14:31:10 -08:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf
phy
pinctrl pinctrl: remove include file from <linux/device.h> 2018-02-03 12:10:09 -08:00
platform_data platform-drivers-x86 for v4.16-1 2018-02-06 15:30:52 -08:00
power
qed
raid
regulator regulator: add PM suspend and resume hooks 2018-01-26 14:43:55 +00:00
remoteproc
reset
rpmsg
rtc
sched Merge branch 'linus' into sched/urgent, to resolve conflicts 2018-02-06 21:12:31 +01:00
soc ARM: SoC driver updates for 4.16 2018-02-01 16:35:31 -08:00
soundwire
spi
ssb
sunrpc NFS client bugfixes and latency improvements for Linux 4.16 2018-02-09 14:55:30 -08:00
ulpi
unaligned
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi.h More ACPI updates for v4.16-rc1 2018-02-09 09:44:25 -08:00
acpi_dma.h
acpi_iort.h
acpi_pmtmr.h
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci-remap.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.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/arm64: smccc: Implement SMCCC v1.1 inline primitive 2018-02-06 22:54:15 +00:00
arm_sdei.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_tc.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 lockdep: Convert some users to const 2018-01-18 11:56:49 +01:00
backlight.h video: backlight: Add devres versions of of_find_backlight 2018-01-29 10:34:53 -05: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
bfin_mac.h
binfmts.h
bio.h Merge branch 'for-4.16/block' of git://git.kernel.dk/linux-block 2018-01-29 11:51:49 -08:00
bit_spinlock.h
bitfield.h
bitmap.h lib: optimize cpumask_next_and() 2018-02-06 18:32:44 -08:00
bitops.h
bitrev.h
blk-cgroup.h
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h
blk_types.h blk-mq: introduce BLK_STS_DEV_RESOURCE 2018-01-30 20:18:28 -07:00
blkdev.h Merge branch 'for-4.16/block' of git://git.kernel.dk/linux-block 2018-01-29 11:51:49 -08:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpf-cgroup.h
bpf.h bpf: offload: report device information about offloaded maps 2018-01-18 22:54:25 +01:00
bpf_trace.h
bpf_types.h
bpf_verifier.h
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h for-linus-20180204 2018-02-04 11:16:35 -08:00
bug.h
build_bug.h build_bug.h: remove BUILD_BUG_ON_NULL() 2018-02-06 18:32:46 -08:00
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cgroup-defs.h
cgroup.h
cgroup_rdma.h
cgroup_subsys.h
circ_buf.h
cleancache.h
clk-provider.h Merge branches 'clk-remove-asm-clkdev', 'clk-debugfs-fixes', 'clk-renesas' and 'clk-meson' into clk-next 2018-01-26 16:43:32 -08: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
compat.h
compiler-clang.h kasan: add compiler support for clang 2018-02-06 18:32:42 -08:00
compiler-gcc.h sparse doesn't support struct randomization 2018-01-19 10:09:41 -08:00
compiler-intel.h
compiler.h compiler.h: Add read_word_at_a_time() function. 2018-02-01 12:20:21 -08:00
compiler_types.h
completion.h
component.h
concap.h
configfs.h
connector.h
console.h
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
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpufeature.h
cpufreq.h cpufreq: Add and use cpufreq_for_each_{valid_,}entry_idx() 2018-02-08 10:21:39 +01:00
cpuhotplug.h Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2018-02-02 09:50:51 -08:00
cpuidle.h
cpumask.h cpumask: make cpumask_size() return "unsigned int" 2018-02-06 18:32:45 -08:00
cpuset.h kernel/cpuset: current_cpuset_is_being_rebound can be boolean 2018-02-06 18:32:47 -08:00
crash_core.h
crash_dump.h crash_dump: is_kdump_kernel can be boolean 2018-02-06 18:32:47 -08:00
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
cred.h
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dca.h
dcache.h vfs: factor out helpers d_instantiate_anon() and d_alloc_anon() 2018-01-24 11:25:59 +01:00
dccp.h
dcookies.h
debug_locks.h
debugfs.h
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 mpath: delay the retry of a request if the target responded as busy 2018-01-29 13:44:54 -05:00
device.h pinctrl: remove include file from <linux/device.h> 2018-02-03 12:10:09 -08: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-direct.h
dma-direction.h
dma-fence-array.h
dma-fence.h
dma-iommu.h
dma-mapping.h
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 Merge branch 'next-tpm' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2018-01-31 13:12:31 -08:00
efs_vh.h
eisa.h
elevator.h block: Unexport elv_register_queue() and elv_unregister_queue() 2018-01-18 12:54:41 -07:00
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
error-injection.h
errqueue.h
errseq.h
etherdevice.h net: Extra '_get' in declaration of arch_get_platform_mac_address 2018-02-08 15:13:30 -05: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: support inode creation time 2018-01-25 14:10:39 -08:00
f75375s.h
falloc.h
fanotify.h
fault-inject.h
fb.h fbdev changes for v4.16: 2018-02-07 13:10:43 -08:00
fbcon.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h vfs, fdtable: Prevent bounds-check bypass via speculative execution 2018-01-30 21:54:32 +01:00
fec.h
file.h
filter.h bpf: make unknown opcode handling more robust 2018-01-26 16:42:05 -08: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 New in this version: 2018-01-31 10:18:00 -08:00
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fscrypt.h
fscrypt_notsupp.h
fscrypt_supp.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 init_task out-of-lining 2018-01-29 09:08:34 -08:00
ftrace_irq.h
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h
genl_magic_func.h include/linux/genl_magic_func.h: remove own BUILD_BUG_ON*() defines 2018-02-06 18:32:46 -08:00
genl_magic_struct.h
getcpu.h
gfp.h
glob.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
host1x.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
huge_mm.h
hugetlb.h hugetlb, mbind: fall back to default policy if vma is NULL 2018-01-31 17:18:40 -08: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-gpio.h
i2c-mux-gpio.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
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idr.h idr: Add documentation 2018-02-06 16:41:29 -05:00
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_tap.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
igmp.h
ihex.h
ima.h
imx-media.h
in.h
in6.h
inet.h
inet_diag.h
inetdevice.h devinet_ioctl(): take copyin/copyout to caller 2018-01-24 19:13:45 -05:00
init.h x86/retpoline: Avoid retpolines for built-in __init functions 2018-02-02 12:28:27 +01:00
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
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.h
ioc3.h
ioc4.h
iocontext.h
iomap.h
iommu-common.h
iommu-helper.h
iommu.h
iopoll.h
ioport.h kernel/resource: iomem_is_exclusive can be boolean 2018-02-06 18:32:47 -08:00
ioprio.h
iova.h
ip.h
ipack.h
ipc.h
ipc_namespace.h
ipmi-fru.h
ipmi.h
ipmi_smi.h
ipv6.h
ipv6_route.h
irq.h
irq_cpustat.h
irq_poll.h
irq_sim.h
irq_work.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h init_task out-of-lining 2018-01-29 09:08:34 -08:00
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 iversion: Rename make inode_cmp_iversion{+raw} to inode_eq_iversion{+raw} 2018-02-01 08:15:25 -05:00
jbd2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label.h jump_label: Add branch hints to static_branch_{un,}likely() 2018-02-06 10:28:57 +01:00
jump_label_ratelimit.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h kallsyms: let print_ip_sym() print raw addresses 2018-02-06 18:32:45 -08:00
kasan-checks.h
kasan.h kasan: clean up KASAN_SHADOW_SCALE_SHIFT usage 2018-02-06 18:32:43 -08:00
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-page-flags.h
kernel.h
kernel_stat.h
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.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
kthread.h
ktime.h
kvm_host.h
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_pwm.h
libata.h
libfdt.h
libfdt_env.h
libgcc.h
libnvdimm.h acpi: nfit: add persistent memory control flag for nd_region 2018-02-01 15:01:15 -07:00
libps2.h
license.h
lightnvm.h
linkage.h
linux_logo.h
lis3lv02d.h
list.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
livepatch.h
llc.h
llist.h
lockdep.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-01-30 10:44:56 -08:00
lockref.h lib/lockref: __lockref_is_dead can be boolean 2018-02-06 18:32:47 -08:00
log2.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
lz4.h
lzo.h
mISDNdsp.h
mISDNhw.h
mISDNif.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-mux.h
mdio.h
mei_cl_bus.h
mem_encrypt.h
memblock.h mm/memblock: memblock_is_map/region_memory can be boolean 2018-02-06 18:32:47 -08:00
memcontrol.h mm: memcontrol: fix excessive complexity in memory.stat reporting 2018-01-31 17:18:36 -08:00
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
memremap.h
memstick.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate.h
migrate_mode.h
mii.h
miscdevice.h
mm-arch-hooks.h
mm.h libnvdimm for 4.16 2018-02-06 10:41:33 -08:00
mm_inline.h
mm_types.h mm: remove reference to PG_buddy 2018-01-31 17:18:38 -08:00
mm_types_task.h
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h mm, mmu_notifier: annotate mmu notifiers with blockable invalidate callbacks 2018-01-31 17:18:38 -08:00
mmzone.h include/linux/mmzone.h: fix explanation of lower bits in the SPARSEMEM mem_map pointer 2018-01-31 17:18:39 -08:00
mnt_namespace.h
mod_devicetable.h
module.h kernel/module: module_is_live can be boolean 2018-02-06 18:32:47 -08:00
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls.h
mpls_iptunnel.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h
mutex.h kernel/mutex: mutex_is_locked can be boolean 2018-02-06 18:32:47 -08:00
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h
nd.h
net.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-01-31 14:31:10 -08:00
net_dim.h net/dim: Fix fixpoint divide exception in net_dim_stats_compare 2018-01-19 14:53:32 -05:00
netdev_features.h
netdevice.h bpf: fix null pointer deref in bpf_prog_test_run_xdp 2018-02-01 07:43:56 -08:00
netfilter.h
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
nfs.h
nfs3.h
nfs4.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_iostat.h
nfs_page.h
nfs_xdr.h
nfsacl.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
nospec.h array_index_nospec: Sanitize speculative array de-references 2018-01-30 21:54:29 +01:00
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb.h NTB: Fix UB/bug in ntb_mw_get_align() 2018-01-28 22:17:24 -05:00
ntb_transport.h
nubus.h
numa.h
nvme-fc-driver.h
nvme-fc.h
nvme-rdma.h
nvme.h
nvmem-consumer.h
nvmem-provider.h
nvram.h
of.h DeviceTree updates for 4.16: 2018-02-01 10:57:45 -08:00
of_address.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h DeviceTree updates for 4.16: 2018-02-01 10:57:45 -08:00
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h PCI: Make of_irq_parse_pci() static 2018-01-25 08:48:20 -06:00
of_pdt.h
of_platform.h
of_reserved_mem.h
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
oxu210hp.h
padata.h
page-flags-layout.h
page-flags.h mm: remove PG_highmem description 2018-01-31 17:18:40 -08:00
page-isolation.h
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
pageblock-flags.h
pagemap.h
pagevec.h mm: get 7% more pages in a pagevec 2018-01-31 17:18:37 -08:00
parman.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: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci-ep-cfs.h PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci-epc.h Merge branch 'pci/spdx' into next 2018-02-01 11:40:07 -06:00
pci-epf.h PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci.h PCI: Make pci_wakeup_bus() & pci_bus_set_current_state() public 2018-03-13 22:57:36 +01:00
pci_hotplug.h PCI: Add SPDX GPL-2.0+ to replace GPL v2 or later boilerplate 2018-01-28 15:49:06 -06:00
pci_ids.h vga_switcheroo: Use device link for HDA controller 2018-03-13 22:58:09 +01:00
pcieport_if.h
pda_power.h
pe.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
percpu_counter.h
percpu_ida.h
perf_event.h
perf_regs.h
personality.h
pfn.h
pfn_t.h mm, dax: introduce pfn_t_special() 2018-01-19 16:50:53 -08:00
phonet.h
phy.h
phy_fixed.h
phy_led_triggers.h
phylink.h
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h pipe: reject F_SETPIPE_SZ with size over UINT_MAX 2018-02-06 18:32:47 -08:00
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm-trace.h
pm.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pmbus.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h unify {de,}mangle_poll(), get rid of kernel-side POLL... 2018-02-11 14:37:22 -08:00
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
proc_fs.h
proc_ns.h
processor.h
profile.h
projid.h
property.h Driver Core updates for 4.16-rc1 2018-02-01 10:00:28 -08:00
psci.h firmware/psci: Expose SMCCC version through psci_ops 2018-02-06 22:54:11 +00:00
psp-sev.h
pstore.h
pstore_ram.h
pti.h
ptp_classify.h
ptp_clock_kernel.h
ptr_ring.h ptr_ring: try vmalloc() when kmalloc() fails 2018-02-09 14:28:57 -05:00
ptrace.h
purgatory.h
pvclock_gtod.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h idr: Remove idr_alloc_ext 2018-02-06 16:41:28 -05:00
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 Char/Misc driver patches for 4.16-rc1 2018-02-01 10:31:17 -08:00
regset.h
relay.h
remoteproc.h
reservation.h
reset-controller.h
reset.h
resource.h
resource_ext.h
restart_block.h
rfkill.h
rhashtable.h
ring_buffer.h
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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-01-31 14:31:10 -08:00
rtsx_common.h
rtsx_pci.h - New Drivers 2018-01-29 10:59:24 -08:00
rtsx_usb.h
rwlock.h
rwlock_api_smp.h
rwlock_types.h
rwsem-spinlock.h
rwsem.h
s3c_adc_battery.h
sa11x0-dma.h
sbitmap.h
scatterlist.h lib/scatterlist: Fix chaining support in sgl_alloc_order() 2018-01-19 12:31:03 -07:00
scc.h
sched.h Merge branch 'akpm' (patches from Andrew) 2018-02-06 22:15:42 -08:00
sched_clock.h
scif.h vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
scpi_protocol.h
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
selection.h
selinux.h
sem.h
semaphore.h
seq_buf.h
seq_file.h seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro 2018-02-07 12:50:21 +02:00
seq_file_net.h
seqlock.h
seqno-fence.h
serdev.h TTY/Staging driver updates for 4.16-rc1 2018-02-01 09:46:00 -08:00
serial.h
serial_8250.h
serial_bcm63xx.h
serial_core.h More ACPI updates for v4.16-rc1 2018-02-09 09:44:25 -08:00
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
shdma-base.h
shm.h
shmem_fs.h shmem: rename functions that are memfd-related 2018-01-31 17:18:39 -08:00
shrinker.h
signal.h
signal_types.h
signalfd.h
siox.h
siphash.h
sirfsoc_dma.h
sizes.h
skb_array.h skb_array: use __ptr_ring_empty 2018-01-29 12:02:54 -05:00
skbuff.h net: create skb_gso_validate_mac_len() 2018-02-01 09:36:03 -05:00
slab.h
slab_def.h
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.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 lockdep: Convert some users to const 2018-01-18 11:56:49 +01:00
srcutiny.h
srcutree.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 Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-01-31 09:25:20 -08:00
string_helpers.h
stringhash.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h x86: hibernate: fix swsusp_arch_resume() prototype 2018-02-07 12:18:23 +01:00
svga.h
sw842.h
swab.h
swait.h
swap.h mm: remove unused pgdat_reclaimable_pages() 2018-01-31 17:18:37 -08:00
swap_cgroup.h
swap_slots.h
swapfile.h
swapops.h mm, page_vma_mapped: Drop faulty pointer arithmetics in check_pte() 2018-01-21 17:44:47 -08:00
swiotlb.h
switchtec.h pci-v4.16-changes 2018-02-06 09:59:40 -08:00
sxgbe_platform.h
sync_core.h locking: Introduce sync_core_before_usermode() 2018-02-05 21:34:50 +01:00
sync_file.h
synclink.h
sys.h
sys_soc.h
syscalls.h
syscore_ops.h
sysctl.h pipe, sysctl: remove pipe_proc_fn() 2018-02-06 18:32:47 -08:00
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 bpf: Adds field bpf_sock_ops_cb_flags to tcp_sock 2018-01-25 16:41:14 -08:00
tee_drv.h
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thinkpad_acpi.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
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty.h tty: fix data race between tty_init_dev and flush of buf 2018-01-23 08:57:37 +01:00
tty_driver.h
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
u64_stats_sync.h
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uio.h
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 uuid: cleanup <uapi/linux/uuid.h> 2018-02-06 18:32:44 -08:00
uwb.h
vbox_utils.h
verification.h
vermagic.h Revert "module: Add retpoline tag to VERMAGIC" 2018-01-24 09:00:05 -08:00
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h vga_switcheroo: Use device link for HDA controller 2018-03-13 22:58:09 +01:00
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_net.h
virtio_ring.h
virtio_vsock.h
visorbus.h
vlynq.h
vm_event_item.h
vm_sockets.h
vmacache.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h mm: remove unused pgdat_reclaimable_pages() 2018-01-31 17:18:37 -08:00
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
workqueue.h
writeback.h
ww_mutex.h
xattr.h
xxhash.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h zswap: only save zswap header when necessary 2018-01-31 17:18:39 -08:00
zsmalloc.h
zstd.h
zutil.h