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
can: dev: Add support for limiting configured bitrate
2018-01-16 15:11:32 +01:00
ceph
clk
crush
decompress
dma
dsa
net: dsa: lan9303: phy_addr_sel_strap rename and retype
2018-01-04 13:35:07 -05:00
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
lockd: convert nlm_rqst.a_count from atomic_t to refcount_t
2018-01-14 23:06:30 -05:00
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
mux: add SPDX identifiers to all mux source files
2018-01-09 16:51:44 +01:00
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
qed*: Utilize FW 8.33.1.0
2018-01-02 13:59:16 -05:00
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
usb: renesas_usbhs: Add support for RZ/A1
2018-01-09 16:18:50 +01:00
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
sched/cpufreq: Remove arch_scale_freq_capacity()'s 'sd' parameter
2018-01-10 12:53:34 +01:00
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
firmware: arm_sdei: Add driver for Software Delegated Exceptions
2018-01-13 10:44:56 +00:00
asn1.h
asn1_ber_bytecode.h
asn1_decoder.h
assoc_array.h
assoc_array_priv.h
async.h
async_tx.h
ata.h
scsi: ata: enhance the definition of SET MAX feature field value
2018-01-10 23:25:08 -05:00
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
blkcg: simplify statistic accumulation code
2018-01-16 08:56:36 -07:00
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h
blk-mq: rename blk_mq_hw_ctx->queue_rq_srcu to ->srcu
2018-01-09 09:31:15 -07:00
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: only build sockmap with CONFIG_INET
2018-01-04 19:01:14 +01:00
bpf_verifier.h
bpf: export function to write into verifier log buffer
2018-01-10 13:49:36 +01:00
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
block: bounce: don't access bio->bi_io_vec in copy_to_high_bio_irq
2018-01-06 09:18:00 -07:00
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: Update documentation reference
2018-01-02 06:59:52 -08:00
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
clk: Move __clk_{get,put}() into private clk.h API
2018-01-04 15:13:29 -08:00
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
signal: Unify and correct copy_siginfo_from_user32
2018-01-15 17:55:59 -06:00
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
locking/lockdep: Remove cross-release leftovers
2018-01-08 17:30:45 +01:00
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
efi: Parse ARM error information value
2018-01-03 14:03:48 +01:00
cpu.h
Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2018-01-14 09:51:25 -08:00
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
kdump: write correct address of mem_section into vmcoreinfo
2018-01-13 10:42:48 -08:00
crash_dump.h
crash_dump: is_kdump_kernel can be boolean
2018-02-06 18:32:47 -08:00
crc-ccitt.h
lib/crc-ccitt: Add CCITT-FALSE CRC16 variant
2018-01-08 10:08:33 +00:00
crc-itu-t.h
crc-t10dif.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
cred.h
crypto.h
crypto: hash - prevent using keyed hashes without setting key
2018-01-12 23:03:37 +11:00
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dax: pass detailed error code from dax_iomap_fault()
2018-01-07 16:38:43 -05:00
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
delayacct: Account blkio completion on the correct task
2018-01-16 03:29:36 +01:00
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-direct: reject too small dma masks
2018-01-15 09:35:15 +01:00
dma-direction.h
dma-fence-array.h
dma-fence.h
dma-iommu.h
dma-mapping.h
dma-direct: rename dma_noop to dma_direct
2018-01-15 09:35:06 +01: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
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
error-injection: Add injectable error types
2018-01-12 17:33:38 -08:00
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
eventfd: fold eventfd_ctx_get() into eventfd_ctx_fileget()
2018-01-06 13:47:20 -05:00
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: move fscrypt_symlink_data to fscrypt_private.h
2018-01-11 23:30:08 -05:00
fscrypt_notsupp.h
fscrypt: remove 'ci' parameter from fscrypt_put_encryption_info()
2018-01-11 23:30:13 -05:00
fscrypt_supp.h
fscrypt: remove 'ci' parameter from fscrypt_put_encryption_info()
2018-01-11 23:30:13 -05:00
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
block: allow gendisk's request_queue registration to be deferred
2018-01-15 08:41:38 -07:00
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
hrtimer: Implement support for softirq based hrtimers
2018-01-16 09:51:22 +01:00
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
i2c: add 'set_sda' to bus_recovery_info
2018-01-16 00:04:19 +01:00
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
net/core: Add drop counters to VF statistics
2018-01-09 07:40:48 +02:00
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_tap.h
tun/tap: use ptr_ring instead of skb_array
2018-01-09 10:56:10 -05:00
if_team.h
if_tun.h
tuntap: fix for "tuntap: XDP transmission"
2018-01-10 15:52:49 -05:00
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
Expand INIT_STRUCT_PID and remove
2018-01-17 11:30:16 +00:00
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h
iommu/vt-d: Add a check for 5-level paging support
2018-01-17 15:02:50 +01:00
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
irq/work: Improve the flag definitions
2018-01-08 19:43:15 +01:00
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
jbd2: fix sphinx kernel-doc build warnings
2018-01-10 00:27:29 -05:00
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
error-injection: Separate error-injection from kprobe
2018-01-12 17:33:38 -08:00
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: remove unnecessary include directive from <linux/libfdt.h>
2018-01-11 14:39:07 -06:00
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
lightnvm: set target over-provision on create ioctl
2018-01-05 08:50:12 -07:00
linkage.h
linux_logo.h
lis3lv02d.h
list.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
livepatch.h
livepatch: Remove immediate feature
2018-01-11 10:58:03 +01:00
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
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
net: mdiobus: add unlocked accessors
2018-01-03 11:00:22 -05:00
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
mm: pass the vmem_altmap to memmap_init_zone
2018-01-08 11:46:23 -08:00
mempolicy.h
mempool.h
memremap.h
memremap: change devm_memremap_pages interface to use struct dev_pagemap
2018-01-08 11:46:23 -08:00
memstick.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
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: remove struct nf_afinfo and its helper functions
2018-01-08 18:11:02 +01:00
netfilter_bridge.h
netfilter_defs.h
netfilter: reduce NF_MAX_HOOKS define
2018-01-08 18:01:12 +01:00
netfilter_ingress.h
netfilter_ipv4.h
netfilter: move reroute indirection to struct nf_ipv6_ops
2018-01-08 18:10:53 +01:00
netfilter_ipv6.h
netfilter: move reroute indirection to struct nf_ipv6_ops
2018-01-08 18:10:53 +01:00
netlink.h
netlink: extack: avoid parenthesized string constant warning
2018-01-15 15:15:23 -05:00
netpoll.h
nfs.h
nfs3.h
nfs4.h
NFS: Fix nfsstat breakage due to LOOKUPP
2018-01-14 23:06:29 -05:00
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
nubus: Add support for the driver model
2018-01-16 16:47:29 +01:00
numa.h
nvme-fc-driver.h
nvme-fc.h
nvme-rdma.h
nvme.h
nvme-pci: clean up SMBSZ bit definitions
2018-01-17 17:55:14 +01:00
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: Use SPDX license tag for DT files
2018-01-08 08:22:45 -06:00
of_fdt.h
of/fdt: use memblock_virt_alloc for early alloc
2018-01-08 08:24:34 -06:00
of_gpio.h
DeviceTree updates for 4.16:
2018-02-01 10:57:45 -08:00
of_graph.h
of: Use SPDX license tag for DT files
2018-01-08 08:22:45 -06:00
of_iommu.h
iommu: Clean up of_iommu_init_fn
2018-01-17 15:25:50 +01:00
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: Use SPDX license tag for DT files
2018-01-08 08:22:45 -06:00
of_platform.h
of: Use SPDX license tag for DT files
2018-01-08 08:22:45 -06:00
of_reserved_mem.h
oid_registry.h
olpc-ec.h
omap-dma.h
omap-dmaengine.h
omap-gpmc.h
mtd: onenand: omap2: Configure driver from DT
2018-01-12 16:41:15 +01:00
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: Remove NULL device handling from PCI DMA API
2018-01-17 18:05:51 -06:00
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: add helpers for setting/clearing bits in PHY registers
2018-01-16 12:25:10 -05:00
phy_fixed.h
net: phy: fixed-phy: remove fixed_phy_update_state()
2018-01-03 10:38:54 -05:00
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
PM / wakeup: Add device_set_wakeup_path() helper to control wakeup path
2018-01-09 13:09:17 +01:00
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-timers: Prevent UB from shifting negative signed value
2018-01-04 14:57:10 +01:00
posix_acl.h
posix_acl: convert posix_acl.a_refcount from atomic_t to refcount_t
2018-01-02 19:27:28 -08:00
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
remoteproc: Drop dangling find_rsc_table dummies
2018-01-15 09:30:00 -08:00
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
sfp: improve support for direct-attach copper cables
2018-01-02 21:45:32 -05:00
sh_clk.h
sh_dma.h
sh_eth.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2018-01-09 10:37:00 -05:00
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: Remove unnecessary ifdefs now that there is only one struct siginfo
2018-01-12 14:34:49 -06:00
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
usercopy: Allow strict enforcement of whitelists
2018-01-15 12:07:48 -08:00
slab_def.h
usercopy: Prepare for usercopy whitelisting
2018-01-15 12:07:47 -08:00
slimbus.h
slub_def.h
usercopy: Prepare for usercopy whitelisting
2018-01-15 12:07:47 -08:00
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
sound: Remove unused register_sound_midi() and co
2018-01-11 17:05:23 +01:00
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
stddef.h: Introduce sizeof_field()
2018-01-15 12:07:46 -08:00
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
swiotlb: add common swiotlb_map_ops
2018-01-15 09:35:45 +01:00
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
sysfs.h: Use octal permissions
2018-01-09 16:27:43 +01:00
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
This pull request updates the previous tee-drv-dynamic-shm-for-v4.16 pull
2018-01-11 18:05:06 -08:00
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: Keep CLKRUN enabled throughout the duration of transmit_cmd()
2018-01-08 12:58:38 +02:00
tpm_command.h
tpm_eventlog.h
tpm: add event log format version
2018-01-08 12:58:34 +02:00
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
usercopy: WARN() on slab cache usercopy region violations
2018-01-15 12:07:48 -08:00
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