22 Jan, 2016

2 commits


21 Jan, 2016

1 commit


19 Jan, 2016

2 commits

  • Pull virtio barrier rework+fixes from Michael Tsirkin:
    "This adds a new kind of barrier, and reworks virtio and xen to use it.

    Plus some fixes here and there"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost: (44 commits)
    checkpatch: add virt barriers
    checkpatch: check for __smp outside barrier.h
    checkpatch.pl: add missing memory barriers
    virtio: make find_vqs() checkpatch.pl-friendly
    virtio_balloon: fix race between migration and ballooning
    virtio_balloon: fix race by fill and leak
    s390: more efficient smp barriers
    s390: use generic memory barriers
    xen/events: use virt_xxx barriers
    xen/io: use virt_xxx barriers
    xenbus: use virt_xxx barriers
    virtio_ring: use virt_store_mb
    sh: move xchg_cmpxchg to a header by itself
    sh: support 1 and 2 byte xchg
    virtio_ring: update weak barriers to use virt_xxx
    Revert "virtio_ring: Update weak barriers to use dma_wmb/rmb"
    asm-generic: implement virt_xxx memory barriers
    x86: define __smp_xxx
    xtensa: define __smp_xxx
    tile: define __smp_xxx
    ...

    Linus Torvalds
     
  • Pull fbdev updates from Tomi Valkeinen:
    "Summary:

    - pxafb: device-tree support
    - An unsafe kernel parameter 'lockless_register_fb' for debugging
    problems happening while inside the console lock
    - Small miscellaneous fixes & cleanups
    - omapdss: add writeback support functions
    - Separation of omapfb and omapdrm (see below)

    About the separation of omapfb and omapdrm, see

    http://permalink.gmane.org/gmane.comp.video.dri.devel/143151

    for longer story. The short version:

    omapfb and omapdrm have shared low level drivers (omapdss and panel
    drivers), making further development of omapdrm difficult. After
    these patches omapfb and omapdrm have their own versions of the
    drivers, which are more or less direct copies for now but will diverge
    soon.

    This also means that omapfb (everything under drivers/video/fbdev/omap2/)
    is now in maintenance mode, and all new development will be done for
    omapdrm (drivers/gpu/drm/omapdrm/)"

    * tag 'fbdev-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (49 commits)
    video: fbdev: pxafb: fix out of memory error path
    drm/omap: make omapdrm select OMAP2_DSS
    drm/omap: move omapdss & displays under omapdrm
    omapfb: move vrfb into omapfb
    omapfb: take omapfb's private omapdss into use
    omapfb/displays: change CONFIG_DISPLAY_* to CONFIG_FB_OMAP2_*
    omapfb/dss: change CONFIG_OMAP* to CONFIG_FB_OMAP*
    omapdss: remove CONFIG_OMAP2_DSS_VENC from omapdss.h
    omapfb: copy omapdss & displays for omapfb
    omapfb: allow compilation only if DRM_OMAP is disabled
    fbdev: omap2: panel-dpi: simplify gpio setting
    fbdev: omap2: panel-dpi: in .disable first disable backlight then display
    OMAPDSS: DSS: fix a warning message
    video: omapdss: delete unneeded of_node_put
    OMAPDSS: DISPC: Remove boolean comparisons
    OMAPDSS: DSI: cleanup DSI_IRQ_ERROR_MASK define
    OMAPDSS: remove extra out == NULL checks
    OMAPDSS: change internal dispc functions to static
    OMAPDSS: make a two dss feat funcs internal to omapdss
    OMAPDSS: remove extra EXPORT_SYMBOLs
    ...

    Linus Torvalds
     

18 Jan, 2016

