Push to branch refs/heads/master: 17a4d48033813f2ba893d6918fa2931afcd9af02 --> a351e9b9fc24e982ec2f0e76379a49826036da12
.mailmap | 3 + Documentation/00-INDEX | 4 +- Documentation/ABI/obsolete/sysfs-block-zram | 119 - Documentation/ABI/testing/configfs-rdma_cm | 8 + Documentation/ABI/testing/sysfs-block-zram | 101 +- .../ABI/testing/sysfs-bus-i2c-devices-bq32k | 7 + Documentation/ABI/testing/sysfs-bus-iio | 15 +- Documentation/ABI/testing/sysfs-bus-iio-adc-stm32 | 18 + .../ABI/testing/sysfs-bus-iio-distance-srf08 | 22 + .../ABI/testing/sysfs-bus-iio-timer-stm32 | 29 + .../ABI/testing/sysfs-class-devfreq-event | 25 + Documentation/ABI/testing/sysfs-class-led | 17 + Documentation/ABI/testing/sysfs-class-rc | 14 +- Documentation/ABI/testing/sysfs-devices-edac | 17 + .../ABI/testing/sysfs-kernel-iommu_groups | 12 + Documentation/ABI/testing/sysfs-platform-hidma | 2 +- .../ABI/testing/sysfs-platform-hidma-mgmt | 20 +- Documentation/DMA-ISA-LPC.txt | 2 +- Documentation/DMA-attributes.txt | 10 + Documentation/DocBook/Makefile | 11 +- Documentation/DocBook/deviceiobook.tmpl | 323 - Documentation/DocBook/iio.tmpl | 697 -- Documentation/DocBook/kgdb.tmpl | 8 +- Documentation/DocBook/libata.tmpl | 2 +- Documentation/DocBook/regulator.tmpl | 304 - Documentation/DocBook/uio-howto.tmpl | 1112 --- Documentation/IPMI.txt | 2 +- Documentation/Makefile.sphinx | 34 +- Documentation/PCI/MSI-HOWTO.txt | 6 +- Documentation/PCI/PCIEBUS-HOWTO.txt | 33 +- Documentation/PCI/pci-error-recovery.txt | 24 +- Documentation/PCI/pci.txt | 24 +- Documentation/PCI/pcieaer-howto.txt | 2 +- .../Design/Data-Structures/Data-Structures.html | 5 +- .../Design/Expedited-Grace-Periods/ExpRCUFlow.svg | 830 ++ .../Expedited-Grace-Periods/ExpSchedFlow.svg | 826 ++ .../Expedited-Grace-Periods.html | 626 ++ .../RCU/Design/Expedited-Grace-Periods/Funnel0.svg | 275 + .../RCU/Design/Expedited-Grace-Periods/Funnel1.svg | 275 + .../RCU/Design/Expedited-Grace-Periods/Funnel2.svg | 287 + .../RCU/Design/Expedited-Grace-Periods/Funnel3.svg | 323 + .../RCU/Design/Expedited-Grace-Periods/Funnel4.svg | 323 + .../RCU/Design/Expedited-Grace-Periods/Funnel5.svg | 335 + .../RCU/Design/Expedited-Grace-Periods/Funnel6.svg | 335 + .../RCU/Design/Expedited-Grace-Periods/Funnel7.svg | 347 + .../RCU/Design/Expedited-Grace-Periods/Funnel8.svg | 311 + .../RCU/Design/Requirements/Requirements.html | 12 +- Documentation/RCU/trace.txt | 5 +- Documentation/acpi/acpi-lid.txt | 16 +- Documentation/acpi/method-customizing.txt | 2 +- Documentation/acpi/method-tracing.txt | 2 +- Documentation/admin-guide/README.rst | 4 +- Documentation/admin-guide/dynamic-debug-howto.rst | 4 +- Documentation/admin-guide/kernel-parameters.txt | 58 +- Documentation/admin-guide/md.rst | 5 + Documentation/admin-guide/ras.rst | 22 +- Documentation/arm/sunxi/README | 8 + Documentation/arm64/cpu-feature-registers.txt | 240 + Documentation/arm64/silicon-errata.txt | 48 +- Documentation/block/pr.txt | 2 +- Documentation/blockdev/mflash.txt | 2 +- Documentation/blockdev/zram.txt | 74 +- Documentation/cdrom/cdrom-standard.tex | 9 +- Documentation/cgroup-v1/cpusets.txt | 2 +- Documentation/cgroup-v1/rdma.txt | 109 + Documentation/cgroup-v2.txt | 104 +- Documentation/conf.py | 4 +- Documentation/core-api/cpu_hotplug.rst | 372 + Documentation/core-api/index.rst | 1 + Documentation/cpu-freq/core.txt | 24 +- Documentation/cpu-freq/cpu-drivers.txt | 177 +- Documentation/cpu-freq/cpufreq-stats.txt | 24 +- Documentation/cpu-freq/governors.txt | 322 +- Documentation/cpu-freq/index.txt | 23 +- Documentation/cpu-freq/intel-pstate.txt | 15 + Documentation/cpu-freq/user-guide.txt | 64 +- Documentation/cpu-hotplug.txt | 452 - Documentation/crypto/api-digest.rst | 2 +- Documentation/crypto/api-skcipher.rst | 2 +- Documentation/dev-tools/kcov.rst | 2 +- Documentation/dev-tools/sparse.rst | 6 + Documentation/device-mapper/cache.txt | 4 + Documentation/device-mapper/dm-raid.txt | 19 +- Documentation/devicetree/bindings/arm/amlogic.txt | 2 + .../devicetree/bindings/arm/arch_timer.txt | 6 + Documentation/devicetree/bindings/arm/axentia.txt | 19 + Documentation/devicetree/bindings/arm/cpus.txt | 2 + Documentation/devicetree/bindings/arm/davinci.txt | 4 + Documentation/devicetree/bindings/arm/fsl.txt | 20 +- .../bindings/arm/hisilicon/hisilicon.txt | 4 + .../bindings/arm/marvell/98dx3236-resume-ctrl.txt | 16 + .../devicetree/bindings/arm/marvell/98dx3236.txt | 23 + .../arm/marvell/cp110-system-controller0.txt | 6 +- .../devicetree/bindings/arm/omap/omap.txt | 3 + Documentation/devicetree/bindings/arm/shmobile.txt | 2 +- Documentation/devicetree/bindings/arm/sunxi.txt | 1 + .../devicetree/bindings/ata/ahci-da850.txt | 18 + .../devicetree/bindings/bus/qcom,ebi2.txt | 6 +- .../bindings/clock/brcm,bcm2835-cprman.txt | 15 +- .../devicetree/bindings/clock/exynos4415-clock.txt | 38 - .../devicetree/bindings/clock/hi3660-clock.txt | 42 + .../devicetree/bindings/clock/idt,versaclock5.txt | 65 + .../bindings/clock/mvebu-corediv-clock.txt | 1 + .../devicetree/bindings/clock/mvebu-cpu-clock.txt | 1 + .../bindings/clock/mvebu-gated-clock.txt | 2 +- .../devicetree/bindings/clock/qcom,rpmcc.txt | 1 + .../devicetree/bindings/clock/qoriq-clock.txt | 1 + .../devicetree/bindings/clock/renesas,cpg-mssr.txt | 6 + .../bindings/clock/rockchip,rk3328-cru.txt | 57 + .../bindings/clock/rockchip,rk3399-cru.txt | 6 + .../devicetree/bindings/clock/st,stm32-rcc.txt | 37 + .../bindings/clock/stericsson,abx500.txt | 20 + .../devicetree/bindings/clock/sun9i-de.txt | 28 + .../devicetree/bindings/clock/sun9i-usb.txt | 24 + .../devicetree/bindings/clock/sunxi-ccu.txt | 2 + .../devicetree/bindings/clock/ti,cdce925.txt | 15 +- .../devicetree/bindings/clock/zx296718-clk.txt | 3 + .../devicetree/bindings/cpufreq/ti-cpufreq.txt | 128 + .../devicetree/bindings/crypto/brcm,spu-crypto.txt | 22 + .../devicetree/bindings/crypto/mediatek-crypto.txt | 27 + .../devicetree/bindings/devfreq/exynos-bus.txt | 14 + .../devicetree/bindings/display/arm,pl11x.txt | 2 +- .../devicetree/bindings/display/brcm,bcm-vc4.txt | 35 + .../bindings/display/bridge/adi,adv7511.txt | 12 + .../bindings/display/bridge/analogix_dp.txt | 2 +- .../devicetree/bindings/display/bridge/anx7814.txt | 40 + .../devicetree/bindings/display/bridge/dw_hdmi.txt | 85 +- .../bindings/display/bridge/sil-sii8620.txt | 33 + .../bindings/display/bridge/ti,ths8135.txt | 46 + .../bindings/display/cirrus,clps711x-fb.txt | 2 +- .../bindings/display/exynos/exynos7-decon.txt | 4 +- .../bindings/display/exynos/exynos_dsim.txt | 1 - .../bindings/display/exynos/samsung-fimd.txt | 3 +- .../bindings/display/hisilicon/hisi-ade.txt | 2 +- .../devicetree/bindings/display/imx/fsl,imx-fb.txt | 2 +- .../devicetree/bindings/display/imx/hdmi.txt | 51 +- .../devicetree/bindings/display/imx/ldb.txt | 2 +- .../bindings/display/mediatek/mediatek,disp.txt | 2 +- .../devicetree/bindings/display/msm/dsi.txt | 2 +- .../devicetree/bindings/display/msm/edp.txt | 2 +- .../devicetree/bindings/display/msm/gpu.txt | 38 +- .../devicetree/bindings/display/msm/hdmi.txt | 2 +- .../bindings/display/multi-inno,mi0283qt.txt | 27 + .../bindings/display/panel/boe,nv101wxmn51.txt | 7 + .../bindings/display/panel/netron-dy,e231732.txt | 7 + .../bindings/display/panel/panel-dpi.txt | 2 +- .../devicetree/bindings/display/panel/panel.txt | 4 + .../bindings/display/panel/samsung,ld9040.txt | 2 +- .../bindings/display/panel/samsung,s6e8aa0.txt | 2 +- .../bindings/display/panel/tianma,tm070jdhg30.txt | 7 + .../display/rockchip/analogix_dp-rockchip.txt | 2 +- .../bindings/display/rockchip/dw_hdmi-rockchip.txt | 43 +- .../devicetree/bindings/display/ssd1307fb.txt | 5 +- .../devicetree/bindings/display/tilcdc/panel.txt | 2 +- .../devicetree/bindings/display/zte,vou.txt | 15 + .../devicetree/bindings/dma/stm32-dma.txt | 5 +- .../devicetree/bindings/eeprom/eeprom.txt | 2 + .../bindings/gpio/cortina,gemini-gpio.txt | 24 + .../devicetree/bindings/gpio/gpio-pca953x.txt | 4 + Documentation/devicetree/bindings/gpio/gpio.txt | 8 +- .../devicetree/bindings/gpu/arm,mali-utgard.txt | 81 + .../devicetree/bindings/hwmon/adc128d818.txt | 38 + Documentation/devicetree/bindings/hwmon/lm70.txt | 1 + Documentation/devicetree/bindings/hwmon/lm90.txt | 6 + Documentation/devicetree/bindings/hwmon/sht15.txt | 19 + .../devicetree/bindings/hwmon/stts751.txt | 15 + .../devicetree/bindings/i2c/i2c-mux-pca954x.txt | 14 +- .../devicetree/bindings/i2c/i2c-sh_mobile.txt | 1 + .../devicetree/bindings/i2c/i2c-stm32.txt | 33 + .../bindings/i2c/nvidia,tegra186-bpmp-i2c.txt | 42 + .../devicetree/bindings/i2c/trivial-devices.txt | 1 + .../devicetree/bindings/iio/accel/lis302.txt | 2 +- .../bindings/iio/adc/amlogic,meson-saradc.txt | 32 + .../devicetree/bindings/iio/adc/avia-hx711.txt | 18 + .../devicetree/bindings/iio/adc/max11100.txt | 18 + .../bindings/iio/adc/qcom,pm8xxx-xoadc.txt | 149 + .../bindings/iio/adc/renesas,gyroadc.txt | 99 + .../devicetree/bindings/iio/adc/st,stm32-adc.txt | 7 + .../devicetree/bindings/iio/adc/ti-ads7950.txt | 23 + .../devicetree/bindings/iio/imu/bmi160.txt | 36 + .../devicetree/bindings/iio/imu/st_lsm6dsx.txt | 26 + .../devicetree/bindings/iio/light/cm3605.txt | 41 + .../bindings/iio/potentiometer/max5481.txt | 23 + .../devicetree/bindings/iio/st-sensors.txt | 2 + .../devicetree/bindings/iio/temperature/tmp007.txt | 35 + .../bindings/iio/timer/stm32-timer-trigger.txt | 23 + .../bindings/input/cypress,tm2-touchkey.txt | 27 + .../devicetree/bindings/input/mpr121-touchkey.txt | 30 + .../devicetree/bindings/input/pwm-beeper.txt | 16 + .../bindings/input/touchscreen/zet6223.txt | 32 + .../bindings/interrupt-controller/arm,gic.txt | 2 +- .../cortina,gemini-interrupt-controller.txt | 22 + .../interrupt-controller/snps,archs-idu-intc.txt | 24 +- .../devicetree/bindings/iommu/arm,smmu.txt | 10 +- Documentation/devicetree/bindings/leds/common.txt | 28 +- .../devicetree/bindings/leds/irled/spi-ir-led.txt | 29 + .../devicetree/bindings/media/fsl-vdoa.txt | 21 + .../devicetree/bindings/media/gpio-ir-receiver.txt | 3 +- .../devicetree/bindings/media/hix5hd2-ir.txt | 2 +- .../bindings/media/i2c/toshiba,et8ek8.txt | 48 + .../devicetree/bindings/media/meson-ir.txt | 3 + .../devicetree/bindings/media/mtk-cir.txt | 24 + Documentation/devicetree/bindings/media/rc.txt | 117 + .../devicetree/bindings/media/st,st-delta.txt | 17 + .../devicetree/bindings/media/sunxi-ir.txt | 2 +- .../devicetree/bindings/media/ti,da850-vpif.txt | 83 + Documentation/devicetree/bindings/mfd/as3722.txt | 3 +- .../devicetree/bindings/mfd/aspeed-gfx.txt | 17 + .../devicetree/bindings/mfd/aspeed-lpc.txt | 137 + Documentation/devicetree/bindings/mfd/mfd.txt | 12 +- .../devicetree/bindings/mfd/motorola-cpcap.txt | 31 + Documentation/devicetree/bindings/mfd/mt6397.txt | 4 + .../devicetree/bindings/mfd/omap-usb-host.txt | 4 +- Documentation/devicetree/bindings/mfd/qcom-rpm.txt | 2 +- .../devicetree/bindings/mfd/stm32-timers.txt | 46 + .../bindings/mips/img/pistachio-marduk.txt | 10 + .../devicetree/bindings/misc/atmel-ssc.txt | 2 + .../devicetree/bindings/misc/idt_89hpesx.txt | 44 + .../devicetree/bindings/mmc/amlogic,meson-gx.txt | 2 +- .../devicetree/bindings/mmc/mmc-pwrseq-sd8787.txt | 16 + Documentation/devicetree/bindings/mmc/mmc.txt | 1 + .../devicetree/bindings/mmc/rockchip-dw-mshc.txt | 2 +- Documentation/devicetree/bindings/mmc/sdhci-st.txt | 2 +- Documentation/devicetree/bindings/mmc/sdhci.txt | 2 +- .../devicetree/bindings/mmc/sunxi-mmc.txt | 1 + .../devicetree/bindings/mmc/synopsys-dw-mshc.txt | 15 +- Documentation/devicetree/bindings/mmc/tmio_mmc.txt | 13 + .../devicetree/bindings/mmc/zx-dw-mshc.txt | 33 + .../devicetree/bindings/mtd/aspeed-smc.txt | 51 + Documentation/devicetree/bindings/mtd/common.txt | 15 + .../bindings/mtd/cortina,gemini-flash.txt | 24 + .../devicetree/bindings/mtd/jedec,spi-nor.txt | 2 + .../devicetree/bindings/mtd/mtk-quadspi.txt | 8 +- .../bindings/net/brcm,bcm7445-switch-v4.0.txt | 10 +- .../devicetree/bindings/net/brcm,systemport.txt | 5 +- Documentation/devicetree/bindings/net/btusb.txt | 43 + Documentation/devicetree/bindings/net/cpsw.txt | 3 - Documentation/devicetree/bindings/net/dsa/dsa.txt | 20 +- .../devicetree/bindings/net/dsa/marvell.txt | 93 +- Documentation/devicetree/bindings/net/ethernet.txt | 3 + .../devicetree/bindings/net/marvell,prestera.txt | 50 + .../bindings/net/marvell-armada-370-neta.txt | 2 +- .../devicetree/bindings/net/marvell-bt-8xxx.txt | 86 + .../devicetree/bindings/net/marvell-bt-sd8xxx.txt | 56 - .../devicetree/bindings/net/marvell-pp2.txt | 4 +- .../devicetree/bindings/net/meson-dwmac.txt | 16 + .../devicetree/bindings/net/mscc-phy-vsc8531.txt | 10 + Documentation/devicetree/bindings/net/phy.txt | 4 + .../devicetree/bindings/net/rockchip-dwmac.txt | 1 + .../bindings/net/snps,dwc-qos-ethernet.txt | 3 + Documentation/devicetree/bindings/net/stmmac.txt | 3 +- .../devicetree/bindings/net/wireless/ieee80211.txt | 24 + .../bindings/net/wireless/marvell-8xxx.txt | 7 +- .../devicetree/bindings/nvmem/imx-ocotp.txt | 6 +- Documentation/devicetree/bindings/opp/opp.txt | 46 +- .../devicetree/bindings/pci/hisilicon-pcie.txt | 43 + .../devicetree/bindings/pci/mvebu-pci.txt | 3 +- .../devicetree/bindings/pci/pci-iommu.txt | 6 +- Documentation/devicetree/bindings/pci/rcar-pci.txt | 1 + .../devicetree/bindings/pci/rockchip-pcie.txt | 2 + .../bindings/pci/samsung,exynos5440-pcie.txt | 29 + .../devicetree/bindings/phy/qcom,usb-hs-phy.txt | 84 + .../devicetree/bindings/phy/qcom,usb-hsic-phy.txt | 65 + .../devicetree/bindings/phy/samsung-phy.txt | 17 + .../devicetree/bindings/phy/sun4i-usb-phy.txt | 1 + .../bindings/pinctrl/allwinner,sunxi-pinctrl.txt | 3 +- .../bindings/pinctrl/fsl,imx7d-pinctrl.txt | 2 +- .../pinctrl/marvell,armada-98dx3236-pinctrl.txt | 46 + .../bindings/pinctrl/marvell,kirkwood-pinctrl.txt | 20 +- .../devicetree/bindings/pinctrl/pinctrl-aspeed.txt | 131 +- .../bindings/pinctrl/samsung-pinctrl.txt | 1 + .../bindings/pinctrl/st,stm32-pinctrl.txt | 59 +- .../devicetree/bindings/pinctrl/ti,iodelay.txt | 47 + .../devicetree/bindings/power/pd-samsung.txt | 7 +- .../bindings/power/reset/gpio-poweroff.txt | 10 +- .../bindings/power/reset/qnap-poweroff.txt | 3 +- .../bindings/power/supply/axp20x_ac_power.txt | 22 + .../bindings/power/supply/axp20x_usb_power.txt | 5 + .../devicetree/bindings/power/supply/bq27xxx.txt | 36 + .../devicetree/bindings/power/supply/qcom_smbb.txt | 19 + .../bindings/power/supply/sbs_sbs-charger.txt | 23 + .../bindings/power/supply/ti,bq24735.txt | 8 +- .../bindings/power_supply/maxim,max14656.txt | 25 + .../devicetree/bindings/powerpc/4xx/emac.txt | 62 +- .../devicetree/bindings/powerpc/fsl/l2cache.txt | 42 +- .../devicetree/bindings/powerpc/opal/power-mgt.txt | 118 + Documentation/devicetree/bindings/pwm/imx-pwm.txt | 6 +- .../devicetree/bindings/pwm/pwm-stm32.txt | 35 + .../bindings/regulator/anatop-regulator.txt | 1 + .../bindings/regulator/cpcap-regulator.txt | 34 + .../bindings/regulator/gpio-regulator.txt | 2 +- .../bindings/regulator/qcom,smd-rpm-regulator.txt | 56 + .../bindings/regulator/ti-abb-regulator.txt | 2 +- .../devicetree/bindings/remoteproc/qcom,adsp.txt | 41 +- .../devicetree/bindings/remoteproc/qcom,q6v5.txt | 4 +- .../bindings/reset/hisilicon,hi3660-reset.txt | 43 + .../devicetree/bindings/reset/ti-syscon-reset.txt | 8 +- .../devicetree/bindings/reset/uniphier-reset.txt | 47 +- .../devicetree/bindings/reset/zte,zx2967-reset.txt | 20 + Documentation/devicetree/bindings/rng/omap_rng.txt | 3 +- .../devicetree/bindings/rtc/armada-380-rtc.txt | 8 +- .../devicetree/bindings/rtc/cortina,gemini.txt | 14 + .../devicetree/bindings/rtc/imxdi-rtc.txt | 5 +- .../devicetree/bindings/rtc/maxim,ds3231.txt | 3 +- Documentation/devicetree/bindings/rtc/pcf8563.txt | 3 +- .../devicetree/bindings/rtc/st,stm32-rtc.txt | 27 + .../devicetree/bindings/rtc/sun6i-rtc.txt | 10 + Documentation/devicetree/bindings/serial/8250.txt | 1 + .../devicetree/bindings/serial/fsl-imx-uart.txt | 4 +- .../devicetree/bindings/serial/serial.txt | 3 +- .../devicetree/bindings/serial/slave-device.txt | 36 + .../devicetree/bindings/soc/fsl/qman-portals.txt | 20 - .../devicetree/bindings/soc/rockchip/grf.txt | 8 +- .../bindings/soc/rockchip/power_domain.txt | 3 + .../devicetree/bindings/soc/zte/pd-2967xx.txt | 19 + .../bindings/sound/axentia,tse850-pcm5142.txt | 11 +- Documentation/devicetree/bindings/sound/es8328.txt | 2 +- .../devicetree/bindings/sound/mt2701-afe-pcm.txt | 2 + .../devicetree/bindings/sound/nau8540.txt | 16 + .../bindings/sound/rockchip,rk3288-hdmi-analog.txt | 36 + .../devicetree/bindings/sound/rockchip-i2s.txt | 4 +- Documentation/devicetree/bindings/sound/rt5665.txt | 0 .../devicetree/bindings/sound/sun4i-codec.txt | 2 +- .../devicetree/bindings/sound/sun4i-i2s.txt | 9 +- .../devicetree/bindings/sound/sun8i-a33-codec.txt | 63 + .../bindings/sound/sunxi,sun4i-spdif.txt | 1 + .../devicetree/bindings/sound/zte,zx-i2s.txt | 14 +- .../devicetree/bindings/spi/spi-lantiq-ssc.txt | 29 + .../devicetree/bindings/spi/spi-rockchip.txt | 7 + Documentation/devicetree/bindings/sram/sram.txt | 6 + .../devicetree/bindings/thermal/qoriq-thermal.txt | 7 + .../bindings/thermal/rcar-gen3-thermal.txt | 56 + .../devicetree/bindings/thermal/zx2967-thermal.txt | 116 + .../bindings/timer/cortina,gemini-timer.txt | 22 + .../devicetree/bindings/timer/renesas,ostm.txt | 30 + Documentation/devicetree/bindings/ufs/ufs-qcom.txt | 1 - .../bindings/usb/allwinner,sun4i-a10-musb.txt | 4 +- Documentation/devicetree/bindings/usb/dwc3-st.txt | 4 +- Documentation/devicetree/bindings/usb/dwc3.txt | 4 + .../devicetree/bindings/usb/ehci-omap.txt | 1 - Documentation/devicetree/bindings/usb/ehci-st.txt | 2 +- .../devicetree/bindings/usb/mt8173-mtu3.txt | 12 +- .../devicetree/bindings/usb/mt8173-xhci.txt | 14 +- .../devicetree/bindings/usb/qcom,dwc3.txt | 2 +- Documentation/devicetree/bindings/usb/ulpi.txt | 20 + Documentation/devicetree/bindings/usb/usb-xhci.txt | 1 + Documentation/devicetree/bindings/usb/usb251xb.txt | 66 + .../devicetree/bindings/vendor-prefixes.txt | 15 + .../devicetree/bindings/video/bridge/anx7814.txt | 40 - .../bindings/video/bridge/sil-sii8620.txt | 33 - .../bindings/watchdog/cortina,gemin-watchdog.txt | 17 + .../devicetree/bindings/watchdog/samsung-wdt.txt | 9 +- .../bindings/watchdog/zte,zx2967-wdt.txt | 32 + Documentation/dma-buf-sharing.txt | 482 -- Documentation/dontdiff | 7 +- Documentation/driver-api/80211/cfg80211.rst | 3 + Documentation/driver-api/device-io.rst | 201 + Documentation/driver-api/device_link.rst | 18 +- Documentation/driver-api/dma-buf.rst | 92 + Documentation/driver-api/firmware/built-in-fw.rst | 38 + Documentation/driver-api/firmware/core.rst | 16 + .../driver-api/firmware/direct-fs-lookup.rst | 30 + .../driver-api/firmware/fallback-mechanisms.rst | 195 + .../driver-api/firmware/firmware_cache.rst | 51 + .../driver-api/firmware/fw_search_path.rst | 26 + Documentation/driver-api/firmware/index.rst | 16 + Documentation/driver-api/firmware/introduction.rst | 27 + Documentation/driver-api/firmware/lookup-order.rst | 18 + .../driver-api/firmware/request_firmware.rst | 56 + Documentation/driver-api/iio/buffers.rst | 125 + Documentation/driver-api/iio/core.rst | 182 + Documentation/driver-api/iio/index.rst | 17 + Documentation/driver-api/iio/intro.rst | 33 + Documentation/driver-api/iio/triggered-buffers.rst | 69 + Documentation/driver-api/iio/triggers.rst | 80 + Documentation/driver-api/index.rst | 6 + Documentation/driver-api/pm/conf.py | 10 + Documentation/driver-api/pm/devices.rst | 736 ++ Documentation/driver-api/pm/index.rst | 16 + Documentation/driver-api/pm/notifiers.rst | 70 + Documentation/driver-api/pm/types.rst | 5 + Documentation/driver-api/regulator.rst | 170 + Documentation/driver-api/uio-howto.rst | 705 ++ Documentation/driver-model/devres.txt | 5 + Documentation/extcon/intel-int3496.txt | 27 + Documentation/filesystems/Locking | 2 +- Documentation/filesystems/afs.txt | 34 +- .../filesystems/autofs4-mount-control.txt | 1 + Documentation/filesystems/autofs4.txt | 39 +- Documentation/filesystems/ceph.txt | 5 +- Documentation/filesystems/f2fs.txt | 7 +- Documentation/filesystems/porting | 6 + Documentation/filesystems/quota.txt | 2 +- Documentation/filesystems/vfs.txt | 2 +- Documentation/firmware_class/README | 128 - Documentation/fpga/fpga-mgr.txt | 19 +- Documentation/gcc-plugins.txt | 4 +- Documentation/gpio/driver.txt | 64 +- Documentation/gpu/drm-kms.rst | 8 +- Documentation/gpu/drm-mm.rst | 61 +- Documentation/gpu/drm-uapi.rst | 25 +- Documentation/gpu/i915.rst | 112 + Documentation/gpu/index.rst | 1 + Documentation/gpu/introduction.rst | 15 +- Documentation/gpu/tinydrm.rst | 42 + Documentation/hwmon/ds1621 | 8 +- Documentation/hwmon/hwmon-kernel-api.txt | 4 + Documentation/hwmon/lm70 | 8 +- Documentation/hwmon/sht21 | 5 +- Documentation/hwmon/sysfs-interface | 5 +- Documentation/i2c/busses/i2c-i801 | 1 + Documentation/i2c/muxes/i2c-mux-gpio | 20 +- Documentation/index.rst | 10 +- Documentation/input/input.txt | 4 +- Documentation/ioctl/botching-up-ioctls.txt | 2 +- Documentation/ioctl/ioctl-number.txt | 1 + Documentation/kselftest.txt | 16 +- Documentation/leds/leds-class.txt | 15 + Documentation/livepatch/livepatch.txt | 21 +- Documentation/locking/ww-mutex-design.txt | 12 +- Documentation/md-cluster.txt | 324 - Documentation/md/md-cluster.txt | 324 + Documentation/md/raid5-cache.txt | 109 + Documentation/media/Makefile | 3 +- Documentation/media/dvb-drivers/ci.rst | 2 +- Documentation/media/kapi/mc-core.rst | 18 +- .../media/uapi/dvb/dvb-frontend-parameters.rst | 4 +- Documentation/media/uapi/gen-errors.rst | 10 +- Documentation/media/uapi/rc/rc-sysfs-nodes.rst | 13 +- Documentation/media/v4l-drivers/bttv.rst | 2 +- Documentation/memory-barriers.txt | 70 +- Documentation/memory-hotplug.txt | 4 +- Documentation/mtd/intel-spi.txt | 88 + Documentation/networking/cdc_mbim.txt | 4 +- Documentation/networking/dsa/dsa.txt | 24 - Documentation/networking/gtp.txt | 135 + Documentation/networking/ip-sysctl.txt | 50 +- Documentation/networking/kcm.txt | 2 +- Documentation/networking/netfilter-sysctl.txt | 10 + Documentation/networking/packet_mmap.txt | 9 +- Documentation/networking/regulatory.txt | 8 +- Documentation/networking/vrf.txt | 7 +- Documentation/perf/qcom_l2_pmu.txt | 38 + Documentation/pinctrl.txt | 10 +- Documentation/power/00-INDEX | 2 - Documentation/power/devices.txt | 716 -- Documentation/power/freezing-of-tasks.txt | 3 +- Documentation/power/notifiers.txt | 55 - Documentation/power/opp.txt | 52 +- Documentation/power/pci.txt | 2 +- Documentation/power/pm_qos_interface.txt | 13 +- Documentation/power/runtime_pm.txt | 6 +- Documentation/power/states.txt | 2 +- Documentation/pps/pps.txt | 18 +- Documentation/process/stable-kernel-rules.rst | 2 +- Documentation/s390/Debugging390.txt | 2 +- Documentation/scheduler/sched-deadline.txt | 6 + Documentation/scheduler/sched-rt-group.txt | 8 +- Documentation/scsi/ChangeLog.megaraid_sas | 2 +- Documentation/security/LSM.txt | 7 + Documentation/security/keys.txt | 17 +- Documentation/security/self-protection.txt | 10 +- Documentation/siphash.txt | 175 + Documentation/sound/hd-audio/dp-mst.rst | 17 + Documentation/sound/hd-audio/notes.rst | 2 +- Documentation/sparc/console.txt | 9 + Documentation/spi/ep93xx_spi | 105 - Documentation/static-keys.txt | 4 +- Documentation/sysctl/kernel.txt | 2 +- Documentation/sysctl/net.txt | 33 + Documentation/sysctl/vm.txt | 4 +- Documentation/thermal/nouveau_thermal | 2 +- Documentation/timers/timer_stats.txt | 73 - Documentation/trace/kprobetrace.txt | 2 +- .../trace/postprocess/trace-vmscan-postprocess.pl | 26 +- Documentation/trace/uprobetracer.txt | 2 +- Documentation/translations/ja_JP/HOWTO | 2 +- Documentation/translations/ko_KR/howto.rst | 4 +- .../translations/ko_KR/memory-barriers.txt | 68 +- Documentation/translations/zh_CN/CodingStyle | 813 -- Documentation/translations/zh_CN/coding-style.rst | 950 +++ Documentation/translations/zh_CN/index.rst | 12 + Documentation/usb/gadget-testing.txt | 2 + Documentation/usb/power-management.txt | 2 +- Documentation/virtual/kvm/api.txt | 284 +- Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 11 +- Documentation/virtual/kvm/devices/arm-vgic.txt | 6 + Documentation/virtual/kvm/hypercalls.txt | 35 + Documentation/virtual/kvm/locking.txt | 31 +- Documentation/virtual/uml/UserModeLinux-HOWTO.txt | 6 +- Documentation/vm/ksm.txt | 18 + Documentation/vm/transhuge.txt | 10 +- Documentation/vm/userfaultfd.txt | 87 +- Documentation/watchdog/watchdog-kernel-api.txt | 6 + Documentation/watchdog/watchdog-parameters.txt | 5 + Documentation/x86/intel_rdt_ui.txt | 114 + Documentation/x86/zero-page.txt | 2 + MAINTAINERS | 414 +- Makefile | 48 +- arch/Kconfig | 68 +- arch/alpha/include/asm/Kbuild | 3 +- arch/alpha/include/asm/a.out-core.h | 1 + arch/alpha/include/asm/current.h | 9 - arch/alpha/include/asm/dma-mapping.h | 4 +- arch/alpha/include/asm/mmu_context.h | 2 + arch/alpha/kernel/osf_sys.c | 17 +- arch/alpha/kernel/pci-noop.c | 4 +- arch/alpha/kernel/pci_iommu.c | 4 +- arch/alpha/kernel/process.c | 3 + arch/alpha/kernel/ptrace.c | 1 + arch/alpha/kernel/signal.c | 3 +- arch/alpha/kernel/smp.c | 4 +- arch/alpha/kernel/traps.c | 5 +- arch/alpha/math-emu/math.c | 1 + arch/alpha/mm/fault.c | 4 +- arch/arc/Kconfig | 21 +- arch/arc/boot/dts/axc003_idu.dtsi | 23 +- arch/arc/boot/dts/haps_hs_idu.dts | 11 +- arch/arc/boot/dts/nsim_hs_idu.dts | 15 +- arch/arc/boot/dts/nsimosci_hs_idu.dts | 21 +- arch/arc/boot/dts/skeleton.dtsi | 1 + arch/arc/boot/dts/skeleton_hs.dtsi | 1 + arch/arc/boot/dts/skeleton_hs_idu.dtsi | 21 +- arch/arc/boot/dts/vdk_axc003_idu.dtsi | 13 +- arch/arc/boot/dts/vdk_axs10x_mb.dtsi | 32 + arch/arc/configs/vdk_hs38_smp_defconfig | 9 +- arch/arc/include/asm/Kbuild | 1 - arch/arc/include/asm/arcregs.h | 3 + arch/arc/include/asm/atomic.h | 3 +- arch/arc/include/asm/dma-mapping.h | 4 +- arch/arc/include/asm/entry-arcv2.h | 10 + arch/arc/include/asm/hugepage.h | 1 + arch/arc/include/asm/irq.h | 10 +- arch/arc/include/asm/kprobes.h | 10 +- arch/arc/include/asm/mmu_context.h | 1 + arch/arc/include/asm/pgtable.h | 1 + arch/arc/include/asm/ptrace.h | 4 + arch/arc/kernel/ctx_sw.c | 1 + arch/arc/kernel/entry-arcv2.S | 19 +- arch/arc/kernel/intc-arcv2.c | 42 +- arch/arc/kernel/intc-compact.c | 1 + arch/arc/kernel/kgdb.c | 1 + arch/arc/kernel/mcip.c | 48 +- arch/arc/kernel/process.c | 3 + arch/arc/kernel/ptrace.c | 1 + arch/arc/kernel/setup.c | 46 +- arch/arc/kernel/signal.c | 2 + arch/arc/kernel/smp.c | 6 +- arch/arc/kernel/stacktrace.c | 2 + arch/arc/kernel/traps.c | 2 +- arch/arc/kernel/troubleshoot.c | 3 + arch/arc/kernel/unwind.c | 4 +- arch/arc/mm/cache.c | 3 + arch/arc/mm/dma.c | 2 +- arch/arc/mm/extable.c | 3 +- arch/arc/mm/fault.c | 2 +- arch/arc/mm/mmap.c | 3 +- arch/arc/mm/tlb.c | 2 + arch/arc/plat-eznps/Kconfig | 1 - arch/arc/plat-sim/Kconfig | 1 - arch/arm/Kconfig | 6 + arch/arm/Kconfig-nommu | 3 +- arch/arm/Kconfig.debug | 11 - arch/arm/boot/compressed/decompress.c | 1 + arch/arm/boot/compressed/head.S | 2 +- arch/arm/boot/dts/Makefile | 32 +- arch/arm/boot/dts/alpine.dtsi | 2 +- arch/arm/boot/dts/am335x-baltos.dtsi | 2 + arch/arm/boot/dts/am335x-bone-common.dtsi | 2 + arch/arm/boot/dts/am335x-boneblack-common.dtsi | 163 + arch/arm/boot/dts/am335x-boneblack-wireless.dts | 109 + arch/arm/boot/dts/am335x-boneblack.dts | 155 +- arch/arm/boot/dts/am335x-bonegreen-common.dtsi | 44 + arch/arm/boot/dts/am335x-bonegreen-wireless.dts | 126 + arch/arm/boot/dts/am335x-bonegreen.dts | 38 +- arch/arm/boot/dts/am335x-chiliboard.dts | 16 + arch/arm/boot/dts/am335x-chilisom.dtsi | 8 + arch/arm/boot/dts/am335x-evm.dts | 4 + arch/arm/boot/dts/am335x-evmsk.dts | 5 + arch/arm/boot/dts/am335x-icev2.dts | 4 + arch/arm/boot/dts/am335x-nano.dts | 31 +- arch/arm/boot/dts/am335x-pcm-953.dtsi | 288 + arch/arm/boot/dts/am335x-phycore-rdk.dts | 27 + arch/arm/boot/dts/am335x-phycore-som.dtsi | 72 +- arch/arm/boot/dts/am335x-sl50.dts | 70 +- arch/arm/boot/dts/am335x-wega.dtsi | 9 +- arch/arm/boot/dts/am33xx.dtsi | 4 +- arch/arm/boot/dts/am4372.dtsi | 1 - arch/arm/boot/dts/am437x-gp-evm.dts | 4 + arch/arm/boot/dts/am437x-idk-evm.dts | 4 + arch/arm/boot/dts/am437x-sk-evm.dts | 4 + arch/arm/boot/dts/am43x-epos-evm.dts | 4 + arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi | 18 +- arch/arm/boot/dts/am57xx-beagle-x15-revb1.dts | 5 + arch/arm/boot/dts/am57xx-beagle-x15.dts | 5 + arch/arm/boot/dts/am57xx-idk-common.dtsi | 18 +- arch/arm/boot/dts/armada-370-db.dts | 10 +- arch/arm/boot/dts/armada-370-dlink-dns327l.dts | 10 +- arch/arm/boot/dts/armada-370-mirabox.dts | 10 +- arch/arm/boot/dts/armada-370-netgear-rn102.dts | 10 +- arch/arm/boot/dts/armada-370-netgear-rn104.dts | 10 +- arch/arm/boot/dts/armada-370-rd.dts | 54 +- arch/arm/boot/dts/armada-370-synology-ds213j.dts | 10 +- arch/arm/boot/dts/armada-370-xp.dtsi | 10 +- arch/arm/boot/dts/armada-370.dtsi | 10 +- arch/arm/boot/dts/armada-375-db.dts | 10 +- arch/arm/boot/dts/armada-375.dtsi | 10 +- arch/arm/boot/dts/armada-380.dtsi | 10 +- arch/arm/boot/dts/armada-385-linksys.dtsi | 52 +- arch/arm/boot/dts/armada-385-turris-omnia.dts | 58 +- arch/arm/boot/dts/armada-385.dtsi | 10 +- arch/arm/boot/dts/armada-388-clearfog-base.dts | 109 + arch/arm/boot/dts/armada-388-clearfog-pro.dts | 55 + arch/arm/boot/dts/armada-388-clearfog.dts | 435 +- arch/arm/boot/dts/armada-388-clearfog.dtsi | 307 + arch/arm/boot/dts/armada-388-db.dts | 10 +- arch/arm/boot/dts/armada-388-rd.dts | 10 +- .../arm/boot/dts/armada-38x-solidrun-microsom.dtsi | 130 +- arch/arm/boot/dts/armada-38x.dtsi | 10 +- arch/arm/boot/dts/armada-390-db.dts | 10 +- arch/arm/boot/dts/armada-390.dtsi | 10 +- arch/arm/boot/dts/armada-395.dtsi | 10 +- arch/arm/boot/dts/armada-398-db.dts | 10 +- arch/arm/boot/dts/armada-398.dtsi | 10 +- arch/arm/boot/dts/armada-39x.dtsi | 10 +- arch/arm/boot/dts/armada-xp-98dx3236.dtsi | 254 + arch/arm/boot/dts/armada-xp-98dx3336.dtsi | 76 + arch/arm/boot/dts/armada-xp-98dx4251.dtsi | 90 + arch/arm/boot/dts/armada-xp-axpwifiap.dts | 10 +- arch/arm/boot/dts/armada-xp-db-dxbc2.dts | 151 + arch/arm/boot/dts/armada-xp-db-xc3-24g4xg.dts | 142 + arch/arm/boot/dts/armada-xp-db.dts | 10 +- arch/arm/boot/dts/armada-xp-gp.dts | 10 +- arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts | 10 +- arch/arm/boot/dts/armada-xp-linksys-mamba.dts | 53 + arch/arm/boot/dts/armada-xp-matrix.dts | 10 +- arch/arm/boot/dts/armada-xp-mv78230.dtsi | 10 +- arch/arm/boot/dts/armada-xp-mv78260.dtsi | 10 +- arch/arm/boot/dts/armada-xp-mv78460.dtsi | 10 +- arch/arm/boot/dts/armada-xp-netgear-rn2120.dts | 10 +- arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts | 10 +- arch/arm/boot/dts/armada-xp-synology-ds414.dts | 10 +- arch/arm/boot/dts/armada-xp.dtsi | 10 +- arch/arm/boot/dts/aspeed-ast2500-evb.dts | 14 + arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts | 24 +- arch/arm/boot/dts/aspeed-bmc-opp-romulus.dts | 45 + arch/arm/boot/dts/aspeed-g4.dtsi | 776 ++ arch/arm/boot/dts/aspeed-g5.dtsi | 879 ++ arch/arm/boot/dts/at91-linea.dtsi | 49 + arch/arm/boot/dts/at91-sama5d2_xplained.dts | 4 + arch/arm/boot/dts/at91-sama5d4_xplained.dts | 8 + arch/arm/boot/dts/at91-tse850-3.dts | 274 + arch/arm/boot/dts/axm55xx.dtsi | 2 +- arch/arm/boot/dts/axp223.dtsi | 58 + arch/arm/boot/dts/bcm-nsp.dtsi | 64 +- arch/arm/boot/dts/bcm2835-rpi.dtsi | 5 + arch/arm/boot/dts/bcm283x.dtsi | 8 + arch/arm/boot/dts/bcm4708-asus-rt-ac56u.dts | 3 +- arch/arm/boot/dts/bcm4708-asus-rt-ac68u.dts | 3 +- arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts | 7 +- arch/arm/boot/dts/bcm4708-luxul-xap-1510.dts | 4 - arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts | 4 - arch/arm/boot/dts/bcm4708-netgear-r6250.dts | 7 +- arch/arm/boot/dts/bcm4708-netgear-r6300-v2.dts | 3 +- arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts | 7 +- arch/arm/boot/dts/bcm4708.dtsi | 4 + arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts | 3 +- arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts | 7 +- arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts | 3 +- arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts | 60 + arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts | 107 + arch/arm/boot/dts/bcm47081.dtsi | 4 + arch/arm/boot/dts/bcm4709-asus-rt-ac87u.dts | 3 +- arch/arm/boot/dts/bcm4709-buffalo-wxr-1900dhp.dts | 3 +- arch/arm/boot/dts/bcm4709-netgear-r7000.dts | 11 +- arch/arm/boot/dts/bcm4709-netgear-r8000.dts | 51 +- arch/arm/boot/dts/bcm4709-tplink-archer-c9-v1.dts | 4 - arch/arm/boot/dts/bcm4709.dtsi | 1 + arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts | 7 +- arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts | 13 +- arch/arm/boot/dts/bcm47094-netgear-r8500.dts | 7 +- arch/arm/boot/dts/bcm47094.dtsi | 1 + arch/arm/boot/dts/bcm5301x.dtsi | 45 +- arch/arm/boot/dts/bcm53573.dtsi | 22 + arch/arm/boot/dts/bcm94708.dts | 4 - arch/arm/boot/dts/bcm94709.dts | 4 - arch/arm/boot/dts/bcm953012er.dts | 4 - arch/arm/boot/dts/bcm953012k.dts | 4 +- arch/arm/boot/dts/bcm958522er.dts | 36 +- arch/arm/boot/dts/bcm958525er.dts | 36 +- arch/arm/boot/dts/bcm958525xmc.dts | 69 +- arch/arm/boot/dts/bcm958622hr.dts | 43 + arch/arm/boot/dts/bcm958623hr.dts | 59 +- arch/arm/boot/dts/bcm958625hr.dts | 73 +- arch/arm/boot/dts/bcm958625k.dts | 151 +- arch/arm/boot/dts/bcm988312hr.dts | 43 + arch/arm/boot/dts/da850-evm.dts | 20 + arch/arm/boot/dts/da850-lcdk.dts | 90 + arch/arm/boot/dts/da850-lego-ev3.dts | 313 + arch/arm/boot/dts/da850.dtsi | 51 +- arch/arm/boot/dts/dm814x.dtsi | 10 +- arch/arm/boot/dts/dm816x.dtsi | 6 +- arch/arm/boot/dts/dove-cm-a510.dtsi | 10 +- arch/arm/boot/dts/dove-sbc-a510.dts | 10 +- arch/arm/boot/dts/dra7-evm.dts | 286 +- arch/arm/boot/dts/dra7.dtsi | 5 +- arch/arm/boot/dts/dra71-evm.dts | 5 + arch/arm/boot/dts/dra72-evm-common.dtsi | 20 +- arch/arm/boot/dts/dra72-evm-revc.dts | 4 + arch/arm/boot/dts/ecx-2000.dts | 2 +- arch/arm/boot/dts/exynos-mfc-reserved-memory.dtsi | 2 +- arch/arm/boot/dts/exynos3250.dtsi | 2 +- arch/arm/boot/dts/exynos4.dtsi | 37 +- arch/arm/boot/dts/exynos4210.dtsi | 1 + arch/arm/boot/dts/exynos4212.dtsi | 133 - arch/arm/boot/dts/exynos4412-itop-elite.dts | 25 +- arch/arm/boot/dts/exynos4412-odroid-common.dtsi | 28 +- arch/arm/boot/dts/exynos4412-odroidu3.dts | 5 +- arch/arm/boot/dts/exynos4412-odroidx.dts | 13 + arch/arm/boot/dts/exynos4412-odroidx2.dts | 25 +- arch/arm/boot/dts/exynos4412-pinctrl.dtsi | 984 +++ arch/arm/boot/dts/exynos4412-prime.dtsi | 41 + arch/arm/boot/dts/exynos4412.dtsi | 578 +- arch/arm/boot/dts/exynos4x12-pinctrl.dtsi | 984 --- arch/arm/boot/dts/exynos4x12.dtsi | 594 -- arch/arm/boot/dts/exynos5.dtsi | 4 +- arch/arm/boot/dts/exynos5250.dtsi | 11 + arch/arm/boot/dts/exynos5260.dtsi | 2 +- arch/arm/boot/dts/exynos5410.dtsi | 8 + arch/arm/boot/dts/exynos5420.dtsi | 13 + arch/arm/boot/dts/exynos5440.dtsi | 2 +- arch/arm/boot/dts/imx1-ads.dts | 1 - arch/arm/boot/dts/imx1.dtsi | 3 +- arch/arm/boot/dts/imx23.dtsi | 5 +- arch/arm/boot/dts/imx25.dtsi | 7 +- arch/arm/boot/dts/imx27-apf27dev.dts | 2 - .../boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts | 1 - arch/arm/boot/dts/imx27-pdk.dts | 1 - arch/arm/boot/dts/imx27-phytec-phycard-s-som.dtsi | 1 - arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts | 1 - arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi | 1 - arch/arm/boot/dts/imx27.dtsi | 1 + arch/arm/boot/dts/imx28.dtsi | 7 +- arch/arm/boot/dts/imx31.dtsi | 5 +- arch/arm/boot/dts/imx35.dtsi | 5 +- arch/arm/boot/dts/imx50-evk.dts | 1 - arch/arm/boot/dts/imx51-apf51dev.dts | 2 - arch/arm/boot/dts/imx51-babbage.dts | 1 - arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi | 1 - .../boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts | 1 - arch/arm/boot/dts/imx53-qsb-common.dtsi | 20 +- arch/arm/boot/dts/imx53-qsb.dts | 5 +- arch/arm/boot/dts/imx53-qsrb.dts | 6 +- arch/arm/boot/dts/imx53-smd.dts | 1 - arch/arm/boot/dts/imx53-tqma53.dtsi | 2 - arch/arm/boot/dts/imx53-tx53.dtsi | 1 - arch/arm/boot/dts/imx53-voipac-dmm-668.dtsi | 1 - arch/arm/boot/dts/imx6dl-aristainetos2_4.dts | 10 +- arch/arm/boot/dts/imx6dl-aristainetos2_7.dts | 10 +- arch/arm/boot/dts/imx6dl-aristainetos_4.dts | 1 - arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts | 10 +- arch/arm/boot/dts/imx6dl-cubox-i.dts | 10 +- arch/arm/boot/dts/imx6dl-hummingboard.dts | 10 +- arch/arm/boot/dts/imx6dl-icore-rqs.dts | 51 + arch/arm/boot/dts/imx6dl-icore.dts | 10 +- arch/arm/boot/dts/imx6dl-nit6xlite.dts | 10 +- arch/arm/boot/dts/imx6dl-nitrogen6x.dts | 10 +- arch/arm/boot/dts/imx6dl-sabrelite.dts | 10 +- arch/arm/boot/dts/imx6dl-savageboard.dts | 51 + arch/arm/boot/dts/imx6dl-ts4900.dts | 10 +- arch/arm/boot/dts/imx6q-apalis-ixora.dts | 10 +- arch/arm/boot/dts/imx6q-b450v3.dts | 10 +- arch/arm/boot/dts/imx6q-b650v3.dts | 10 +- arch/arm/boot/dts/imx6q-b850v3.dts | 10 +- arch/arm/boot/dts/imx6q-ba16.dtsi | 11 +- arch/arm/boot/dts/imx6q-bx50v3.dtsi | 11 +- arch/arm/boot/dts/imx6q-cm-fx6.dts | 32 +- arch/arm/boot/dts/imx6q-cubox-i.dts | 10 +- arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts | 1 - arch/arm/boot/dts/imx6q-evi.dts | 3 - arch/arm/boot/dts/imx6q-gw5400-a.dts | 1 - arch/arm/boot/dts/imx6q-h100.dts | 10 +- arch/arm/boot/dts/imx6q-hummingboard.dts | 10 +- arch/arm/boot/dts/imx6q-icore-rqs.dts | 12 +- arch/arm/boot/dts/imx6q-icore.dts | 10 +- arch/arm/boot/dts/imx6q-marsboard.dts | 11 +- arch/arm/boot/dts/imx6q-mccmon6.dts | 473 + arch/arm/boot/dts/imx6q-nitrogen6_max.dts | 10 +- arch/arm/boot/dts/imx6q-nitrogen6_som2.dts | 10 +- arch/arm/boot/dts/imx6q-nitrogen6x.dts | 10 +- arch/arm/boot/dts/imx6q-novena.dts | 1 - arch/arm/boot/dts/imx6q-sabrelite.dts | 10 +- arch/arm/boot/dts/imx6q-savageboard.dts | 55 + arch/arm/boot/dts/imx6q-ts4900.dts | 10 +- arch/arm/boot/dts/imx6q-utilite-pro.dts | 115 + arch/arm/boot/dts/imx6qdl-apalis.dtsi | 12 +- arch/arm/boot/dts/imx6qdl-apf6dev.dtsi | 1 - arch/arm/boot/dts/imx6qdl-aristainetos.dtsi | 1 - arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi | 13 +- arch/arm/boot/dts/imx6qdl-colibri.dtsi | 11 +- arch/arm/boot/dts/imx6qdl-cubox-i.dtsi | 10 +- arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi | 1 - arch/arm/boot/dts/imx6qdl-gw51xx.dtsi | 132 +- arch/arm/boot/dts/imx6qdl-gw52xx.dtsi | 166 +- arch/arm/boot/dts/imx6qdl-gw53xx.dtsi | 163 +- arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 16 + arch/arm/boot/dts/imx6qdl-gw551x.dtsi | 132 +- arch/arm/boot/dts/imx6qdl-gw552x.dtsi | 130 +- arch/arm/boot/dts/imx6qdl-gw553x.dtsi | 98 +- arch/arm/boot/dts/imx6qdl-hummingboard.dtsi | 10 +- arch/arm/boot/dts/imx6qdl-icore-rqs.dtsi | 14 +- arch/arm/boot/dts/imx6qdl-icore.dtsi | 10 +- arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi | 10 +- arch/arm/boot/dts/imx6qdl-microsom.dtsi | 10 +- arch/arm/boot/dts/imx6qdl-nit6xlite.dtsi | 13 +- arch/arm/boot/dts/imx6qdl-nitrogen6_max.dtsi | 15 +- arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi | 13 +- arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi | 13 +- arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi | 1 - arch/arm/boot/dts/imx6qdl-rex.dtsi | 2 - arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | 1 - arch/arm/boot/dts/imx6qdl-sabrelite.dtsi | 13 +- arch/arm/boot/dts/imx6qdl-sabresd.dtsi | 1 - arch/arm/boot/dts/imx6qdl-savageboard.dtsi | 255 + arch/arm/boot/dts/imx6qdl-ts4900.dtsi | 12 +- arch/arm/boot/dts/imx6qdl-tx6.dtsi | 1 - arch/arm/boot/dts/imx6qdl.dtsi | 14 +- arch/arm/boot/dts/imx6qp.dtsi | 6 + arch/arm/boot/dts/imx6sl-evk.dts | 1 - arch/arm/boot/dts/imx6sx-nitrogen6sx.dts | 11 +- arch/arm/boot/dts/imx6sx-sdb-sai.dts | 10 +- arch/arm/boot/dts/imx6sx-udoo-neo.dtsi | 140 +- arch/arm/boot/dts/imx6ul-geam-kit.dts | 10 +- arch/arm/boot/dts/imx6ul-geam.dtsi | 10 +- arch/arm/boot/dts/imx6ul-isiot-emmc.dts | 77 + arch/arm/boot/dts/imx6ul-isiot-nand.dts | 79 + arch/arm/boot/dts/imx6ul-isiot.dtsi | 114 + arch/arm/boot/dts/imx6ul-liteboard.dts | 10 +- arch/arm/boot/dts/imx6ul-litesom.dtsi | 10 +- arch/arm/boot/dts/imx6ul-opos6ul.dtsi | 192 + arch/arm/boot/dts/imx6ul-opos6uldev.dts | 412 + arch/arm/boot/dts/imx6ul-pico-hobbit.dts | 10 +- arch/arm/boot/dts/imx6ul-tx6ul.dtsi | 1 - arch/arm/boot/dts/imx6ul.dtsi | 11 +- arch/arm/boot/dts/imx6ull-14x14-evk.dts | 10 +- arch/arm/boot/dts/imx6ull.dtsi | 10 +- arch/arm/boot/dts/imx7-colibri.dtsi | 16 +- arch/arm/boot/dts/imx7d-cl-som-imx7.dts | 14 +- arch/arm/boot/dts/imx7d-nitrogen7.dts | 14 +- arch/arm/boot/dts/imx7d-pinfunc.h | 110 +- arch/arm/boot/dts/imx7d-sdb.dts | 25 +- arch/arm/boot/dts/imx7s-warp.dts | 4 +- arch/arm/boot/dts/imx7s.dtsi | 1 - arch/arm/boot/dts/keystone-k2e-netcp.dtsi | 3 +- arch/arm/boot/dts/keystone-k2e.dtsi | 25 + arch/arm/boot/dts/keystone-k2g.dtsi | 18 +- arch/arm/boot/dts/keystone-k2hk-netcp.dtsi | 3 +- arch/arm/boot/dts/keystone-k2hk.dtsi | 32 + arch/arm/boot/dts/keystone-k2l-netcp.dtsi | 3 +- arch/arm/boot/dts/keystone-k2l.dtsi | 32 +- arch/arm/boot/dts/keystone.dtsi | 13 +- arch/arm/boot/dts/kirkwood-dir665.dts | 49 + arch/arm/boot/dts/kirkwood-linkstation-6282.dtsi | 10 +- .../boot/dts/kirkwood-linkstation-duo-6281.dtsi | 10 +- arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts | 10 +- arch/arm/boot/dts/kirkwood-linkstation-lsvl.dts | 10 +- arch/arm/boot/dts/kirkwood-linkstation-lswsxl.dts | 10 +- arch/arm/boot/dts/kirkwood-linkstation-lswvl.dts | 10 +- arch/arm/boot/dts/kirkwood-linkstation-lswxl.dts | 10 +- arch/arm/boot/dts/kirkwood-linkstation.dtsi | 10 +- arch/arm/boot/dts/kirkwood-linksys-viper.dts | 49 + arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts | 49 + arch/arm/boot/dts/kirkwood-rd88f6281-a.dts | 9 +- arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts | 11 + arch/arm/boot/dts/kirkwood-rd88f6281.dtsi | 44 + arch/arm/boot/dts/logicpd-torpedo-som.dtsi | 2 +- arch/arm/boot/dts/ls1021a.dtsi | 4 +- arch/arm/boot/dts/mt2701-evb.dts | 54 + arch/arm/boot/dts/mt2701.dtsi | 249 +- arch/arm/boot/dts/mt6580.dtsi | 2 +- arch/arm/boot/dts/mt6589.dtsi | 2 +- arch/arm/boot/dts/mt7623-evb.dts | 2 +- arch/arm/boot/dts/mt7623.dtsi | 4 +- arch/arm/boot/dts/mt8127.dtsi | 2 +- arch/arm/boot/dts/mt8135.dtsi | 2 +- arch/arm/boot/dts/mvebu-linkstation-fan.dtsi | 10 +- .../boot/dts/mvebu-linkstation-gpio-simple.dtsi | 10 +- arch/arm/boot/dts/omap3-beagle-xm.dts | 16 + arch/arm/boot/dts/omap3-igep.dtsi | 21 - arch/arm/boot/dts/omap3-n900.dts | 3 +- arch/arm/boot/dts/omap4-panda-common.dtsi | 16 + arch/arm/boot/dts/omap5-igep0050.dts | 21 + arch/arm/boot/dts/omap5-uevm.dts | 21 + arch/arm/boot/dts/omap5.dtsi | 2 +- arch/arm/boot/dts/orion5x-kuroboxpro.dts | 10 +- arch/arm/boot/dts/orion5x-linkstation-lschl.dts | 10 +- arch/arm/boot/dts/orion5x-linkstation-lsgl.dts | 10 +- arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts | 10 +- arch/arm/boot/dts/orion5x-linkstation.dtsi | 10 +- arch/arm/boot/dts/orion5x-lswsgl.dts | 10 +- arch/arm/boot/dts/ox810se.dtsi | 10 +- arch/arm/boot/dts/ox820.dtsi | 14 +- arch/arm/boot/dts/qcom-apq8060-dragonboard.dts | 62 +- .../arm/boot/dts/qcom-apq8064-arrow-sd-600eval.dts | 69 + arch/arm/boot/dts/qcom-apq8064-ifc6410.dts | 22 - arch/arm/boot/dts/qcom-apq8064-pins.dtsi | 37 + .../arm/boot/dts/qcom-apq8064-sony-xperia-yuga.dts | 7 + arch/arm/boot/dts/qcom-apq8064.dtsi | 287 +- arch/arm/boot/dts/qcom-ipq8064.dtsi | 4 +- arch/arm/boot/dts/qcom-msm8660-surf.dts | 2 +- arch/arm/boot/dts/qcom-msm8660.dtsi | 12 +- .../boot/dts/qcom-msm8974-sony-xperia-honami.dts | 8 + arch/arm/boot/dts/qcom-msm8974.dtsi | 96 +- arch/arm/boot/dts/r7s72100-rskrza1.dts | 8 + arch/arm/boot/dts/r7s72100.dtsi | 28 + arch/arm/boot/dts/r8a73a4.dtsi | 6 +- arch/arm/boot/dts/r8a7743.dtsi | 18 +- arch/arm/boot/dts/r8a7745.dtsi | 18 +- arch/arm/boot/dts/r8a7778.dtsi | 10 +- arch/arm/boot/dts/r8a7779-marzen.dts | 4 + arch/arm/boot/dts/r8a7779.dtsi | 9 +- arch/arm/boot/dts/r8a7790.dtsi | 37 +- arch/arm/boot/dts/r8a7791.dtsi | 35 +- arch/arm/boot/dts/r8a7792.dtsi | 26 +- arch/arm/boot/dts/r8a7793-gose.dts | 21 + arch/arm/boot/dts/r8a7793.dtsi | 23 +- arch/arm/boot/dts/r8a7794.dtsi | 23 +- arch/arm/boot/dts/rk1108.dtsi | 2 +- arch/arm/boot/dts/rk3036-evb.dts | 2 +- arch/arm/boot/dts/rk3036-kylin.dts | 12 +- arch/arm/boot/dts/rk3036.dtsi | 2 +- arch/arm/boot/dts/rk3066a-bqcurie2.dts | 8 +- arch/arm/boot/dts/rk3066a-marsboard.dts | 6 +- arch/arm/boot/dts/rk3066a-mk808.dts | 10 +- arch/arm/boot/dts/rk3066a-rayeager.dts | 18 +- arch/arm/boot/dts/rk3066a.dtsi | 4 + arch/arm/boot/dts/rk3188-px3-evb.dts | 10 +- arch/arm/boot/dts/rk3188-radxarock.dts | 20 +- arch/arm/boot/dts/rk3188.dtsi | 4 + arch/arm/boot/dts/rk3229-evb.dts | 2 +- arch/arm/boot/dts/rk322x.dtsi | 2 +- arch/arm/boot/dts/rk3288-evb-act8846.dts | 6 +- arch/arm/boot/dts/rk3288-evb-rk808.dts | 2 +- arch/arm/boot/dts/rk3288-evb.dtsi | 14 +- arch/arm/boot/dts/rk3288-fennec.dts | 6 +- arch/arm/boot/dts/rk3288-firefly-beta.dts | 2 +- arch/arm/boot/dts/rk3288-firefly-reload-core.dtsi | 2 +- arch/arm/boot/dts/rk3288-firefly-reload.dts | 26 +- arch/arm/boot/dts/rk3288-firefly.dts | 2 +- arch/arm/boot/dts/rk3288-firefly.dtsi | 18 +- arch/arm/boot/dts/rk3288-miqi.dts | 8 +- arch/arm/boot/dts/rk3288-popmetal.dts | 8 +- arch/arm/boot/dts/rk3288-r89.dts | 14 +- arch/arm/boot/dts/rk3288-rock2-som.dtsi | 4 +- arch/arm/boot/dts/rk3288-rock2-square.dts | 14 +- arch/arm/boot/dts/rk3288-veyron-analog-audio.dtsi | 8 +- arch/arm/boot/dts/rk3288-veyron-brain.dts | 8 +- arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi | 14 +- arch/arm/boot/dts/rk3288-veyron-jaq.dts | 14 +- arch/arm/boot/dts/rk3288-veyron-jerry.dts | 12 +- arch/arm/boot/dts/rk3288-veyron-mickey.dts | 6 +- arch/arm/boot/dts/rk3288-veyron-minnie.dts | 18 +- arch/arm/boot/dts/rk3288-veyron-pinky.dts | 4 +- arch/arm/boot/dts/rk3288-veyron-sdmmc.dtsi | 2 +- arch/arm/boot/dts/rk3288-veyron-speedy.dts | 10 +- arch/arm/boot/dts/rk3288-veyron.dtsi | 10 +- arch/arm/boot/dts/rk3288.dtsi | 86 +- arch/arm/boot/dts/sama5d2.dtsi | 32 +- arch/arm/boot/dts/sama5d36ek_cmp.dts | 87 + arch/arm/boot/dts/sama5d3_uart.dtsi | 4 +- arch/arm/boot/dts/sama5d3xcm_cmp.dtsi | 201 + arch/arm/boot/dts/sama5d3xmb_cmp.dtsi | 301 + arch/arm/boot/dts/sama5d4.dtsi | 16 +- arch/arm/boot/dts/sh73a0.dtsi | 2 +- arch/arm/boot/dts/socfpga.dtsi | 31 +- arch/arm/boot/dts/socfpga_arria10.dtsi | 41 +- arch/arm/boot/dts/socfpga_arria10_socdk.dtsi | 9 + arch/arm/boot/dts/socfpga_arria10_socdk_nand.dts | 31 + arch/arm/boot/dts/socfpga_arria5.dtsi | 4 + arch/arm/boot/dts/socfpga_arria5_socdk.dts | 43 + arch/arm/boot/dts/socfpga_cyclone5_socdk.dts | 53 + arch/arm/boot/dts/ste-dbx5x0.dtsi | 21 + arch/arm/boot/dts/ste-href.dtsi | 21 +- arch/arm/boot/dts/ste-hrefprev60.dtsi | 1 + arch/arm/boot/dts/ste-hrefv60plus.dtsi | 1 + arch/arm/boot/dts/ste-snowball.dts | 25 +- arch/arm/boot/dts/stih407-family.dtsi | 72 +- arch/arm/boot/dts/stih407-pinctrl.dtsi | 12 +- arch/arm/boot/dts/stih410-b2120.dts | 6 + arch/arm/boot/dts/stih410-b2260.dts | 5 + arch/arm/boot/dts/stih410.dtsi | 24 +- arch/arm/boot/dts/stm32429i-eval.dts | 37 +- arch/arm/boot/dts/stm32f429-disco.dts | 6 + arch/arm/boot/dts/stm32f429.dtsi | 450 +- arch/arm/boot/dts/stm32f469-disco.dts | 36 +- arch/arm/boot/dts/sun4i-a10-a1000.dts | 43 +- arch/arm/boot/dts/sun4i-a10-ba10-tvbox.dts | 2 +- arch/arm/boot/dts/sun4i-a10-chuwi-v7-cw0825.dts | 14 +- arch/arm/boot/dts/sun4i-a10-cubieboard.dts | 14 +- arch/arm/boot/dts/sun4i-a10-dserve-dsrv9703c.dts | 38 +- commit a351e9b9fc24e982ec2f0e76379a49826036da12 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Sun Apr 30 19:47:48 2017 -0700 Linux 4.11 commit 97ce89f8a4eb15a1e82be419fcd6218fe4da1fbd Merge: 14e07f0 88d879d Author: Linus Torvalds <torva...@linux-foundation.org> Date: Sun Apr 30 11:44:18 2017 -0700 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull x86 fixes from Thomas Gleixner: "The final fixes for 4.11: - prevent a triple fault with function graph tracing triggered via suspend to ram - prevent optimizing for size when function graph tracing is enabled and the compiler does not support -mfentry - prevent mwaitx() being called with a zero timeout as mwaitx() might never return. Observed on the new Ryzen CPUs" * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: Prevent timer value 0 for MWAITX x86/build: convert function graph '-Os' error to warning ftrace/x86: Fix triple fault with graph tracing and suspend-to-ram commit 14e07f023ff6ed3e38850a9935a05b0b8e52fa49 Merge: 8c9a694 25e2d8c Author: Linus Torvalds <torva...@linux-foundation.org> Date: Sun Apr 30 11:35:00 2017 -0700 Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull scheduler fix from Thomas Gleixner: "A single fix for a cputime accounting regression which got introduced in the 4.11 cycle" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched/cputime: Fix ksoftirqd cputime accounting regression commit 88d879d29f9cc0de2d930b584285638cdada6625 Author: Janakarajan Natarajan <janakarajan.natara...@amd.com> Date: Tue Apr 25 16:44:03 2017 -0500 Prevent timer value 0 for MWAITX Newer hardware has uncovered a bug in the software implementation of using MWAITX for the delay function. A value of 0 for the timer is meant to indicate that a timeout will not be used to exit MWAITX. On newer hardware this can result in MWAITX never returning, resulting in NMI soft lockup messages being printed. On older hardware, some of the other conditions under which MWAITX can exit masked this issue. The AMD APM does not currently document this and will be updated. Please refer to http://marc.info/?l=kvm&m=148950623231140 for information regarding NMI soft lockup messages on an AMD Ryzen 1800X. This has been root-caused as a 0 passed to MWAITX causing it to wait indefinitely. This change has the added benefit of avoiding the unnecessary setup of MONITORX/MWAITX when the delay value is zero. Signed-off-by: Janakarajan Natarajan <janakarajan.natara...@amd.com> Link: http://lkml.kernel.org/r/1493156643-29366-1-git-send-email-janakarajan.natara...@amd.com Signed-off-by: Thomas Gleixner <t...@linutronix.de> commit 8c9a694dc046fab9dff249555860460b92990b52 Merge: 0060e79 4fa55ce Author: Linus Torvalds <torva...@linux-foundation.org> Date: Sat Apr 29 14:00:42 2017 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull iov iter fix from Al Viro. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fix a braino in ITER_PIPE iov_iter_revert() commit 4fa55cefee1bbecadb4c9f47d40a92f65dc44351 Author: Al Viro <v...@zeniv.linux.org.uk> Date: Sat Apr 29 16:42:30 2017 -0400 fix a braino in ITER_PIPE iov_iter_revert() Fixes: 27c0e3748e41 Tested-by: Dave Jones <da...@codemonkey.org.uk> Signed-off-by: Al Viro <v...@zeniv.linux.org.uk> commit 0060e79a1f5231940ef38e6621745c0c808065cb Merge: 0e91178 36c02d0 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Fri Apr 28 17:04:31 2017 -0700 Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux Pull clk fix from Stephen Boyd: "One odd config build fix for a recent Allwinner clock driver change that got merged. The common code called code in another file that wasn't always built. This just forces it on so people don't run into this bad configuration" * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: clk: sunxi-ng: always select CCU_GATE commit 0e9117882da14e7914d05cf14781a7ac9c61c670 Merge: affb852 4c761da Author: Linus Torvalds <torva...@linux-foundation.org> Date: Fri Apr 28 14:13:16 2017 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Pull networking fixes from David Miller: "Just a couple more stragglers, I really hope this is it. 1) Don't let frags slip down into the GRO segmentation handlers, from Steffen Klassert. 2) Truesize under-estimation triggers warnings in TCP over loopback with socket filters, 2 part fix from Eric Dumazet. 3) Fix undesirable reset of bonding MTU to ETH_HLEN on slave removal, from Paolo Abeni. 4) If we flush the XFRM policy after garbage collection, it doesn't work because stray entries can be created afterwards. Fix from Xin Long. 5) Hung socket connection fixes in TIPC from Parthasarathy Bhuvaragan. 6) Fix GRO regression with IPSEC when netfilter is disabled, from Sabrina Dubroca. 7) Fix cpsw driver Kconfig dependency regression, from Arnd Bergmann" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: net: hso: register netdev later to avoid a race condition net: adjust skb->truesize in ___pskb_trim() tcp: do not underestimate skb->truesize in tcp_trim_head() bonding: avoid defaulting hard_header_len to ETH_HLEN on slave removal ipv4: Don't pass IP fragments to upper layer GRO handlers. cpsw/netcp: refine cpts dependency tipc: close the connection if protocol messages contain errors tipc: improve error validations for sockets in CONNECTING state tipc: Fix missing connection request handling xfrm: fix GRO for !CONFIG_NETFILTER xfrm: do the garbage collection after flushing policy commit 4c761daf8bb9a2cbda9facf53ea85d9061f4281e Author: Andreas Kemnade <andr...@kemnade.info> Date: Wed Apr 26 19:26:40 2017 +0200 net: hso: register netdev later to avoid a race condition If the netdev is accessed before the urbs are initialized, there will be NULL pointer dereferences. That is avoided by registering it when it is fully initialized. This case occurs e.g. if dhcpcd is running in the background and the device is probed, either after insmod hso or when the device appears on the usb bus. A backtrace is the following: [ 1357.356048] usb 1-2: new high-speed USB device number 12 using ehci-omap [ 1357.551177] usb 1-2: New USB device found, idVendor=0af0, idProduct=8800 [ 1357.558654] usb 1-2: New USB device strings: Mfr=3, Product=2, SerialNumber=0 [ 1357.568572] usb 1-2: Product: Globetrotter HSUPA Modem [ 1357.574096] usb 1-2: Manufacturer: Option N.V. [ 1357.685882] hso 1-2:1.5: Not our interface [ 1460.886352] hso: unloaded [ 1460.889984] usbcore: deregistering interface driver hso [ 1513.769134] hso: ../drivers/net/usb/hso.c: Option Wireless [ 1513.846771] Unable to handle kernel NULL pointer dereference at virtual address 00000030 [ 1513.887664] hso 1-2:1.5: Not our interface [ 1513.906890] usbcore: registered new interface driver hso [ 1513.937988] pgd = ecdec000 [ 1513.949890] [00000030] *pgd=acd15831, *pte=00000000, *ppte=00000000 [ 1513.956573] Internal error: Oops: 817 [#1] PREEMPT SMP ARM [ 1513.962371] Modules linked in: hso usb_f_ecm omap2430 bnep bluetooth g_ether usb_f_rndis u_ether libcomposite configfs ipv6 arc4 wl18xx wlcore mac80211 cfg80211 bq27xxx_battery panel_tpo_td028ttec1 omapdrm drm_kms_helper cfbfillrect snd_soc_simple_card syscopyarea cfbimgblt snd_soc_simple_card_utils sysfillrect sysimgblt fb_sys_fops snd_soc_omap_twl4030 cfbcopyarea encoder_opa362 drm twl4030_madc_hwmon wwan_on_off snd_soc_gtm601 pwm_omap_dmtimer generic_adc_battery connector_analog_tv pwm_bl extcon_gpio omap3_isp wlcore_sdio videobuf2_dma_contig videobuf2_memops w1_bq27000 videobuf2_v4l2 videobuf2_core omap_hdq snd_soc_omap_mcbsp ov9650 snd_soc_omap bmp280_i2c bmg160_i2c v4l2_common snd_pcm_dmaengine bmp280 bmg160_core at24 bmc150_magn_i2c nvmem_core videodev phy_twl4030_usb bmc150_accel_i2c tsc2007 [ 1514.037384] bmc150_magn bmc150_accel_core media leds_tca6507 bno055 industrialio_triggered_buffer kfifo_buf gpio_twl4030 musb_hdrc snd_soc_twl4030 twl4030_vibra twl4030_madc twl4030_pwrbutton twl4030_charger industrialio w2sg0004 ehci_omap omapdss [last unloaded: hso] [ 1514.062622] CPU: 0 PID: 3433 Comm: dhcpcd Tainted: G W 4.11.0-rc8-letux+ #1 [ 1514.071136] Hardware name: Generic OMAP36xx (Flattened Device Tree) [ 1514.077758] task: ee748240 task.stack: ecdd6000 [ 1514.082580] PC is at hso_start_net_device+0x50/0xc0 [hso] [ 1514.088287] LR is at hso_net_open+0x68/0x84 [hso] [ 1514.093231] pc : [<bf79c304>] lr : [<bf79ced8>] psr: a00f0013 sp : ecdd7e20 ip : 00000000 fp : ffffffff [ 1514.105316] r10: 00000000 r9 : ed0e080c r8 : ecd8fe2c [ 1514.110839] r7 : bf79cef4 r6 : ecd8fe00 r5 : 00000000 r4 : ed0dbd80 [ 1514.117706] r3 : 00000000 r2 : c0020c80 r1 : 00000000 r0 : ecdb7800 [ 1514.124572] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 1514.132110] Control: 10c5387d Table: acdec019 DAC: 00000051 [ 1514.138153] Process dhcpcd (pid: 3433, stack limit = 0xecdd6218) [ 1514.144470] Stack: (0xecdd7e20 to 0xecdd8000) [ 1514.149078] 7e20: ed0dbd80 ecd8fe98 00000001 00000000 ecd8f800 ecd8fe00 ecd8fe60 00000000 [ 1514.157714] 7e40: ed0e080c bf79ced8 bf79ce70 ecd8f800 00000001 bf7a0258 ecd8f830 c068d958 [ 1514.166320] 7e60: c068d8b8 ecd8f800 00000001 00001091 00001090 c068dba4 ecd8f800 00001090 [ 1514.174926] 7e80: ecd8f940 ecd8f800 00000000 c068dc60 00000000 00000001 ed0e0800 ecd8f800 [ 1514.183563] 7ea0: 00000000 c06feaa8 c0ca39c2 beea57dc 00000020 00000000 306f7368 00000000 [ 1514.192169] 7ec0: 00000000 00000000 00001091 00000000 00000000 00000000 00000000 00008914 [ 1514.200805] 7ee0: eaa9ab60 beea57dc c0c9bfc0 eaa9ab40 00000006 00000000 00046858 c066a948 [ 1514.209411] 7f00: beea57dc eaa9ab60 ecc6b0c0 c02837b0 00000006 c0282c90 0000c000 c0283654 [ 1514.218017] 7f20: c09b0c00 c098bc31 00000001 c0c5e513 c0c5e513 00000000 c0151354 c01a20c0 [ 1514.226654] 7f40: c0c5e513 c01a3134 ecdd6000 c01a3160 ee7487f0 600f0013 00000000 ee748240 [ 1514.235260] 7f60: ee748734 00000000 ecc6b0c0 ecc6b0c0 beea57dc 00008914 00000006 00000000 [ 1514.243896] 7f80: 00046858 c02837b0 00001091 0003a1f0 00046608 0003a248 00000036 c01071e4 [ 1514.252502] 7fa0: ecdd6000 c0107040 0003a1f0 00046608 00000006 00008914 beea57dc 00001091 [ 1514.261108] 7fc0: 0003a1f0 00046608 0003a248 00000036 0003ac0c 00046608 00046610 00046858 [ 1514.269744] 7fe0: 0003a0ac beea57d4 000167eb b6f23106 400f0030 00000006 00000000 00000000 [ 1514.278411] [<bf79c304>] (hso_start_net_device [hso]) from [<bf79ced8>] (hso_net_open+0x68/0x84 [hso]) [ 1514.288238] [<bf79ced8>] (hso_net_open [hso]) from [<c068d958>] (__dev_open+0xa0/0xf4) [ 1514.296600] [<c068d958>] (__dev_open) from [<c068dba4>] (__dev_change_flags+0x8c/0x130) [ 1514.305023] [<c068dba4>] (__dev_change_flags) from [<c068dc60>] (dev_change_flags+0x18/0x48) [ 1514.313934] [<c068dc60>] (dev_change_flags) from [<c06feaa8>] (devinet_ioctl+0x348/0x714) [ 1514.322540] [<c06feaa8>] (devinet_ioctl) from [<c066a948>] (sock_ioctl+0x2b0/0x308) [ 1514.330627] [<c066a948>] (sock_ioctl) from [<c0282c90>] (vfs_ioctl+0x20/0x34) [ 1514.338165] [<c0282c90>] (vfs_ioctl) from [<c0283654>] (do_vfs_ioctl+0x82c/0x93c) [ 1514.346038] [<c0283654>] (do_vfs_ioctl) from [<c02837b0>] (SyS_ioctl+0x4c/0x74) [ 1514.353759] [<c02837b0>] (SyS_ioctl) from [<c0107040>] (ret_fast_syscall+0x0/0x1c) [ 1514.361755] Code: e3822103 e3822080 e1822781 e5981014 (e5832030) [ 1514.510833] ---[ end trace dfb3e53c657f34a0 ]--- Reported-by: H. Nikolaus Schaller <h...@goldelico.com> Signed-off-by: Andreas Kemnade <andr...@kemnade.info> Reviewed-by: Johan Hovold <jo...@kernel.org> Signed-off-by: David S. Miller <da...@davemloft.net> commit c21b48cc1bbf2f5af3ef54ada559f7fadf8b508b Author: Eric Dumazet <eduma...@google.com> Date: Wed Apr 26 09:07:46 2017 -0700 net: adjust skb->truesize in ___pskb_trim() Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in skb_try_coalesce() using syzkaller and a filter attached to a TCP socket. As we did recently in commit 158f323b9868 ("net: adjust skb->truesize in pskb_expand_head()") we can adjust skb->truesize from ___pskb_trim(), via a call to skb_condense(). If all frags were freed, then skb->truesize can be recomputed. This call can be done if skb is not yet owned, or destructor is sock_edemux(). Signed-off-by: Eric Dumazet <eduma...@google.com> Reported-by: Andrey Konovalov <andreyk...@google.com> Cc: Willem de Bruijn <will...@google.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 7162fb242cb8322beb558828fd26b33c3e9fc805 Author: Eric Dumazet <eduma...@google.com> Date: Wed Apr 26 17:15:40 2017 -0700 tcp: do not underestimate skb->truesize in tcp_trim_head() Andrey found a way to trigger the WARN_ON_ONCE(delta < len) in skb_try_coalesce() using syzkaller and a filter attached to a TCP socket over loopback interface. I believe one issue with looped skbs is that tcp_trim_head() can end up producing skb with under estimated truesize. It hardly matters for normal conditions, since packets sent over loopback are never truncated. Bytes trimmed from skb->head should not change skb truesize, since skb->head is not reallocated. Signed-off-by: Eric Dumazet <eduma...@google.com> Reported-by: Andrey Konovalov <andreyk...@google.com> Tested-by: Andrey Konovalov <andreyk...@google.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 19cdead3e2ef8ed765c5d1ce48057ca9d97b5094 Author: Paolo Abeni <pab...@redhat.com> Date: Thu Apr 27 19:29:34 2017 +0200 bonding: avoid defaulting hard_header_len to ETH_HLEN on slave removal On slave list updates, the bonding driver computes its hard_header_len as the maximum of all enslaved devices's hard_header_len. If the slave list is empty, e.g. on last enslaved device removal, ETH_HLEN is used. Since the bonding header_ops are set only when the first enslaved device is attached, the above can lead to header_ops->create() being called with the wrong skb headroom in place. If bond0 is configured on top of ipoib devices, with the following commands: ifup bond0 for slave in $BOND_SLAVES_LIST; do ip link set dev $slave nomaster done ping -c 1 <ip on bond0 subnet> we will obtain a skb_under_panic() with a similar call trace: skb_push+0x3d/0x40 push_pseudo_header+0x17/0x30 [ib_ipoib] ipoib_hard_header+0x4e/0x80 [ib_ipoib] arp_create+0x12f/0x220 arp_send_dst.part.19+0x28/0x50 arp_solicit+0x115/0x290 neigh_probe+0x4d/0x70 __neigh_event_send+0xa7/0x230 neigh_resolve_output+0x12e/0x1c0 ip_finish_output2+0x14b/0x390 ip_finish_output+0x136/0x1e0 ip_output+0x76/0xe0 ip_local_out+0x35/0x40 ip_send_skb+0x19/0x40 ip_push_pending_frames+0x33/0x40 raw_sendmsg+0x7d3/0xb50 inet_sendmsg+0x31/0xb0 sock_sendmsg+0x38/0x50 SYSC_sendto+0x102/0x190 SyS_sendto+0xe/0x10 do_syscall_64+0x67/0x180 entry_SYSCALL64_slow_path+0x25/0x25 This change addresses the issue avoiding updating the bonding device hard_header_len when the slaves list become empty, forbidding to shrink it below the value used by header_ops->create(). The bug is there since commit 54ef31371407 ("[PATCH] bonding: Handle large hard_header_len") but the panic can be triggered only since commit fc791b633515 ("IB/ipoib: move back IB LL address into the hard header"). Reported-by: Norbert P <n...@physik.uzh.ch> Fixes: 54ef31371407 ("[PATCH] bonding: Handle large hard_header_len") Fixes: fc791b633515 ("IB/ipoib: move back IB LL address into the hard header") Signed-off-by: Marcelo Ricardo Leitner <marcelo.leit...@gmail.com> Signed-off-by: Paolo Abeni <pab...@redhat.com> Signed-off-by: Jay Vosburgh <jay.vosbu...@canonical.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 9b83e0319840eca758ef586776a427284ff767bf Author: Steffen Klassert <steffen.klass...@secunet.com> Date: Fri Apr 28 10:54:32 2017 +0200 ipv4: Don't pass IP fragments to upper layer GRO handlers. Upper layer GRO handlers can not handle IP fragments, so exit GRO processing in this case. This fixes ESP GRO because the packet must be reassembled before we can decapsulate, otherwise we get authentication failures. It also aligns IPv4 to IPv6 where packets with fragmentation headers are not passed to upper layer GRO handlers. Fixes: 7785bba299a8 ("esp: Add a software GRO codepath") Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 504926df6df5383cad25146de3ed0a45e02c0901 Author: Arnd Bergmann <a...@arndb.de> Date: Fri Apr 28 17:03:58 2017 +0200 cpsw/netcp: refine cpts dependency Tony Lindgren reports a kernel oops that resulted from my compile-time fix on the default config. This shows two problems: a) configurations that did not already enable PTP_1588_CLOCK will now miss the cpts driver b) when cpts support is disabled, the driver crashes. This is a preexisting problem that we did not notice before my patch. While the second problem is still being investigated, this modifies the dependencies again, getting us back to the original state, with another 'select NET_PTP_CLASSIFY' added in to avoid the original link error we got, and the 'depends on POSIX_TIMERS' to hide the CPTS support when turning it on would be useless. Cc: sta...@vger.kernel.org # 4.11 needs this Fixes: 07fef3623407 ("cpsw/netcp: cpts depends on posix_timers") Signed-off-by: Arnd Bergmann <a...@arndb.de> Tested-by: Tony Lindgren <t...@atomide.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 5577e679564702664aaecce3c96036ace3ab64fa Merge: c518471 cfcf99f Author: David S. Miller <da...@davemloft.net> Date: Fri Apr 28 15:42:11 2017 -0400 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec Steffen Klassert says: ==================== pull request (net): ipsec 2017-04-28 1) Do garbage collecting after a policy flush to remove old bundles immediately. From Xin Long. 2) Fix GRO if netfilter is not defined. From Sabrina Dubroca. Please pull or let me know if there are problems. ==================== Signed-off-by: David S. Miller <da...@davemloft.net> commit affb852d2fa260402cbdc77976adb0dcda3b5fae Merge: 28b2013 7c5bb4a Author: Linus Torvalds <torva...@linux-foundation.org> Date: Fri Apr 28 11:08:42 2017 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Pull input fix from Dmitry Torokhov: "Yet another quirk to i8042 to get touchpad recognized on some laptops" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: i8042 - add Clevo P650RS to the i8042 reset list commit 36c02d0be4c3c8804e51f9740f0d768e17f3b566 Author: Arnd Bergmann <a...@arndb.de> Date: Thu Apr 27 13:02:31 2017 +0200 clk: sunxi-ng: always select CCU_GATE When the base driver is enabled but all SoC specific drivers are turned off, we now get a build error after code was added to always refer to the clk gates: drivers/clk/built-in.o: In function `ccu_pll_notifier_cb': :(.text+0x154f8): undefined reference to `ccu_gate_helper_disable' :(.text+0x15504): undefined reference to `ccu_gate_helper_enable' This changes the Kconfig to always require the gate code to be built-in when CONFIG_SUNXI_CCU is set. Fixes: 02ae2bc6febd ("clk: sunxi-ng: Add clk notifier to gate then ungate PLL clocks") Signed-off-by: Arnd Bergmann <a...@arndb.de> Acked-by: Maxime Ripard <maxime.rip...@free-electrons.com> Signed-off-by: Stephen Boyd <sb...@codeaurora.org> commit 28b2013587e535cef8bd8d8e0eae5ad40868369b Merge: 8b5d11e 338bd52 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Fri Apr 28 10:13:17 2017 -0700 Merge branch 'for-linus-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs Pull btrfs fix from Chris Mason: "We have one more fix for btrfs. This gets rid of a new WARN_ON from rc1 that ended up making more noise than we really want. The larger fix for the underflow got delayed a bit and it's better for now to put it under CONFIG_BTRFS_DEBUG" * 'for-linus-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: btrfs: qgroup: move noisy underflow warning to debugging build commit c51847171162212618b3227812f007a654de2f4b Merge: f832460 c1be775 Author: David S. Miller <da...@davemloft.net> Date: Fri Apr 28 12:20:43 2017 -0400 Merge branch 'tipc-socket-connection-hangs' Parthasarathy Bhuvaragan says: ==================== tipc: fix hanging socket connections This patch series contains fixes for the socket layer to prevent hanging / stale connections. ==================== Signed-off-by: David S. Miller <da...@davemloft.net> commit c1be7756284b0fdbfe8aea8da968ce054697e0c5 Author: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Date: Wed Apr 26 10:05:02 2017 +0200 tipc: close the connection if protocol messages contain errors When a socket is shutting down, we notify the peer node about the connection termination by reusing an incoming message if possible. If the last received message was a connection acknowledgment message, we reverse this message and set the error code to TIPC_ERR_NO_PORT and send it to peer. In tipc_sk_proto_rcv(), we never check for message errors while processing the connection acknowledgment or probe messages. Thus this message performs the usual flow control accounting and leaves the session hanging. In this commit, we terminate the connection when we receive such error messages. Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Reviewed-by: Jon Maloy <jon.ma...@ericsson.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 4e0df4951e9ecb7ec026a1330ed59f12e8937a95 Author: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Date: Wed Apr 26 10:05:01 2017 +0200 tipc: improve error validations for sockets in CONNECTING state Until now, the checks for sockets in CONNECTING state was based on the assumption that the incoming message was always from the peer's accepted data socket. However an application using a non-blocking socket sends an implicit connect, this socket which is in CONNECTING state can receive error messages from the peer's listening socket. As we discard these messages, the application socket hangs as there due to inactivity. In addition to this, there are other places where we process errors but do not notify the user. In this commit, we process such incoming error messages and notify our users about them using sk_state_change(). Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Reviewed-by: Jon Maloy <jon.ma...@ericsson.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 42b531de17d2f6bb9293f23398f6d9bb94635c3e Author: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Date: Wed Apr 26 10:05:00 2017 +0200 tipc: Fix missing connection request handling In filter_connect, we use waitqueue_active() to check for any connections to wakeup. But waitqueue_active() is missing memory barriers while accessing the critical sections, leading to inconsistent results. In this commit, we replace this with an SMP safe wq_has_sleeper() using the generic socket callback sk_data_ready(). Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvara...@ericsson.com> Reviewed-by: Jon Maloy <jon.ma...@ericsson.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 8b5d11e4b095450e2f259d5f60ea18c13d2fe0a2 Merge: 19ac447 13bf9fb Author: Linus Torvalds <torva...@linux-foundation.org> Date: Thu Apr 27 13:39:19 2017 -0700 Merge tag 'nfsd-4.11-3' of git://linux-nfs.org/~bfields/linux Pull nfsd fixes from Bruce Fields: "Thanks to Ari Kauppi and Tuomas Haanpää at Synopsis for spotting bugs in our NFSv2/v3 xdr code that could crash the server or leak memory" * tag 'nfsd-4.11-3' of git://linux-nfs.org/~bfields/linux: nfsd: stricter decoding of write-like NFSv2/v3 ops nfsd4: minor NFSv2/v3 write decoding cleanup nfsd: check for oversized NFSv2/v3 arguments commit 19ac4474203863a8141663d73d5976fe25464bfd Merge: f56fc7b 8179a10 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Thu Apr 27 11:38:05 2017 -0700 Merge tag 'ceph-for-4.11-rc9' of git://github.com/ceph/ceph-client Pull ceph fix from Ilya Dryomov: "A fix for a kernel stack overflow bug in ceph setattr code, marked for stable" * tag 'ceph-for-4.11-rc9' of git://github.com/ceph/ceph-client: ceph: fix recursion between ceph_set_acl() and __ceph_setattr() commit f56fc7bdaa22e7b2fac18de430db8195d2dfd7bd Merge: 59372bb 1741937 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Thu Apr 27 11:09:37 2017 -0700 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull vfs fixes from Al Viro: - fix orangefs handling of faults on write() - I'd missed that one back when orangefs was going through review. - readdir counterpart of "9p: cope with bogus responses from server in p9_client_{read,write}" - server might be lying or broken, and we'd better not overrun the kmalloc'ed buffer we are copying the results into. - NFS O_DIRECT read/write can leave iov_iter advanced by too much; that's what had been causing iov_iter_pipe() warnings davej had been seeing. - statx_timestamp.tv_nsec type fix (s32 -> u32). That one really should go in before 4.11. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: uapi: change the type of struct statx_timestamp.tv_nsec to unsigned fix nfs O_DIRECT advancing iov_iter too much p9_client_readdir() fix orangefs_bufmap_copy_from_iovec(): fix EFAULT handling commit 59372bbf3abd5b24a7f6f676a3968685c280f955 Author: Michael Kerrisk (man-pages) <mtk.manpa...@gmail.com> Date: Thu Apr 27 13:54:11 2017 +0200 statx: correct error handling of NULL pathname The change in commit 1e2f82d1e9d1 ("statx: Kill fd-with-NULL-path support in favour of AT_EMPTY_PATH") to error on a NULL pathname to statx() is inconsistent. It results in the error EINVAL for a NULL pathname. Other system calls with similar APIs (fchownat(), fstatat(), linkat()), return EFAULT. The solution is simply to remove the EINVAL check. As I already pointed out in [1], user_path_at*() and filename_lookup() will handle the NULL pathname as per the other APIs, to correctly produce the error EFAULT. [1] https://lkml.org/lkml/2017/4/26/561 Signed-off-by: Michael Kerrisk <mtk.manpa...@gmail.com> Cc: David Howells <dhowe...@redhat.com> Cc: Al Viro <v...@zeniv.linux.org.uk> Cc: Eric Sandeen <sand...@sandeen.net> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> commit cfcf99f987ba321a3d122580716beb9b08d52eb8 Author: Sabrina Dubroca <s...@queasysnail.net> Date: Thu Apr 27 12:03:37 2017 +0200 xfrm: fix GRO for !CONFIG_NETFILTER In xfrm_input() when called from GRO, async == 0, and we end up skipping the processing in xfrm4_transport_finish(). GRO path will always skip the NF_HOOK, so we don't need the special-case for !NETFILTER during GRO processing. Fixes: 7785bba299a8 ("esp: Add a software GRO codepath") Signed-off-by: Sabrina Dubroca <s...@queasysnail.net> Signed-off-by: Steffen Klassert <steffen.klass...@secunet.com> commit 25e2d8c1b9e327ed260edd13169cc22bc7a78bc6 Author: Frederic Weisbecker <fweis...@gmail.com> Date: Tue Apr 25 16:10:48 2017 +0200 sched/cputime: Fix ksoftirqd cputime accounting regression irq_time_read() returns the irqtime minus the ksoftirqd time. This is necessary because irq_time_read() is used to substract the IRQ time from the sum_exec_runtime of a task. If we were to include the softirq time of ksoftirqd, this task would substract its own CPU time everytime it updates ksoftirqd->sum_exec_runtime which would therefore never progress. But this behaviour got broken by: a499a5a14db ("sched/cputime: Increment kcpustat directly on irqtime account") ... which now includes ksoftirqd softirq time in the time returned by irq_time_read(). This has resulted in wrong ksoftirqd cputime reported to userspace through /proc/stat and thus "top" not showing ksoftirqd when it should after intense networking load. ksoftirqd->stime happens to be correct but it gets scaled down by sum_exec_runtime through task_cputime_adjusted(). To fix this, just account the strict IRQ time in a separate counter and use it to report the IRQ time. Reported-and-tested-by: Jesper Dangaard Brouer <bro...@redhat.com> Signed-off-by: Frederic Weisbecker <fweis...@gmail.com> Reviewed-by: Rik van Riel <r...@redhat.com> Acked-by: Jesper Dangaard Brouer <bro...@redhat.com> Cc: Linus Torvalds <torva...@linux-foundation.org> Cc: Peter Zijlstra <pet...@infradead.org> Cc: Stanislaw Gruszka <sgrus...@redhat.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Wanpeng Li <wanpeng...@hotmail.com> Link: http://lkml.kernel.org/r/1493129448-5356-1-git-send-email-fweis...@gmail.com Signed-off-by: Ingo Molnar <mi...@kernel.org> commit 1741937d475d91ed95abb37f07e8571e23b9a7fe Author: Dmitry V. Levin <l...@altlinux.org> Date: Wed Apr 26 14:50:00 2017 +0100 uapi: change the type of struct statx_timestamp.tv_nsec to unsigned The comment asserting that the value of struct statx_timestamp.tv_nsec must be negative when statx_timestamp.tv_sec is negative, is wrong, as could be seen from the following example: #define _FILE_OFFSET_BITS 64 #include <assert.h> #include <fcntl.h> #include <stdio.h> #include <sys/stat.h> #include <unistd.h> #include <asm/unistd.h> #include <linux/stat.h> int main(void) { static const struct timespec ts[2] = { { .tv_nsec = UTIME_OMIT }, { .tv_sec = -2, .tv_nsec = 42 } }; assert(utimensat(AT_FDCWD, ".", ts, 0) == 0); struct stat st; assert(stat(".", &st) == 0); printf("st_mtim.tv_sec = %lld, st_mtim.tv_nsec = %lu\n", (long long) st.st_mtim.tv_sec, (unsigned long) st.st_mtim.tv_nsec); struct statx stx; assert(syscall(__NR_statx, AT_FDCWD, ".", 0, 0, &stx) == 0); printf("stx_mtime.tv_sec = %lld, stx_mtime.tv_nsec = %lu\n", (long long) stx.stx_mtime.tv_sec, (unsigned long) stx.stx_mtime.tv_nsec); return 0; } It expectedly prints: st_mtim.tv_sec = -2, st_mtim.tv_nsec = 42 stx_mtime.tv_sec = -2, stx_mtime.tv_nsec = 42 The more generic comment asserting that the value of struct statx_timestamp.tv_nsec might be negative is confusing to say the least. It contradicts both the struct stat.st_[acm]time_nsec tradition and struct timespec.tv_nsec requirements in utimensat syscall. If statx syscall ever returns a stx_[acm]time containing a negative tv_nsec that cannot be passed unmodified to utimensat syscall, it will cause an immense confusion. Fix this source of confusion by changing the type of struct statx_timestamp.tv_nsec from __s32 to __u32. Fixes: a528d35e8bfc ("statx: Add a system call to make enhanced file info available") Signed-off-by: Dmitry V. Levin <l...@altlinux.org> Signed-off-by: David Howells <dhowe...@redhat.com> cc: linux-...@vger.kernel.org cc: mtk.manpa...@gmail.com Signed-off-by: Al Viro <v...@zeniv.linux.org.uk> commit f83246089ca09308425175d47f5e71e6da68b2ef Merge: 1e2f82d f6ebf0b Author: Linus Torvalds <torva...@linux-foundation.org> Date: Wed Apr 26 15:10:45 2017 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc Pull sparc fixes from David Miller: "I didn't want the release to go out without the statx system call properly hooked up" * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc: Update syscall tables. sparc64: Fill in rest of HAVE_REGS_AND_STACK_ACCESS_API commit 1e2f82d1e9d12223b4cbd1feb3f2b5596f8049eb Author: David Howells <dhowe...@redhat.com> Date: Wed Apr 26 22:15:55 2017 +0100 statx: Kill fd-with-NULL-path support in favour of AT_EMPTY_PATH With the new statx() syscall, the following both allow the attributes of the file attached to a file descriptor to be retrieved: statx(dfd, NULL, 0, ...); and: statx(dfd, "", AT_EMPTY_PATH, ...); Change the code to reject the first option, though this means copying the path and engaging pathwalk for the fstat() equivalent. dfd can be a non-directory provided path is "". [ The timing of this isn't wonderful, but applying this now before we have statx() in any released kernel, before anybody starts using the NULL special case. - Linus ] Fixes: a528d35e8bfc ("statx: Add a system call to make enhanced file info available") Reported-by: Michael Kerrisk <mtk.manpa...@gmail.com> Signed-off-by: David Howells <dhowe...@redhat.com> cc: Eric Sandeen <sand...@sandeen.net> cc: fste...@vger.kernel.org cc: linux-...@vger.kernel.org cc: linux-...@vger.kernel.org Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> commit fc08b197bb8c3bebda27b9e9884aaf7557fab53f Merge: ea3a8596 105f552 Author: Linus Torvalds <torva...@linux-foundation.org> Date: Wed Apr 26 13:42:32 2017 -0700 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net Pull networking fixes from David Miller: 1) MLX5 bug fixes from Saeed Mahameed et al: - released wrong resources when firmware timeout happens - fix wrong check for encapsulation size limits - UAR memory leak - ETHTOOL_GRXCLSRLALL failed to fill in info->data 2) Don't cache l3mdev on mis-matches local route, causes net devices to leak refs. From Robert Shearman. 3) Handle fragmented SKBs properly in macsec driver, the problem is that we were mis-sizing the sgvec table. From Jason A. Donenfeld. 4) We cannot have checksum offload enabled for inner UDP tunneled packet during IPSEC, from Ansis Atteka. 5) Fix double SKB free in ravb driver, from Dan Carpenter. 6) Fix CPU port handling in b53 DSA driver, from Florian Dainelli. 7) Don't use on-stack buffers for usb_control_msg() in CAN usb driver, from Maksim Salau. 8) Fix device leak in macvlan driver, from Herbert Xu. We have to purge the broadcast queue properly on port destroy. 9) Fix tx ring entry limit on EF10 devices in sfc driver. From Bert Kenward. 10) Fix memory leaks in team driver, from Pan Bian. 11) Don't setup ipv6_stub before it can be actually used, from Paolo Abeni. 12) Fix tipc socket flow control accounting, from Parthasarathy Bhuvaragan. 13) Fix crash on module unload in hso driver, from Andreas Kemnade. 14) Fix purging of bridge multicast entries, the problem is that if we don't defer it to ndo_uninit it's possible for new entries to get added after we purge. Fix from Xin Long. 15) Don't return garbage for PACKET_HDRLEN getsockopt, from Alexander Potapenko. 16) Fix autoneg stall properly in PHY layer, and revert micrel driver change that was papering over it. From Alexander Kochetkov. 17) Don't dereference an ipv4 route as an ipv6 one in the ip6_tunnnel code, from Cong Wang. 18) Clear out the congestion control private of the TCP socket in all of the right places, from Wei Wang. 19) rawv6_ioctl measures SKB length incorrectly, fix from Jamie Bainbridge. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (41 commits) ipv6: check raw payload size correctly in ioctl tcp: memset ca_priv data to 0 properly ipv6: check skb->protocol before lookup for nexthop net: core: Prevent from dereferencing null pointer when releasing SKB macsec: dynamically allocate space for sglist Revert "phy: micrel: Disable auto negotiation on startup" net: phy: fix auto-negotiation stall due to unavailable interrupt net/packet: check length in getsockopt() called with PACKET_HDRLEN net: ipv6: regenerate host route if moved to gc list bridge: move bridge multicast cleanup to ndo_uninit ipv6: fix source routing qed: Fix error in the dcbx app meta data initialization. netvsc: fix calculation of available send sections net: hso: fix module unloading tipc: fix socket flow control accounting error at tipc_recv_stream tipc: fix socket flow control accounting error at tipc_send_stream ipv6: move stub initialization after ipv6 setup completion team: fix memory leaks sfc: tx ring can only have 2048 entries for all EF10 NICs macvlan: Fix device ref leak when purging bc_queue ... commit 105f5528b9bbaa08b526d3405a5bcd2ff0c953c8 Author: Jamie Bainbridge <jbain...@redhat.com> Date: Wed Apr 26 10:43:27 2017 +1000 ipv6: check raw payload size correctly in ioctl In situations where an skb is paged, the transport header pointer and tail pointer can be the same because the skb contents are in frags. This results in ioctl(SIOCINQ/FIONREAD) incorrectly returning a length of 0 when the length to receive is actually greater than zero. skb->len is already correctly set in ip6_input_finish() with pskb_pull(), so use skb->len as it always returns the correct result for both linear and paged data. Signed-off-by: Jamie Bainbridge <jbain...@redhat.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit c1201444075009507a6818de6518e2822b9a87c8 Author: Wei Wang <wei...@google.com> Date: Tue Apr 25 17:38:02 2017 -0700 tcp: memset ca_priv data to 0 properly Always zero out ca_priv data in tcp_assign_congestion_control() so that ca_priv data is cleared out during socket creation. Also always zero out ca_priv data in tcp_reinit_congestion_control() so that when cc algorithm is changed, ca_priv data is cleared out as well. We should still zero out ca_priv data even in TCP_CLOSE state because user could call connect() on AF_UNSPEC to disconnect the socket and leave it in TCP_CLOSE state and later call setsockopt() to switch cc algorithm on this socket. Fixes: 2b0a8c9ee ("tcp: add CDG congestion control") Reported-by: Andrey Konovalov <andreyk...@google.com> Signed-off-by: Wei Wang <wei...@google.com> Acked-by: Eric Dumazet <eduma...@google.com> Acked-by: Yuchung Cheng <ych...@google.com> Acked-by: Neal Cardwell <ncardw...@google.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 199ab00f3cdb6f154ea93fa76fd80192861a821d Author: WANG Cong <xiyou.wangc...@gmail.com> Date: Tue Apr 25 14:37:15 2017 -0700 ipv6: check skb->protocol before lookup for nexthop Andrey reported a out-of-bound access in ip6_tnl_xmit(), this is because we use an ipv4 dst in ip6_tnl_xmit() and cast an IPv4 neigh key as an IPv6 address: neigh = dst_neigh_lookup(skb_dst(skb), &ipv6_hdr(skb)->daddr); if (!neigh) goto tx_err_link_failure; addr6 = (struct in6_addr *)&neigh->primary_key; // <=== HERE addr_type = ipv6_addr_type(addr6); if (addr_type == IPV6_ADDR_ANY) addr6 = &ipv6_hdr(skb)->daddr; memcpy(&fl6->daddr, addr6, sizeof(fl6->daddr)); Also the network header of the skb at this point should be still IPv4 for 4in6 tunnels, we shold not just use it as IPv6 header. This patch fixes it by checking if skb->protocol is ETH_P_IPV6: if it is, we are safe to do the nexthop lookup using skb_dst() and ipv6_hdr(skb)->daddr; if not (aka IPv4), we have no clue about which dest address we can pick here, we have to rely on callers to fill it from tunnel config, so just fall to ip6_route_output() to make the decision. Fixes: ea3dc9601bda ("ip6_tunnel: Add support for wildcard tunnel endpoints.") Reported-by: Andrey Konovalov <andreyk...@google.com> Tested-by: Andrey Konovalov <andreyk...@google.com> Cc: Steffen Klassert <steffen.klass...@secunet.com> Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 9899886d5e8ec5b343b1efe44f185a0e68dc6454 Author: Myungho Jung <mhju...@gmail.com> Date: Tue Apr 25 11:58:15 2017 -0700 net: core: Prevent from dereferencing null pointer when releasing SKB Added NULL check to make __dev_kfree_skb_irq consistent with kfree family of functions. Link: https://bugzilla.kernel.org/show_bug.cgi?id=195289 Signed-off-by: Myungho Jung <mhju...@gmail.com> Signed-off-by: David S. Miller <da...@davemloft.net> commit 5294b83086cc1c35b4efeca03644cf9d12282e5b Author: Jason A. Donenfeld <ja...@zx2c4.com> Date: Tue Apr 25 19:08:18 2017 +0200 macsec: dynamically allocate space for sglist We call skb_cow_data, which is good anyway to ensure we can actually modify the skb as such (another error from prior). Now that we have the number of fragments required, we can safely allocate exactly that amount of memory. diff --git a/.mailmap b/.mailmap index 67dc22f..1d6f4e7 100644 --- a/.mailmap +++ b/.mailmap @@ -99,6 +99,8 @@ Linas Vepstas <li...@austin.ibm.com> Linus Lüssing <linus.luess...@c0d3.blue> <linus.luess...@web.de> Linus Lüssing <linus.luess...@c0d3.blue> <linus.luess...@ascom.ch> Mark Brown <broo...@sirena.org.uk> +Martin Kepplinger <mart...@posteo.de> <martin.kepplin...@theobroma-systems.com> +Martin Kepplinger <mart...@posteo.de> <martin.kepplin...@ginzinger.com> Matthieu CASTET <castet.matth...@free.fr> Mauro Carvalho Chehab <mche...@kernel.org> <mche...@brturbo.com.br> Mauro Carvalho Chehab <mche...@kernel.org> <mauroche...@gmail.com> @@ -171,6 +173,7 @@ Vlad Dogaru <ddv...@gmail.com> <vlad.dog...@intel.com> Vladimir Davydov <vdavydov....@gmail.com> <vdavy...@virtuozzo.com> Vladimir Davydov <vdavydov....@gmail.com> <vdavy...@parallels.com> Takashi YOSHII <takashi.yoshii...@renesas.com> +Yakir Yang <kuankua...@gmail.com> <y...@rock-chips.com> Yusuke Goda <goda.yus...@renesas.com> Gustavo Padovan <gust...@las.ic.unicamp.br> Gustavo Padovan <pado...@profusion.mobi> diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index c8a8eb1..793acf9 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX @@ -270,8 +270,8 @@ m68k/ - directory with info about Linux on Motorola 68k architecture. mailbox.txt - How to write drivers for the common mailbox framework (IPC). -md-cluster.txt - - info on shared-device RAID MD cluster. +md/ + - directory with info about Linux Software RAID media/ - info on media drivers: uAPI, kAPI and driver documentation. memory-barriers.txt diff --git a/Documentation/ABI/obsolete/sysfs-block-zram b/Documentation/ABI/obsolete/sysfs-block-zram deleted file mode 100644 index 720ea92..0000000 --- a/Documentation/ABI/obsolete/sysfs-block-zram +++ /dev/null @@ -1,119 +0,0 @@ -What: /sys/block/zram<id>/num_reads -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The num_reads file is read-only and specifies the number of - reads (failed or successful) done on this device. - Now accessible via zram<id>/stat node. - -What: /sys/block/zram<id>/num_writes -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The num_writes file is read-only and specifies the number of - writes (failed or successful) done on this device. - Now accessible via zram<id>/stat node. - -What: /sys/block/zram<id>/invalid_io -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The invalid_io file is read-only and specifies the number of - non-page-size-aligned I/O requests issued to this device. - Now accessible via zram<id>/io_stat node. - -What: /sys/block/zram<id>/failed_reads -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The failed_reads file is read-only and specifies the number of - failed reads happened on this device. - Now accessible via zram<id>/io_stat node. - -What: /sys/block/zram<id>/failed_writes -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The failed_writes file is read-only and specifies the number of - failed writes happened on this device. - Now accessible via zram<id>/io_stat node. - -What: /sys/block/zram<id>/notify_free -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The notify_free file is read-only. Depending on device usage - scenario it may account a) the number of pages freed because - of swap slot free notifications or b) the number of pages freed - because of REQ_DISCARD requests sent by bio. The former ones - are sent to a swap block device when a swap slot is freed, which - implies that this disk is being used as a swap disk. The latter - ones are sent by filesystem mounted with discard option, - whenever some data blocks are getting discarded. - Now accessible via zram<id>/io_stat node. - -What: /sys/block/zram<id>/zero_pages -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The zero_pages file is read-only and specifies number of zero - filled pages written to this disk. No memory is allocated for - such pages. - Now accessible via zram<id>/mm_stat node. - -What: /sys/block/zram<id>/orig_data_size -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The orig_data_size file is read-only and specifies uncompressed - size of data stored in this disk. This excludes zero-filled - pages (zero_pages) since no memory is allocated for them. - Unit: bytes - Now accessible via zram<id>/mm_stat node. - -What: /sys/block/zram<id>/compr_data_size -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The compr_data_size file is read-only and specifies compressed - size of data stored in this disk. So, compression ratio can be - calculated using orig_data_size and this statistic. - Unit: bytes - Now accessible via zram<id>/mm_stat node. - -What: /sys/block/zram<id>/mem_used_total -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The mem_used_total file is read-only and specifies the amount - of memory, including allocator fragmentation and metadata - overhead, allocated for this disk. So, allocator space - efficiency can be calculated using compr_data_size and this - statistic. - Unit: bytes - Now accessible via zram<id>/mm_stat node. - -What: /sys/block/zram<id>/mem_used_max -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The mem_used_max file is read/write and specifies the amount - of maximum memory zram have consumed to store compressed data. - For resetting the value, you should write "0". Otherwise, - you could see -EINVAL. - Unit: bytes - Downgraded to write-only node: so it's possible to set new - value only; its current value is stored in zram<id>/mm_stat - node. - -What: /sys/block/zram<id>/mem_limit -Date: August 2015 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The mem_limit file is read/write and specifies the maximum - amount of memory ZRAM can use to store the compressed data. - The limit could be changed in run time and "0" means disable - the limit. No limit is the initial state. Unit: bytes - Downgraded to write-only node: so it's possible to set new - value only; its current value is stored in zram<id>/mm_stat - node. diff --git a/Documentation/ABI/testing/configfs-rdma_cm b/Documentation/ABI/testing/configfs-rdma_cm index 5c389aa..74f9506 100644 --- a/Documentation/ABI/testing/configfs-rdma_cm +++ b/Documentation/ABI/testing/configfs-rdma_cm @@ -20,3 +20,11 @@ Description: RDMA-CM based connections from HCA <hca> at port <port-num> will be initiated with this RoCE type as default. The possible RoCE types are either "IB/RoCE v1" or "RoCE v2". This parameter has RW access. + +What: /config/rdma_cm/<hca>/ports/<port-num>/default_roce_tos +Date: February 7, 2017 +KernelVersion: 4.11.0 +Description: RDMA-CM QPs from HCA <hca> at port <port-num> + will be created with this TOS as default. + This can be overridden by using the rdma_set_option API. + The possible RoCE TOS values are 0-255. diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram index 4518d30..451b6d8 100644 --- a/Documentation/ABI/testing/sysfs-block-zram +++ b/Documentation/ABI/testing/sysfs-block-zram @@ -22,41 +22,6 @@ Description: device. The reset operation frees all the memory associated with this device. -What: /sys/block/zram<id>/num_reads -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The num_reads file is read-only and specifies the number of - reads (failed or successful) done on this device. - -What: /sys/block/zram<id>/num_writes -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The num_writes file is read-only and specifies the number of - writes (failed or successful) done on this device. - -What: /sys/block/zram<id>/invalid_io -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The invalid_io file is read-only and specifies the number of - non-page-size-aligned I/O requests issued to this device. - -What: /sys/block/zram<id>/failed_reads -Date: February 2014 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The failed_reads file is read-only and specifies the number of - failed reads happened on this device. - -What: /sys/block/zram<id>/failed_writes -Date: February 2014 -Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> -Description: - The failed_writes file is read-only and specifies the number of - failed writes happened on this device. - What: /sys/block/zram<id>/max_comp_streams Date: February 2014 Contact: Sergey Senozhatsky <sergey.senozhat...@gmail.com> @@ -73,74 +38,24 @@ Description: available and selected compression algorithms, change compression algorithm selection. -What: /sys/block/zram<id>/notify_free -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The notify_free file is read-only. Depending on device usage - scenario it may account a) the number of pages freed because - of swap slot free notifications or b) the number of pages freed - because of REQ_DISCARD requests sent by bio. The former ones - are sent to a swap block device when a swap slot is freed, which - implies that this disk is being used as a swap disk. The latter - ones are sent by filesystem mounted with discard option, - whenever some data blocks are getting discarded. - -What: /sys/block/zram<id>/zero_pages -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The zero_pages file is read-only and specifies number of zero - filled pages written to this disk. No memory is allocated for - such pages. - -What: /sys/block/zram<id>/orig_data_size -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The orig_data_size file is read-only and specifies uncompressed - size of data stored in this disk. This excludes zero-filled - pages (zero_pages) since no memory is allocated for them. - Unit: bytes - -What: /sys/block/zram<id>/compr_data_size -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The compr_data_size file is read-only and specifies compressed - size of data stored in this disk. So, compression ratio can be - calculated using orig_data_size and this statistic. - Unit: bytes - -What: /sys/block/zram<id>/mem_used_total -Date: August 2010 -Contact: Nitin Gupta <ngu...@vflare.org> -Description: - The mem_used_total file is read-only and specifies the amount - of memory, including allocator fragmentation and metadata - overhead, allocated for this disk. So, allocator space - efficiency can be calculated using compr_data_size and this - statistic. - Unit: bytes - What: /sys/block/zram<id>/mem_used_max Date: August 2014 Contact: Minchan Kim <minc...@kernel.org> Description: - The mem_used_max file is read/write and specifies the amount - of maximum memory zram have consumed to store compressed data. - For resetting the value, you should write "0". Otherwise, - you could see -EINVAL. + The mem_used_max file is write-only and is used to reset + the counter of maximum memory zram have consumed to store + compressed data. For resetting the value, you should write + "0". Otherwise, you could see -EINVAL. Unit: bytes What: /sys/block/zram<id>/mem_limit Date: August 2014 Contact: Minchan Kim <minc...@kernel.org> Description: - The mem_limit file is read/write and specifies the maximum - amount of memory ZRAM can use to store the compressed data. The - limit could be changed in run time and "0" means disable the - limit. No limit is the initial state. Unit: bytes + The mem_limit file is write-only and specifies the maximum + amount of memory ZRAM can use to store the compressed data. + The limit could be changed in run time and "0" means disable + the limit. No limit is the initial state. Unit: bytes What: /sys/block/zram<id>/compact Date: August 2015 diff --git a/Documentation/ABI/testing/sysfs-bus-i2c-devices-bq32k b/Documentation/ABI/testing/sysfs-bus-i2c-devices-bq32k new file mode 100644 index 0000000..398b258 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-i2c-devices-bq32k @@ -0,0 +1,7 @@ +What: /sys/bus/i2c/devices/.../trickle_charge_bypass +Date: Jan 2017 +KernelVersion: 4.11 +Contact: Enric Balletbo i Serra <eballe...@gmail.com> +Description: Attribute for enable/disable the trickle charge bypass + The trickle_charge_bypass attribute allows the userspace to + enable/disable the Trickle charge FET bypass. diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index b8f220f..530809c 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio @@ -170,6 +170,16 @@ Description: Has all of the equivalent parameters as per voltageY. Units after application of scale and offset are m/s^2. +What: /sys/bus/iio/devices/iio:deviceX/in_gravity_x_raw +What: /sys/bus/iio/devices/iio:deviceX/in_gravity_y_raw +What: /sys/bus/iio/devices/iio:deviceX/in_gravity_z_raw +KernelVersion: 4.11 +Contact: linux-...@vger.kernel.org +Description: + Gravity in direction x, y or z (may be arbitrarily assigned + but should match other such assignments on device). + Units after application of scale and offset are m/s^2. + What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw @@ -805,7 +815,7 @@ Description: attribute. E.g. if in_voltage0_raw_thresh_rising_value is set to 1200 and in_voltage0_raw_thresh_rising_hysteresis is set to 50. The event will get activated once in_voltage0_raw goes above 1200 and will become - deactived again once the value falls below 1150. + deactivated again once the value falls below 1150. What: /sys/.../events/in_accel_x_raw_roc_rising_value What: /sys/.../events/in_accel_x_raw_roc_falling_value @@ -1245,7 +1255,8 @@ Description: reflectivity of infrared or ultrasound emitted. Often these sensors are unit less and as such conversion to SI units is not possible. Higher proximity measurements - indicate closer objects, and vice versa. + indicate closer objects, and vice versa. Units after + application of scale and offset are meters. What: /sys/.../iio:deviceX/in_illuminance_input What: /sys/.../iio:deviceX/in_illuminance_raw diff --git a/Documentation/ABI/testing/sysfs-bus-iio-adc-stm32 b/Documentation/ABI/testing/sysfs-bus-iio-adc-stm32 new file mode 100644 index 0000000..efe4c85 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio-adc-stm32 @@ -0,0 +1,18 @@ +What: /sys/bus/iio/devices/triggerX/trigger_polarity +KernelVersion: 4.11 +Contact: fabrice.gasn...@st.com +Description: + The STM32 ADC can be configured to use external trigger sources + (e.g. timers, pwm or exti gpio). Then, it can be tuned to start + conversions on external trigger by either: + - "rising-edge" + - "falling-edge" + - "both-edges". + Reading returns current trigger polarity. + Writing value before enabling conversions sets trigger polarity. + +What: /sys/bus/iio/devices/triggerX/trigger_polarity_available +KernelVersion: 4.11 +Contact: fabrice.gasn...@st.com +Description: + List all available trigger_polarity settings. diff --git a/Documentation/ABI/testing/sysfs-bus-iio-distance-srf08 b/Documentation/ABI/testing/sysfs-bus-iio-distance-srf08 new file mode 100644 index 0000000..0a1ca14 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio-distance-srf08 @@ -0,0 +1,22 @@ +What /sys/bus/iio/devices/iio:deviceX/sensor_sensitivity +Date: January 2017 +KernelVersion: 4.11 +Contact: linux-...@vger.kernel.org +Description: + Show or set the gain boost of the amp, from 0-31 range. + default 31 + +What /sys/bus/iio/devices/iio:deviceX/sensor_max_range +Date: January 2017 +KernelVersion: 4.11 +Contact: linux-...@vger.kernel.org +Description: + Show or set the maximum range between the sensor and the + first object echoed in meters. Default value is 6.020. + This setting limits the time the driver is waiting for a + echo. + Showing the range of available values is represented as the + minimum value, the step and the maximum value, all enclosed + in square brackets. + Example: + [0.043 0.043 11.008] diff --git a/Documentation/ABI/testing/sysfs-bus-iio-timer-stm32 b/Documentation/ABI/testing/sysfs-bus-iio-timer-stm32 new file mode 100644 index 0000000..6534a60 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio-timer-stm32 @@ -0,0 +1,29 @@ +What: /sys/bus/iio/devices/triggerX/master_mode_available +KernelVersion: 4.11 +Contact: benjamin.gaign...@st.com +Description: + Reading returns the list possible master modes which are: + - "reset" : The UG bit from the TIMx_EGR register is used as trigger output (TRGO). + - "enable" : The Counter Enable signal CNT_EN is used as trigger output. + - "update" : The update event is selected as trigger output. + For instance a master timer can then be used as a prescaler for a slave timer. + - "compare_pulse" : The trigger output send a positive pulse when the CC1IF flag is to be set. + - "OC1REF" : OC1REF signal is used as trigger output. + - "OC2REF" : OC2REF signal is used as trigger output. + - "OC3REF" : OC3REF signal is used as trigger output. + - "OC4REF" : OC4REF signal is used as trigger output. + +What: /sys/bus/iio/devices/triggerX/master_mode +KernelVersion: 4.11 +Contact: benjamin.gaign...@st.com +Description: + Reading returns the current master modes. + Writing set the master mode + +What: /sys/bus/iio/devices/triggerX/sampling_frequency +KernelVersion: 4.11 +Contact: benjamin.gaign...@st.com +Description: + Reading returns the current sampling frequency. + Writing an value different of 0 set and start sampling. + Writing 0 stop sampling. diff --git a/Documentation/ABI/testing/sysfs-class-devfreq-event b/Documentation/ABI/testing/sysfs-class-devfreq-event new file mode 100644 index 0000000..ceaf0f6 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-devfreq-event @@ -0,0 +1,25 @@ +What: /sys/class/devfreq-event/event(x)/ +Date: January 2017 +Contact: Chanwoo Choi <cw00.c...@samsung.com> +Description: + Provide a place in sysfs for the devfreq-event objects. + This allows accessing various devfreq-event specific variables. + The name of devfreq-event object denoted as 'event(x)' which + includes the unique number of 'x' for each devfreq-event object. + +What: /sys/class/devfreq-event/event(x)/name +Date: January 2017 +Contact: Chanwoo Choi <cw00.c...@samsung.com> +Description: + The /sys/class/devfreq-event/event(x)/name attribute contains + the name of the devfreq-event object. This attribute is + read-only. + +What: /sys/class/devfreq-event/event(x)/enable_count +Date: January 2017 +Contact: Chanwoo Choi <cw00.c...@samsung.com> +Description: + The /sys/class/devfreq-event/event(x)/enable_count attribute + contains the reference count to enable the devfreq-event + object. If the device is enabled, the value of attribute is + greater than zero. diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led index 491cdee..5f67f7a 100644 --- a/Documentation/ABI/testing/sysfs-class-led +++ b/Documentation/ABI/testing/sysfs-class-led @@ -23,6 +23,23 @@ Description: If the LED does not support different brightness levels, this should be 1. +What: /sys/class/leds/<led>/brightness_hw_changed +Date: January 2017 +KernelVersion: 4.11 +Description: + Last hardware set brightness level for this LED. Some LEDs + may be changed autonomously by hardware/firmware. Only LEDs + where this happens and the driver can detect this, will have + this file. + + This file supports poll() to detect when the hardware changes + the brightness. + + Reading this file will return the last brightness level set + by the hardware, this may be different from the current + brightness. Reading this file when no hw brightness change + event has happened will return an ENODATA error. + What: /sys/class/leds/<led>/trigger Date: March 2006 KernelVersion: 2.6.17 diff --git a/Documentation/ABI/testing/sysfs-class-rc b/Documentation/ABI/testing/sysfs-class-rc index b65674d..8be1fd3 100644 --- a/Documentation/ABI/testing/sysfs-class-rc +++ b/Documentation/ABI/testing/sysfs-class-rc @@ -62,18 +62,18 @@ Description: This value may be reset to 0 if the current protocol is altered. What: /sys/class/rc/rcN/wakeup_protocols -Date: Feb 2014 -KernelVersion: 3.15 +Date: Feb 2017 +KernelVersion: 4.11 Contact: Mauro Carvalho Chehab <m.che...@samsung.com> Description: Reading this file returns a list of available protocols to use for the wakeup filter, something like: - "rc5 rc6 nec jvc [sony]" + "rc-5 nec nec-x rc-6-0 rc-6-6a-24 [rc-6-6a-32] rc-6-mce" + Note that protocol variants are listed, so "nec", "sony", + "rc-5", "rc-6" have their different bit length encodings + listed if available. The enabled wakeup protocol is shown in [] brackets. - Writing "+proto" will add a protocol to the list of enabled - wakeup protocols. - Writing "-proto" will remove a protocol from the list of enabled - wakeup protocols. + Only one protocol can be selected at a time. Writing "proto" will use "proto" for wakeup events. Writing "none" will disable wakeup. Write fails with EINVAL if an invalid protocol combination or diff --git a/Documentation/ABI/testing/sysfs-devices-edac b/Documentation/ABI/testing/sysfs-devices-edac index 6568e00..46ff929 100644 --- a/Documentation/ABI/testing/sysfs-devices-edac +++ b/Documentation/ABI/testing/sysfs-devices-edac @@ -138,3 +138,20 @@ Contact: Mauro Carvalho Chehab <m.che...@samsung.com> Description: This attribute file will display what type of memory is currently on this csrow. Normally, either buffered or unbuffered memory (for example, Unbuffered-DDR3). + +What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_ce_count +Date: October 2016 +Contact: linux-e...@vger.kernel.org +Description: This attribute file displays the total count of correctable + errors that have occurred on this DIMM. This count is very important + to examine. CEs provide early indications that a DIMM is beginning + to fail. This count field should be monitored for non-zero values + and report such information to the system administrator. + +What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_ue_count +Date: October 2016 +Contact: linux-e...@vger.kernel.org +Description: This attribute file displays the total count of uncorrectable + errors that have occurred on this DIMM. If panic_on_ue is set, this + counter will not have a chance to increment, since EDAC will panic the + system diff --git a/Documentation/ABI/testing/sysfs-kernel-iommu_groups b/Documentation/ABI/testing/sysfs-kernel-iommu_groups index 9b31556..35c64e0 100644 --- a/Documentation/ABI/testing/sysfs-kernel-iommu_groups +++ b/Documentation/ABI/testing/sysfs-kernel-iommu_groups @@ -12,3 +12,15 @@ Description: /sys/kernel/iommu_groups/ contains a number of sub- file if the IOMMU driver has chosen to register a more common name for the group. Users: + +What: /sys/kernel/iommu_groups/reserved_regions +Date: January 2017 +KernelVersion: v4.11 +Contact: Eric Auger <eric.au...@redhat.com> +Description: /sys/kernel/iommu_groups/reserved_regions list IOVA + regions that are reserved. Not necessarily all + reserved regions are listed. This is typically used to + output direct-mapped, MSI, non mappable regions. Each + region is described on a single line: the 1st field is + the base IOVA, the second is the end IOVA and the third + field describes the type of the region. diff --git a/Documentation/ABI/testing/sysfs-platform-hidma b/Documentation/ABI/testing/sysfs-platform-hidma index d364415..fca40a5 100644 --- a/Documentation/ABI/testing/sysfs-platform-hidma +++ b/Documentation/ABI/testing/sysfs-platform-hidma @@ -2,7 +2,7 @@ What: /sys/devices/platform/hidma-*/chid /sys/devices/platform/QCOM8061:*/chid Date: Dec 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains the ID of the channel within the HIDMA instance. It is used to associate a given HIDMA channel with the diff --git a/Documentation/ABI/testing/sysfs-platform-hidma-mgmt b/Documentation/ABI/testing/sysfs-platform-hidma-mgmt index c2fb5d0..3b6c5c9 100644 --- a/Documentation/ABI/testing/sysfs-platform-hidma-mgmt +++ b/Documentation/ABI/testing/sysfs-platform-hidma-mgmt @@ -2,7 +2,7 @@ What: /sys/devices/platform/hidma-mgmt*/chanops/chan*/priority /sys/devices/platform/QCOM8060:*/chanops/chan*/priority Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains either 0 or 1 and indicates if the DMA channel is a low priority (0) or high priority (1) channel. @@ -11,7 +11,7 @@ What: /sys/devices/platform/hidma-mgmt*/chanops/chan*/weight /sys/devices/platform/QCOM8060:*/chanops/chan*/weight Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains 0..15 and indicates the weight of the channel among equal priority channels during round robin scheduling. @@ -20,7 +20,7 @@ What: /sys/devices/platform/hidma-mgmt*/chreset_timeout_cycles /sys/devices/platform/QCOM8060:*/chreset_timeout_cycles Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains the platform specific cycle value to wait after a reset command is issued. If the value is chosen too short, @@ -32,7 +32,7 @@ What: /sys/devices/platform/hidma-mgmt*/dma_channels /sys/devices/platform/QCOM8060:*/dma_channels Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains the number of dma channels supported by one instance of HIDMA hardware. The value may change from chip to chip. @@ -41,7 +41,7 @@ What: /sys/devices/platform/hidma-mgmt*/hw_version_major /sys/devices/platform/QCOM8060:*/hw_version_major Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Version number major for the hardware. @@ -49,7 +49,7 @@ What: /sys/devices/platform/hidma-mgmt*/hw_version_minor /sys/devices/platform/QCOM8060:*/hw_version_minor Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Version number minor for the hardware. @@ -57,7 +57,7 @@ What: /sys/devices/platform/hidma-mgmt*/max_rd_xactions /sys/devices/platform/QCOM8060:*/max_rd_xactions Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains a value between 0 and 31. Maximum number of read transactions that can be issued back to back. @@ -69,7 +69,7 @@ What: /sys/devices/platform/hidma-mgmt*/max_read_request /sys/devices/platform/QCOM8060:*/max_read_request Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Size of each read request. The value needs to be a power of two and can be between 128 and 1024. @@ -78,7 +78,7 @@ What: /sys/devices/platform/hidma-mgmt*/max_wr_xactions /sys/devices/platform/QCOM8060:*/max_wr_xactions Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Contains a value between 0 and 31. Maximum number of write transactions that can be issued back to back. @@ -91,7 +91,7 @@ What: /sys/devices/platform/hidma-mgmt*/max_write_request /sys/devices/platform/QCOM8060:*/max_write_request Date: Nov 2015 KernelVersion: 4.4 -Contact: "Sinan Kaya <ok...@cudeaurora.org>" +Contact: "Sinan Kaya <ok...@codeaurora.org>" Description: Size of each write request. The value needs to be a power of two and can be between 128 and 1024. diff --git a/Documentation/DMA-ISA-LPC.txt b/Documentation/DMA-ISA-LPC.txt index b1a1983..c413313 100644 --- a/Documentation/DMA-ISA-LPC.txt +++ b/Documentation/DMA-ISA-LPC.txt @@ -42,7 +42,7 @@ requirements you pass the flag GFP_DMA to kmalloc. Unfortunately the memory available for ISA DMA is scarce so unless you allocate the memory during boot-up it's a good idea to also pass -__GFP_REPEAT and __GFP_NOWARN to make the allocater try a bit harder. +__GFP_REPEAT and __GFP_NOWARN to make the allocator try a bit harder. (This scarcity also means that you should allocate the buffer as early as possible and not release it until the driver is unloaded.) diff --git a/Documentation/DMA-attributes.txt b/Documentation/DMA-attributes.txt index 98bf7ac..44c6bc4 100644 --- a/Documentation/DMA-attributes.txt +++ b/Documentation/DMA-attributes.txt @@ -143,3 +143,13 @@ So, this provides a way for drivers to avoid those error messages on calls where allocation failures are not a problem, and shouldn't bother the logs. NOTE: At the moment DMA_ATTR_NO_WARN is only implemented on PowerPC. + +DMA_ATTR_PRIVILEGED +------------------------------ + +Some advanced peripherals such as remote processors and GPUs perform +accesses to DMA buffers in both privileged "supervisor" and unprivileged +"user" modes. This attribute is used to indicate to the DMA-mapping +subsystem that the buffer is fully accessible at the elevated privilege +level (and ideally inaccessible or at least read-only at the +lesser-privileged levels). diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index a6eb7dc..164c1c7 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -7,13 +7,13 @@ # list of DOCBOOKS. DOCBOOKS := z8530book.xml \ - kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ + kernel-hacking.xml kernel-locking.xml \ writing_usb_driver.xml networking.xml \ kernel-api.xml filesystems.xml lsm.xml kgdb.xml \ gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ - genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ - sh.xml regulator.xml w1.xml \ - writing_musb_glue_layer.xml iio.xml + genericirq.xml s390-drivers.xml scsi.xml \ + sh.xml w1.xml \ + writing_musb_glue_layer.xml ifeq ($(DOCBOOKS),) @@ -71,6 +71,7 @@ installmandocs: mandocs # no-op for the DocBook toolchain epubdocs: latexdocs: +linkcheckdocs: ### #External programs used @@ -272,6 +273,6 @@ cleandocs: $(Q)rm -rf $(call objectify, $(clean-dirs)) # Declare the contents of the .PHONY variable as phony. We keep that -# information in a variable se we can use it in if_changed and friends. +# information in a variable so we can use it in if_changed and friends. .PHONY: $(PHONY) diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl deleted file mode 100644 index 54199a0..0000000 --- a/Documentation/DocBook/deviceiobook.tmpl +++ /dev/null @@ -1,323 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" - "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> - -<book id="DoingIO"> - <bookinfo> - <title>Bus-Independent Device Accesses</title> - - <authorgroup> - <author> - <firstname>Matthew</firstname> - <surname>Wilcox</surname> - <affiliation> - <address> - <email>matt...@wil.cx</email> - </address> - </affiliation> - </author> - </authorgroup> - - <authorgroup> - <author> - <firstname>Alan</firstname> - <surname>Cox</surname> - <affiliation> - <address> - <email>a...@lxorguk.ukuu.org.uk</email> - </address> - </affiliation> - </author> - </authorgroup> - - <copyright> - <year>2001</year> - <holder>Matthew Wilcox</holder> - </copyright> - - <legalnotice> - <para> - This documentation is free software; you can redistribute - it and/or modify it under the terms of the GNU General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later - version. - </para> - - <para> - This program is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - </para> - - <para> - You should have received a copy of the GNU General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, - MA 02111-1307 USA - </para> - - <para> - For more details see the file COPYING in the source - distribution of Linux. - </para> - </legalnotice> - </bookinfo> - -<toc></toc> - - <chapter id="intro"> - <title>Introduction</title> - <para> - Linux provides an API which abstracts performing IO across all busses - and devices, allowing device drivers to be written independently of - bus type. - </para> - </chapter> - - <chapter id="bugs"> - <title>Known Bugs And Assumptions</title> - <para> - None. - </para> - </chapter> - - <chapter id="mmio"> - <title>Memory Mapped IO</title> - <sect1 id="getting_access_to_the_device"> - <title>Getting Access to the Device</title> - <para> - The most widely supported form of IO is memory mapped IO. - That is, a part of the CPU's address space is interpreted - not as accesses to memory, but as accesses to a device. Some - architectures define devices to be at a fixed address, but most - have some method of discovering devices. The PCI bus walk is a - good example of such a scheme. This document does not cover how - to receive such an address, but assumes you are starting with one. - Physical addresses are of type unsigned long. - </para> - - <para> - This address should not be used directly. Instead, to get an - address suitable for passing to the accessor functions described - below, you should call <function>ioremap</function>. - An address suitable for accessing the device will be returned to you. - </para> - - <para> - After you've finished using the device (say, in your module's - exit routine), call <function>iounmap</function> in order to return - the address space to the kernel. Most architectures allocate new - address space each time you call <function>ioremap</function>, and - they can run out unless you call <function>iounmap</function>. - </para> - </sect1> - - <sect1 id="accessing_the_device"> - <title>Accessing the device</title> - <para> - The part of the interface most used by drivers is reading and - writing memory-mapped registers on the device. Linux provides - interfaces to read and write 8-bit, 16-bit, 32-bit and 64-bit - quantities. Due to a historical accident, these are named byte, - word, long and quad accesses. Both read and write accesses are - supported; there is no prefetch support at this time. - </para> - - <para> - The functions are named <function>readb</function>, - <function>readw</function>, <function>readl</function>, - <function>readq</function>, <function>readb_relaxed</function>, - <function>readw_relaxed</function>, <function>readl_relaxed</function>, - <function>readq_relaxed</function>, <function>writeb</function>, - <function>writew</function>, <function>writel</function> and - <function>writeq</function>. - </para> - - <para> - Some devices (such as framebuffers) would like to use larger - transfers than 8 bytes at a time. For these devices, the - <function>memcpy_toio</function>, <function>memcpy_fromio</function> - and <function>memset_io</function> functions are provided. - Do not use memset or memcpy on IO addresses; they - are not guaranteed to copy data in order. - </para> - - <para> - The read and write functions are defined to be ordered. That is the - compiler is not permitted to reorder the I/O sequence. When the - ordering can be compiler optimised, you can use <function> - __readb</function> and friends to indicate the relaxed ordering. Use - this with care. - </para> - - <para> - While the basic functions are defined to be synchronous with respect - to each other and ordered with respect to each other the busses the - devices sit on may themselves have asynchronicity. In particular many - authors are burned by the fact that PCI bus writes are posted - asynchronously. A driver author must issue a read from the same - device to ensure that writes have occurred in the specific cases the - author cares. This kind of property cannot be hidden from driver - writers in the API. In some cases, the read used to flush the device - may be expected to fail (if the card is resetting, for example). In - that case, the read should be done from config space, which is - guaranteed to soft-fail if the card doesn't respond. - </para> - - <para> - The following is an example of flushing a write to a device when - the driver would like to ensure the write's effects are visible prior - to continuing execution. - </para> - -<programlisting> -static inline void -qla1280_disable_intrs(struct scsi_qla_host *ha) -{ - struct device_reg *reg; - - reg = ha->iobase; - /* disable risc and host interrupts */ - WRT_REG_WORD(&reg->ictrl, 0); - /* - * The following read will ensure that the above write - * has been received by the device before we return from this - * function. - */ - RD_REG_WORD(&reg->ictrl); - ha->flags.ints_enabled = 0; -} -</programlisting> - - <para> - In addition to write posting, on some large multiprocessing systems - (e.g. SGI Challenge, Origin and Altix machines) posted writes won't - be strongly ordered coming from different CPUs. Thus it's important - to properly protect parts of your driver that do memory-mapped writes - with locks and use the <function>mmiowb</function> to make sure they - arrive in the order intended. Issuing a regular <function>readX - </function> will also ensure write ordering, but should only be used - when the driver has to be sure that the write has actually arrived - at the device (not that it's simply ordered with respect to other - writes), since a full <function>readX</function> is a relatively - expensive operation. - </para> - - <para> - Generally, one should use <function>mmiowb</function> prior to - releasing a spinlock that protects regions using <function>writeb - </function> or similar functions that aren't surrounded by <function> - readb</function> calls, which will ensure ordering and flushing. The - following pseudocode illustrates what might occur if write ordering - isn't guaranteed via <function>mmiowb</function> or one of the - <function>readX</function> functions. - </para> - -<programlisting> -CPU A: spin_lock_irqsave(&dev_lock, flags) -CPU A: ... -CPU A: writel(newval, ring_ptr); -CPU A: spin_unlock_irqrestore(&dev_lock, flags) - ... -CPU B: spin_lock_irqsave(&dev_lock, flags) -CPU B: writel(newval2, ring_ptr); -CPU B: ... -CPU B: spin_unlock_irqrestore(&dev_lock, flags) -</programlisting> - - <para> - In the case above, newval2 could be written to ring_ptr before - newval. Fixing it is easy though: - </para> - -<programlisting> -CPU A: spin_lock_irqsave(&dev_lock, flags) -CPU A: ... -CPU A: writel(newval, ring_ptr);
_______________________________________________ unionfs-cvs mailing list: http://unionfs.filesystems.org/ unionfs-cvs@fsl.cs.sunysb.edu http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs