twx-linux/include/linux
Wang Nan 9ecda41acb perf/core: Add ::write_backward attribute to perf event
This patch introduces 'write_backward' bit to perf_event_attr, which
controls the direction of a ring buffer. After set, the corresponding
ring buffer is written from end to beginning. This feature is design to
support reading from overwritable ring buffer.

Ring buffer can be created by mapping a perf event fd. Kernel puts event
records into ring buffer, user tooling like perf fetch them from
address returned by mmap(). To prevent racing between kernel and tooling,
they communicate to each other through 'head' and 'tail' pointers.
Kernel maintains 'head' pointer, points it to the next free area (tail
of the last record). Tooling maintains 'tail' pointer, points it to the
tail of last consumed record (record has already been fetched). Kernel
determines the available space in a ring buffer using these two
pointers to avoid overwrite unfetched records.

By mapping without 'PROT_WRITE', an overwritable ring buffer is created.
Different from normal ring buffer, tooling is unable to maintain 'tail'
pointer because writing is forbidden. Therefore, for this type of ring
buffers, kernel overwrite old records unconditionally, works like flight
recorder. This feature would be useful if reading from overwritable ring
buffer were as easy as reading from normal ring buffer. However,
there's an obscure problem.

The following figure demonstrates a full overwritable ring buffer. In
this figure, the 'head' pointer points to the end of last record, and a
long record 'E' is pending. For a normal ring buffer, a 'tail' pointer
would have pointed to position (X), so kernel knows there's no more
space in the ring buffer. However, for an overwritable ring buffer,
kernel ignore the 'tail' pointer.

   (X)                              head
    .                                |
    .                                V
    +------+-------+----------+------+---+
    |A....A|B.....B|C........C|D....D|   |
    +------+-------+----------+------+---+

Record 'A' is overwritten by event 'E':

      head
       |
       V
    +--+---+-------+----------+------+---+
    |.E|..A|B.....B|C........C|D....D|E..|
    +--+---+-------+----------+------+---+

Now tooling decides to read from this ring buffer. However, none of these
two natural positions, 'head' and the start of this ring buffer, are
pointing to the head of a record. Even the full ring buffer can be
accessed by tooling, it is unable to find a position to start decoding.

The first attempt tries to solve this problem AFAIK can be found from
[1]. It makes kernel to maintain 'tail' pointer: updates it when ring
buffer is half full. However, this approach introduces overhead to
fast path. Test result shows a 1% overhead [2]. In addition, this method
utilizes no more tham 50% records.

Another attempt can be found from [3], which allows putting the size of
an event at the end of each record. This approach allows tooling to find
records in a backward manner from 'head' pointer by reading size of a
record from its tail. However, because of alignment requirement, it
needs 8 bytes to record the size of a record, which is a huge waste. Its
performance is also not good, because more data need to be written.
This approach also introduces some extra branch instructions to fast
path.

'write_backward' is a better solution to this problem.

Following figure demonstrates the state of the overwritable ring buffer
when 'write_backward' is set before overwriting:

       head
        |
        V
    +---+------+----------+-------+------+
    |   |D....D|C........C|B.....B|A....A|
    +---+------+----------+-------+------+

and after overwriting:
                                     head
                                      |
                                      V
    +---+------+----------+-------+---+--+
    |..E|D....D|C........C|B.....B|A..|E.|
    +---+------+----------+-------+---+--+

In each situation, 'head' points to the beginning of the newest record.
From this record, tooling can iterate over the full ring buffer and fetch
records one by one.

The only limitation that needs to be considered is back-to-back reading.
Due to the non-deterministic of user programs, it is impossible to ensure
the ring buffer keeps stable during reading. Consider an extreme situation:
tooling is scheduled out after reading record 'D', then a burst of events
come, eat up the whole ring buffer (one or multiple rounds). When the
tooling process comes back, reading after 'D' is incorrect now.

To prevent this problem, we need to find a way to ensure the ring buffer
is stable during reading. ioctl(PERF_EVENT_IOC_PAUSE_OUTPUT) is
suggested because its overhead is lower than
ioctl(PERF_EVENT_IOC_ENABLE).

By carefully verifying 'header' pointer, reader can avoid pausing the
ring-buffer. For example:

    /* A union of all possible events */
    union perf_event event;

    p = head = perf_mmap__read_head();
    while (true) {
        /* copy header of next event */
        fetch(&event.header, p, sizeof(event.header));

        /* read 'head' pointer */
        head = perf_mmap__read_head();

        /* check overwritten: is the header good? */
        if (!verify(sizeof(event.header), p, head))
            break;

        /* copy the whole event */
        fetch(&event, p, event.header.size);

        /* read 'head' pointer again */
        head = perf_mmap__read_head();

        /* is the whole event good? */
        if (!verify(event.header.size, p, head))
            break;
        p += event.header.size;
    }

However, the overhead is high because:

 a) In-place decoding is not safe.
    Copying-verifying-decoding is required.
 b) Fetching 'head' pointer requires additional synchronization.

(From Alexei Starovoitov:

Even when this trick works, pause is needed for more than stability of
reading. When we collect the events into overwrite buffer we're waiting
for some other trigger (like all cpu utilization spike or just one cpu
running and all others are idle) and when it happens the buffer has
valuable info from the past. At this point new events are no longer
interesting and buffer should be paused, events read and unpaused until
next trigger comes.)

This patch utilizes event's default overflow_handler introduced
previously. perf_event_output_backward() is created as the default
overflow handler for backward ring buffers. To avoid extra overhead to
fast path, original perf_event_output() becomes __perf_event_output()
and marked '__always_inline'. In theory, there's no extra overhead
introduced to fast path.

Performance testing:

Calling 3000000 times of 'close(-1)', use gettimeofday() to check
duration.  Use 'perf record -o /dev/null -e raw_syscalls:*' to capture
system calls. In ns.

Testing environment:

  CPU    : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
  Kernel : v4.5.0
                    MEAN         STDVAR
 BASE            800214.950    2853.083
 PRE1           2253846.700    9997.014
 PRE2           2257495.540    8516.293
 POST           2250896.100    8933.921

Where 'BASE' is pure performance without capturing. 'PRE1' is test
result of pure 'v4.5.0' kernel. 'PRE2' is test result before this
patch. 'POST' is test result after this patch. See [4] for the detailed
experimental setup.

Considering the stdvar, this patch doesn't introduce performance
overhead to the fast path.

 [1] http://lkml.iu.edu/hypermail/linux/kernel/1304.1/04584.html
 [2] http://lkml.iu.edu/hypermail/linux/kernel/1307.1/00535.html
 [3] http://lkml.iu.edu/hypermail/linux/kernel/1512.0/01265.html
 [4] http://lkml.kernel.org/g/56F89DCD.1040202@huawei.com

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Cc: <acme@kernel.org>
Cc: <pi3orama@163.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: Zefan Li <lizefan@huawei.com>
Link: http://lkml.kernel.org/r/1459865478-53413-1-git-send-email-wangnan0@huawei.com
[ Fixed the changelog some more. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>

Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-04-23 14:12:39 +02:00
..
amba
bcma bcma: move parallel flash support to separated file 2016-03-07 14:41:08 +02:00
byteorder
can
ceph mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
clk The clk changes for this release cycle are mostly dominated by 2016-03-23 06:06:45 -07:00
crush
decompress
dma
extcon
fpga
fsl powerpc/rcpm: add RCPM driver 2016-03-04 23:50:27 -06:00
gpio
hsi
i2c
iio
input
irqchip
isdn
lockd
mfd MMC core: 2016-03-21 14:35:52 -07:00
mlx4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2016-03-19 10:05:34 -07:00
mlx5 Round two of 4.6 merge window patches 2016-03-22 15:48:44 -07:00
mmc mmc: dw_mmc: remove DW_MCI_QUIRK_BROKEN_CARD_DETECTION quirk 2016-02-29 11:03:10 +01:00
mtd mtd: nand: don't select chip in nand_chip's block_bad op 2016-03-10 10:52:21 -08:00
netfilter netfilter: ipset: fix race condition in ipset save, swap and delete 2016-03-28 17:57:45 +02:00
netfilter_arp netfilter: xtables: prepare for on-demand hook register 2016-03-02 20:05:23 +01:00
netfilter_bridge
netfilter_ipv4 netfilter: xtables: prepare for on-demand hook register 2016-03-02 20:05:23 +01:00
netfilter_ipv6 netfilter: xtables: prepare for on-demand hook register 2016-03-02 20:05:23 +01:00
perf drivers/perf: arm_pmu: implement CPU_PM notifier 2016-02-26 14:37:06 +00:00
phy
pinctrl
platform_data MTD updates for v4.6 2016-03-24 19:57:15 -07:00
power power supply and reset changes for the v4.6 series 2016-03-17 12:50:55 -07:00
qed qed/qede: Add infrastructure support for hardware GRO 2016-03-07 15:01:39 -05:00
raid
regulator Merge remote-tracking branches 'regulator/topic/discharge', 'regulator/topic/fan53555', 'regulator/topic/gpio', 'regulator/topic/hi655x' and 'regulator/topic/lp872x' into regulator-next 2016-03-13 15:19:35 +07:00
reset
rtc
sched mm: move max_map_count bits into mm.h 2016-03-17 15:09:34 -07:00
soc Merge branch 'mailbox-for-next' of git://git.linaro.org/landing-teams/working/fujitsu/integration 2016-03-23 06:09:15 -07:00
spi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-03-17 21:51:52 -07:00
ssb
sunrpc mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
ulpi
unaligned include/linux/unaligned: force inlining of byteswap operations 2016-03-17 15:09:34 -07:00
usb USB: core: let USB device know device node 2016-03-05 12:05:01 -08:00
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_pmtmr.h
acpi.h
adb.h
adfs_fs.h
aer.h
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_bios.h
apm-emulation.h
apple_bl.h
apple-gmux.h
arm-cci.h
arm-smccc.h
asn1_ber_bytecode.h
asn1_decoder.h
asn1.h
assoc_array_priv.h
assoc_array.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h
ath9k_platform.h
atm_suni.h
atm_tcp.h
atm.h
atmdev.h
atmel_pdc.h
atmel_serial.h tty/serial: at91: fix bad offset for UART timeout register 2016-03-07 16:11:14 -08:00
atmel_tc.h
atmel-mci.h
atmel-ssc.h
atomic.h locking/atomic, sched: Unexport fetch_or() 2016-03-29 11:52:11 +02:00
attribute_container.h
audit.h
auto_dev-ioctl.h autofs4: fix string.h include in auto_dev-ioctl.h 2016-03-15 16:55:16 -07:00
auto_fs.h autofs4: coding style fixes 2016-03-15 16:55:16 -07:00
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
backing-dev.h
backlight.h
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
bfin_mac.h
binfmts.h
bio.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blk_types.h
blk-cgroup.h
blk-mq.h blk-mq: Use proper cpumask iterator 2016-03-20 09:34:02 -06:00
blkdev.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpf.h bpf: convert stackmap to pre-allocation 2016-03-08 15:28:31 -05:00
brcmphy.h net: phy: bcm7xxx: Add entries for Broadcom BCM7346 and BCM7362 2016-03-25 11:37:57 -04:00
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
bug.h mm: Some arch may want to use HPAGE_PMD related values as variables 2016-03-03 21:18:29 +11:00
c2port.h
cache.h
cacheinfo.h
capability.h cred/userns: define current_user_ns() as a function 2016-03-22 15:36:02 -07:00
cb710.h
cciss_ioctl.h
ccp.h crypto: ccp - CCP versioning support 2016-03-11 21:19:16 +08:00
cdev.h
cdrom.h
cfag12864b.h
cgroup_subsys.h
cgroup-defs.h cgroup: ignore css_sets associated with dead cgroups during migration 2016-03-16 13:31:46 -07:00
cgroup.h
circ_buf.h
cleancache.h
clk-provider.h clk: Make of_clk_get_parent_count() return unsigned ints 2016-02-26 16:01:32 -08:00
clk.h
clkdev.h
clock_cooling.h
clockchips.h
clocksource.h clocksource: Introduce clocksource_freq2mult() 2016-02-27 08:55:30 +01:00
cm4000_cs.h
cma.h
cmdline-parser.h
cn_proc.h
cnt32_to_63.h
coda_psdev.h
coda.h
compaction.h mm, compaction: introduce kcompactd 2016-03-17 15:09:34 -07:00
compat.h compat: add in_compat_syscall to ask whether we're in a compat syscall 2016-03-22 15:36:02 -07:00
compiler-clang.h
compiler-gcc.h compiler-gcc: disable -ftracer for __noclone functions 2016-04-05 14:19:08 +02:00
compiler-intel.h
compiler.h Merge commit 'fixes.2015.02.23a' into core/rcu 2016-03-15 09:01:06 +01:00
completion.h
component.h
concap.h
configfs.h configfs: fix CONFIGFS_BIN_ATTR_[RW]O definitions 2016-03-25 19:10:03 +01:00
connector.h
console_struct.h
console.h
consolemap.h
container.h
context_tracking_state.h
context_tracking.h
cordic.h
coredump.h
coresight-pmu.h
coresight.h
count_zeros.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h rcu: Make CPU_DYING_IDLE an explicit call 2016-03-01 20:36:58 +01:00
cpufeature.h
cpufreq-dt.h
cpufreq.h Merge branch 'pm-cpufreq-governor' into pm-cpufreq 2016-03-10 20:46:03 +01:00
cpuhotplug.h cpu/hotplug: Make wait for dead cpu completion based 2016-03-01 20:36:58 +01:00
cpuidle.h
cpumask.h cpumask: remove incorrect information from comment 2016-03-22 15:36:02 -07:00
cpuset.h
cputime.h
crash_dump.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h cred/userns: define current_user_ns() as a function 2016-03-22 15:36:02 -07:00
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h misc: at24: replace memory_accessor with nvmem_device_read 2016-03-01 16:55:48 -08:00
dax.h dax: move writeback calls into the filesystems 2016-02-27 10:28:52 -08:00
dca.h
dcache.h fs: add file_dentry() 2016-03-26 16:14:37 -04: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_cooling.h
devfreq-event.h
devfreq.h
device_cgroup.h
device-mapper.h dm snapshot: disallow the COW and origin devices from being identical 2016-03-10 17:12:09 -05:00
device.h The clk changes for this release cycle are mostly dominated by 2016-03-23 06:06:45 -07:00
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma_remapping.h
dma-attrs.h
dma-buf.h dma-buf, drm, ion: Propagate error code from dma_buf_start_cpu_access() 2016-03-19 11:03:49 +01:00
dma-contiguous.h
dma-debug.h
dma-direction.h
dma-iommu.h
dma-mapping.h virtio/vhost: new features, performance improvements, cleanups 2016-03-20 13:28:18 -07:00
dmaengine.h Merge branch 'topic/pl330' into for-linus 2016-03-14 11:18:12 +05:30
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd_genl_api.h
drbd_genl.h
drbd_limits.h
drbd.h
ds1286.h
ds2782_battery.h
ds17287rtc.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 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-20 18:58:18 -07:00
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h net: ethtool: remove unused __ethtool_get_settings 2016-02-25 22:06:47 -05:00
eventfd.h
eventpoll.h
evm.h
export.h
exportfs.h staging/lustre: proper support of NFS anonymous dentries 2016-02-25 22:12:26 -08:00
ext2_fs.h
extcon.h
f2fs_fs.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
f75375s.h
falloc.h
fanotify.h
fault-inject.h mm: fault-inject take over bootstrap kmem_cache check 2016-03-15 16:55:16 -07:00
fb.h fbdev: kill fb_rotate 2016-02-26 13:28:35 +02:00
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h
fec.h
fence.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-03-25 08:48:31 -07:00
file.h
filter.h tun, bpf: fix suspicious RCU usage in tun_{attach, detach}_filter 2016-04-01 14:33:46 -04: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 objtool: Add STACK_FRAME_NON_STANDARD() macro 2016-02-29 08:35:10 +01:00
freezer.h timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
frontswap.h
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fs.h These changes contains a fix for overlayfs interacting with some 2016-04-07 17:22:20 -07:00
fscache-cache.h
fscache.h
fscrypto.h fscrypto: don't let data integrity writebacks fail with ENOMEM 2016-04-12 10:25:30 -07:00
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsl-diu-fb.h
fsldma.h
fsnotify_backend.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-03-19 18:52:29 -07:00
fsnotify.h untangle fsnotify_d_instantiate() a bit 2016-03-14 00:17:28 -04:00
ftrace_irq.h
ftrace.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE 2016-03-17 15:09:34 -07:00
glob.h
goldfish.h
gpio_keys.h
gpio_mouse.h
gpio-fan.h
gpio-pxa.h
gpio.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_mlc.h
hil.h
hippidevice.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
htcpld.h
htirq.h
huge_mm.h include/linux/huge_mm.h: return NULL instead of false for pmd_trans_huge_lock() 2016-04-01 17:03:37 -05:00
hugetlb_cgroup.h
hugetlb_inline.h
hugetlb.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h Drivers: hv: util: Pass the channel information during the init call 2016-03-01 16:57:20 -08:00
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
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 bridge: allow zero ageing time 2016-03-11 14:58:58 -05:00
if_eql.h
if_ether.h
if_fddi.h
if_frad.h
if_link.h
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
igmp.h
ihex.h
ima.h
in6.h
in.h
inet_diag.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_task.h
init.h
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel_pmic_gpio.h
intel-iommu.h
intel-svm.h
interrupt.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
interval_tree_generic.h
interval_tree.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io.h memremap: add MEMREMAP_WC flag 2016-03-22 15:36:02 -07:00
ioc3.h
ioc4.h
iocontext.h
iommu-common.h
iommu-helper.h
iommu.h iommu: provide of_xlate pointer unconditionally 2016-04-05 13:25:12 +02:00
iopoll.h
ioport.h libnvdimm for 4.6 2016-03-16 17:45:56 -07:00
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h
ipc.h
ipmi_smi.h
ipmi-fru.h
ipmi.h
ipv6_route.h
ipv6.h net: ipv6: Make address flushing on ifdown optional 2016-02-25 21:45:15 -05:00
irq_cpustat.h
irq_poll.h
irq_work.h
irq.h Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-15 12:48:48 -07:00
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h Staging driver patches for 4.6-rc1 2016-03-17 22:13:41 -07:00
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h iscsi_ibft: Add prefix-len attr and display netmask 2016-03-14 10:30:57 -04:00
iscsi_ibft.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
jbd2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan.h mm, kasan: add GFP flags to KASAN API 2016-03-25 16:37:42 -07:00
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kcore.h
kcov.h kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_stat.h
kernel-page-flags.h
kernel.h Nothing major this round. Mostly small clean ups and fixes. 2016-03-24 10:52:25 -07:00
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.h
kfifo.h kfifo: fix sparse complaints 2016-03-22 15:36:02 -07:00
kgdb.h
khugepaged.h
klist.h
kmemcheck.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject_ns.h
kobject.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kthread.h
ktime.h
kvm_host.h
kvm_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_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h leds: core: avoid error message when a USB LED device is unplugged 2016-03-14 09:22:20 +01:00
lglock.h
lguest_launcher.h
lguest.h
libata.h
libfdt_env.h
libfdt.h
libnvdimm.h nfit: disable userspace initiated ars during scrub 2016-03-05 12:24:06 -08:00
libps2.h
license.h
lightnvm.h nvme: lightnvm: return ppa completion status 2016-03-18 18:10:38 -07:00
linkage.h
linux_logo.h
lis3lv02d.h
list_bl.h include/linux/list_bl.h: use bool instead of int for boolean functions 2016-03-17 15:09:34 -07:00
list_lru.h
list_nulls.h
list_sort.h
list.h list: kill list_force_poison() 2016-03-09 15:43:42 -08:00
livepatch.h livepatch/module: remove livepatch module notifier 2016-03-17 09:45:10 +01:00
llc.h
llist.h
lockdep.h
lockref.h
log2.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
lz4.h
lzo.h
m48t86.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 api for obtaining IO and DRAM window information 2016-03-14 12:19:46 -04:00
mc6821.h
mc146818rtc.h
mcb.h
mdio-bitbang.h
mdio-mux.h
mdio.h
mei_cl_bus.h
memblock.h
memcontrol.h mm: workingset: make shadow node shrinker memcg aware 2016-03-17 15:09:34 -07:00
memory_hotplug.h mm/compaction: speed up pageblock_pfn_to_page() when zone is contiguous 2016-03-15 16:55:16 -07:00
memory.h Char/Misc patches for 4.6-rc1 2016-03-17 13:47:50 -07:00
mempolicy.h
mempool.h
memremap.h
memstick.h
mg_disk.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate_mode.h
migrate.h mm, page_owner: track and print last migrate reason 2016-03-15 16:55:16 -07:00
mii.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h isdn: Use ktime_t instead of 'struct timeval' 2016-03-20 16:47:13 -04:00
mm_inline.h
mm_types.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
mm-arch-hooks.h
mm.h Merge branch 'mm-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-04-14 19:31:34 -07:00
mman.h
mmdebug.h mm, debug: move bad flags printing to bad_page() 2016-03-15 16:55:16 -07:00
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: scale kswapd watermarks in proportion to memory 2016-03-17 15:09:34 -07:00
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h
mroute.h
msdos_fs.h
msg.h
msi.h
mutex-debug.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h namei: teach lookup_slow() to skip revalidate 2016-03-14 00:15:46 -04:00
nd.h libnvdimm: async notification support 2016-03-05 12:24:06 -08:00
net.h net: Make sock_alloc exportable 2016-03-09 16:36:13 -05:00
netdev_features.h
netdevice.h GRE: Disable segmentation offloads w/ CSUM and we are encapsulated via FOU 2016-04-07 16:56:33 -04:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h netfilter: don't call hooks unless needed 2016-03-02 20:05:26 +01:00
netlink.h
netpoll.h
nfs3.h
nfs4.h nfs4.h: add SCSI layout definitions 2016-03-17 14:57:16 -04:00
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_iostat.h
nfs_page.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
nfs_xdr.h
nfs.h
nfsacl.h
nilfs2_fs.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
nl802154.h
nls.h
nmi.h x86/apic: Remove declaration of unused hw_nmi_is_cpu_stuck 2016-03-23 12:34:17 +01:00
node.h
nodemask.h
notifier.h rcu: Make CPU_DYING_IDLE an explicit call 2016-03-01 20:36:58 +01:00
ns_common.h
nsc_gpio.h
nsproxy.h
ntb_transport.h
ntb.h NTB: Make _addr functions optional in the API 2016-03-21 19:30:06 -04:00
nubus.h
numa.h
nvme.h
nvmem-consumer.h
nvmem-provider.h nvmem: Add backwards compatibility support for older EEPROM drivers. 2016-03-01 16:55:48 -08:00
nvram.h
of_address.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_mtd.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of_reserved_mem.h
of.h DeviceTree updates for 4.6: 2016-03-19 15:15:07 -07:00
oid_registry.h
olpc-ec.h
omap-dma.h
omap-dmaengine.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h include/linux/oom.h: remove undefined oom_kills_count()/note_oom_kill() 2016-03-25 16:37:42 -07:00
openvswitch.h
oprofile.h
osq_lock.h
oxu210hp.h
padata.h
page_counter.h
page_ext.h mm, page_owner: track and print last migrate reason 2016-03-15 16:55:16 -07:00
page_idle.h
page_owner.h mm, page_owner: dump page owner info from dump_page() 2016-03-15 16:55:16 -07:00
page_ref.h mm/page_ref: add tracepoint to track down page reference manipulation 2016-03-17 15:09:34 -07:00
page-flags-layout.h mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE 2016-03-17 15:09:34 -07:00
page-flags.h include/linux/page-flags.h: force inlining of selected page flag modifications 2016-03-17 15:09:34 -07:00
page-isolation.h
pageblock-flags.h
pagemap.h mm: drop PAGE_CACHE_* and page_cache_{get,release} definition 2016-04-04 10:41:08 -07:00
pagevec.h
parport_pc.h
parport.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h
pci_ids.h PCI: Add PCI_CLASS_SERIAL_USB_DEVICE definition 2016-03-15 08:52:28 -05:00
pci-acpi.h
pci-aspm.h
pci-ats.h
pci-dma-compat.h PCI: Consolidate PCI DMA constants and interfaces in linux/pci-dma-compat.h 2016-03-07 11:39:16 -06:00
pci-dma.h
pci.h powerpc updates for 4.6 2016-03-19 15:38:41 -07:00
pcieport_if.h
pda_power.h
pe.h
percpu_counter.h
percpu_ida.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
perf_event.h perf/core: Add ::write_backward attribute to perf event 2016-04-23 14:12:39 +02:00
perf_regs.h
personality.h
pfn_t.h
pfn.h
phonet.h
phy_fixed.h phy: fixed: Fix removal of phys. 2016-03-14 15:43:11 -04:00
phy.h phy: remove documentation of removed members of phy_device structure 2016-03-13 22:11:43 -04:00
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm2301_charger.h
pm_clock.h PM / clk: Add support for obtaining clocks from device-tree 2016-03-17 02:32:04 +01:00
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pm-trace.h
pm.h
pmem.h pmem: fix BUG() error in pmem.h:48 on X86_32 2016-04-14 09:01:47 -06:00
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h mm/page_poisoning.c: allow for zero poisoning 2016-03-15 16:55:16 -07:00
poll.h timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
posix_acl_xattr.h
posix_acl.h
posix-clock.h
posix-timers.h posix-cpu-timers: Migrate to use new tick dependency mask model 2016-03-02 16:44:27 +01:00
power_supply.h
powercap.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h time: Remove duplicated code in ktime_get_raw_and_real() 2016-03-02 17:13:02 -08:00
pps-gpio.h
pr.h
preempt.h
prefetch.h
printk.h
proc_fs.h
proc_ns.h
profile.h
projid.h
property.h
proportions.h
psci.h
pstore_ram.h pstore: Add support for 64 Bit address space 2016-03-10 09:43:36 -08:00
pstore.h
pti.h
ptp_classify.h
ptp_clock_kernel.h ptp: Add PTP_SYS_OFFSET_PRECISE for driver crosstimestamping 2016-03-03 14:23:43 -08:00
ptrace.h
pvclock_gtod.h
pwm_backlight.h
pwm.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h fix Christoph's email addresses 2016-03-17 15:09:34 -07:00
quota.h
quotaops.h
radix-tree.h radix-tree,shmem: introduce radix_tree_iter_next() 2016-03-17 15:09:34 -07:00
raid_class.h
ramfs.h
random.h drivers: char: random: add get_random_long() 2016-02-27 10:28:52 -08:00
range.h
ras.h
ratelimit.h
rational.h
rbtree_augmented.h
rbtree_latch.h
rbtree.h
rcu_sync.h
rculist_bl.h
rculist_nulls.h
rculist.h rcu: Add list_next_or_null_rcu 2016-03-09 16:36:13 -05:00
rcupdate.h Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-15 13:50:29 -07:00
rcutiny.h
rcutree.h
reboot.h
reciprocal_div.h
regmap.h Merge remote-tracking branch 'regmap/topic/update-bits' into regmap-next 2016-03-05 21:30:41 +09:00
regset.h
relay.h
remoteproc.h
reservation.h
reset-controller.h
reset.h
resource_ext.h
resource.h
rfkill-regulator.h
rfkill.h
rhashtable.h
ring_buffer.h
rio_drv.h rapidio: add outbound window support 2016-03-22 15:36:02 -07:00
rio_ids.h
rio_mport_cdev.h rapidio: add mport char device driver 2016-03-22 15:36:02 -07:00
rio_regs.h rapidio: add query_mport operation 2016-03-22 15:36:02 -07:00
rio.h rapidio: add outbound window support 2016-03-22 15:36:02 -07:00
rmap.h mm: make remove_migration_ptes() beyond mm/migration.c 2016-03-17 15:09:34 -07:00
rmi.h Input: synaptics-rmi4 - add SPI transport driver 2016-03-10 16:04:24 -08:00
rndis.h
root_dev.h
rpmsg.h
rslib.h
rtc-ds2404.h
rtc-v3020.h
rtc.h rtc: Add functions to set and read rtc offset 2016-03-14 17:08:15 +01:00
rtmutex.h
rtnetlink.h
rwlock_api_smp.h
rwlock_types.h
rwlock.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h
sa11x0-dma.h
scatterlist.h
scc.h
sched_clock.h
sched.h timers/nohz: Convert tick dependency mask to atomic_t 2016-03-29 11:52:11 +02:00
scif.h
scpi_protocol.h
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
selection.h
selinux.h
sem.h
semaphore.h
seq_buf.h
seq_file_net.h
seq_file.h Make file credentials available to the seqfile interfaces 2016-04-14 12:56:09 -07:00
seqlock.h
seqno-fence.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
sfi_acpi.h
sfi.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
skbuff.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
slab_def.h mm, kasan: SLAB support 2016-03-25 16:37:42 -07:00
slab.h mm, kasan: add GFP flags to KASAN API 2016-03-25 16:37:42 -07:00
slub_def.h mm, kasan: SLAB support 2016-03-25 16:37:42 -07:00
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h kcm: Kernel Connection Multiplexor module 2016-03-09 16:36:14 -05:00
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h
spmi.h
srcu.h
ssbi.h
stackdepot.h mm, kasan: stackdepot implementation. Enable stackdepot for SLAB 2016-03-25 16:37:42 -07:00
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
ste_modem_shm.h
stm.h
stmmac.h stmmac: fix MDIO settings 2016-04-01 14:38:59 -04:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h lib: move strtobool() to kstrtobool() 2016-03-17 15:09:34 -07:00
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap_cgroup.h
swap.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
swapfile.h
swapops.h
swiotlb.h
sxgbe_platform.h
synclink.h
sys_soc.h
sys.h
syscalls.h vfs: vfs: Define new syscalls preadv2,pwritev2 2016-03-04 12:20:10 -05:00
syscore_ops.h
sysctl.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h
task_io_accounting_ops.h
task_io_accounting.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h tcp: Add RFC4898 tcpEStatsPerfDataSegsOut/In 2016-03-14 14:55:26 -04:00
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h Thermal: Ignore invalid trip points 2016-03-18 14:10:57 +08:00
thinkpad_acpi.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h param: convert some "on"/"off" users to strtobool 2016-03-17 15:09:34 -07:00
tifm.h
timb_dma.h
timb_gpio.h
time64.h
time.h
timecounter.h
timekeeper_internal.h time: Add history to cross timestamp interface supporting slower devices 2016-03-02 17:13:17 -08:00
timekeeping.h time: Add history to cross timestamp interface supporting slower devices 2016-03-02 17:13:17 -08:00
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
topology.h
torture.h
toshiba.h
tpm_command.h
tpm.h
trace_clock.h
trace_events.h Nothing major this round. Mostly small clean ups and fixes. 2016-03-24 10:52:25 -07:00
trace_seq.h
tracefs.h
tracehook.h
tracepoint-defs.h tracepoints: move trace_print_flags definitions to tracepoint-defs.h 2016-03-15 16:55:16 -07:00
tracepoint.h tracing: Fix check for cpu online when event is disabled 2016-03-09 11:58:41 -05:00
transport_class.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h
typecheck.h
types.h
u64_stats_sync.h
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uinput.h
uio_driver.h
uio.h
uprobes.h
usb_usual.h USB: uas: Add a new NO_REPORT_LUNS quirk 2016-04-13 12:02:28 -07:00
usb.h
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
uwb.h
verify_pefile.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via_i2c.h
via-core.h
via-gpio.h
via.h
videodev2.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_mmio.h
virtio_ring.h virtio: Add improved queue allocation API 2016-03-02 17:01:57 +02:00
virtio.h virtio: Add improved queue allocation API 2016-03-02 17:01:57 +02:00
vlynq.h
vm_event_item.h thp, vmstats: count deferred split events 2016-03-17 15:09:34 -07:00
vm_sockets.h
vmacache.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt_buffer.h
vt_kern.h
vt.h
vtime.h
w1-gpio.h
wait.h
wanrouter.h
watchdog.h watchdog: Add support for minimum time between heartbeats 2016-03-16 21:11:19 +01:00
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
workqueue.h
writeback.h writeback: flush inode cgroup wb switches instead of pinning super_block 2016-03-03 14:42:50 -07:00
ww_mutex.h
xattr.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zutil.h