8 commits

  • Pull security subsystem updates from James Morris:

    - EVM gains support for loading an x509 cert from the kernel
    (EVM_LOAD_X509), into the EVM trusted kernel keyring.

    - Smack implements 'file receive' process-based permission checking for
    sockets, rather than just depending on inode checks.

    - Misc enhancments for TPM & TPM2.

    - Cleanups and bugfixes for SELinux, Keys, and IMA.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (41 commits)
    selinux: Inode label revalidation performance fix
    KEYS: refcount bug fix
    ima: ima_write_policy() limit locking
    IMA: policy can be updated zero times
    selinux: rate-limit netlink message warnings in selinux_nlmsg_perm()
    selinux: export validatetrans decisions
    gfs2: Invalid security labels of inodes when they go invalid
    selinux: Revalidate invalid inode security labels
    security: Add hook to invalidate inode security labels
    selinux: Add accessor functions for inode->i_security
    security: Make inode argument of inode_getsecid non-const
    security: Make inode argument of inode_getsecurity non-const
    selinux: Remove unused variable in selinux_inode_init_security
    keys, trusted: seal with a TPM2 authorization policy
    keys, trusted: select hash algorithm for TPM2 chips
    keys, trusted: fix: *do not* allow duplicate key options
    tpm_ibmvtpm: properly handle interrupted packet receptions
    tpm_tis: Tighten IRQ auto-probing
    tpm_tis: Refactor the interrupt setup
    tpm_tis: Get rid of the duplicate IRQ probing code
    ...

    Linus Torvalds
     
  • Pull drm updates from Dave Airlie:
    "This is the main drm pull request for 4.5. I don't think I've missed
    anything too major, I'm mostly back at work now but I'll probably get
    some sleep in 5 years time.

    Summary:

    New drivers:
    - etnaviv:

    GPU driver for the 3D core on the Vivante core used in numerous
    ARM boards.

    Highlights:

    Core:
    - Atomic suspend/resume helpers
    - Move the headers to using userspace friendlier types.
    - Documentation updates
    - Lots of struct_mutex removal.
    - Bunch of DP MST fixes from AMD.

    Panel:
    - More DSI helpers
    - Support for some new basic panels

    i915:
    - Basic Kabylake support
    - DP link training and detect code refactoring
    - fbc/psr fixes
    - FIFO underrun fixes
    - SDE interrupt handling fixes
    - dma-buf/fence support in pageflip path.
    - GPU side for MST audio support

    radeon/amdgpu:
    - Drop UMS support
    - GPUVM/Scheduler optimisations
    - Initial Powerplay support for Tonga/Fiji/CZ/ST
    - ACP audio prerequisites

    nouveau:
    - GK20a instmem improvements
    - PCIE link speed change support

    msm:
    - DSI support for msm8960/apq8064

    tegra:
    - Host1X support for Tegra210 SoC

    vc4:
    - 3D acceleration support

    armada:
    - Get rid of struct mutex

    tda998x:
    - Atomic modesetting support
    - TMDS clock limitations

    omapdrm:
    - Atomic modesetting support
    - improved TILER performance

    rockchip:
    - RK3036 VOP support
    - Atomic modesetting support
    - Synopsys DW MIPI DSI support

    exynos:
    - Runtime PM support
    - of_graph binding for DP panels
    - Cleanup of IPP code
    - Configurable plane support
    - Kernel panic fixes at release time"

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (711 commits)
    drm/fb_cma_helper: Remove implicit call to disable_unused_functions
    drm/amdgpu: add missing irq.h include
    drm/vmwgfx: Fix a width / pitch mismatch on framebuffer updates
    drm/vmwgfx: Fix an incorrect lock check
    drm: nouveau: fix nouveau_debugfs_init prototype
    drm/nouveau/pci: fix check in nvkm_pcie_set_link
    drm/amdgpu: validate duplicates first
    drm/amdgpu: move VM page tables to the LRU end on CS v2
    drm/ttm: add ttm_bo_move_to_lru_tail function v2
    drm/ttm: fix adding foreign BOs to the swap LRU
    drm/ttm: fix adding foreign BOs to the LRU during init v2
    drm/radeon: use kobj_to_dev()
    drm/amdgpu: use kobj_to_dev()
    drm/amdgpu/cz: force vce clocks when sclks are forced
    drm/amdgpu/cz: force uvd clocks when sclks are forced
    drm/amdgpu/cz: add code to enable forcing VCE clocks
    drm/amdgpu/cz: add code to enable forcing UVD clocks
    drm/amdgpu: fix lost sync_to if scheduler is enabled.
    drm/amd/powerplay: fix static checker warning for return meaningless value.
    drm/sysfs: use kobj_to_dev()
    ...

    Linus Torvalds
     
  • Since your main drm-next pull isn't out of the door yet I figured I might
    as well flush out drm-misc instead of delaying for 4.6. It's really just
    random stuff all over, biggest thing probably connector_mask tracking from
    Maarten.

    * tag 'topic/drm-misc-2016-01-17' of git://anongit.freedesktop.org/drm-intel: (24 commits)
    drm/fb_cma_helper: Remove implicit call to disable_unused_functions
    drm/sysfs: use kobj_to_dev()
    drm/i915: Init power domains early in driver load
    drm: Do not set connector->encoder in drivers
    apple-gmux: Add initial documentation
    drm: move MODULE_PARM_DESC to other file
    drm/edid: index CEA/HDMI mode tables using the VIC
    drm/atomic: Remove drm_atomic_connectors_for_crtc.
    drm/i915: Update connector_mask during readout, v2.
    drm: Remove opencoded drm_gem_object_release_handle()
    drm: Do not set outparam on error during GEM handle allocation
    drm/docs: more leftovers from the big vtable documentation pile
    drm/atomic-helper: Reject legacy flips on a disabled pipe
    drm/atomic: add connector mask to drm_crtc_state.
    drm/tegra: Use __drm_atomic_helper_reset_connector for subclassing connector state, v2.
    drm/atomic: Add __drm_atomic_helper_connector_reset, v2.
    drm/i915: Set connector_state->connector using the helper.
    drm: Use a normal idr allocation for the obj->name
    drm: Only bump object-reference count when adding first handle
    drm: Balance error path for GEM handle allocation
    ...

    Dave Airlie
     
  • Merge second patch-bomb from Andrew Morton:

    - more MM stuff:

    - Kirill's page-flags rework

    - Kirill's now-allegedly-fixed THP rework

    - MADV_FREE implementation

    - DAX feature work (msync/fsync). This isn't quite complete but DAX
    is new and it's good enough and the guys have a handle on what
    needs to be done - I expect this to be wrapped in the next week or
    two.

    - some vsprintf maintenance work

    - various other misc bits

    * emailed patches from Andrew Morton : (145 commits)
    printk: change recursion_bug type to bool
    lib/vsprintf: factor out %pN[F] handler as netdev_bits()
    lib/vsprintf: refactor duplicate code to special_hex_number()
    printk-formats.txt: remove unimplemented %pT
    printk: help pr_debug and pr_devel to optimize out arguments
    lib/test_printf.c: test dentry printing
    lib/test_printf.c: add test for large bitmaps
    lib/test_printf.c: account for kvasprintf tests
    lib/test_printf.c: add a few number() tests
    lib/test_printf.c: test precision quirks
    lib/test_printf.c: check for out-of-bound writes
    lib/test_printf.c: don't BUG
    lib/kasprintf.c: add sanity check to kvasprintf
    lib/vsprintf.c: warn about too large precisions and field widths
    lib/vsprintf.c: help gcc make number() smaller
    lib/vsprintf.c: expand field_width to 24 bits
    lib/vsprintf.c: eliminate potential race in string()
    lib/vsprintf.c: move string() below widen_string()
    lib/vsprintf.c: pull out padding code from dentry_name()
    printk: do cond_resched() between lines while outputting to consoles
    ...

    Linus Torvalds
     
  • Pull GPIO updates from Linus Walleij:
    "Here is the bulk of GPIO changes for v4.5.

    Notably there are big refactorings mostly by myself, aimed at getting
    the gpio_chip into a shape that makes me believe I can proceed to
    preserve state for a proper userspace ABI (character device) that has
    already been proposed once, but resulted in the feedback that I need
    to go back and restructure stuff. So I've been restructuring stuff.
    On the way I ran into brokenness (return code from the get_value()
    callback) and had to fix it. Also, refactored generic GPIO to be
    simpler.

    Some of that is still waiting to trickle down from the subsystems all
    over the kernel that provide random gpio_chips, I've touched every
    single GPIO driver in the kernel now, oh man I didn't know I was
    responsible for so much...

    Apart from that we're churning along as usual.

    I took some effort to test and retest so it should merge nicely and we
    shook out a couple of bugs in -next.

    Infrastructural changes:

    - In struct gpio_chip, rename the .dev node to .parent to better
    reflect the fact that this is not the GPIO struct device
    abstraction. We will add that soon so this would be totallt
    confusing.

    - It was noted that the driver .get_value() callbacks was sometimes
    reporting negative -ERR values to the gpiolib core, expecting them
    to be propagated to consumer gpiod_get_value() and gpio_get_value()
    calls. This was not happening, so as there was a mess of drivers
    returning negative errors and some returning "anything else than
    zero" to indicate that a line was active. As some would have bit
    31 set to indicate "line active" it clashed with negative error
    codes. This is fixed by the largeish series clamping values in all
    drivers with !!value to [0,1] and then augmenting the code to
    propagate error codes to consumers. (Includes some ACKed patches
    in other subsystems.)

    - Add a void *data pointer to struct gpio_chip. The container_of()
    design pattern is indeed very nice, but we want to reform the
    struct gpio_chip to be a non-volative, stateless business, and keep
    states internal to the gpiolib to be able to hold on to the state
    when adding a proper userspace ABI (character device) further down
    the road. To achieve this, drivers need a handle at the internal
    state that is not dependent on their struct gpio_chip() so we add
    gpiochip_add_data() and gpiochip_get_data() following the pattern
    of many other subsystems. All the "use gpiochip data pointer"
    patches transforms drivers to this scheme.

    - The Generic GPIO chip header has been merged into the general
    header, and the custom header for that
    removed. Instead of having a separate mm_gpio_chip struct for
    these generic drivers, merge that into struct gpio_chip,
    simplifying the code and removing the need for separate and
    confusing includes.

    Misc improvements:

    - Stabilize the way GPIOs are looked up from the ACPI legacy
    specification.

    - Incremental driver features for PXA, PCA953X, Lantiq (patches from
    the OpenWRT community), RCAR, Zynq, PL061, 104-idi-48

    New drivers:

    - Add a GPIO chip to the ALSA SoC AC97 driver.

    - Add a new Broadcom NSP SoC driver (this lands in the pinctrl dir,
    but the branch is merged here too to account for infrastructural
    changes).

    - The sx150x driver now supports the sx1502"

    * tag 'gpio-v4.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (220 commits)
    gpio: generic: make bgpio_pdata always visible
    gpiolib: fix chip order in gpio list
    gpio: mpc8xxx: Do not use gpiochip_get_data() in mpc8xxx_gpio_save_regs()
    gpio: mm-lantiq: Do not use gpiochip_get_data() in ltq_mm_save_regs()
    gpio: brcmstb: Allow building driver for BMIPS_GENERIC
    gpio: brcmstb: Set endian flags for big-endian MIPS
    gpio: moxart: fix build regression
    gpio: xilinx: Do not use gpiochip_get_data() in xgpio_save_regs()
    leds: pca9532: use gpiochip data pointer
    leds: tca6507: use gpiochip data pointer
    hid: cp2112: use gpiochip data pointer
    bcma: gpio: use gpiochip data pointer
    avr32: gpio: use gpiochip data pointer
    video: fbdev: via: use gpiochip data pointer
    gpio: pch: Optimize pch_gpio_get()
    Revert "pinctrl: lantiq: Implement gpio_chip.to_irq"
    pinctrl: nsp-gpio: use gpiochip data pointer
    pinctrl: vt8500-wmt: use gpiochip data pointer
    pinctrl: exynos5440: use gpiochip data pointer
    pinctrl: at91-pio4: use gpiochip data pointer
    ...

    Linus Torvalds
     
  • Pull watchdog updates from Wim Van Sebroeck:
    "This adds following items:

    - watchdog restart handler support
    - watchdog reboot notifier support
    - watchdog sysfs attributes
    - support for the following new devices: AMD Mullins platform, AMD
    Carrizo platform, meson8b SoC, CSRatlas7, TS-4800, Alphascale
    asm9260-wdt, Zodiac, Sigma Designs SMP86xx/SMP87xx
    - Changes in refcounting for the watchdog core
    - watchdog core improvements
    - and small fixes"

    * git://www.linux-watchdog.org/linux-watchdog: (60 commits)
    watchdog: asm9260: remove __init and __exit annotations
    watchdog: Drop pointer to watchdog device from struct watchdog_device
    watchdog: ziirave: Use watchdog infrastructure to create sysfs attributes
    watchdog: Add support for creating driver specific sysfs attributes
    watchdog: kill unref/ref ops
    watchdog: stmp3xxx: Remove unused variables
    watchdog: add MT7621 watchdog support
    hwmon: (sch56xx) Drop watchdog driver data reference count callbacks
    watchdog: da9055_wdt: Drop reference counting
    watchdog: da9052_wdt: Drop reference counting
    watchdog: Separate and maintain variables based on variable lifetime
    watchdog: diag288: Stop re-using watchdog core internal flags
    watchdog: Create watchdog device in watchdog_dev.c
    watchdog: qcom-wdt: Do not set 'dev' in struct watchdog_device
    watchdog: mena21: Do not use device pointer from struct watchdog_device
    watchdog: gpio: Do not use device pointer from struct watchdog_device
    watchdog: tangox: Print info message using pointer to platform device
    watchdog: bcm2835_wdt: Drop log message if watchdog is stopped
    devicetree: watchdog: add binding for Sigma Designs SMP8642 watchdog
    watchdog: add support for Sigma Designs SMP86xx/SMP87xx
    ...

    Linus Torvalds
     
  • Pull sound updates from Takashi Iwai:
    "We've had quite busy weeks in this cycle. Looking at ALSA core, the
    significant changes are a few fixes wrt timer and sequencer ioctls
    that have been revealed by fuzzer recently. Other than that, ASoC
    core got a few updates about DAI link handling, but these are rather
    straightforward refactoring.

    In drivers scene, ASoC received quite lots of new drivers in addition
    to bunch of updates for still ongoing Intel Skylake support and
    topology API. HD-audio gained a new HDMI/DP hotplug notification via
    component. FireWire got a pile of code refactoring/updates with
    SCS.1x driver integration.

    More highlights are shown below.

    [ NOTE: this contains also many commits for DRM. This is due to the
    pull of drm stable branch into sound tree, as the base of i915 audio
    component work for HD-audio. The highlights below don't contain
    these DRM changes, as these are supposed to be pulled via drm tree
    in anyway sooner or later. ]

    Core:
    - Handful fixes to harden ALSA timer and sequencer ioctls against
    races reported by syzkaller fuzzer
    - Irq description string can be unique to each card; only for
    HD-audio for now

    ASoC:
    - Conversion of the array of DAI links to a list for supporting
    dynamically adding and removing DAI links
    - Topology API enhancements to make everything more component based
    and being able to specify PCM links via topology
    - Some more fixes for the topology code, though it is still not final
    and ready for enabling in production; we really need to get to the
    point where that can be done
    - A pile of changes for Intel SkyLake drivers which hopefully deliver
    some useful initial functionality for systems with this chipset,
    though there is more work still to come
    - Lots of new features and cleanups for the Renesas drivers
    - ANC support for WM5110
    - New drivers: Imagination Technologies IPs, Atmel class D speaker,
    Cirrus CS47L24 and WM1831, Dialog DA7128, Realtek RT5659 and
    RT56156, Rockchip RK3036, TI PC3168A, and AMD ACP
    - Rename PCM1792a driver to be generic pcm179x

    HD-Audio:
    - Use audio component for i915 HDMI/DP hotplug handling
    - On-demand binding with i915 driver
    - bdl_pos_adj parameter adjustment for Baytrail controllers
    - Enable power_save_node for CX20722; this shouldn't lead to
    regression, hopefully
    - Kabylake HDMI/DP codec support
    - Quirks for Lenovo E50-80, Dell Latitude E-series, and other Dell
    machines
    - A few code refactoring

    FireWire:
    - Lots of code cleanup and refactoring
    - Integrate the support of SCS.1x devices into snd-oxfw driver;
    snd-scs1x driver is obsoleted

    USB-audio:
    - Fix possible NULL dereference at disconnection
    - A regression fix for Native Instruments devices

    Misc:
    - A few code cleanups of fm801 driver"

    * tag 'sound-4.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (722 commits)
    ALSA: timer: Code cleanup
    ALSA: timer: Harden slave timer list handling
    ALSA: hda - Add fixup for Dell Latitidue E6540
    ALSA: timer: Fix race among timer ioctls
    ALSA: hda - add codec support for Kabylake display audio codec
    ALSA: timer: Fix double unlink of active_list
    ALSA: usb-audio: Fix mixer ctl regression of Native Instrument devices
    ALSA: hda - fix the headset mic detection problem for a Dell laptop
    ALSA: hda - Fix white noise on Dell Latitude E5550
    ALSA: hda_intel: add card number to irq description
    ALSA: seq: Fix race at timer setup and close
    ALSA: seq: Fix missing NULL check at remove_events ioctl
    ALSA: usb-audio: Avoid calling usb_autopm_put_interface() at disconnect
    ASoC: hdac_hdmi: remove unused hdac_hdmi_query_pin_connlist
    ASoC: AMD: Add missing include file
    ALSA: hda - Fixup inverted internal mic for Lenovo E50-80
    ALSA: usb: Add native DSD support for Oppo HA-1
    ASoC: Make aux_dev more like a generic component
    ASoC: bcm2835: cleanup includes by ordering them alphabetically
    ASoC: AMD: Manage ACP 2.x SRAM banks power
    ...

    Linus Torvalds
     
  • Pull documentation updates from Jon Corbet:
    "A relatively boring cycle in the docs tree. There's a few kernel-doc
    fixes and various document tweaks.

    One patch reaches out of the documentation subtree to fix a comment in
    init/do_mounts_rd.c. There didn't seem to be anybody more appropriate
    to take that one, so I accepted it"

    * tag 'docs-4.5' of git://git.lwn.net/linux: (29 commits)
    thermal: add description for integral_cutoff unit
    Documentation: update libhugetlbfs site url
    Documentation: Explain pci=conf1,conf2 more verbosely
    DMA-API: fix confusing sentence in Documentation/DMA-API.txt
    Documentation: translations: update linux cross reference link
    Documentation: fix typo in CodingStyle
    init, Documentation: Remove ramdisk_blocksize mentions
    Documentation-getdelays: Apply a recommendation from "checkpatch.pl" in main()
    Documentation: HOWTO: update versions from 3.x to 4.x
    Documentation: remove outdated references from translations
    Doc: treewide: Fix grammar "a" to "an"
    Documentation: cpu-hotplug: Fix sysfs mount instructions
    can-doc: Add hint about getting timestamps
    Fix CFQ I/O scheduler parameter name in documentation
    Documentation: arm: remove dead links from Marvell Berlin docs
    Documentation: HOWTO: update code cross reference link
    Doc: Docbook/iio: Fix typo in iio.tmpl
    DocBook: make index.html generation less verbose by default
    DocBook: Cleanup: remove an unused $(call) line
    DocBook: Add a help message for DOCBOOKS env var
    ...

    Linus Torvalds
     

