1. 21 Jan, 2016 40 commits
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · eae21770
      Linus Torvalds authored
      Merge third patch-bomb from Andrew Morton:
       "I'm pretty much done for -rc1 now:
      
         - the rest of MM, basically
      
         - lib/ updates
      
         - checkpatch, epoll, hfs, fatfs, ptrace, coredump, exit
      
         - cpu_mask simplifications
      
         - kexec, rapidio, MAINTAINERS etc, etc.
      
         - more dma-mapping cleanups/simplifications from hch"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (109 commits)
        MAINTAINERS: add/fix git URLs for various subsystems
        mm: memcontrol: add "sock" to cgroup2 memory.stat
        mm: memcontrol: basic memory statistics in cgroup2 memory controller
        mm: memcontrol: do not uncharge old page in page cache replacement
        Documentation: cgroup: add memory.swap.{current,max} description
        mm: free swap cache aggressively if memcg swap is full
        mm: vmscan: do not scan anon pages if memcg swap limit is hit
        swap.h: move memcg related stuff to the end of the file
        mm: memcontrol: replace mem_cgroup_lruvec_online with mem_cgroup_online
        mm: vmscan: pass memcg to get_scan_count()
        mm: memcontrol: charge swap to cgroup2
        mm: memcontrol: clean up alloc, online, offline, free functions
        mm: memcontrol: flatten struct cg_proto
        mm: memcontrol: rein in the CONFIG space madness
        net: drop tcp_memcontrol.c
        mm: memcontrol: introduce CONFIG_MEMCG_LEGACY_KMEM
        mm: memcontrol: allow to disable kmem accounting for cgroup2
        mm: memcontrol: account "kmem" consumers in cgroup2 memory controller
        mm: memcontrol: move kmem accounting code to CONFIG_MEMCG
        mm: memcontrol: separate kmem code from legacy tcp accounting code
        ...
      eae21770
    • Linus Torvalds's avatar
      Merge branch 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs · e9f57ebc
      Linus Torvalds authored
      Pull overlayfs updates from Miklos Szeredi:
       "This contains several bug fixes and a new mount option
        'default_permissions' that allows read-only exported NFS
        filesystems to be used as lower layer"
      
      * 'overlayfs-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs:
        ovl: check dentry positiveness in ovl_cleanup_whiteouts()
        ovl: setattr: check permissions before copy-up
        ovl: root: copy attr
        ovl: move super block magic number to magic.h
        ovl: use a minimal buffer in ovl_copy_xattr
        ovl: allow zero size xattr
        ovl: default permissions
      e9f57ebc
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · 5c89e9ea
      Linus Torvalds authored
      Pull fuse updates from Miklos Szeredi:
       "This adds SEEK_HOLE and SEEK_DATA support in lseek"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: add support for SEEK_HOLE and SEEK_DATA in lseek
      5c89e9ea
    • Linus Torvalds's avatar
      Merge tag 'pci-v4.5-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · d4342156
      Linus Torvalds authored
      Pull PCI updates from Bjorn Helgaas:
       "PCI changes for the v4.5 merge window:
      
        Enumeration:
         - Simplify config space size computation (Bjorn Helgaas)
         - Avoid iterating through ROM outside the resource window (Edward O'Callaghan)
         - Support PCIe devices with short cfg_size (Jason S. McMullan)
         - Add Netronome vendor and device IDs (Jason S. McMullan)
         - Limit config space size for Netronome NFP6000 family (Jason S. McMullan)
         - Add Netronome NFP4000 PF device ID (Simon Horman)
         - Limit config space size for Netronome NFP4000 (Simon Horman)
         - Print warnings for all invalid expansion ROM headers (Vladis Dronov)
      
        Resource management:
         - Fix minimum allocation address overwrite (Christoph Biedl)
      
        PCI device hotplug:
         - acpiphp_ibm: Fix null dereferences on null ibm_slot (Colin Ian King)
         - pciehp: Always protect pciehp_disable_slot() with hotplug mutex (Guenter Roeck)
         - shpchp: Constify hpc_ops structure (Julia Lawall)
         - ibmphp: Remove unneeded NULL test (Julia Lawall)
      
        Power management:
         - Make ASPM sysfs link_state_store() consistent with link_state_show() (Andy Lutomirski)
      
        Virtualization
         - Add function 1 DMA alias quirk for Lite-On/Plextor M6e/Marvell 88SS9183 (Tim Sander)
      
        MSI:
         - Remove empty pci_msi_init_pci_dev() (Bjorn Helgaas)
         - Mark PCIe/PCI (MSI) IRQ cascade handlers as IRQF_NO_THREAD (Grygorii Strashko)
         - Initialize MSI capability for all architectures (Guilherme G. Piccoli)
         - Relax msi_domain_alloc() to support parentless MSI irqdomains (Liu Jiang)
      
        ARM Versatile host bridge driver:
         - Remove unused pci_sys_data structures (Lorenzo Pieralisi)
      
        Broadcom iProc host bridge driver:
         - Hide CONFIG_PCIE_IPROC (Arnd Bergmann)
         - Do not use 0x in front of %pap (Dmitry V. Krivenok)
         - Update iProc PCIe device tree binding (Ray Jui)
         - Add PAXC interface support (Ray Jui)
         - Add iProc PCIe MSI device tree binding (Ray Jui)
         - Add iProc PCIe MSI support (Ray Jui)
      
        Freescale i.MX6 host bridge driver:
         - Use gpio_set_value_cansleep() (Fabio Estevam)
         - Add support for active-low reset GPIO (Petr Štetiar)
      
        HiSilicon host bridge driver:
         - Add support for HiSilicon Hip06 PCIe host controllers (Gabriele Paoloni)
      
        Intel VMD host bridge driver:
         - Export irq_domain_set_info() for module use (Keith Busch)
         - x86/PCI: Allow DMA ops specific to a PCI domain (Keith Busch)
         - Use 32 bit PCI domain numbers (Keith Busch)
         - Add driver for Intel Volume Management Device (VMD) (Keith Busch)
      
        Qualcomm host bridge driver:
         - Document PCIe devicetree bindings (Stanimir Varbanov)
         - Add Qualcomm PCIe controller driver (Stanimir Varbanov)
         - dts: apq8064: add PCIe devicetree node (Stanimir Varbanov)
         - dts: ifc6410: enable PCIe DT node for this board (Stanimir Varbanov)
      
        Renesas R-Car host bridge driver:
         - Add support for R-Car H3 to pcie-rcar (Harunobu Kurokawa)
         - Allow DT to override default window settings (Phil Edworthy)
         - Convert to DT resource parsing API (Phil Edworthy)
         - Revert "PCI: rcar: Build pcie-rcar.c only on ARM" (Phil Edworthy)
         - Remove unused pci_sys_data struct from pcie-rcar (Phil Edworthy)
         - Add runtime PM support to pcie-rcar (Phil Edworthy)
         - Add Gen2 PHY setup to pcie-rcar (Phil Edworthy)
         - Add gen2 fallback compatibility string for pci-rcar-gen2 (Simon Horman)
         - Add gen2 fallback compatibility string for pcie-rcar (Simon Horman)
      
        Synopsys DesignWare host bridge driver:
         - Simplify control flow (Bjorn Helgaas)
         - Make config accessor override checking symmetric (Bjorn Helgaas)
         - Ensure ATU is enabled before IO/conf space accesses (Stanimir Varbanov)
      
        Miscellaneous:
         - Add of_pci_get_host_bridge_resources() stub (Arnd Bergmann)
         - Check for PCI_HEADER_TYPE_BRIDGE equality, not bitmask (Bjorn Helgaas)
         - Fix all whitespace issues (Bogicevic Sasa)
         - x86/PCI: Simplify pci_bios_{read,write} (Geliang Tang)
         - Use to_pci_dev() instead of open-coding it (Geliang Tang)
         - Use kobj_to_dev() instead of open-coding it (Geliang Tang)
         - Use list_for_each_entry() to simplify code (Geliang Tang)
         - Fix typos in <linux/msi.h> (Thomas Petazzoni)
         - x86/PCI: Clarify AMD Fam10h config access restrictions comment (Tomasz Nowicki)"
      
      * tag 'pci-v4.5-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (58 commits)
        PCI: Add function 1 DMA alias quirk for Lite-On/Plextor M6e/Marvell 88SS9183
        PCI: Limit config space size for Netronome NFP4000
        PCI: Add Netronome NFP4000 PF device ID
        x86/PCI: Add driver for Intel Volume Management Device (VMD)
        PCI/AER: Use 32 bit PCI domain numbers
        x86/PCI: Allow DMA ops specific to a PCI domain
        irqdomain: Export irq_domain_set_info() for module use
        PCI: host: Add of_pci_get_host_bridge_resources() stub
        genirq/MSI: Relax msi_domain_alloc() to support parentless MSI irqdomains
        PCI: rcar: Add Gen2 PHY setup to pcie-rcar
        PCI: rcar: Add runtime PM support to pcie-rcar
        PCI: designware: Make config accessor override checking symmetric
        PCI: ibmphp: Remove unneeded NULL test
        ARM: dts: ifc6410: enable PCIe DT node for this board
        ARM: dts: apq8064: add PCIe devicetree node
        PCI: hotplug: Use list_for_each_entry() to simplify code
        PCI: rcar: Remove unused pci_sys_data struct from pcie-rcar
        PCI: hisi: Add support for HiSilicon Hip06 PCIe host controllers
        PCI: Avoid iterating through memory outside the resource window
        PCI: acpiphp_ibm: Fix null dereferences on null ibm_slot
        ...
      d4342156
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-4.5-rc1' of... · 859e7625
      Linus Torvalds authored
      Merge tag 'pwm/for-4.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "This set of changes contains a new driver for OMAP (using the
        dual-mode timers) as well as an assortment of fixes all across the
        board"
      
      * tag 'pwm/for-4.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
        pwm: Mark all devices as "might sleep"
        pwm: omap-dmtimer: Potential NULL dereference on error
        pwm: add HAS_IOMEM dependency to PWM_FSL_FTM
        pwm: Add PWM driver for OMAP using dual-mode timers
        pwm: rcar: Improve accuracy of frequency division setting
        pwm: lpc32xx: return ERANGE, if requested period is not supported
        pwm: lpc32xx: fix and simplify duty cycle and period calculations
        pwm: lpc32xx: make device usable with common clock framework
        pwm: lpc32xx: correct number of PWM channels from 2 to 1
        dt: lpc32xx: pwm: update documentation of LPC32xx PWM device
        dt: lpc32xx: pwm: correct LPC32xx PWM device node example
        pwm: fsl-ftm: Fix clock enable/disable when using PM
        pwm: lpss: Rework the sequence of programming PWM_SW_UPDATE
        pwm: lpss: Select core part automatically
        pwm: lpss: Update PWM setting for Broxton
        pwm: bcm2835: Fix email address specification
        pwm: bcm2835: Prevent division by zero
        pwm: bcm2835: Calculate scaler in ->config()
        pwm: lpss: Remove ->free() callback
      859e7625
    • Linus Torvalds's avatar
      Merge tag 'cris-for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/jesper/cris · 96461fdb
      Linus Torvalds authored
      Pull CRIS updates from Jesper Nilsson:
       "Just some fixups for section mismatches from Guenter"
      
      * tag 'cris-for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/jesper/cris:
        cris: Fix section mismatches in architecture startup code
        cris: debugport: Fix section mismatches
      96461fdb
    • Linus Torvalds's avatar
      Merge tag 'for-4.5' of git://git.osdn.jp/gitroot/uclinux-h8/linux · 278e5aca
      Linus Torvalds authored
      Pull h8300 updates from Yoshinori Sato:
       - Add KGDB support
       - zImage fix
       - various cleanup
      
      * tag 'for-4.5' of git://git.osdn.jp/gitroot/uclinux-h8/linux:
        h8300: System call entry enable interrupt.
        h8300: show_stack cleanup
        h8300: Restraint of warning.
        h8300: Add KGDB support.
        irqchip: renesas-h8s: Replace ctrl_outw/ctrl_inw with writew/readw
        h8300: signal stack fix
        h8300: Add LZO compression
        h8300: zImage alignment fix
        clk: h8300: Remove "sh73a0-" part from compatible value
        h8300: zImage alignment fix
      278e5aca
    • Thierry Reding's avatar
      pwm: Mark all devices as "might sleep" · ff01c944
      Thierry Reding authored
      Commit d1cd2142 ("pwm: Set enable state properly on failed call to
      enable") introduced a mutex that is needed to protect internal state of
      PWM devices. Since that mutex is acquired in pwm_set_polarity() and in
      pwm_enable() and might potentially block, all PWM devices effectively
      become "might sleep".
      
      It's rather pointless to keep the .can_sleep field around, but given
      that there are external users let's postpone the removal for the next
      release cycle.
      Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
      ff01c944
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-4.5-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 30f05309
      Linus Torvalds authored
      Pull more power management and ACPI updates from Rafael Wysocki:
       "This includes fixes on top of the previous batch of PM+ACPI updates
        and some new material as well.
      
        From the new material perspective the most significant are the driver
        core changes that should allow USB devices to stay suspended over
        system suspend/resume cycles if they have been runtime-suspended
        already beforehand.  Apart from that, ACPICA is updated to upstream
        revision 20160108 (cosmetic mostly, but including one fixup on top of
        the previous ACPICA update) and there are some devfreq updates the
        didn't make it before (due to timing).
      
        A few recent regressions are fixed, most importantly in the cpuidle
        menu governor and in the ACPI backlight driver and some x86 platform
        drivers depending on it.
      
        Some more bugs are fixed and cleanups are made on top of that.
      
        Specifics:
      
         - Modify the driver core and the USB subsystem to allow USB devices
           to stay suspended over system suspend/resume cycles if they have
           been runtime-suspended already beforehand and fix some bugs on top
           of these changes (Tomeu Vizoso, Rafael Wysocki).
      
         - Update ACPICA to upstream revision 20160108, including updates of
           the ACPICA's copyright notices, a code fixup resulting from a
           regression fix that was necessary in the upstream code only (the
           regression fixed by it has never been present in Linux) and a
           compiler warning fix (Bob Moore, Lv Zheng).
      
         - Fix a recent regression in the cpuidle menu governor that broke it
           on practically all architectures other than x86 and make a couple
           of optimizations on top of that fix (Rafael Wysocki).
      
         - Clean up the selection of cpuidle governors depending on whether or
           not the kernel is configured for tickless systems (Jean Delvare).
      
         - Revert a recent commit that introduced a regression in the ACPI
           backlight driver, address the problem it attempted to fix in a
           different way and revert one more cosmetic change depending on the
           problematic commit (Hans de Goede).
      
         - Add two more ACPI backlight quirks (Hans de Goede).
      
         - Fix a few minor problems in the core devfreq code, clean it up a
           bit and update the MAINTAINERS information related to it (Chanwoo
           Choi, MyungJoo Ham).
      
         - Improve an error message in the ACPI fan driver (Andy Lutomirski).
      
         - Fix a recent build regression in the cpupower tool (Shreyas
           Prabhu)"
      
      * tag 'pm+acpi-4.5-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (32 commits)
        cpuidle: menu: Avoid pointless checks in menu_select()
        sched / idle: Drop default_idle_call() fallback from call_cpuidle()
        cpupower: Fix build error in cpufreq-info
        cpuidle: Don't enable all governors by default
        cpuidle: Default to ladder governor on ticking systems
        time: nohz: Expose tick_nohz_enabled
        ACPICA: Update version to 20160108
        ACPICA: Silence a -Wbad-function-cast warning when acpi_uintptr_t is 'uintptr_t'
        ACPICA: Additional 2016 copyright changes
        ACPICA: Reduce regression fix divergence from upstream ACPICA
        ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba Satellite R830
        ACPI / video: Revert "thinkpad_acpi: Use acpi_video_handles_brightness_key_presses()"
        ACPI / video: Document acpi_video_handles_brightness_key_presses() a bit
        ACPI / video: Fix using an uninitialized mutex / list_head in acpi_video_handles_brightness_key_presses()
        ACPI / video: Revert "ACPI / video: driver must be registered before checking for keypresses"
        ACPI / fan: Improve acpi_device_update_power error message
        ACPI / video: Add disable_backlight_sysfs_if quirk for the Toshiba Portege R700
        cpuidle: menu: Fix menu_select() for CPUIDLE_DRIVER_STATE_START == 0
        MAINTAINERS: Add devfreq-event entry
        MAINTAINERS: Add missing git repository and directory for devfreq
        ...
      30f05309
    • Linus Torvalds's avatar
      Merge tag 'renesas-sh-drivers-for-v4.5' of... · 3549d822
      Linus Torvalds authored
      Merge tag 'renesas-sh-drivers-for-v4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas
      
      Pull SH driver updates from Simon Horman:
       "Clean up the clock API on legacy SH to make it more similar to the
        Common Clock Framework.  This will avoid different behaviour in
        drivers shared between legacy and CCF-based platforms (e.g.  SCIF)"
      
      * tag 'renesas-sh-drivers-for-v4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
        drivers: sh: clk: Avoid crashes when passing NULL clocks
        drivers: sh: clk: Remove obsolete and unused clk_round_parent()
      3549d822
    • Linus Torvalds's avatar
      Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 9638685e
      Linus Torvalds authored
      Pull ARM SoC driver updates from Olof Johansson:
       "Driver updates for ARM SoCs.  Some for SoC-family code under
        drivers/soc, but also some other driver updates that don't belong
        anywhere else.  We also bring in the drivers/reset code through
        arm-soc.
      
        Some of the larger updates:
      
         - Qualcomm support for SMEM, SMSM, SMP2P.  All used to communicate
           with other parts of the chip/board on these platforms, all
           proprietary protocols that don't fit into other subsystems and live
           in drivers/soc for now.
      
         - System bus driver for UniPhier
      
         - Driver for the TI Wakeup M3 IPC device
      
         - Power management for Raspberry PI
      
        + Again a bunch of other smaller updates and patches"
      
      * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits)
        bus: uniphier: allow only built-in driver
        ARM: bcm2835: clarify RASPBERRYPI_FIRMWARE dependency
        MAINTAINERS: Drop Kumar Gala from QCOM
        bus: uniphier-system-bus: add UniPhier System Bus driver
        ARM: bcm2835: add rpi power domain driver
        dt-bindings: add rpi power domain driver bindings
        ARM: bcm2835: Define two new packets from the latest firmware.
        drivers/soc: make mediatek/mtk-scpsys.c explicitly non-modular
        soc: mediatek: SCPSYS: Add regulator support
        MAINTAINERS: Change QCOM entries
        soc: qcom: smd-rpm: Add existing platform support
        memory/tegra: Add number of TLB lines for Tegra124
        reset: hi6220: fix modular build
        soc: qcom: Introduce WCNSS_CTRL SMD client
        ARM: qcom: select ARM_CPU_SUSPEND for power management
        MAINTAINERS: Add rules for Qualcomm dts files
        soc: qcom: enable smsm/smp2p modular build
        serial: msm_serial: Make config tristate
        soc: qcom: smp2p: Qualcomm Shared Memory Point to Point
        soc: qcom: smsm: Add driver for Qualcomm SMSM
        ...
      9638685e
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 03d7d124
      Linus Torvalds authored
      Pull ARM 64-bit defconfig updates from Olof Johansson:
       "As mentioned earlier, we usually bake this into the general "arm64"
        branch, but this release we have partitioned up the updates a bit
        more.
      
        Most of these updates are enabling new SoCs in the single defconfig
        for 64-bit, Renesas R8A7795, a number of Tegra options, Socionext
        Uniphier and a handful of new options for other platforms as well"
      
      * tag 'armsoc-defconfig64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        arm64: mediatek: enable MTK_TIMER
        arm64: defconfig: add CS2000 support
        arm64: defconfig: Add Renesas R-Car SATA driver for R-Car Gen3 SoCs
        arm64: defconfig: enable UniPhier SoCs support
        arm64: add Kconfig entry for Socionext UniPhier SoC family
        arm64: defconfig: add Renesas sound and AK4613 support
        arm64: defconfig: add Renesas R-Car DMAC driver support
        arm64: defconfig: Enable Renesas R-Car I2C Controller
        arm64: defconfig: enable EthernetAVB
        arm64: defconfig: Enable GPIO of Renesas R-Car Gen3 SoC
        arm64: berlin: add the pinctrl dependency for Marvell Berlin SoCs
        arm64: defconfig: renesas: Enable Renesas r8a7795 SoC
        arm64: defconfig: Enable printk timestamps
        arm64: defconfig: Enable squashfs support
        arm64: defconfig: Enable sdhci-tegra driver
        arm64: defconfig: Enable serial-tegra driver
        arm64: defconfig: Enable tegra-apbdma driver
        arm64: defconfig: Do not disable Tegra AHB driver
        arm64: defconfig: Enable Tegra210 support
      03d7d124
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · f9cd69fe
      Linus Torvalds authored
      Pull ARM SoC defconfig updates from Olof Johansson:
       "As usual, a bunch of commits, mostly adding drivers and other options
        to defconfigs because it makes sense to have them enabled on various
        development or product boards.  Too much to enumerate each here.
      
        There's an introduction of a pxa_defconfig, since PXA finally will
        allow building a shared kernel for all boards.  With this, we can
        hopefully remove a bunch of individual defconfigs down the road but it
        requires a bit of real life testing and transition period"
      
      * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (65 commits)
        ARM: Add CONFIG_DEPRECATED_PARAM_STRUCT to netwinder_defconfig
        ARM: multi_v7_defconfig: Add rockchip audio support
        arm: multi_v7_defconfig: Add virtio drivers
        ARM: zx_defconfig: remove CONFIG_MMC_DW_IDMAC
        ARM: versatile: enable the right LEDs
        ARM: pxa: add defconfig covering all the boards
        ARM: versatile: select some defaults in defconfig
        ARM: multi_v7_defconfig: Enable fan, sensors and audio for Odroid XU3
        ARM: bcm2835: enable auxiliary spi driver in defconfig
        ARM: bcm2835: enable all bcm2835-relevant in defconfig
        ARM: default to multi_v7_defconfig
        ARM: multi_v7_defconfig: enable rk808 clkout module
        ARM: multi_v7_defconfig: enable rockchip crypto module
        ARM: multi_v7_defconfig: enable Rockchip io-domain driver
        ARM: multi_v7_defconfig: Enable generic SoC internal OMAP regulators
        ARM: multi_v7_defconfig: Enable AM437x PMIC TPS65218
        ARM: multi_v7_defconfig: enable TPS65217 regulator
        ARM: realview: select apropriate targets
        ARM: defconfig: qcom: Enable SSBI drivers
        ARM: defconfig: Update qcom_defconfig
        ...
      f9cd69fe
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 62c79bb3
      Linus Torvalds authored
      Pull ARM 64-bit DT updates from Olof Johansson:
       "This is the first release where we split up the 64-bit contributions a
        bit more, and in particular we are having a separate DT branch for
        them.
      
        Contents:
      
         - New devices added to Broadcom NorthStar2
         - Misc fixes for Exynos7 boards
         - QCOM updates for MSM8916
         - Rockchip tweaks for rk3368 SoC and eval board
         - A series of fixes for APM X-Gene v1 and v2
         - Renesas R8A7795 CPU/PSCI additions
         - Marvell Berlin4CT PSCI, cpuidle, watchdog portions
         - Freescale LS1043a SoC and dev board support
      
        + some treewide or other misc changes"
      
      * tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (104 commits)
        dts/ls2080a: Update DTSI to add support of SP805 WDT
        Documentation: DT: Add entry for ARM SP805-WDT
        arm64: dts: X-Gene v2: I2C1 clock is always on
        arm64: dts: X-Gene v1: I2C0 clock is always on
        arm64: dts: Fix to use standard DT node names for X-Gene 1 and X-Gene 2 platforms
        arm64: dts: hikey: add label properties to UARTs
        arm64: dts: apq8016-sbc: add label properties for UART, I2C, and SPI
        arm64: dts: apq8016-sbc: enable UART0 on LS connector
        arm64: dts: juno: Add idle-states to device tree
        arm64: dts: Added syscon-reboot node for FSL's LS2080A SoC
        arm64: dts: add LS1043a-RDB board support
        arm64: dts: add Freescale LS1043a SoC support
        Documentation: DT: Add entry for Freescale LS1043a-RDB board
        arm64: dts: uniphier: add PH1-LD10 SoC/board support
        arm64: renesas: r8a7795: fix SATA clock assignment
        arm64: dts: salvator-x: Enable SATA controller
        arm64: dts: r8a7795: Add SATA controller node
        arm64: renesas: r8a7795: add internal delay for i2c IPs
        arm64: renesas: salvator-x: Add board part number to DT bindings
        arm64: dts: r8a7795: Add pmu device nodes
        ...
      62c79bb3
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 6d1c2448
      Linus Torvalds authored
      Pull ARM DT updates from Olof Johansson:
       "As usual, the bulk of this release is again DT file contents.
      
        There's a huge number of changes here, and it's challenging to give a
        crisp overview of just what is in here.  To start with:
      
        New boards:
      
         - TI-based DM3730 from LogicPD (Torpedo)
         - Cosmic+ M4 (nommu) initial support (Freescale Vybrid)
         - Raspberry Pi 2 DT files
         - Watchdog on Meson8b
         - Veyron-mickey (ASUS Chromebit) DTS
         - Rockchip rk3228 SoC and eval board
         - Sigma Designs Tango4
      
        Improvements:
      
         - Improved support for Qualcomm APQ8084, including Sony Xperia Z DT files
         - Misc new devices for Rockchip rk3036 and rk3288
         - Allwinner updates for misc SoCs and systems
      
        ... and a _large_ number of other changes across the field.  Devices
        added to SoC DTSI and board DTS files for a number of SoC vendors, new
        product boards on already-supported SoCs, cleanups and refactorings of
        existing DTS/DTSI files and a bunch of other changes"
      
      * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (469 commits)
        ARM: dts: compulab: add new board description
        ARM: versatile: add the syscon LEDs to the DT
        dts: vt8500: Fix errors in SDHC node for WM8505
        ARM: dts: imx6q: clean up unused ipu2grp
        ARM: dts: silk: Add compatible property to "partitions" node
        ARM: dts: gose: Add compatible property to "partitions" node
        ARM: dts: porter: Add compatible property to "partitions" node
        ARM: dts: koelsch: Add compatible property to "partitions" node
        ARM: dts: lager: Add compatible property to "partitions" node
        ARM: dts: bockw: Add compatible property to "partitions" node
        ARM: dts: meson8b: Add watchdog node
        Documentation: watchdog: Add new bindings for meson8b
        ARM: meson: Add status LED for Odroid-C1
        ARM: dts: uniphier: fix a typo in comment block
        ARM: bcm2835: Add the auxiliary clocks to the device tree.
        ARM: bcm2835: Add devicetree for bcm2836 and Raspberry Pi 2 B
        ARM: bcm2835: Move the CPU/peripheral include out of common RPi DT.
        ARM: bcm2835: Split the DT for peripherals from the DT for the CPU
        ARM: realview: set up cache correctly on the PB11MPCore
        ARM: dts: Unify G2D device node with other devices on exynos4
        ...
      6d1c2448
    • Linus Torvalds's avatar
      Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 1305eda7
      Linus Torvalds authored
      Pull ARM SoC platform updates from Olof Johansson:
       "Updates for new platform support:
      
         - New platform: Tango4 from Sigma Designs.
         - Broadcom BCM2836 (Raspberry Pi 2 SoC)
         - Enable cpufreq on Freescale i.MX7D
         - Rockchip: SMP support for rk3036, general support for rk3228
         - SMP support on Broadcom Kona and NSP
         - Cleanups for OMAP removing legacy IOMMU data
      
        + a bunch of misc fixes and tweaks for various platforms"
      
      * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (46 commits)
        ARM: tango: Fix UP build issues
        ARM: tango: pass ARM arch level for smc.S
        ARM: bcm2835: Add Kconfig support for bcm2836
        ARM: OMAP2+: Add support for dm814x and dra62x usb
        ARM: OMAP2+: Add mmc hwmod entries for dm814x
        ARM: OMAP2+: Update 81xx clock and power domains for default, active and sgx
        ARM: OMAP2+: Fix SoC detection for dra62x j5-eco
        ARM: tango4: Initial platform support
        ARM: bcm2835: Add a compat string for bcm2836 machine probe
        dt-bindings: Add root properties for Raspberry Pi 2
        ARM: imx: select SRC for i.MX7
        ARM: uniphier: select PINCTRL
        ARM: OMAP2+: Remove device creation for omap-pcm-audio
        ARM: OMAP1: Remove device creation for omap-pcm-audio
        ARM: rockchip: enable support for RK3228 SoCs
        ARM: rockchip: use const and __initconst for rk3036 smp_operations
        ARM: zynq: Select ARCH_HAS_RESET_CONTROLLER
        ARM: BCM: Add SMP support for Broadcom 4708
        ARM: BCM: Add SMP support for Broadcom NSP
        ARM: BCM: Clean up SMP support for Broadcom Kona
        ...
      1305eda7
    • Linus Torvalds's avatar
      Merge tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 6b5a12db
      Linus Torvalds authored
      Pull ARM SoC multiplatform code updates from Arnd Bergmann:
       "This branch is the culmination of 5 years of effort to bring the ARMv6
        and ARMv7 platforms together such that they can all be enabled and
        boot the same kernel.  It has been a tremendous amount of cleanup and
        refactoring by a huge number of people, and creation of several new
        (and major) subsystems to better abstract out all the platform details
        in an appropriate manner.
      
        The bulk of this branch is a large patchset from Arnd that brings
        several of the more minor and older platforms we have closer to
        multiplatform support.  Among these are MMP, S3C64xx, Orion5x, mv78xx0
        and realview Much of this is moving around header files from old mach
        directories, but there are also some cleanup patches of debug_ll
        (lowlevel debug per-platform options) and other parts.
      
        Linus Walleij also has some patchs to clean up the older ARM Realview
        platforms by finally introducing DT support, and Rob Herring has some
        for ARM Versatile which is now DT-only.  Both of these platforms are
        now multiplatform.
      
        Finally, a couple of patches from Russell for Dove PMU, and a fix from
        Valentin Rothberg for Exynos ADC, which were rebased on top of the
        series to avoid conflicts"
      
      * tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (75 commits)
        ARM: realview: don't select SMP_ON_UP for UP builds
        ARM: s3c: simplify s3c_irqwake_{e,}intallow definition
        ARM: s3c64xx: fix pm-debug compilation
        iio: exynos-adc: fix irqf_oneshot.cocci warnings
        ARM: realview: build realview-dt SMP support only when used
        ARM: realview: select apropriate targets
        ARM: realview: clean up header files
        ARM: realview: make all header files local
        ARM: no longer make CPU targets visible separately
        ARM: integrator: use explicit core module options
        ARM: realview: enable multiplatform
        ARM: make default platform work for NOMMU
        ARM: debug-ll: move DEBUG_LL_UART_EFM32 to correct Kconfig location
        ARM: defconfig: use correct debug_ll settings
        ARM: versatile: convert to multi-platform
        ARM: versatile: merge mach code into a single file
        ARM: versatile: switch to DT only booting and remove legacy code
        ARM: versatile: add DT based PCI detection
        ARM: pxa: mark ezx structures as __maybe_unused
        ARM: pxa: mark raumfeld init functions as __maybe_unused
        ...
      6b5a12db
    • Linus Torvalds's avatar
      Merge tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 5083c542
      Linus Torvalds authored
      Pull ARM SoC cleanups from Olof Johansson:
       "A smallish number of general cleanup commits this release cycle.  Some
        of these are minor tweaks:
      
         - shmobile change of binding for their GIC (using arm,pl390 now)
         - ARCH_RENESAS introduction
         - Misc other renesas updates
      
        There's also a couple of treewide commits from Masahiro Yamada
        cleaning up const/__initconst for SMP operation structs and a switch
        to using "depends on" instead of if-constructs on most of the Kconfig
        platform targets"
      
      * tag 'armsoc-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        staging: board: armadillo800eva: Use "arm,pl390"
        staging: board: kzm9d: Use "arm,pl390"
        ARM: shmobile: r8a7778 dtsi: Use "arm,pl390" for GIC
        ARM: shmobile: emev2 dtsi: Use "arm,pl390" for GIC
        ARM: shmobile: r8a7740 dtsi: Use "arm,pl390" for GIC
        ARM: shmobile: r7s72100 dtsi: Use "arm,pl390" for GIC
        ARM: use "depends on" for SoC configs instead of "if" after prompt
        ARM/clocksource: use automatic DT probing for ux500 PRCMU
        ARM: use const and __initconst for smp_operations
        ARM: hisi: do not export smp_operations structures
        ARM: mvebu: remove unused mach/gpio.h
        ARM: shmobile: Remove legacy mach/irqs.h
        ARM: shmobile: Introduce ARCH_RENESAS
        MAINTAINERS: Remove link to oss.renesas.com which is closed
      5083c542
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes-nc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 0c582826
      Linus Torvalds authored
      Pull non-urgent ARM SoC fixes from Olof Johansson:
       "As usual, we queue up a few fixes that don't seem urgent enough to go
        in through -rc.
      
         - MAINTAINERS updates to add a list for brcmstb and fix a typo
         - A handful of fixes for OMAP 81xx, a recently resurrected platform
           so these can't be considered real regressions and thus got queued.
         - A couple of other small fixes for scoop, sa1100 and davinci"
      
      * tag 'armsoc-fixes-nc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: OMAP2+: Fix randconfig build warning for dm814_pllss_data
        ARM: sa1100/simpad: Be sure to clamp return value
        ARM: scoop: Be sure to clamp return value
        ARM: davinci: fix a problematic usage of WARN()
        ARM: davinci: only select WT cache if cache is enabled
        ARM: OMAP2+: Remove useless check for legacy booting for dm814x
        ARM: OMAP2+: Enable GPIO for dm814x
        ARM: dts: Fix dm814x pinctrl address and mask
        ARM: dts: Fix dm8148 control modules ranges
        ARM: OMAP2+: Fix timer entries for dm814x
        ARM: dts: Fix some mux and divider clocks to get dm814x-evm booting
        ARM: OMAP2+: Add DPPLS clock manager for dm814x
        clk: ti: Add few dm814x clock aliases
        ARM: dts: Fix dm814x entries for pllss and prcm
        MAINTAINERS: gpio-brcmstb: Remove stray '>'
        MAINTAINERS: brcmstb: Include Broadcom internal mailing-list
      0c582826
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic · e3de671d
      Linus Torvalds authored
      Pull asm-generic updates from Arnd Bergmann:
       "The asm-generic tree this time contains one series from Nicolas Pitre
        that makes the optimized do_div() implementation from the ARM
        architecture available to all architectures.
      
        This also adds stricter type checking for callers of do_div, which has
        uncovered a number of bugs in existing code, and fixes up the ones we
        have found"
      
      * tag 'asm-generic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
        ARM: asm/div64.h: adjust to generic codde
        __div64_32(): make it overridable at compile time
        __div64_const32(): abstract out the actual 128-bit cross product code
        do_div(): generic optimization for constant divisor on 32-bit machines
        div64.h: optimize do_div() for power-of-two constant divisors
        mtd/sm_ftl.c: fix wrong do_div() usage
        drm/mgag200/mgag200_mode.c: fix wrong do_div() usage
        hid-sensor-hub.c: fix wrong do_div() usage
        ti/fapll: fix wrong do_div() usage
        ti/clkt_dpll: fix wrong do_div() usage
        tegra/clk-divider: fix wrong do_div() usage
        imx/clk-pllv2: fix wrong do_div() usage
        imx/clk-pllv1: fix wrong do_div() usage
        nouveau/nvkm/subdev/clk/gk20a.c: fix wrong do_div() usage
      e3de671d
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 71e4634e
      Linus Torvalds authored
      Pull SCSI target updates from Nicholas Bellinger:
       "The highlights this round include:
      
         - Introduce configfs support for unlocked configfs_depend_item()
           (krzysztof + andrezej)
         - Conversion of usb-gadget target driver to new function registration
           interface (andrzej + sebastian)
         - Enable qla2xxx FC target mode support for Extended Logins (himansu +
           giridhar)
         - Enable qla2xxx FC target mode support for Exchange Offload (himansu +
           giridhar)
         - Add qla2xxx FC target mode irq affinity notification + selective
           command queuing.  (quinn + himanshu)
         - Fix iscsi-target deadlock in se_node_acl configfs deletion (sagi +
           nab)
         - Convert se_node_acl configfs deletion + se_node_acl->queue_depth to
           proper se_session->sess_kref + target_get_session() usage.  (hch +
           sagi + nab)
         - Fix long-standing race between se_node_acl->acl_kref get and
           get_initiator_node_acl() lookup.  (hch + nab)
         - Fix target/user block-size handling, and make sure netlink reaches
           all network namespaces (sheng + andy)
      
        Note there is an outstanding bug-fix series for remote I_T nexus port
        TMR LUN_RESET has been posted and still being tested, and will likely
        become post -rc1 material at this point"
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (56 commits)
        scsi: qla2xxxx: avoid type mismatch in comparison
        target/user: Make sure netlink would reach all network namespaces
        target: Obtain se_node_acl->acl_kref during get_initiator_node_acl
        target: Convert ACL change queue_depth se_session reference usage
        iscsi-target: Fix potential dead-lock during node acl delete
        ib_srpt: Convert acl lookup to modern get_initiator_node_acl usage
        tcm_fc: Convert acl lookup to modern get_initiator_node_acl usage
        tcm_fc: Wait for command completion before freeing a session
        target: Fix a memory leak in target_dev_lba_map_store()
        target: Support aborting tasks with a 64-bit tag
        usb/gadget: Remove set-but-not-used variables
        target: Remove an unused variable
        target: Fix indentation in target_core_configfs.c
        target/user: Allow user to set block size before enabling device
        iser-target: Fix non negative ERR_PTR isert_device_get usage
        target/fcoe: Add tag support to tcm_fc
        qla2xxx: Check for online flag instead of active reset when transmitting responses
        qla2xxx: Set all queues to 4k
        qla2xxx: Disable ZIO at start time.
        qla2xxx: Move atioq to a different lock to reduce lock contention
        ...
      71e4634e
    • Dan Williams's avatar
      Do not enable CONFIG_IO_STRICT_DEVMEM by default · 19a3dd76
      Dan Williams authored
      Larry Finger reports:
       "My PowerBook G4 Aluminum with a 32-bit PPC processor fails to boot for
        the 4.4-git series".
      
      This is likely due to X still needing /dev/mem access on this platform.
      
      CONFIG_IO_STRICT_DEVMEM is not yet safe to turn on when
      CONFIG_STRICT_DEVMEM=y.
      
      Remove the default so that old configurations do not change behavior.
      
      Fixes: 90a545e9 ("restrict /dev/mem to idle io memory ranges")
      Reported-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Tested-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Link: http://marc.info/?l=linux-kernel&m=145332012023825&w=2Acked-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      19a3dd76
    • Fengguang Wu's avatar
      MAINTAINERS: add/fix git URLs for various subsystems · 9f273c24
      Fengguang Wu authored
      Add/fix git URLs for various subsystems
      Add git URL for at91
      Add git URL for Rockchip
      Add git URL for ARM64
      Update git URL for ath6kl
      Add git URL for backlight
      Add git URL for chrome
      Add git URL for cris
      Add git URL for cryptodev
      Update git URL for DLM
      Add git URL for eCryptfs
      Add git URL for ext4
      Add git URL for hwspinlock
      Add git URL for integrity
      Add git URL for IPVS
      Add git URL for nfsd
      Add git URL for KVM/s390
      Add git URL for kgdb
      Add git URL for nvdimm
      Add git URL for metag
      Add git URL for wireless drivers
      Add git URL for devicetree
      Update git URL for PCMCIA
      Update git URL for pstore
      Update git URL for ath10k
      Add git URL for hexagon
      Add git URL for reset
      Add git URL for s390
      Fix tree format for SAMSUNG thermal
      Add git URL for md
      Add git URL for squashfs
      Add git URL for swiotlb
      Add git URL for xtensa
      Fix tree format for TPM
      Add git URL for UML
      Add git URL for VFIO
      Add git URL for vhost
      Update git URL for XFS
      Fix MIC maintainers entry
      Signed-off-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Acked-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      Acked-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
      Acked-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Acked-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9f273c24
    • Johannes Weiner's avatar
      mm: memcontrol: add "sock" to cgroup2 memory.stat · b2807f07
      Johannes Weiner authored
      Provide statistics on how much of a cgroup's memory footprint is made up
      of socket buffers from network connections owned by the group.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b2807f07
    • Johannes Weiner's avatar
      mm: memcontrol: basic memory statistics in cgroup2 memory controller · 587d9f72
      Johannes Weiner authored
      Provide a cgroup2 memory.stat that provides statistics on LRU memory
      and fault event counters. More consumers and breakdowns will follow.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      587d9f72
    • Johannes Weiner's avatar
      mm: memcontrol: do not uncharge old page in page cache replacement · 44b7a8d3
      Johannes Weiner authored
      Changing page->mem_cgroup of a live page is tricky and fragile.  In
      particular, the memcg writeback code relies on that mapping being stable
      and users of mem_cgroup_replace_page() not overlapping with dirtyable
      inodes.
      
      Page cache replacement doesn't have to do that, though.  Instead of being
      clever and transferring the charge from the old page to the new,
      force-charge the new page and leave the old page alone.  A temporary
      overcharge won't matter in practice, and the old page is going to be freed
      shortly after this anyway.  And this is not performance critical.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      44b7a8d3
    • Vladimir Davydov's avatar
      Documentation: cgroup: add memory.swap.{current,max} description · 3e24b19d
      Vladimir Davydov authored
      The rationale of separate swap counter is given by Johannes Weiner.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3e24b19d
    • Vladimir Davydov's avatar
      mm: free swap cache aggressively if memcg swap is full · 5ccc5aba
      Vladimir Davydov authored
      Swap cache pages are freed aggressively if swap is nearly full (>50%
      currently), because otherwise we are likely to stop scanning anonymous
      when we near the swap limit even if there is plenty of freeable swap cache
      pages.  We should follow the same trend in case of memory cgroup, which
      has its own swap limit.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5ccc5aba
    • Vladimir Davydov's avatar
      mm: vmscan: do not scan anon pages if memcg swap limit is hit · d8b38438
      Vladimir Davydov authored
      We don't scan anonymous memory if we ran out of swap, neither should we do
      it in case memcg swap limit is hit, because swap out is impossible anyway.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d8b38438
    • Vladimir Davydov's avatar
      swap.h: move memcg related stuff to the end of the file · 6f2cb2f1
      Vladimir Davydov authored
      The following patches will add more functions to the memcg section of
      include/linux/swap.h.  Some of them will need values defined below the
      current location of the section.  So let's move the section to the end of
      the file.  No functional changes intended.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6f2cb2f1
    • Vladimir Davydov's avatar
      mm: memcontrol: replace mem_cgroup_lruvec_online with mem_cgroup_online · eb01aaab
      Vladimir Davydov authored
      mem_cgroup_lruvec_online() takes lruvec, but it only needs memcg.  Since
      get_scan_count(), which is the only user of this function, now possesses
      pointer to memcg, let's pass memcg directly to mem_cgroup_online() instead
      of picking it out of lruvec and rename the function accordingly.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eb01aaab
    • Vladimir Davydov's avatar
      mm: vmscan: pass memcg to get_scan_count() · 33377678
      Vladimir Davydov authored
      memcg will come in handy in get_scan_count().  It can already be used for
      getting swappiness immediately in get_scan_count() instead of passing it
      around.  The following patches will add more memcg-related values, which
      will be used there.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      33377678
    • Vladimir Davydov's avatar
      mm: memcontrol: charge swap to cgroup2 · 37e84351
      Vladimir Davydov authored
      This patchset introduces swap accounting to cgroup2.
      
      This patch (of 7):
      
      In the legacy hierarchy we charge memsw, which is dubious, because:
      
       - memsw.limit must be >= memory.limit, so it is impossible to limit
         swap usage less than memory usage. Taking into account the fact that
         the primary limiting mechanism in the unified hierarchy is
         memory.high while memory.limit is either left unset or set to a very
         large value, moving memsw.limit knob to the unified hierarchy would
         effectively make it impossible to limit swap usage according to the
         user preference.
      
       - memsw.usage != memory.usage + swap.usage, because a page occupying
         both swap entry and a swap cache page is charged only once to memsw
         counter. As a result, it is possible to effectively eat up to
         memory.limit of memory pages *and* memsw.limit of swap entries, which
         looks unexpected.
      
      That said, we should provide a different swap limiting mechanism for
      cgroup2.
      
      This patch adds mem_cgroup->swap counter, which charges the actual number
      of swap entries used by a cgroup.  It is only charged in the unified
      hierarchy, while the legacy hierarchy memsw logic is left intact.
      
      The swap usage can be monitored using new memory.swap.current file and
      limited using memory.swap.max.
      
      Note, to charge swap resource properly in the unified hierarchy, we have
      to make swap_entry_free uncharge swap only when ->usage reaches zero, not
      just ->count, i.e.  when all references to a swap entry, including the one
      taken by swap cache, are gone.  This is necessary, because otherwise
      swap-in could result in uncharging swap even if the page is still in swap
      cache and hence still occupies a swap entry.  At the same time, this
      shouldn't break memsw counter logic, where a page is never charged twice
      for using both memory and swap, because in case of legacy hierarchy we
      uncharge swap on commit (see mem_cgroup_commit_charge).
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      37e84351
    • Johannes Weiner's avatar
      mm: memcontrol: clean up alloc, online, offline, free functions · 0b8f73e1
      Johannes Weiner authored
      The creation and teardown of struct mem_cgroup is fairly messy and
      that has attracted mistakes and subtle bugs before.
      
      The main cause for this is that there is no clear model about what
      needs to happen when, and that attracts more chaos. So create one:
      
      1. mem_cgroup_alloc() should allocate struct mem_cgroup and its
         auxiliary members and initialize work items, locks etc. so that the
         object it returns is fully initialized and in a neutral state.
      
      2. mem_cgroup_css_alloc() will use mem_cgroup_alloc() to obtain a new
         memcg object and configure it and the system according to the role
         of the new memory-controlled cgroup in the hierarchy.
      
      3. mem_cgroup_css_online() is no longer needed to synchronize with
         iterators, but it verifies css->id which isn't available earlier.
      
      4. mem_cgroup_css_offline() implements stuff that needs to happen upon
         the user-visible destruction of a cgroup, which includes stopping
         all user interfacing as well as releasing certain structures when
         continued memory consumption would be unexpected at that point.
      
      5. mem_cgroup_css_free() prepares the system and the memcg object for
         the object's disappearance, neutralizes its state, and then gives
         it back to mem_cgroup_free().
      
      6. mem_cgroup_free() releases struct mem_cgroup and auxiliary memory.
      
      [arnd@arndb.de: fix SLOB build regression]
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0b8f73e1
    • Johannes Weiner's avatar
      mm: memcontrol: flatten struct cg_proto · 0db15298
      Johannes Weiner authored
      There are no more external users of struct cg_proto, flatten the
      structure into struct mem_cgroup.
      
      Since using those struct members doesn't stand out as much anymore,
      add cgroup2 static branches to make it clearer which code is legacy.
      Suggested-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0db15298
    • Johannes Weiner's avatar
      mm: memcontrol: rein in the CONFIG space madness · d886f4e4
      Johannes Weiner authored
      What CONFIG_INET and CONFIG_LEGACY_KMEM guard inside the memory
      controller code is insignificant, having these conditionals is not
      worth the complication and fragility that comes with them.
      
      [akpm@linux-foundation.org: rework mem_cgroup_css_free() statement ordering]
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d886f4e4
    • Vladimir Davydov's avatar
      net: drop tcp_memcontrol.c · d55f90bf
      Vladimir Davydov authored
      tcp_memcontrol.c only contains legacy memory.tcp.kmem.* file definitions
      and mem_cgroup->tcp_mem init/destroy stuff.  This doesn't belong to
      network subsys.  Let's move it to memcontrol.c.  This also allows us to
      reuse generic code for handling legacy memcg files.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d55f90bf
    • Johannes Weiner's avatar
      mm: memcontrol: introduce CONFIG_MEMCG_LEGACY_KMEM · 489c2a20
      Johannes Weiner authored
      Let the user know that CONFIG_MEMCG_KMEM does not apply to the cgroup2
      interface. This also makes legacy-only code sections stand out better.
      
      [arnd@arndb.de: mm: memcontrol: only manage socket pressure for CONFIG_INET]
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Tejun Heo <tj@kernel.org>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      489c2a20
    • Vladimir Davydov's avatar
      mm: memcontrol: allow to disable kmem accounting for cgroup2 · 04823c83
      Vladimir Davydov authored
      Kmem accounting might incur overhead that some users can't put up with.
      Besides, the implementation is still considered unstable.  So let's
      provide a way to disable it for those users who aren't happy with it.
      
      To disable kmem accounting for cgroup2, pass cgroup.memory=nokmem at
      boot time.
      Signed-off-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      04823c83
    • Johannes Weiner's avatar
      mm: memcontrol: account "kmem" consumers in cgroup2 memory controller · 52c29b04
      Johannes Weiner authored
      The original cgroup memory controller has an extension to account slab
      memory (and other "kernel memory" consumers) in a separate "kmem"
      counter, once the user set an explicit limit on that "kmem" pool.
      
      However, this includes various consumers whose sizes are directly linked
      to userspace activity.  Accounting them as an optional "kmem" extension
      is problematic for several reasons:
      
      1. It leaves the main memory interface with incomplete semantics. A
         user who puts their workload into a cgroup and configures a memory
         limit does not expect us to leave holes in the containment as big
         as the dentry and inode cache, or the kernel stack pages.
      
      2. If the limit set on this random historical subgroup of consumers is
         reached, subsequent allocations will fail even when the main memory
         pool available to the cgroup is not yet exhausted and/or has
         reclaimable memory in it.
      
      3. Calling it 'kernel memory' is misleading. The dentry and inode
         caches are no more 'kernel' (or no less 'user') memory than the
         page cache itself. Treating these consumers as different classes is
         a historical implementation detail that should not leak to users.
      
      So, in addition to page cache, anonymous memory, and network socket
      memory, account the following memory consumers per default in the
      cgroup2 memory controller:
      
           - threadinfo
           - task_struct
           - task_delay_info
           - pid
           - cred
           - mm_struct
           - vm_area_struct and vm_region (nommu)
           - anon_vma and anon_vma_chain
           - signal_struct
           - sighand_struct
           - fs_struct
           - files_struct
           - fdtable and fdtable->full_fds_bits
           - dentry and external_name
           - inode for all filesystems.
      
      This should give us reasonable memory isolation for most common
      workloads out of the box.
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.com>
      Cc: Tejun Heo <tj@kernel.org>
      Acked-by: default avatarVladimir Davydov <vdavydov@virtuozzo.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      52c29b04