Hi,
Thank you Steven and Daniel for reviewing v1 and providing suggestions.
These set of patches [v2] capture latency events caused by interrupts and
premption disabled in kernel. The patches are based on the hist trigger
feature developed by Tom Zanussi.
Git-commit: 7ef224d1d0e3a1ade02d02c01ce1dcffb736d2c3
As mentioned by Daniel, there is also a good write up in the following
blog by Brendan Gregg:
http://www.brendangregg.com/blog/2016-06-08/linux-hist-triggers.html
The perf interface for the same have not been developed yet.
Related efforts: https://patchwork.kernel.org/patch/8439401
hwlat_detector tracer:
https://lkml.org/lkml/2016/8/4/348https://lkml.org/lkml/2016/8/4/346
The patch series also contains histogram triggers for missed
hrtimer offsets.
Dependencies:
CONFIG_IRQSOFF_TRACER
CONFIG_PREEMPT_TRACER
CONFIG_PROVE_LOCKING
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
Usage of triggers to generate histograms:
mount -t debugfs nodev /sys/kernel/debug
echo 'hist:key=latency.log2:val=hitcount:sort=latency' > /sys/kernel/debug/tracing/events/latency/latency_irqs/trigger
echo 'hist:key=common_pid.execname' > /sys/kernel/debug/tracing/events/latency/latency_hrtimer_interrupt/trigger
CPU specific breakdown of events:
echo 'hist:key=cpu,latency:val=hitcount:sort=latency' > /sys/kernel/debug/tracing/events/latency/latency_preempt/trigger
echo 'hist:key=cpu,latency:val=hitcount:sort=latency if cpu==1' > /sys/kernel/debug/tracing/events/latency/latency_preempt/trigger
Histogram output:
cat /sys/kernel/debug/tracing/events/latency/latency_irqs/hist
cat /sys/kernel/debug/tracing/events/latency/latency_preempt/hist
cat /sys/kernel/debug/tracing/events/latency/latency_critical_timings/hist
cat /sys/kernel/debug/tracing/events/latency/latency_hrtimer_interrupt/hist
Disable a trigger:
echo '!hist:key=latency.log2' > /sys/kernel/debug/tracing/events/latency/latency_irqs/trigger
Changes from v1 as per comments from Steven/Daniel
- Use single tracepoint for irq/preempt/critical timings by introducing
a trace type field to differentiate trace type in the same tracepoint.
A suspicious RCU usage error was introduced, while using the trigger
command by mentioning the trace type as a key along with cpu.
I couldn't figure out why. Also, this type of arrangement may also
be substandard performance vice.
- Using a more accurate fast local clock instead of a global ftrace clock.
TODO:
1. perf interface. Not sure if this is needed
2. Latency histograms - process wakeup latency
- Suggestion from Daniel to not introduce tracepoints in scheduler's hotpaths
- Alternative to attach kprobes to functions which falls in critical paths
and find diff of timestamps using event trigger commands.
For example:
echo "p:myprobe1 start_critical_timings" > /sys/kernel/debug/tracing/kprobe_events
echo "p:myprobe2 stop_critical_timings" >> /sys/kernel/debug/tracing/kprobe_events
cat /sys/kernel/debug/tracing/kprobe_events
echo 1 > /sys/kernel/debug/tracing/events/kprobes/myprobe1/enable
echo 1 > /sys/kernel/debug/tracing/events/kprobes/myprobe2/enable
cat /sys/kernel/debug/tracing/kprobe_events
And somehow save the timestamps for 'myprobe1' and 'myprobe2' in
'event_hist_trigger()'. This seems not feasible now as the histogram
data is saved as a 'sum' only for the conditions met in the key definition.
This makes it impossible to save timestamps for individual events.
kernel/trace/trace_events_hist.c +840: hist_trigger_elt_update()
Mhiramat and Steve, suggested an alternative to keep this timestamp is
to create a new ftrace map, store the timestamp with context "key" on the
named map upon event start. Then, at the event end trigger the histogram,
pick timestamp from the map by using context "key" and calculate the
difference. Basically this needs is a "map" which can be accessed from both
the events, .i.e that is the "global variable".
Binoy
Binoy Jayan (2):
tracing: Add trace_irqsoff tracepoints
tracing: Histogram for missed timer offsets
Daniel Wagner (1):
tracing: Deference pointers without RCU checks
include/linux/hrtimer.h | 3 ++
include/linux/rculist.h | 36 ++++++++++++++++++
include/linux/tracepoint.h | 4 +-
include/trace/events/latency.h | 74 +++++++++++++++++++++++++++++++++++++
kernel/time/hrtimer.c | 39 +++++++++++++++++++
kernel/trace/trace_events_trigger.c | 6 +--
kernel/trace/trace_irqsoff.c | 42 ++++++++++++++++++++-
7 files changed, 198 insertions(+), 6 deletions(-)
create mode 100644 include/trace/events/latency.h
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
Tree/Branch: v3.10.103
Git describe: v3.10.103
Commit: 2ecaf1d025 Linux 3.10.103
Build Time: 45 min 31 sec
Passed: 8 / 8 (100.00 %)
Failed: 0 / 8 ( 0.00 %)
Errors: 0
Warnings: 77
Section Mismatches: 0
-------------------------------------------------------------------------------
defconfigs with issues (other than build errors):
2 warnings 0 mismatches : arm64-allnoconfig
28 warnings 0 mismatches : arm64-allmodconfig
5 warnings 0 mismatches : arm-multi_v7_defconfig
3 warnings 0 mismatches : x86_64-defconfig
55 warnings 0 mismatches : arm-allmodconfig
2 warnings 0 mismatches : arm-allnoconfig
2 warnings 0 mismatches : x86_64-allnoconfig
7 warnings 0 mismatches : arm64-defconfig
-------------------------------------------------------------------------------
Warnings Summary: 77
6 /home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
5 /home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
4 /home/broonie/build/linux-stable/scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized]
4 /home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:162:3: warning: value computed is not used [-Wunused-value]
3 /home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
3 /home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
3 /home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:74:3: warning: value computed is not used [-Wunused-value]
2 /home/broonie/build/linux-stable/include/linux/dynamic_debug.h:78:3: warning: unsupported argument to '__builtin_return_address'
2 /home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
2 /home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
2 /home/broonie/build/linux-stable/drivers/net/wireless/iwlwifi/mvm/fw.c:90:64: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
2 /home/broonie/build/linux-stable/drivers/net/ethernet/smsc/smc91x.c:1899:7: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
2 /home/broonie/build/linux-stable/Documentation/misc-devices/mei/mei-amt-version.c:103:5: warning: 'acmd.fd' is used uninitialized in this function [-Wuninitialized]
1 /home/broonie/build/linux-stable/sound/soc/codecs/max98090.c:2354:12: warning: 'max98090_runtime_suspend' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/sound/soc/codecs/max98090.c:2341:12: warning: 'max98090_runtime_resume' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/net/sunrpc/xprtrdma/verbs.c:1774:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/kernel/auditfilter.c:426:3: warning: this decimal constant is unsigned only in ISO C90
1 /home/broonie/build/linux-stable/include/linux/kernel.h:676:17: warning: comparison of distinct pointer types lacks a cast
1 /home/broonie/build/linux-stable/include/linux/kern_levels.h:4:18: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'resource_size_t {aka long long unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/include/linux/clocksource.h:345:20: warning: comparison of distinct pointer types lacks a cast
1 /home/broonie/build/linux-stable/drivers/video/aty/radeon_pm.c:1718:13: warning: 'radeon_reinitialize_M10' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/drivers/usb/host/xhci.c:3603:17: warning: unused variable 'dev' [-Wunused-variable]
1 /home/broonie/build/linux-stable/drivers/usb/host/xhci.c:3517:17: warning: unused variable 'dev' [-Wunused-variable]
1 /home/broonie/build/linux-stable/drivers/staging/wlan-ng/prism2fw.c:795:1: warning: the frame size of 1072 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/staging/vt6655/iwctl.c:758:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/staging/vt6655/device_main.c:3257:1: warning: the frame size of 1864 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/staging/sm7xxfb/sm7xxfb.c:117:19: warning: 'sm7xx_vga_setup' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/drivers/spi/spi-pl022.c:281:31: warning: large integer implicitly truncated to unsigned type [-Woverflow]
1 /home/broonie/build/linux-stable/drivers/spi/spi-gpio.c:255:8: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/scsi/pm8001/pm8001_init.c:427:5: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
1 /home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:8517:5: warning: case value '257' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
1 /home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:8510:5: warning: case value '513' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
1 /home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:7901:5: warning: case value '257' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
1 /home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:7898:5: warning: case value '513' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
1 /home/broonie/build/linux-stable/drivers/regulator/tps62360-regulator.c:364:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/power/twl4030_charger.c:192:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/power/pm2301_charger.c:725:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/power/ab8500_charger.c:1558:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/power/ab8500_charger.c:1389:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/pinctrl/pinctrl-bcm2835.c:1053:2: warning: ignoring return value of 'gpiochip_remove', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/pinctrl/pinctrl-bcm2835.c:1036:3: warning: ignoring return value of 'gpiochip_remove', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/net/wireless/ti/wlcore/spi.c:321:1: warning: the frame size of 8688 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/net/ethernet/sfc/selftest.c:389:9: warning: passing argument 1 of 'memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
1 /home/broonie/build/linux-stable/drivers/net/ethernet/neterion/vxge/vxge-main.c:2143:13: warning: 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/drivers/net/ethernet/neterion/vxge/vxge-main.c:2115:13: warning: 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/drivers/net/ethernet/dec/tulip/winbond-840.c:911:2: warning: #warning Processor architecture undefined [-Wcpp]
1 /home/broonie/build/linux-stable/drivers/net/ethernet/amd/nmclan_cs.c:625:3: warning: 'pcmcia_request_exclusive_irq' is deprecated [-Wdeprecated-declarations]
1 /home/broonie/build/linux-stable/drivers/mtd/chips/cfi_cmdset_0020.c:654:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/mmc/host/tmio_mmc_pio.c:798:3: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/misc/lkdtm.c:276:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/mfd/tps65217.c:173:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/media/platform/omap3isp/ispccp2.c:167:3: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/media/platform/coda.c:952:40: warning: array subscript is above array bounds [-Warray-bounds]
1 /home/broonie/build/linux-stable/drivers/media/platform/coda.c:944:39: warning: array subscript is above array bounds [-Warray-bounds]
1 /home/broonie/build/linux-stable/drivers/iommu/omap-iommu.c:1245:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'dma_addr_t {aka unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/drivers/iommu/omap-iommu.c:1238:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'dma_addr_t {aka unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/drivers/input/keyboard/cros_ec_keyb.c:210:13: warning: 'cros_ec_keyb_clear_keyboard' defined but not used [-Wunused-function]
1 /home/broonie/build/linux-stable/drivers/input/joystick/analog.c:171:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp]
1 /home/broonie/build/linux-stable/drivers/infiniband/hw/nes/nes_hw.c:92:23: warning: 'nes_tcp_state_str' defined but not used [-Wunused-variable]
1 /home/broonie/build/linux-stable/drivers/infiniband/hw/nes/nes_hw.c:81:23: warning: 'nes_iwarp_state_str' defined but not used [-Wunused-variable]
1 /home/broonie/build/linux-stable/drivers/infiniband/hw/cxgb4/mem.c:79:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/iio/adc/exynos_adc.c:111:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/gpu/drm/exynos/exynos_hdmi.c:1702:2: warning: ignoring return value of 'regulator_bulk_enable', declared with attribute warn_unused_result [-Wunused-result]
1 /home/broonie/build/linux-stable/drivers/gpio/gpio-mcp23s08.c:622:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/dma/pl330.c:2379:21: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
1 /home/broonie/build/linux-stable/drivers/dma/pl330.c:2058:5: warning: passing argument 3 of 'dma_alloc_coherent' from incompatible pointer type [-Wincompatible-pointer-types]
1 /home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:920:5: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'size_t {aka long unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:848:31: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t {aka long long unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:848:31: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'dma_addr_t {aka long long unsigned int}' [-Wformat=]
1 /home/broonie/build/linux-stable/drivers/block/mtip32xx/mtip32xx.c:2827:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1 /home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:383:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
1 /home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:380:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
1 /home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:377:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
1 /home/broonie/build/linux-stable/arch/arm/mm/init.c:731:35: warning: passing argument 2 of 'free_reserved_area' makes integer from pointer without a cast [-Wint-conversion]
1 /home/broonie/build/linux-stable/arch/arm/mm/init.c:731:21: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [-Wint-conversion]
1 /home/broonie/build/linux-stable/arch/arm/mach-omap2/board-am3517crane.c:113:6: warning: unused variable 'ret' [-Wunused-variable]
===============================================================================
Detailed per-defconfig build reports below:
-------------------------------------------------------------------------------
arm64-allnoconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm64-allmodconfig : PASS, 0 errors, 28 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:74:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:74:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:74:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/sound/soc/codecs/max98090.c:2341:12: warning: 'max98090_runtime_resume' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/sound/soc/codecs/max98090.c:2354:12: warning: 'max98090_runtime_suspend' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:848:31: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'dma_addr_t {aka long long unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:848:31: warning: format '%x' expects argument of type 'unsigned int', but argument 7 has type 'dma_addr_t {aka long long unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/drivers/dma/amba-pl08x.c:920:5: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'size_t {aka long unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/drivers/dma/pl330.c:2058:5: warning: passing argument 3 of 'dma_alloc_coherent' from incompatible pointer type [-Wincompatible-pointer-types]
/home/broonie/build/linux-stable/drivers/dma/pl330.c:2379:21: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/gpio/gpio-mcp23s08.c:622:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/iio/adc/exynos_adc.c:111:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:162:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/input/joystick/analog.c:171:2: warning: #warning Precise timer not defined for this architecture. [-Wcpp]
/home/broonie/build/linux-stable/drivers/input/keyboard/cros_ec_keyb.c:210:13: warning: 'cros_ec_keyb_clear_keyboard' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/mfd/tps65217.c:173:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:162:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/drivers/net/ethernet/smsc/smc91x.c:1899:7: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/regulator/tps62360-regulator.c:364:13: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:162:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/drivers/spi/spi-gpio.c:255:8: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/spi/spi-pl022.c:281:31: warning: large integer implicitly truncated to unsigned type [-Woverflow]
/home/broonie/build/linux-stable/include/linux/kern_levels.h:4:18: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'resource_size_t {aka long long unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/net/wireless/ti/wlcore/spi.c:321:1: warning: the frame size of 8688 bytes is larger than 2048 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/Documentation/misc-devices/mei/mei-amt-version.c:103:5: warning: 'acmd.fd' is used uninitialized in this function [-Wuninitialized]
-------------------------------------------------------------------------------
arm-multi_v7_defconfig : PASS, 0 errors, 5 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
x86_64-defconfig : PASS, 0 errors, 3 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
-------------------------------------------------------------------------------
arm-allmodconfig : PASS, 0 errors, 55 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/arch/arm/mm/init.c:731:21: warning: passing argument 1 of 'free_reserved_area' makes integer from pointer without a cast [-Wint-conversion]
/home/broonie/build/linux-stable/arch/arm/mm/init.c:731:35: warning: passing argument 2 of 'free_reserved_area' makes integer from pointer without a cast [-Wint-conversion]
/home/broonie/build/linux-stable/arch/arm/mach-omap2/board-am3517crane.c:113:6: warning: unused variable 'ret' [-Wunused-variable]
/home/broonie/build/linux-stable/kernel/auditfilter.c:426:3: warning: this decimal constant is unsigned only in ISO C90
/home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:377:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:380:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/drivers/ata/pata_hpt366.c:383:9: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/include/linux/kernel.h:676:17: warning: comparison of distinct pointer types lacks a cast
/home/broonie/build/linux-stable/drivers/block/mtip32xx/mtip32xx.c:2827:1: warning: the frame size of 1080 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/include/linux/clocksource.h:345:20: warning: comparison of distinct pointer types lacks a cast
/home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/gpu/drm/exynos/exynos_hdmi.c:1702:2: warning: ignoring return value of 'regulator_bulk_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/infiniband/hw/cxgb4/mem.c:79:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/net/sunrpc/xprtrdma/verbs.c:1774:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/infiniband/hw/nes/nes_hw.c:81:23: warning: 'nes_iwarp_state_str' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/infiniband/hw/nes/nes_hw.c:92:23: warning: 'nes_tcp_state_str' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/iommu/omap-iommu.c:1238:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'dma_addr_t {aka unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/drivers/iommu/omap-iommu.c:1245:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 4 has type 'dma_addr_t {aka unsigned int}' [-Wformat=]
/home/broonie/build/linux-stable/include/linux/dynamic_debug.h:78:3: warning: unsupported argument to '__builtin_return_address'
/home/broonie/build/linux-stable/include/linux/dynamic_debug.h:78:3: warning: unsupported argument to '__builtin_return_address'
/home/broonie/build/linux-stable/drivers/misc/lkdtm.c:276:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/mtd/chips/cfi_cmdset_0020.c:654:1: warning: the frame size of 1192 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/mmc/host/tmio_mmc_pio.c:798:3: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/media/platform/omap3isp/ispccp2.c:167:3: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/pinctrl/pinctrl-bcm2835.c:1053:2: warning: ignoring return value of 'gpiochip_remove', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/pinctrl/pinctrl-bcm2835.c:1036:3: warning: ignoring return value of 'gpiochip_remove', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/power/ab8500_charger.c:1389:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/power/ab8500_charger.c:1558:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/media/platform/coda.c:944:39: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/media/platform/coda.c:952:40: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/power/pm2301_charger.c:725:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/net/ethernet/amd/nmclan_cs.c:625:3: warning: 'pcmcia_request_exclusive_irq' is deprecated [-Wdeprecated-declarations]
/home/broonie/build/linux-stable/drivers/power/twl4030_charger.c:192:4: warning: ignoring return value of 'regulator_enable', declared with attribute warn_unused_result [-Wunused-result]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/net/ethernet/dec/tulip/winbond-840.c:911:2: warning: #warning Processor architecture undefined [-Wcpp]
/home/broonie/build/linux-stable/drivers/scsi/pm8001/pm8001_init.c:427:5: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/net/ethernet/neterion/vxge/vxge-main.c:2115:13: warning: 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/net/ethernet/neterion/vxge/vxge-main.c:2143:13: warning: 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/usb/host/xhci.c:3517:17: warning: unused variable 'dev' [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/usb/host/xhci.c:3603:17: warning: unused variable 'dev' [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:7901:5: warning: case value '257' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
/home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:7898:5: warning: case value '513' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
/home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:8517:5: warning: case value '257' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
/home/broonie/build/linux-stable/drivers/scsi/aic7xxx_old.c:8510:5: warning: case value '513' not in enumerated type 'ahc_chip {aka enum <anonymous>}' [-Wswitch]
/home/broonie/build/linux-stable/drivers/scsi/ips.c:210:2: warning: #warning "This driver has only been tested on the x86/ia64/x86_64 platforms" [-Wcpp]
/home/broonie/build/linux-stable/drivers/staging/sm7xxfb/sm7xxfb.c:117:19: warning: 'sm7xx_vga_setup' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/net/ethernet/sfc/selftest.c:389:9: warning: passing argument 1 of 'memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/drivers/staging/vt6655/device_main.c:3257:1: warning: the frame size of 1864 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/staging/vt6655/iwctl.c:758:1: warning: the frame size of 1280 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/video/aty/radeon_pm.c:1718:13: warning: 'radeon_reinitialize_M10' defined but not used [-Wunused-function]
/home/broonie/build/linux-stable/drivers/staging/wlan-ng/prism2fw.c:795:1: warning: the frame size of 1072 bytes is larger than 1024 bytes [-Wframe-larger-than=]
/home/broonie/build/linux-stable/drivers/net/wireless/iwlwifi/mvm/fw.c:90:64: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/drivers/net/wireless/iwlwifi/mvm/fw.c:90:64: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-array-qualifiers]
/home/broonie/build/linux-stable/Documentation/misc-devices/mei/mei-amt-version.c:103:5: warning: 'acmd.fd' is used uninitialized in this function [-Wuninitialized]
-------------------------------------------------------------------------------
arm-allnoconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/fs/namespace.c:2586:6: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
x86_64-allnoconfig : PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/scripts/sortextable.h:158:3: warning: 'relocs_size' may be used uninitialized in this function [-Wmaybe-uninitialized]
-------------------------------------------------------------------------------
arm64-defconfig : PASS, 0 errors, 7 warnings, 0 section mismatches
Warnings:
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_dev' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/fs/namespace.c:2586:8: warning: 'kernel_type' may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/broonie/build/linux-stable/arch/arm64/include/asm/cmpxchg.h:162:3: warning: value computed is not used [-Wunused-value]
/home/broonie/build/linux-stable/net/core/sysctl_net_core.c:24:12: warning: 'one' defined but not used [-Wunused-variable]
/home/broonie/build/linux-stable/drivers/net/ethernet/smsc/smc91x.c:1899:7: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
/home/broonie/build/linux-stable/drivers/tty/sysrq.c:907:33: warning: array subscript is above array bounds [-Warray-bounds]
-------------------------------------------------------------------------------
Passed with no errors, warnings or mismatches:
Hi Alex, Mark,
Please consider following linaro-android pull request for
"linux-linaro-lsk-v3.18-android" LSK branch.
Heads up for this pretty big pull request. Other than regular
net/gadget fixups, a lot of new patches/backports ranging from
scheduler(core, cfs task boosting, eas, walt etc) to Kcov code
coverage landed in aosp/android-3.18.
Regards,
Amit Pundir
The following changes since commit 6fea883f6cd573ce8449ddf75ab59a75aa0df292:
Merge branch 'linux-linaro-lsk-v3.18' into
linux-linaro-lsk-v3.18-android (2016-08-23 12:31:02 +0800)
are available in the git repository at:
git://android.git.linaro.org/kernel/linaro-android.git lsk-v3.18-android
for you to fetch changes up to 0a77803d23ea9f490536fad1770d7d7b03eef3fd:
sched/walt: include missing header for arm_timer_read_counter()
(2016-08-26 10:50:11 +0530)
----------------------------------------------------------------
Al Viro (1):
BACKPORT: ecryptfs: fix handling of directory opening
Amit Pundir (3):
ANDROID: net: fib: remove duplicate assignment
sched/walt: use do_div instead of division operator
sched/walt: include missing header for arm_timer_read_counter()
Anson Jacob (1):
usb: gadget: f_accessory: remove duplicate endpoint alloc
Boqun Feng (1):
sched/fair: Clean up the __sched_period() code
Byungchul Park (9):
sched/fair: Fix a comment reflecting function name change
sched: Ensure a task has a non-normalized vruntime when
returning back to CFS
sched/fair: Factor out the {at,de}taching of the per entity load
{to,from} the runqueue
sched/fair: Have task_move_group_fair() unconditionally add the
entity load to the runqueue
sched/fair: Have task_move_group_fair() also detach entity load
from the old runqueue
sched/fair: Fix switched_to_fair()'s per entity load tracking
sched/fair: Unify switched_{from,to}_fair() and task_move_group_fair()
sched/fair: Modify the comment about lock assumptions in
migrate_task_rq_fair()
sched/fair: Make it possible to account fair load avg consistently
Chris Redpath (1):
arch_timer: add error handling when the MPM global timer is cleared
Christoph Lameter (1):
vmstat: make vmstat_updater deferrable again and shut down on idle
Dietmar Eggemann (22):
sched/fair: Make load tracking frequency scale-invariant
sched/fair: Make utilization tracking CPU scale-invariant
sched/fair: Name utilization related data and functions consistently
sched/fair: Get rid of scaling utilization by capacity_orig
sched/fair: Defer calling scaling functions
cpufreq: Frequency invariant scheduler load-tracking support
arm64: Enable frequency invariant scheduler load-tracking support
sched: Store system-wide maximum cpu capacity in root domain
sched: Enable idle balance to pull single task towards cpu with
higher capacity
sched: Introduce energy data structures
sched: Initialize energy data structures
sched: Determine the current sched_group idle-state
sched: Consider a not over-utilized energy-aware system as balanced
cpufreq: Max freq invariant scheduler load-tracking and cpu
capacity support
sched: Update max cpu capacity in case of max frequency constraints
arm64: Enable max freq invariant scheduler load-tracking and
capacity support
sched: Do eas idle balance regardless of the rq avg idle value
arm: Enable frequency invariant scheduler load-tracking support
arm: topology: Define TC2 energy and provide it to the scheduler
arm: Cpu invariant scheduler load-tracking and capacity support
arm: Enable max freq invariant scheduler load-tracking and
capacity support
DEBUG: sched: add energy procfs interface
Dmitry Vyukov (1):
BACKPORT: kernel: add kcov code coverage
Eric Dumazet (1):
BACKPORT: tcp: make challenge acks less predictable
Hannes Frederic Sowa (1):
ipv6: fix endianness error in icmpv6_err
Jaganath Kanakkassery (1):
UPSTREAM: Bluetooth: Fix potential NULL dereference in RFCOMM
bind callback
James Carr (1):
Implement memory_state_time, used by qcom,cpubw
Jason Low (1):
sched, timer: Convert usages of ACCESS_ONCE() in the scheduler
to READ_ONCE()/WRITE_ONCE()
Joseph Lo (1):
CHROMIUM: sched: update the average of nr_running
Juri Lelli (13):
arm64: Cpu invariant scheduler load-tracking and capacity support
sched/fair: add triggers for OPP change requests
sched/{core,fair}: trigger OPP change request on fork()
sched/fair: cpufreq_sched triggers for load balancing
FIXUP: sched: scheduler-driven cpu frequency selection
FIXUP: sched/fair: jump to max OPP when crossing UP threshold
DEBUG: sched: add tracepoint for cpu/freq scale invariance
DEBUG: sched: add tracepoint for task load/util signals
DEBUG: sched: add tracepoint for CPU load/util signals
DEBUG: sched,cpufreq: add cpu_capacity change tracepoint
sched/fair: add tunable to force selection at cpu granularity
sched/cpufreq_sched: fix thermal capping events
sched/fair: call OPP update when going idle after migration
Kirill Tkhai (4):
sched/deadline: Implement cancel_dl_timer() to use in switched_from_dl()
sched/fair: Fix sched_entity::avg::decay_count initialization
sched/dl: Prevent enqueue of a sleeping task in dl_task_timer()
sched/core: Delete PF_EXITING checks from cpu_cgroup_exit() callback
Lorenzo Colitti (1):
net: ipv6: Fix ping to link-local addresses.
Matt Wagantall (2):
sched/rt: print RT tasks when RT throttling is activated
sched/rt: Add Kconfig option to enable panicking for RT throttling
Michael Turquette (2):
cpufreq: introduce cpufreq_driver_is_slow
sched: scheduler-driven cpu frequency selection
Mike Galbraith (1):
sched/fair: Beef up wake_wide()
Morten Rasmussen (24):
sched: Make sched entity usage tracking scale-invariant
sched: Track group sched_entity usage contributions
sched/fair: Convert arch_scale_cpu_capacity() from weak function
to #define
sched/fair: Initialize task load and utilization before placing task on rq
sched: Add cpu capacity awareness to wakeup balancing
sched: Consider spare cpu capacity at task wake-up
sched: Prevent unnecessary active balance of single task in sched group
sched: Documentation for scheduler energy cost model
sched: Make energy awareness a sched feature
sched: Introduce SD_SHARE_CAP_STATES sched_domain flag
sched: Compute cpu capacity available at current frequency
sched: Relocated cpu_util() and change return type
sched: Highest energy aware balancing sched_domain level pointer
sched: Calculate energy consumption of sched_group
sched: Extend sched_group_energy to test load-balancing decisions
sched: Estimate energy impact of scheduling decisions
sched: Add over-utilization/tipping point indicator
sched, cpuidle: Track cpuidle state index in the scheduler
sched: Energy-aware wake-up task placement
sched: Disable energy-unfriendly nohz kicks
sched: Add per-cpu max capacity to sched_group_capacity
sched: Add group_misfit_task load-balance type
sched: Consider misfit tasks when load-balancing
arm: Update arch_scale_cpu_capacity() to reflect change to define
Patrick Bellasi (32):
sched/tune: add detailed documentation
sched/tune: add sysctl interface to define a boost value
sched/fair: add function to convert boost value into "margin"
sched/fair: add boosted CPU usage
sched/tune: add initial support for CGroups based boosting
sched/tune: compute and keep track of per CPU boost value
sched/{fair,tune}: track RUNNABLE tasks impact on per CPU boost value
sched/fair: add boosted task utilization
sched/fair: keep track of energy/capacity variations
sched/tune: add support to compute normalized energy
sched/fair: filter energy_diff() based on energy_payoff value
FIXUP: sched/tune: properly account of exiting tasks (only for
kernel < v4.4)
DEBUG: sched/tune: add tracepoint for SchedTune configuration update
DEBUG: sched/tune: add tracepoint for CPU boost signal
DEBUG: sched/tune: add tracepoint for schedtune_tasks_update() values
DEBUG: sched/tune: add tracepoint on boostgroup updates
DEBUG: sched/tune: add tracepoint for task boost signal
DEBUG: sched/tune: add tracepoint for energy_diff() values
DEBUG: sched/tune: add tracepoint on P-E space filtering
FIXUP: sched: fix build for non-SMP target
FIX: sched/tune: update usage of boosted task utilisation on CPU selection
FIX: sched/tune: move schedtune_nornalize_energy into fair.c
FIXUP: sched/tune: fix payoff calculation for boost region
FIXUP: sched/tune: fix compilation error on !CONFIG_CGROUP_SCHEDTUNE
sched/{fair,tune}: simplify fair.c code
sched/tune: use a single initialisation function
FIXUP: sched/tune: fix accounting for runnable tasks
sched/tune: fix PB and PC cuts indexes definition
FIXUP: sched: fix set_cfs_cpu_capacity when WALT is in use
FIXUP: sched: fix SchedFreq integration for both PELT and WALT
DEBUG: sched: add tracepoint for RD overutilized
FIXUP: sched/tune: do initialization as a postcore_initicall
Peter Zijlstra (15):
sched/core: Validate rq_clock*() serialization
sched/deadline: Fix deadline parameter modification handling
sched/deadline: Fix stale yield state
sched: Move the loadavg code to a more obvious location
sched,dl: Fix sched class hopping CBS hole
sched: Move code around
sched: Fix a race between __kthread_bind() and sched_setaffinity()
sched/fair: Make the entity load aging on attaching tunable
sched/core: Remove unused argument from sched_class::task_move_group
sched: Optimize freq invariant accounting
sched/fair: Rename scale() to cap_scale()
sched/fair: Optimize __update_load_avg()
sched/fair: Optimize per entity utilization tracking
sched/fair: Clean up the explanation around decaying load update misses
UPSTREAM: sched: Fix a race between __kthread_bind() and
sched_setaffinity()
Preeti U Murthy (1):
UPSTREAM: sched: Improve load balancing in the presence of idle CPUs
Rafael J. Wysocki (2):
UPSTREAM: PM / sleep: Re-implement suspend-to-idle handling
UPSTREAM: cpuidle: Clean up fallback handling in cpuidle_idle_call()
Rainer Weikusat (1):
UPSTREAM: af_unix: Guard against other == sk in unix_dgram_sendmsg
Ricky Liang (1):
FIXUP: sched: scheduler-driven cpu frequency selection
Robin Randhawa (3):
Documentation: DT bindings for energy model cost data required by EAS
sched: Support for extracting EAS energy costs from DT
arm64, topology: Updates to use DT bindings for EAS costing data
Ruchi Kandoi (1):
power: Refactors the code which prints suspend time.
Srinath Sridharan (8):
sched/cpufreq_sched: Consolidated update
sched: EAS: take cstate into account when selecting idle core
sched/tune: Add support for negative boost values
sched/walt: Accounting for number of irqs pending on each core
sched/rt: Avoid moving rt task if destination CPU does not run
low priority task
sched/tune: Introducing a new schedtune attribute prefer_idle
sched/fair: Picking cpus with low OPPs for tasks that prefer idle CPUs
sched/fair: Favor higher cpus only for boosted tasks
Srivatsa Vaddagiri (1):
sched: Introduce Window Assisted Load Tracking (WALT)
Steve Muckle (2):
sched/fair: jump to max OPP when crossing UP threshold
sched/cpufreq_sched: add trace events
Sudeep Holla (1):
arm64: defconfig: add few misc configs for development/debugging/testing
Takashi Iwai (1):
UPSTREAM: ALSA: timer: Fix race among timer ioctls
Tejun Heo (2):
cpumask, nodemask: implement cpumask/nodemask_pr_args()
cgroup: reorder SUBSYS(blkio) in cgroup_subsys.h
Thomas Gleixner (1):
sched: deadline: Use hrtimer_start()
Todd Kjos (6):
sched/fair: add tunable to set initial task load
sched/fair: optimize idle cpu selection for boosted tasks
sched: EAS: Avoid causing spikes to max-freq unnecessarily
FIXUP: sched/fair: Fix hang during suspend in sched_group_energy
FIXUP: sched: Fix double-release of spinlock in move_queued_task
sched: use util instead of capacity to select busy cpu
Vincent Guittot (14):
sched: Add sched_avg::utilization_avg_contrib
sched: Calculate CPU's usage statistic and put it into struct
sg_lb_stats::group_usage
sched/fair: Implement update_blocked_averages() for
CONFIG_FAIR_GROUP_SCHED=n
sched/fair: Fix nohz.next_balance update
sched: Make scale_rt invariant with frequency
sched: Move CFS tasks to CPUs with higher capacity
sched: Remove frequency scaling from cpu_capacity
sched: Add struct rq::cpu_capacity_orig
sched: Replace capacity_factor by usage
sched: Remove unused struct sched_group_capacity::capacity_orig
sched: remove call of sched_avg_update from sched_rt_avg_update
sched: deadline: use deadline bandwidth in scale_rt_capacity
sched: rt scheduler sets capacity requirement
UPSTREAM: sched: Add SD_PREFER_SIBLING for SMT level
Waiman Long (3):
sched/fair: Avoid redundant idle_cpu() call in update_sg_lb_stats()
sched/fair: Move the cache-hot 'load_avg' variable into its own cacheline
sched/fair: Disable the task group load_avg update for the root_task_group
Wanpeng Li (5):
sched/deadline: Fix artificial overrun introduced by yield_task_dl()
sched/deadline: Reschedule from switched_from_dl() after a successful pull
sched/deadline: Don't check CONFIG_SMP in switched_from_dl()
sched/deadline: Support DL task migration during CPU hotplug
sched/fair: Fix stale overloaded status in the busiest group finding logic
Winter Wang (1):
UPSTREAM: usb: gadget: configfs: add mutex lock before unregister gadget
Xunlei Pang (1):
sched/fair: Fix the dealing with decay_count in
__synchronize_entity_decay()
Yao Dongdong (1):
sched/core: Remove check of p->sched_class
Yuyang Du (10):
sched/fair: Remove rq's runnable avg
sched/fair: Rewrite runnable load and utilization average tracking
sched/fair: Init cfs_rq's sched_entity load average
sched/fair: Remove task and group entity load when they are dead
sched/fair: Provide runnable_load_avg back to cfs_rq
sched/fair: Clean up load average references
sched/fair: Fix overly small weight for interactive group entities
sched/fair: Update task group's load_avg after task migration
sched/fair: Fix new task's load avg removed from source CPU in
wake_up_new_task()
UPSTREAM: sched/fair: Avoid pulling all tasks in idle balancing
Documentation/devicetree/bindings/misc/memory-state-time.txt | 8 +
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt |
360 ++++++++++++
Documentation/kcov.txt | 111 ++++
Documentation/scheduler/sched-energy.txt |
362 ++++++++++++
Documentation/scheduler/sched-tune.txt |
367 ++++++++++++
Makefile | 11 +-
android/configs/android-recommended.cfg | 1 +
arch/arm/include/asm/topology.h | 7 +
arch/arm/kernel/topology.c | 149 ++++-
arch/arm64/configs/defconfig | 33 ++
arch/arm64/include/asm/topology.h | 9 +
arch/arm64/kernel/topology.c | 81 +++
arch/x86/Kconfig | 6 +
arch/x86/boot/Makefile | 10 +-
arch/x86/boot/compressed/Makefile | 3 +
arch/x86/kernel/Makefile | 6 +
arch/x86/kernel/apic/Makefile | 4 +
arch/x86/kernel/cpu/Makefile | 4 +
arch/x86/lib/Makefile | 3 +
arch/x86/mm/Makefile | 3 +
arch/x86/realmode/rm/Makefile | 3 +
drivers/cpufreq/Kconfig | 22 +
drivers/cpufreq/cpufreq.c | 58 ++
drivers/cpuidle/cpuidle.c | 55 +-
drivers/firmware/efi/libstub/Makefile | 3 +
drivers/misc/Kconfig | 6 +
drivers/misc/Makefile | 1 +
drivers/misc/memory_state_time.c |
454 +++++++++++++++
drivers/usb/gadget/configfs.c | 2 +
drivers/usb/gadget/function/f_accessory.c | 9 -
fs/ecryptfs/file.c | 71 ++-
include/linux/cgroup_subsys.h | 12 +-
include/linux/cpufreq.h | 15 +
include/linux/cpuidle.h | 7 +-
include/linux/cpumask.h | 8 +
include/linux/kcov.h | 29 +
include/linux/kthread.h | 1 +
include/linux/memory-state-time.h | 42 ++
include/linux/nodemask.h | 8 +
include/linux/sched.h | 145 ++++-
include/linux/sched/sysctl.h | 26 +
include/linux/sched_energy.h | 44 ++
include/linux/suspend.h | 16 +
include/linux/vmstat.h | 2 +
include/net/fib_rules.h | 2 -
include/trace/events/cpufreq_sched.h | 87 +++
include/trace/events/power.h | 8 +
include/trace/events/sched.h |
511 +++++++++++++++++
include/uapi/linux/kcov.h | 10 +
init/Kconfig | 53 ++
kernel/Makefile | 12 +
kernel/exit.c | 7 +
kernel/fork.c | 5 +-
kernel/kcov.c |
273 +++++++++
kernel/kthread.c | 20 +-
kernel/locking/Makefile | 3 +
kernel/power/Makefile | 1 -
kernel/power/suspend.c | 43 +-
kernel/power/suspend_time.c | 111 ----
kernel/power/wakeup_reason.c | 63 +++
kernel/rcu/Makefile | 4 +
kernel/sched/Makefile | 11 +-
kernel/sched/auto_group.c | 2 +-
kernel/sched/auto_group.h | 2 +-
kernel/sched/core.c |
986 ++++++++++++++++++++++-----------
kernel/sched/cpufreq_sched.c |
500 +++++++++++++++++
kernel/sched/cputime.c | 18 +-
kernel/sched/deadline.c |
270 ++++++---
kernel/sched/debug.c | 42 +-
kernel/sched/energy.c | 124 +++++
kernel/sched/fair.c |
2764 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
kernel/sched/features.h | 13 +-
kernel/sched/idle.c | 56 +-
kernel/sched/{proc.c => loadavg.c} |
247 +--------
kernel/sched/rt.c | 115 +++-
kernel/sched/sched.h |
358 +++++++++++-
kernel/sched/stop_task.c | 3 +
kernel/sched/tune.c |
967 ++++++++++++++++++++++++++++++++
kernel/sched/tune.h | 54 ++
kernel/sched/wait.c | 4 +-
kernel/sched/walt.c |
1171 +++++++++++++++++++++++++++++++++++++++
kernel/sched/walt.h | 62 +++
kernel/sysctl.c | 73 +++
kernel/time/posix-cpu-timers.c | 8 +-
kernel/workqueue.c | 6 +-
lib/Kconfig.debug | 30 +
lib/Makefile | 12 +
mm/Makefile | 15 +
mm/kasan/Makefile | 2 +
mm/vmstat.c | 73 ++-
net/bluetooth/rfcomm/sock.c | 20 +-
net/ipv4/tcp_input.c | 12 +-
net/ipv6/icmp.c | 2 +-
net/ipv6/ping.c | 38 +-
net/unix/af_unix.c | 7 +-
scripts/Makefile.lib | 14 +-
sound/core/timer.c | 32 +-
97 files changed, 10204 insertions(+), 1699 deletions(-)
create mode 100644 Documentation/devicetree/bindings/misc/memory-state-time.txt
create mode 100644
Documentation/devicetree/bindings/scheduler/sched-energy-costs.txt
create mode 100644 Documentation/kcov.txt
create mode 100644 Documentation/scheduler/sched-energy.txt
create mode 100644 Documentation/scheduler/sched-tune.txt
create mode 100644 drivers/misc/memory_state_time.c
create mode 100644 include/linux/kcov.h
create mode 100644 include/linux/memory-state-time.h
create mode 100644 include/linux/sched_energy.h
create mode 100644 include/trace/events/cpufreq_sched.h
create mode 100644 include/uapi/linux/kcov.h
create mode 100644 kernel/kcov.c
delete mode 100644 kernel/power/suspend_time.c
create mode 100644 kernel/sched/cpufreq_sched.c
create mode 100644 kernel/sched/energy.c
rename kernel/sched/{proc.c => loadavg.c} (62%)
create mode 100644 kernel/sched/tune.c
create mode 100644 kernel/sched/tune.h
create mode 100644 kernel/sched/walt.c
create mode 100644 kernel/sched/walt.h
This patchset provides a pseudo-NMI for arm64 kernels by reimplementing
the irqflags macros to modify the GIC PMR (the priority mask register
accessible as a system register on GICv3 and later) rather than the
PSR. The patchset includes an implementation of
arch_trigger_all_cpu_backtrace() for arm64 allowing the new code to be
exercised.
The code works-for-me (tm) and is more "real" than the last time I
shared these patches. However there remain a couple of limitations
and caveats:
1. Requires GICv3+ hardware to be effective meaning it has mostly been
tested using FVP. The alternatives runtime patching system is
employed so systems with earlier GIC architectures are still
bootable but will not benefit from NMI simulation.
2. FVP needs a bit of hacking to be able to run <SysRq-L> from an ISR.
That's a shame because <SysRq-L> is a great way to observe an NMI
preempting an IRQ handler. Testers are welcome to ping me offline
and I will share the hacks I have been using to test with.
v3:
* Rebased on v4.8-rc2
* Restrict apply_alternatives_early() to consider only the
capabilities needed for the kernel to function correctly (Will
Deacon).
* Added a bunch of notrace qualifiers (Will Deacon)
* Used byte addressing to configure the interrupt priorities (Marc
Zygnier)
* Fixed implementation of interrupts_enabled()
* Eliminated the over-zealous inclusion of <linux/irqchip/arm-gic-v3.h>.
* Pushed a few symbol defintions towards the end of the patch series.
v2:
* Removed the isb instructions. The PMR is self-synchronizing so
these are not needed (Dave Martin)
* Use alternative runtime patching to allow the same kernel binary
to boot systems with and without GICv3+ (Dave Martin).
* Added code to properly distinguish between NMI and normal IRQ and to
call into NMI handling code where needed.
* Replaced the IPI backtrace logic with a newer version (from Russell
King).
Daniel Thompson (7):
irqchip: gic-v3: Reset BPR during initialization
arm64: Add support for on-demand backtrace of other CPUs
arm64: cpufeature: Allow early detect of specific features
arm64: alternative: Apply alternatives early in boot process
arm64: irqflags: Reorder the fiq & async macros
arm64: irqflags: Use ICC sysregs to implement IRQ masking
arm64: Implement IPI_CPU_BACKTRACE using pseudo-NMIs
arch/arm/include/asm/arch_gicv3.h | 6 ++
arch/arm64/Kconfig | 16 ++++
arch/arm64/include/asm/alternative.h | 1 +
arch/arm64/include/asm/arch_gicv3.h | 57 +++++++++++++
arch/arm64/include/asm/assembler.h | 55 +++++++++++-
arch/arm64/include/asm/hardirq.h | 2 +-
arch/arm64/include/asm/irq.h | 3 +
arch/arm64/include/asm/irqflags.h | 118 ++++++++++++++++++++++++--
arch/arm64/include/asm/ptrace.h | 23 +++++
arch/arm64/include/asm/smp.h | 2 +
arch/arm64/kernel/alternative.c | 36 +++++++-
arch/arm64/kernel/cpufeature.c | 92 +++++++++++---------
arch/arm64/kernel/entry.S | 151 +++++++++++++++++++++++++++------
arch/arm64/kernel/head.S | 35 ++++++++
arch/arm64/kernel/smp.c | 68 ++++++++++++++-
arch/arm64/mm/proc.S | 23 +++++
drivers/irqchip/irq-gic-v3.c | 72 ++++++++++++++++
include/linux/irqchip/arm-gic-common.h | 8 ++
include/linux/irqchip/arm-gic.h | 5 --
lib/nmi_backtrace.c | 9 +-
20 files changed, 697 insertions(+), 85 deletions(-)
--
2.7.4