17 Jan, 2016

1 commit

  • %pT for task->comm has been proposed (several times, I think), but is
    not actually implemented. Remove it from printk-formats.txt and add it
    back if/when it gets implemented.

    Signed-off-by: Rasmus Villemoes
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     

16 Jan, 2016

9 commits

  • Pull clk framework updates from Michael Turquette:
    "The clk framework and driver changes for 4.5 look pretty typical. The
    bulk of the changes are to clk controller drivers, though some
    improvements to the core and some re-usable blocks/templates also
    received some love.

    In this past cycle the clk maintainers developed a good workflow for
    handling the common case of patch submissions containing a new
    drivers, new shared Device Tree header and a new Device Tree binding
    description. This requires coordination with the Device Tree
    maintainers and with the architecture maintainers (typically the
    arm-soc tree in our case).

    This explains the increase in changes to include/dt-bindings/... and
    to Documentation/devicetree/bindings/clock/... coming from the clk
    tree. The same commits can be expected to come through those trees on
    occasion, through the use of shared, immutable branches"

    * tag 'clk-for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (125 commits)
    clk: remove duplicated COMMON_CLK_NXP record from clk/Kconfig
    clk: fix clk-gpio.c with optional clock= DT property
    clk: rockchip: fix section mismatches with new child-clocks
    clk: gpio: handle error codes for of_clk_get_parent_count()
    clk: gpio: fix memory leak
    clk: shmobile: r8a7795: Add SATA0 clock
    clk: bcm2835: Add PWM clock support
    clk: bcm2835: Support for clock parent selection
    clk: bcm2835: add a round up ability to the clock divisor
    clk: lpc32xx: add common clock framework driver
    clk: lpc18xx: add NXP specific COMMON_CLK_NXP configuration symbol
    dt-bindings: clock: add NXP LPC32xx clock list for consumers
    dt-bindings: clock: add description of LPC32xx USB clock controller
    dt-bindings: clock: add description of LPC32xx clock controller
    clk: rockchip: rk3036: include downstream muxes into fractional dividers
    clk: add flag for clocks that need to be enabled on rate changes
    clk: rockchip: Allow the RK3288 SPDIF clocks to change their parent
    clk: rockchip: include downstream muxes into fractional dividers
    clk: rockchip: handle mux dependency of fractional dividers
    clk: bcm2835: Add a driver for the auxiliary peripheral clock gates.
    ...

    Linus Torvalds
     
  • The patch updates Documentation/vm/transhuge.txt to reflect changes in
    THP design.

    Signed-off-by: Kirill A. Shutemov
    Acked-by: Jerome Marchand
    Cc: Sasha Levin
    Cc: Aneesh Kumar K.V
    Cc: Andrea Arcangeli
    Cc: Hugh Dickins
    Cc: Dave Hansen
    Cc: Mel Gorman
    Cc: Rik van Riel
    Cc: Naoya Horiguchi
    Cc: Steve Capper
    Cc: Johannes Weiner
    Cc: Michal Hocko
    Cc: Christoph Lameter
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • With new refcounting we don't need to mark PMDs splitting. Let's drop
    code to handle this.

    Signed-off-by: Kirill A. Shutemov
    Tested-by: Sasha Levin
    Tested-by: Aneesh Kumar K.V
    Acked-by: Vlastimil Babka
    Acked-by: Jerome Marchand
    Cc: Andrea Arcangeli
    Cc: Hugh Dickins
    Cc: Dave Hansen
    Cc: Mel Gorman
    Cc: Rik van Riel
    Cc: Naoya Horiguchi
    Cc: Steve Capper
    Cc: Johannes Weiner
    Cc: Michal Hocko
    Cc: Christoph Lameter
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kirill A. Shutemov
     
  • Pull networking fixes from David Miller:
    "A quick set of bug fixes after there initial networking merge:

    1) Netlink multicast group storage allocator only was tested with
    nr_groups equal to 1, make it work for other values too. From
    Matti Vaittinen.

    2) Check build_skb() return value in macb and hip04_eth drivers, from
    Weidong Wang.

    3) Don't leak x25_asy on x25_asy_open() failure.

    4) More DMA map/unmap fixes in 3c59x from Neil Horman.

    5) Don't clobber IP skb control block during GSO segmentation, from
    Konstantin Khlebnikov.

    6) ECN helpers for ipv6 don't fixup the checksum, from Eric Dumazet.

    7) Fix SKB segment utilization estimation in xen-netback, from David
    Vrabel.

    8) Fix lockdep splat in bridge addrlist handling, from Nikolay
    Aleksandrov"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (26 commits)
    bgmac: Fix reversed test of build_skb() return value.
    bridge: fix lockdep addr_list_lock false positive splat
    net: smsc: Add support h8300
    xen-netback: free queues after freeing the net device
    xen-netback: delete NAPI instance when queue fails to initialize
    xen-netback: use skb to determine number of required guest Rx requests
    net: sctp: Move sequence start handling into sctp_transport_get_idx()
    ipv6: update skb->csum when CE mark is propagated
    net: phy: turn carrier off on phy attach
    net: macb: clear interrupts when disabling them
    sctp: support to lookup with ep+paddr in transport rhashtable
    net: hns: fixes no syscon error when init mdio
    dts: hisi: fixes no syscon fault when init mdio
    net: preserve IP control block during GSO segmentation
    fsl/fman: Delete one function call "put_device" in dtsec_config()
    hip04_eth: fix missing error handle for build_skb failed
    3c59x: fix another page map/single unmap imbalance
    3c59x: balance page maps and unmaps
    x25_asy: Free x25_asy on x25_asy_open() failure.
    mlxsw: fix SWITCHDEV_OBJ_ID_PORT_MDB
    ...

    Linus Torvalds
     
  • Pull powerpc updates from Michael Ellerman:
    "Core:
    - Ground work for the new Power9 MMU from Aneesh Kumar K.V
    - Optimise FP/VMX/VSX context switching from Anton Blanchard

    Misc:
    - Various cleanups from Krzysztof Kozlowski, John Ogness, Rashmica
    Gupta, Russell Currey, Gavin Shan, Daniel Axtens, Michael Neuling,
    Andrew Donnellan
    - Allow wrapper to work on non-english system from Laurent Vivier
    - Add rN aliases to the pt_regs_offset table from Rashmica Gupta
    - Fix module autoload for rackmeter & axonram drivers from Luis de
    Bethencourt
    - Include KVM guest test in all interrupt vectors from Paul Mackerras
    - Fix DSCR inheritance over fork() from Anton Blanchard
    - Make value-returning atomics & {cmp}xchg* & their atomic_ versions
    fully ordered from Boqun Feng
    - Print MSR TM bits in oops messages from Michael Neuling
    - Add TM signal return & invalid stack selftests from Michael Neuling
    - Limit EPOW reset event warnings from Vipin K Parashar
    - Remove the Cell QPACE code from Rashmica Gupta
    - Append linux_banner to exception information in xmon from Rashmica
    Gupta
    - Add selftest to check if VSRs are corrupted from Rashmica Gupta
    - Remove broken GregorianDay() from Daniel Axtens
    - Import Anton's context_switch2 benchmark into selftests from
    Michael Ellerman
    - Add selftest script to test HMI functionality from Daniel Axtens
    - Remove obsolete OPAL v2 support from Stewart Smith
    - Make enter_rtas() private from Michael Ellerman
    - PPR exception cleanups from Michael Ellerman
    - Add page soft dirty tracking from Laurent Dufour
    - Add support for Nvlink NPUs from Alistair Popple
    - Add support for kexec on 476fpe from Alistair Popple
    - Enable kernel CPU dlpar from sysfs from Nathan Fontenot
    - Copy only required pieces of the mm_context_t to the paca from
    Michael Neuling
    - Add a kmsg_dumper that flushes OPAL console output on panic from
    Russell Currey
    - Implement save_stack_trace_regs() to enable kprobe stack tracing
    from Steven Rostedt
    - Add HWCAP bits for Power9 from Michael Ellerman
    - Fix _PAGE_PTE breaking swapoff from Aneesh Kumar K.V
    - Fix _PAGE_SWP_SOFT_DIRTY breaking swapoff from Hugh Dickins
    - scripts/recordmcount.pl: support data in text section on powerpc
    from Ulrich Weigand
    - Handle R_PPC64_ENTRY relocations in modules from Ulrich Weigand

    cxl:
    - cxl: Fix possible idr warning when contexts are released from
    Vaibhav Jain
    - cxl: use correct operator when writing pcie config space values
    from Andrew Donnellan
    - cxl: Fix DSI misses when the context owning task exits from Vaibhav
    Jain
    - cxl: fix build for GCC 4.6.x from Brian Norris
    - cxl: use -Werror only with CONFIG_PPC_WERROR from Brian Norris
    - cxl: Enable PCI device ID for future IBM CXL adapter from Uma
    Krishnan

    Freescale:
    - Freescale updates from Scott: Highlights include moving QE code out
    of arch/powerpc (to be shared with arm), device tree updates, and
    minor fixes"

    * tag 'powerpc-4.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (149 commits)
    powerpc/module: Handle R_PPC64_ENTRY relocations
    scripts/recordmcount.pl: support data in text section on powerpc
    powerpc/powernv: Fix OPAL_CONSOLE_FLUSH prototype and usages
    powerpc/mm: fix _PAGE_SWP_SOFT_DIRTY breaking swapoff
    powerpc/mm: Fix _PAGE_PTE breaking swapoff
    cxl: Enable PCI device ID for future IBM CXL adapter
    cxl: use -Werror only with CONFIG_PPC_WERROR
    cxl: fix build for GCC 4.6.x
    powerpc: Add HWCAP bits for Power9
    powerpc/powernv: Reserve PE#0 on NPU
    powerpc/powernv: Change NPU PE# assignment
    powerpc/powernv: Fix update of NVLink DMA mask
    powerpc/powernv: Remove misleading comment in pci.c
    powerpc: Implement save_stack_trace_regs() to enable kprobe stack tracing
    powerpc: Fix build break due to paca mm_context_t changes
    cxl: Fix DSI misses when the context owning task exits
    MAINTAINERS: Update Scott Wood's e-mail address
    powerpc/powernv: Fix minor off-by-one error in opal_mce_check_early_recovery()
    powerpc: Fix style of self-test config prompts
    powerpc/powernv: Only delay opal_rtc_read() retry when necessary
    ...

    Linus Torvalds
     
  • Pull md updates from Neil Brown:
    "Mostly clustered-raid1 and raid5 journal updates. one Y2038 fix and
    other minor stuff.

    One patch removes me from the MAINTAINERS file and adds a record of my
    md maintainership to Credits"

    Many thanks to Neil, who has been around for a _looong_ time.

    * tag 'md/4.5' of git://neil.brown.name/md: (26 commits)
    md/raid: only permit hot-add of compatible integrity profiles
    Remove myself as MD Maintainer, and add to Credits.
    raid5-cache: handle journal hotadd in quiesce
    MD: add journal with array suspended
    md: set MD_HAS_JOURNAL in correct places
    md: Remove 'ready' field from mddev.
    md: remove unnecesary md_new_event_inintr
    raid5: allow r5l_io_unit allocations to fail
    raid5-cache: use a mempool for the metadata block
    raid5-cache: use a bio_set
    raid5-cache: add journal hot add/remove support
    drivers: md: use ktime_get_real_seconds()
    md: avoid warning for 32-bit sector_t
    raid5-cache: free meta_page earlier
    raid5-cache: simplify r5l_move_io_unit_list
    md: update comment for md_allow_write
    md-cluster: update comments for MD_CLUSTER_SEND_LOCKED_ALREADY
    md-cluster: Protect communication with mutexes
    md-cluster: Defer MD reloading to mddev->thread
    md-cluster: update the documentation
    ...

    Linus Torvalds
     
  • Pull regulator updates from Mark Brown:
    "Aside from a fix for a spurious warning (which caused more problems
    than it fixed in the fixing really) this is all driver updates,
    including new drivers for Dialog PV88060/90 and TI LM363x and TPS65086
    devices. The qcom_smd driver has had PM8916 and PMA8084 support
    added"

    * tag 'regulator-v4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (36 commits)
    regulator: core: remove some dead code
    regulator: core: use dev_to_rdev
    regulator: lp872x: Get rid of duplicate reference to DVS GPIO
    regulator: lp872x: Add missing of_match in regulators descriptions
    regulator: axp20x: Fix GPIO LDO enable value for AXP22x
    regulator: lp8788: constify regulator_ops structures
    regulator: wm8*: constify regulator_ops structures
    regulator: da9*: constify regulator_ops structures
    regulator: mt6311: Use REGCACHE_RBTREE
    regulator: tps65917/palmas: Add bypass ops for LDOs with bypass capability
    regulator: qcom-smd: Add support for PMA8084
    regulator: qcom-smd: Add PM8916 support
    soc: qcom: documentation: Update SMD/RPM Docs
    regulator: pv88090: logical vs bitwise AND typo
    regulator: pv88090: Fix irq leak
    regulator: pv88090: new regulator driver
    regulator: wm831x-ldo: Use platform_register/unregister_drivers()
    regulator: wm831x-dcdc: Use platform_register/unregister_drivers()
    regulator: lp8788-ldo: Use platform_register/unregister_drivers()
    regulator: core: Fix nested locking of supplies
    ...

    Linus Torvalds
     
  • Merge first patch-bomb from Andrew Morton:

    - A few hotfixes which missed 4.4 becasue I was asleep. cc'ed to
    -stable

    - A few misc fixes

    - OCFS2 updates

    - Part of MM. Including pretty large changes to page-flags handling
    and to thp management which have been buffered up for 2-3 cycles now.

    I have a lot of MM material this time.

    [ It turns out the THP part wasn't quite ready, so that got dropped from
    this series - Linus ]

    * emailed patches from Andrew Morton : (117 commits)
    zsmalloc: reorganize struct size_class to pack 4 bytes hole
    mm/zbud.c: use list_last_entry() instead of list_tail_entry()
    zram/zcomp: do not zero out zcomp private pages
    zram: pass gfp from zcomp frontend to backend
    zram: try vmalloc() after kmalloc()
    zram/zcomp: use GFP_NOIO to allocate streams
    mm: add tracepoint for scanning pages
    drivers/base/memory.c: fix kernel warning during memory hotplug on ppc64
    mm/page_isolation: use macro to judge the alignment
    mm: fix noisy sparse warning in LIBCFS_ALLOC_PRE()
    mm: rework virtual memory accounting
    include/linux/memblock.h: fix ordering of 'flags' argument in comments
    mm: move lru_to_page to mm_inline.h
    Documentation/filesystems: describe the shared memory usage/accounting
    memory-hotplug: don't BUG() in register_memory_resource()
    hugetlb: make mm and fs code explicitly non-modular
    mm/swapfile.c: use list_for_each_entry_safe in free_swap_count_continuations
    mm: /proc/pid/clear_refs: no need to clear VM_SOFTDIRTY in clear_soft_dirty_pmd()
    mm: make sure isolate_lru_page() is never called for tail page
    vmstat: make vmstat_updater deferrable again and shut down on idle
    ...

    Linus Torvalds
     
  • When linux start up, we get the log below:
    "Hi-HNS_MDIO 803c0000.mdio: no syscon hisilicon,peri-c-subctrl
    mdio_bus mdio@803c0000: mdio sys ctl reg has not maped"

    The source code about the subctrl is dealt syscon, but dts doesn't.
    It cause such fault, so this patch adds the syscon info on dts files to
    fixes it.

    Signed-off-by: Kejian Yan
    Acked-by: Rob Herring
    Signed-off-by: David S. Miller

    yankejian
     

15 Jan, 2016

16 commits

  • Pull trivial tree updates from Jiri Kosina.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    floppy: make local variable non-static
    exynos: fixes an incorrect header guard
    dt-bindings: fixes some incorrect header guards
    cpufreq-dt: correct dead link in documentation
    cpufreq: ARM big LITTLE: correct dead link in documentation
    treewide: Fix typos in printk
    Documentation: filesystem: Fix typo in fs/eventfd.c
    fs/super.c: use && instead of & for warn_on condition
    Documentation: fix sysfs-ptp
    lib: scatterlist: fix Kconfig description

    Linus Torvalds
     
  • Pull livepatching updates from Jiri Kosina:

    - RO/NX attribute fixes for patch module relocations from Josh
    Poimboeuf. As part of this effort, module.c has been cleaned up as
    well and livepatching is piggy-backing on this cleanup. Rusty is OK
    with this whole lot going through livepatching tree.

    - symbol disambiguation support from Chris J Arges. That series is
    also

    Reviewed-by: Miroslav Benes

    but this came in only after I've alredy pushed out. Didn't want to
    rebase because of that, hence I am mentioning it here.

    - symbol lookup fix from Miroslav Benes

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch: Cleanup module page permission changes
    module: keep percpu symbols in module's symtab
    module: clean up RO/NX handling.
    module: use a structure to encapsulate layout.
    gcov: use within_module() helper.
    module: Use the same logic for setting and unsetting RO/NX
    livepatch: function,sympos scheme in livepatch sysfs directory
    livepatch: add sympos as disambiguator field to klp_reloc
    livepatch: add old_sympos as disambiguator field to klp_func

    Linus Torvalds
     
  • Pull vfs fix from Al Viro:
    "Don't put symlink bodies in pagecache into highmem"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    Make sure that highmem pages are not added to symlink page cache

    Linus Torvalds
     
  • The Shared Memory accounting support is present in Kernel since commit
    4b02108ac1b3 ("mm: oom analysis: add shmem vmstat") and in userland
    free(1) since 2014. This patch updates the Documentation to reflect
    this change.

    Signed-off-by: Rodrigo Freire
    Acked-by: Vlastimil Babka
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rodrigo Freire
     
  • Socket memory can be a significant share of overall memory consumed by
    common workloads. In order to provide reasonable resource isolation in
    the unified hierarchy, this type of memory needs to be included in the
    tracking/accounting of a cgroup under active memory resource control.

    Overhead is only incurred when a non-root control group is created AND
    the memory controller is instructed to track and account the memory
    footprint of that group. cgroup.memory=nosocket can be specified on the
    boot commandline to override any runtime configuration and forcibly
    exclude socket memory from active memory resource control.

    Signed-off-by: Johannes Weiner
    Acked-by: David S. Miller
    Reviewed-by: Vladimir Davydov
    Acked-by: Michal Hocko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • Address Space Layout Randomization (ASLR) provides a barrier to
    exploitation of user-space processes in the presence of security
    vulnerabilities by making it more difficult to find desired code/data
    which could help an attack. This is done by adding a random offset to
    the location of regions in the process address space, with a greater
    range of potential offset values corresponding to better protection/a
    larger search-space for brute force, but also to greater potential for
    fragmentation.

    The offset added to the mmap_base address, which provides the basis for
    the majority of the mappings for a process, is set once on process exec
    in arch_pick_mmap_layout() and is done via hard-coded per-arch values,
    which reflect, hopefully, the best compromise for all systems. The
    trade-off between increased entropy in the offset value generation and
    the corresponding increased variability in address space fragmentation
    is not absolute, however, and some platforms may tolerate higher amounts
    of entropy. This patch introduces both new Kconfig values and a sysctl
    interface which may be used to change the amount of entropy used for
    offset generation on a system.

    The direct motivation for this change was in response to the
    libstagefright vulnerabilities that affected Android, specifically to
    information provided by Google's project zero at:

    http://googleprojectzero.blogspot.com/2015/09/stagefrightened.html

    The attack presented therein, by Google's project zero, specifically
    targeted the limited randomness used to generate the offset added to the
    mmap_base address in order to craft a brute-force-based attack.
    Concretely, the attack was against the mediaserver process, which was
    limited to respawning every 5 seconds, on an arm device. The hard-coded
    8 bits used resulted in an average expected success rate of defeating
    the mmap ASLR after just over 10 minutes (128 tries at 5 seconds a
    piece). With this patch, and an accompanying increase in the entropy
    value to 16 bits, the same attack would take an average expected time of
    over 45 hours (32768 tries), which makes it both less feasible and more
    likely to be noticed.

    The introduced Kconfig and sysctl options are limited by per-arch
    minimum and maximum values, the minimum of which was chosen to match the
    current hard-coded value and the maximum of which was chosen so as to
    give the greatest flexibility without generating an invalid mmap_base
    address, generally a 3-4 bits less than the number of bits in the
    user-space accessible virtual address space.

    When decided whether or not to change the default value, a system
    developer should consider that mmap_base address could be placed
    anywhere up to 2^(value) bits away from the non-randomized location,
    which would introduce variable-sized areas above and below the mmap_base
    address such that the maximum vm_area_struct size may be reduced,
    preventing very large allocations.

    This patch (of 4):

    ASLR only uses as few as 8 bits to generate the random offset for the
    mmap base address on 32 bit architectures. This value was chosen to
    prevent a poorly chosen value from dividing the address space in such a
    way as to prevent large allocations. This may not be an issue on all
    platforms. Allow the specification of a minimum number of bits so that
    platforms desiring greater ASLR protection may determine where to place
    the trade-off.

    Signed-off-by: Daniel Cashman
    Cc: Russell King
    Acked-by: Kees Cook
    Cc: Ingo Molnar
    Cc: Jonathan Corbet
    Cc: Don Zickus
    Cc: Eric W. Biederman
    Cc: Heinrich Schuchardt
    Cc: Josh Poimboeuf
    Cc: Kirill A. Shutemov
    Cc: Naoya Horiguchi
    Cc: Andrea Arcangeli
    Cc: Mel Gorman
    Cc: Thomas Gleixner
    Cc: David Rientjes
    Cc: Mark Salyzyn
    Cc: Jeff Vander Stoep
    Cc: Nick Kralevich
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: "H. Peter Anvin"
    Cc: Hector Marco-Gisbert
    Cc: Borislav Petkov
    Cc: Ralf Baechle
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daniel Cashman
     
  • There are several shortcomings with the accounting of shared memory
    (SysV shm, shared anonymous mapping, mapping of a tmpfs file). The
    values in /proc//status and /statm don't allow to distinguish
    between shmem memory and a shared mapping to a regular file, even though
    theirs implication on memory usage are quite different: during reclaim,
    file mapping can be dropped or written back on disk, while shmem needs a
    place in swap.

    Also, to distinguish the memory occupied by anonymous and file mappings,
    one has to read the /proc/pid/statm file, which has a field for the file
    mappings (again, including shmem) and total memory occupied by these
    mappings (i.e. equivalent to VmRSS in the /status file. Getting
    the value for anonymous mappings only is thus not exactly user-friendly
    (the statm file is intended to be rather efficiently machine-readable).

    To address both of these shortcomings, this patch adds a breakdown of
    VmRSS in /proc//status via new fields RssAnon, RssFile and
    RssShmem, making use of the previous preparatory patch. These fields
    tell the user the memory occupied by private anonymous pages, mapped
    regular files and shmem, respectively. Other existing fields in /status
    and /statm files are left without change. The /statm file can be
    extended in the future, if there's a need for that.

    Example (part of) /proc/pid/status output including the new Rss* fields:

    VmPeak: 2001008 kB
    VmSize: 2001004 kB
    VmLck: 0 kB
    VmPin: 0 kB
    VmHWM: 5108 kB
    VmRSS: 5108 kB
    RssAnon: 92 kB
    RssFile: 1324 kB
    RssShmem: 3692 kB
    VmData: 192 kB
    VmStk: 136 kB
    VmExe: 4 kB
    VmLib: 1784 kB
    VmPTE: 3928 kB
    VmPMD: 20 kB
    VmSwap: 0 kB
    HugetlbPages: 0 kB

    [vbabka@suse.cz: forward-porting, tweak changelog]
    Signed-off-by: Jerome Marchand
    Signed-off-by: Vlastimil Babka
    Acked-by: Konstantin Khlebnikov
    Acked-by: Michal Hocko
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jerome Marchand
     
  • Currently, /proc/pid/smaps will always show "Swap: 0 kB" for
    shmem-backed mappings, even if the mapped portion does contain pages
    that were swapped out. This is because unlike private anonymous
    mappings, shmem does not change pte to swap entry, but pte_none when
    swapping the page out. In the smaps page walk, such page thus looks
    like it was never faulted in.

    This patch changes smaps_pte_entry() to determine the swap status for
    such pte_none entries for shmem mappings, similarly to how
    mincore_page() does it. Swapped out shmem pages are thus accounted for.
    For private mappings of tmpfs files that COWed some of the pages, swaped
    out status of the original shmem pages is naturally ignored. If some of
    the private copies was also swapped out, they are accounted via their
    page table swap entries, so the resulting reported swap usage is then a
    sum of both swapped out private copies, and swapped out shmem pages that
    were not COWed. No double accounting can thus happen.

    The accounting is arguably still not as precise as for private anonymous
    mappings, since now we will count also pages that the process in
    question never accessed, but another process populated them and then let
    them become swapped out. I believe it is still less confusing and
    subtle than not showing any swap usage by shmem mappings at all.
    Swapped out counter might of interest of users who would like to prevent
    from future swapins during performance critical operation and pre-fault
    them at their convenience. Especially for larger swapped out regions
    the cost of swapin is much higher than a fresh page allocation. So a
    differentiation between pte_none vs. swapped out is important for those
    usecases.

    One downside of this patch is that it makes /proc/pid/smaps more
    expensive for shmem mappings, as we consult the radix tree for each
    pte_none entry, so the overal complexity is O(n*log(n)). I have
    measured this on a process that creates a 2GB mapping and dirties single
    pages with a stride of 2MB, and time how long does it take to cat
    /proc/pid/smaps of this process 100 times.

    Private anonymous mapping:

    real 0m0.949s
    user 0m0.116s
    sys 0m0.348s

    Mapping of a /dev/shm/file:

    real 0m3.831s
    user 0m0.180s
    sys 0m3.212s

    The difference is rather substantial, so the next patch will reduce the
    cost for shared or read-only mappings.

    In a less controlled experiment, I've gathered pids of processes on my
    desktop that have either '/dev/shm/*' or 'SYSV*' in smaps. This
    included the Chrome browser and some KDE processes. Again, I've run cat
    /proc/pid/smaps on each 100 times.

    Before this patch:

    real 0m9.050s
    user 0m0.518s
    sys 0m8.066s

    After this patch:

    real 0m9.221s
    user 0m0.541s
    sys 0m8.187s

    This suggests low impact on average systems.

    Note that this patch doesn't attempt to adjust the SwapPss field for
    shmem mappings, which would need extra work to determine who else could
    have the pages mapped. Thus the value stays zero except for COWed
    swapped out pages in a shmem mapping, which are accounted as usual.

    Signed-off-by: Vlastimil Babka
    Acked-by: Konstantin Khlebnikov
    Acked-by: Jerome Marchand
    Acked-by: Michal Hocko
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     
  • This series is based on Jerome Marchand's [1] so let me quote the first
    paragraph from there:

    There are several shortcomings with the accounting of shared memory
    (sysV shm, shared anonymous mapping, mapping to a tmpfs file). The
    values in /proc//status and statm don't allow to distinguish
    between shmem memory and a shared mapping to a regular file, even though
    their implications on memory usage are quite different: at reclaim, file
    mapping can be dropped or written back on disk while shmem needs a place
    in swap. As for shmem pages that are swapped-out or in swap cache, they
    aren't accounted at all.

    The original motivation for myself is that a customer found (IMHO
    rightfully) confusing that e.g. top output for process swap usage is
    unreliable with respect to swapped out shmem pages, which are not
    accounted for.

    The fundamental difference between private anonymous and shmem pages is
    that the latter has PTE's converted to pte_none, and not swapents. As
    such, they are not accounted to the number of swapents visible e.g. in
    /proc/pid/status VmSwap row. It might be theoretically possible to use
    swapents when swapping out shmem (without extra cost, as one has to
    change all mappers anyway), and on swap in only convert the swapent for
    the faulting process, leaving swapents in other processes until they
    also fault (so again no extra cost). But I don't know how many
    assumptions this would break, and it would be too disruptive change for
    a relatively small benefit.

    Instead, my approach is to document the limitation of VmSwap, and
    provide means to determine the swap usage for shmem areas for those who
    are interested and willing to pay the price, using /proc/pid/smaps.
    Because outside of ipcs, I don't think it's possible to currently to
    determine the usage at all. The previous patchset [1] did introduce new
    shmem-specific fields into smaps output, and functions to determine the
    values. I take a simpler approach, noting that smaps output already has
    a "Swap: X kB" line, where currently X == 0 always for shmem areas. I
    think we can just consider this a bug and provide the proper value by
    consulting the radix tree, as e.g. mincore_page() does. In the patch
    changelog I explain why this is also not perfect (and cannot be without
    swapents), but still arguably much better than showing a 0.

    The last two patches are adapted from Jerome's patchset and provide a
    VmRSS breakdown to RssAnon, RssFile and RssShm in /proc/pid/status.
    Hugh noted that this is a welcome addition, and I agree that it might
    help e.g. debugging process memory usage at albeit non-zero, but still
    rather low cost of extra per-mm counter and some page flag checks.

    [1] http://lwn.net/Articles/611966/

    This patch (of 6):

    The documentation for /proc/pid/status does not mention that the value
    of VmSwap counts only swapped out anonymous private pages, and not
    swapped out pages of the underlying shmem objects (for shmem mappings).
    This is not obvious, so document this limitation.

    Signed-off-by: Vlastimil Babka
    Acked-by: Konstantin Khlebnikov
    Acked-by: Michal Hocko
    Acked-by: Jerome Marchand
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     
  • inode_nohighmem() is sufficient to make sure that page_get_link()
    won't try to allocate a highmem page. Moreover, it is sufficient
    to make sure that page_symlink/__page_symlink won't do the same
    thing. However, any filesystem that manually preseeds the symlink's
    page cache upon symlink(2) needs to make sure that the page it
    inserts there won't be a highmem one.

    Fortunately, only nfs and shmem have run afoul of that...

    Signed-off-by: Al Viro

    Al Viro
     
  • Add more explicitly description for unit of integral_cutoff which used
    by power allocator governor.

    Signed-off-by: Leo Yan
    Acked-by: Javi Merino
    Signed-off-by: Jonathan Corbet

    Leo Yan
     
  • The site for libhugetlbfs has moved from sourceforge to github. This
    commit updates the old url.

    Signed-off-by: SeongJae Park
    Acked-by: Mike Kravetz
    Signed-off-by: Jonathan Corbet

    SeongJae Park
     
  • People complained that setting the PCI config space access mechanism
    through "pci=conf1" or "pci=conf2" on the command line is not really
    documented. Yeah, can you blame them? Look at what we have now.

    So try to improve the situation a bit by explaining what those "conf1"
    and "conf2" things actually mean.

    See http://wiki.osdev.org/PCI for more info.

    Suggested-by: Eric Morton
    Signed-off-by: Borislav Petkov
    [jc: Added the above URL to the document too]
    Signed-off-by: Jonathan Corbet

    Borislav Petkov
     
  • Pull i2c updates from Wolfram Sang:
    "Quite some driver updates:
    - piix4 can now handle multiplexed adapters
    - brcmstb, xlr, eg20t, designware drivers support more SoCs
    - emev2 gained i2c slave support
    - img-scb and rcar got bigger refactoring to remove issues
    - lots of common driver updates

    i2c core changes:
    - new quirk flag when an adapter does not support clock stretching,
    so clients can be configured to avoid that if possible
    - added a helper function to retrieve timing parameters from firmware
    (with rcar being the first user)
    - "multi-master" DT binding added so drivers can adapt to this
    setting (like disabling PM to keep arbitration working)
    - RuntimePM for the logical adapter device is now always enabled by
    the core to ensure propagation from childs to the parent (the HW
    device)
    - new macro builtin_i2c_driver to reduce boilerplate"

    * 'i2c/for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (70 commits)
    i2c: create builtin_i2c_driver to avoid registration boilerplate
    i2c: imx: fix i2c resource leak with dma transfer
    dt-bindings: i2c: eeprom: add another EEPROM device
    dt-bindings: move I2C eeprom descriptions to the proper file
    i2c: designware: Do not require clock when SSCN and FFCN are provided
    DT: i2c: trivial-devices: Add Epson RX8010 and MPL3115
    i2c: s3c2410: remove superfluous runtime PM calls
    i2c: always enable RuntimePM for the adapter device
    i2c: designware: retry transfer on transient failure
    i2c: ibm_iic: rename i2c_timings struct due to clash with generic version
    i2c: designware: Add support for AMD Seattle I2C
    i2c: imx: Remove unneeded comments
    i2c: st: use to_platform_device()
    i2c: designware: use to_pci_dev()
    i2c: brcmstb: Adding support for CM and DSL SoCs
    i2c: mediatek: fix i2c multi transfer issue in high speed mode
    i2c: imx: improve code readability
    i2c: imx: Improve message log when DMA is not used
    i2c: imx: add runtime pm support to improve the performance
    i2c: imx: init bus recovery info before adding i2c adapter
    ...

    Linus Torvalds
     
  • Pull DeviceTree updates from Rob Herring:

    - Rework and export the changeset API to make it available to users
    other than DT overlays

    - ARM secure devices binding

    - OCTEON USB binding

    - Clean-up of various SRAM binding docs

    - Various other binding doc updates

    * tag 'devicetree-for-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (21 commits)
    drivers/of: Export OF changeset functions
    Fix documentation for adp1653 DT
    ARM: psci: Fix indentation in DT bindings
    of/platform: export of_default_bus_match_table
    of/unittest: Show broken behaviour in the platform bus
    of: fix declaration of of_io_request_and_map
    of/address: replace printk(KERN_ERR ...) with pr_err(...)
    of/irq: optimize device node matching loop in of_irq_init()
    dt-bindings: tda998x: Document the required 'port' node.
    net/macb: bindings doc: Merge cdns-emac to macb
    dt-bindings: Misc fix for the ATH79 DDR controllers
    dt-bindings: Misc fix for the ATH79 MISC interrupt controllers
    Documentation: dt: Add bindings for Secure-only devices
    dt-bindings: ARM: add arm,cortex-a72 compatible string
    ASoC: Atmel: ClassD: add GCK's parent clock in DT binding
    DT: add Olimex to vendor prefixes
    Documentation: fsl-quadspi: Add fsl,ls1021-qspi compatible string
    Documentation/devicetree: document OCTEON USB bindings
    usb: misc: usb3503: Describe better how to bind clock to the hub
    dt-bindings: Consolidate SRAM bindings from all vendors
    ...

    Linus Torvalds
     
  • Pull MFD updates from Lee Jones:
    "New Device Support:
    - Add support for s2mps15; sec-core
    - Add support for Lewisburg; lpc_ich
    - Add support for cs47l24 and wm1831; arizona

    New Functionality:
    - Allow user to select syscon register width; syscon

    Fix-ups:
    - Lots of Checkpatch fixes
    - Rename -pmic/-regulator; s2mps11
    - Build driver components into a single module; wm8994-*
    - Better handing of IRQ during suspend/resume; as3722
    - Constify things; da903x
    - Remove unused code; ab8500-core
    - Improve error handing; qcom_rpm
    - Simplify code: wm831x-otp, sta2x11-mfd
    - Improve locking; cros_ec_spi
    - Fix incorrect DT binding filename reference; arizona, palmas,
    snps-dwapb-gpio, wm8994

    Bug Fixes:
    - Fix broken SYSFS 'show ID' call; wm831x-otp
    - Protect reads from non-existent registers; qcom-spmi-pmic
    - Repair build warnings; as3722
    - Fix IRQ request ordering; arizona-irq
    - Ensure return value is boolean; ucb1x00-core, tps65010, tc6393xb,
    htc-egpio, dm355evm_msp, asic3"

    * tag 'mfd-for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (58 commits)
    mfd: davinci_voicecodec: Remove pointless 'out of memory' error message
    mfd: da9052-irq: Fix trivial 'space before comma' error
    mfd: da9052-i2c: Fix tabbing/whitespace issue
    mfd: da903x: Fix white space and split string issues
    mfd: cs5535-mfd: Add missing line spacing and make local array static
    mfd: cros_ec_spi: Repair comparison ordering issue
    mfd: cros_ec_i2c: Fix trivial 'tabs before spaces' whitespace issue.
    mfd: asic3: Fix a plethora of Checkpatch errors and warnings
    mfd: as3711: Repair OOM and 'line over 80 chars' formatting warnings
    mfd: arizona-i2c: Add blank line formatting after declaration
    mfd: arizona-core: msleep() is unreliable for anything pr_info and formatting issues
    mfd: ab8500-gpadc: Squash a whole bunch of Checkpatch warnings and one error
    mfd: ab8500-debugfs: Clean-up non-conforming commenting and print formatting
    mfd: ab8500-core: Fix many warnings reported by Checkpatch
    mfd: ab2100-otp: Remove pointless 'out of memory' error message
    mfd: ab3100-core.c: Fix multiple warnings reported by Checkpatch
    mfd: aat2870-core: Remove unnecessary 'out of memory' message
    mfd: 88pm860x-core: Fix commenting and declaration spacing
    ...

    Linus Torvalds
     

14 Jan, 2016

1 commit