08 Jun, 2016

1 commit

  • This patch allows to build the whole kernel with GCC plugins. It was ported from
    grsecurity/PaX. The infrastructure supports building out-of-tree modules and
    building in a separate directory. Cross-compilation is supported too.
    Currently the x86, arm, arm64 and uml architectures enable plugins.

    The directory of the gcc plugins is scripts/gcc-plugins. You can use a file or a directory
    there. The plugins compile with these options:
    * -fno-rtti: gcc is compiled with this option so the plugins must use it too
    * -fno-exceptions: this is inherited from gcc too
    * -fasynchronous-unwind-tables: this is inherited from gcc too
    * -ggdb: it is useful for debugging a plugin (better backtrace on internal
    errors)
    * -Wno-narrowing: to suppress warnings from gcc headers (ipa-utils.h)
    * -Wno-unused-variable: to suppress warnings from gcc headers (gcc_version
    variable, plugin-version.h)

    The infrastructure introduces a new Makefile target called gcc-plugins. It
    supports all gcc versions from 4.5 to 6.0. The scripts/gcc-plugin.sh script
    chooses the proper host compiler (gcc-4.7 can be built by either gcc or g++).
    This script also checks the availability of the included headers in
    scripts/gcc-plugins/gcc-common.h.

    The gcc-common.h header contains frequently included headers for GCC plugins
    and it has a compatibility layer for the supported gcc versions.

    The gcc-generate-*-pass.h headers automatically generate the registration
    structures for GIMPLE, SIMPLE_IPA, IPA and RTL passes.

    Note that 'make clean' keeps the *.so files (only the distclean or mrproper
    targets clean all) because they are needed for out-of-tree modules.

    Based on work created by the PaX Team.

    Signed-off-by: Emese Revfy
    Acked-by: Kees Cook
    Signed-off-by: Michal Marek

    Emese Revfy
     

28 May, 2016

1 commit

  • Pull second batch of KVM updates from Radim Krčmář:
    "General:

    - move kvm_stat tool from QEMU repo into tools/kvm/kvm_stat (kvm_stat
    had nothing to do with QEMU in the first place -- the tool only
    interprets debugfs)

    - expose per-vm statistics in debugfs and support them in kvm_stat
    (KVM always collected per-vm statistics, but they were summarised
    into global statistics)

    x86:

    - fix dynamic APICv (VMX was improperly configured and a guest could
    access host's APIC MSRs, CVE-2016-4440)

    - minor fixes

    ARM changes from Christoffer Dall:

    - new vgic reimplementation of our horribly broken legacy vgic
    implementation. The two implementations will live side-by-side
    (with the new being the configured default) for one kernel release
    and then we'll remove the legacy one.

    - fix for a non-critical issue with virtual abort injection to guests"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (70 commits)
    tools: kvm_stat: Add comments
    tools: kvm_stat: Introduce pid monitoring
    KVM: Create debugfs dir and stat files for each VM
    MAINTAINERS: Add kvm tools
    tools: kvm_stat: Powerpc related fixes
    tools: Add kvm_stat man page
    tools: Add kvm_stat vm monitor script
    kvm:vmx: more complete state update on APICv on/off
    KVM: SVM: Add more SVM_EXIT_REASONS
    KVM: Unify traced vector format
    svm: bitwise vs logical op typo
    KVM: arm/arm64: vgic-new: Synchronize changes to active state
    KVM: arm/arm64: vgic-new: enable build
    KVM: arm/arm64: vgic-new: implement mapped IRQ handling
    KVM: arm/arm64: vgic-new: Wire up irqfd injection
    KVM: arm/arm64: vgic-new: Add vgic_v2/v3_enable
    KVM: arm/arm64: vgic-new: vgic_init: implement map_resources
    KVM: arm/arm64: vgic-new: vgic_init: implement vgic_init
    KVM: arm/arm64: vgic-new: vgic_init: implement vgic_create
    KVM: arm/arm64: vgic-new: vgic_init: implement kvm_vgic_hyp_init
    ...

    Linus Torvalds
     

27 May, 2016

1 commit

  • Pull kbuild updates from Michal Marek:

    - new option CONFIG_TRIM_UNUSED_KSYMS which does a two-pass build and
    unexports symbols which are not used in the current config [Nicolas
    Pitre]

    - several kbuild rule cleanups [Masahiro Yamada]

    - warning option adjustments for gcov etc [Arnd Bergmann]

    - a few more small fixes

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (31 commits)
    kbuild: move -Wunused-const-variable to W=1 warning level
    kbuild: fix if_change and friends to consider argument order
    kbuild: fix adjust_autoksyms.sh for modules that need only one symbol
    kbuild: fix ksym_dep_filter when multiple EXPORT_SYMBOL() on the same line
    gcov: disable -Wmaybe-uninitialized warning
    gcov: disable tree-loop-im to reduce stack usage
    gcov: disable for COMPILE_TEST
    Kbuild: disable 'maybe-uninitialized' warning for CONFIG_PROFILE_ALL_BRANCHES
    Kbuild: change CC_OPTIMIZE_FOR_SIZE definition
    kbuild: forbid kernel directory to contain spaces and colons
    kbuild: adjust ksym_dep_filter for some cmd_* renames
    kbuild: Fix dependencies for final vmlinux link
    kbuild: better abstract vmlinux sequential prerequisites
    kbuild: fix call to adjust_autoksyms.sh when output directory specified
    kbuild: Get rid of KBUILD_STR
    kbuild: rename cmd_as_s_S to cmd_cpp_s_S
    kbuild: rename cmd_cc_i_c to cmd_cpp_i_c
    kbuild: drop redundant "PHONY += FORCE"
    kbuild: delete unnecessary "@:"
    kbuild: mark help target as PHONY
    ...

    Linus Torvalds
     

26 May, 2016

2 commits

  • Pull perf updates from Ingo Molnar:
    "Mostly tooling and PMU driver fixes, but also a number of late updates
    such as the reworking of the call-chain size limiting logic to make
    call-graph recording more robust, plus tooling side changes for the
    new 'backwards ring-buffer' extension to the perf ring-buffer"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
    perf record: Read from backward ring buffer
    perf record: Rename variable to make code clear
    perf record: Prevent reading invalid data in record__mmap_read
    perf evlist: Add API to pause/resume
    perf trace: Use the ptr->name beautifier as default for "filename" args
    perf trace: Use the fd->name beautifier as default for "fd" args
    perf report: Add srcline_from/to branch sort keys
    perf evsel: Record fd into perf_mmap
    perf evsel: Add overwrite attribute and check write_backward
    perf tools: Set buildid dir under symfs when --symfs is provided
    perf trace: Only auto set call-graph to "dwarf" when syscalls are being traced
    perf annotate: Sort list of recognised instructions
    perf annotate: Fix identification of ARM blt and bls instructions
    perf tools: Fix usage of max_stack sysctl
    perf callchain: Stop validating callchains by the max_stack sysctl
    perf trace: Fix exit_group() formatting
    perf top: Use machine->kptr_restrict_warned
    perf trace: Warn when trying to resolve kernel addresses with kptr_restrict=1
    perf machine: Do not bail out if not managing to read ref reloc symbol
    perf/x86/intel/p4: Trival indentation fix, remove space
    ...

    Linus Torvalds
     
  • …erry.reding/linux-pwm

    Pull pwm updates from Thierry Reding:
    "This set of changes introduces an atomic API to the PWM subsystem.
    This is influenced by the DRM atomic API that was introduced a while
    back, though it is obviously a lot simpler. The fundamental idea
    remains the same, though: drivers provide a single callback to
    implement the atomic configuration of a PWM channel.

    As a side-effect the PWM subsystem gains the ability for initial state
    retrieval, so that the logical state mirrors that of the hardware.
    Many use-cases don't care about this, but for others it is essential.

    These new features require changes in all users, which these patches
    take care of. The core is transitioned to use the atomic callback if
    available and provides a fallback mechanism for other drivers.

    Changes to transition users and drivers to the atomic API are
    postponed to v4.8"

    * tag 'pwm/for-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm: (30 commits)
    pwm: Add information about polarity, duty cycle and period to debugfs
    pwm: Switch to the atomic API
    pwm: Update documentation
    pwm: Add core infrastructure to allow atomic updates
    pwm: Add hardware readout infrastructure
    pwm: Move the enabled/disabled info into pwm_state
    pwm: Introduce the pwm_state concept
    pwm: Keep PWM state in sync with hardware state
    ARM: Explicitly apply PWM config extracted from pwm_args
    drm: i915: Explicitly apply PWM config extracted from pwm_args
    input: misc: pwm-beeper: Explicitly apply PWM config extracted from pwm_args
    input: misc: max8997: Explicitly apply PWM config extracted from pwm_args
    backlight: lm3630a: explicitly apply PWM config extracted from pwm_args
    backlight: lp855x: Explicitly apply PWM config extracted from pwm_args
    backlight: lp8788: Explicitly apply PWM config extracted from pwm_args
    backlight: pwm_bl: Use pwm_get_args() where appropriate
    fbdev: ssd1307fb: Use pwm_get_args() where appropriate
    regulator: pwm: Use pwm_get_args() where appropriate
    leds: pwm: Use pwm_get_args() where appropriate
    input: misc: max77693: Use pwm_get_args() where appropriate
    ...

    Linus Torvalds
     

25 May, 2016

5 commits

  • Pull ARM SoC fixes from Arnd Bergmann:
    "This is a first set of bug fixes on top of what was merged for 4.7.

    Two patches for lpc32xx address a harmless build warning that was just
    introduced, one patch for the mediatek soc driver fixes a warning for
    arm64, and the pxa changes are minor cleanups that should have been
    part of the original pull requests but that I forgot to apply to the
    cleanup-fixes branch earlier"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: lpc32xx: fix NR_IRQS confict
    ARM: lpc32xx: remove legacy irq controller driver
    soc: mtk-pmic-wrap: avoid integer overflow warning
    ARM: pxa: Remove CLK_IS_ROOT
    ARM: pxa: activate pinctrl for device-tree machines

    Linus Torvalds
     
  • Pull ARM SoC late DT updates from Arnd Bergmann:
    "This is a collection of a few late fixes and other misc stuff that had
    dependencies on things being merged from other trees.

    The Renesas R-Car power domain handling, and the Nvidia Tegra USB
    support both hand notable changes that required changing the DT
    binding in a way that only provides compatibility with old DT blobs on
    new kernels but not vice versa. As a consequence, the DT changes are
    based on top of the driver changes and are now in this branch.

    For NXP i.MX and Samsung Exynos, the changes in here depend on other
    changes that got merged through the clk maintainer tree"

    * tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (35 commits)
    ARM: dts: exynos: Add support of Bus frequency using VDD_INT for exynos5422-odroidxu3
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos542x SoC
    ARM: dts: exynos: Add NoC Probe dt node for Exynos542x SoC
    ARM: dts: exynos: Add support of bus frequency for exynos4412-trats/odroidu3
    ARM: dts: exynos: Expand the voltage range of buck1/3 regulator for exynos4412-odroidu3
    ARM: dts: exynos: Add support of bus frequency using VDD_INT for exynos3250-rinato
    ARM: dts: exynos: Add exynos4412-ppmu-common dtsi to delete duplicate PPMU nodes
    ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4210
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos4x12
    ARM: dts: exynos: Add bus nodes using VDD_MIF for Exynos4x12
    ARM: dts: exynos: Add bus nodes using VDD_INT for Exynos3250
    ARM: dts: exynos: Add DMC bus frequency for exynos3250-rinato/monk
    ARM: dts: exynos: Add DMC bus node for Exynos3250
    ARM: tegra: Enable XUSB on Nyan
    ARM: tegra: Enable XUSB on Jetson TK1
    ARM: tegra: Enable XUSB on Venice2
    ARM: tegra: Add Tegra124 XUSB controller
    ARM: tegra: Move Tegra124 to the new XUSB pad controller binding
    ARM: dts: r8a7794: Use SYSC "always-on" PM Domain
    ARM: dts: r8a7793: Use SYSC "always-on" PM Domain
    ...

    Linus Torvalds
     
  • With the change to sparse IRQs, the lpc32xx platform gets a warning about
    conflicting macros:

    In file included from arch/arm/mach-lpc32xx/irq.c:31:0:
    arch/arm/mach-lpc32xx/include/mach/irqs.h:115:0: warning: "NR_IRQS" redefined
    #define NR_IRQS 96
    arch/arm/include/asm/irq.h:9:0: note: this is the location of the previous definition
    #define NR_IRQS NR_IRQS_LEGACY

    One such instance was in the old irq driver that is now removed by
    the previous patch, but any other file including mach/irqs.h still
    has the issue. Since none of them use this constant, we can just
    remove the old definition.

    Signed-off-by: Arnd Bergmann
    Fixes: 8cb17b5ed017 ("irqchip: Add LPC32xx interrupt controller driver")

    Arnd Bergmann
     
  • New NXP LPC32xx irq chip driver is used instead of a legacy one.

    [this also fixes a harmless build warning about the NR_IRQS redefinition]

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Sylvain Lemieux
    Signed-off-by: Arnd Bergmann

    Vladimir Zapolskiy
     
  • Pull MTD updates from Brian Norris:
    "First cycle with Boris as NAND maintainer! Many (most) bullets stolen
    from him.

    Generic:
    - Migrated NAND LED trigger to be a generic MTD trigger

    NAND:
    - Introduction of the "ECC algorithm" concept, to avoid overloading
    the ECC mode field too much more
    - Replaced the nand_ecclayout infrastructure with something a little
    more flexible (finally!) and future proof
    - Rework of the OMAP GPMC and NAND drivers; the TI folks pulled some
    of this into their own tree as well
    - Prepare the sunxi NAND driver to receive DMA support
    - Handle bitflips in erased pages on GPMI revisions that do not
    support this in hardware.

    SPI NOR:
    - Start using the spi_flash_read() API for SPI drivers that support
    it (i.e., SPI drivers with special memory-mapped flash modes)

    And other small scattered improvments"

    * tag 'for-linus-20160523' of git://git.infradead.org/linux-mtd: (155 commits)
    mtd: spi-nor: support GigaDevice gd25lq64c
    mtd: nand_bch: fix spelling of "probably"
    mtd: brcmnand: respect ECC algorithm set by NAND subsystem
    gpmi-nand: Handle ECC Errors in erased pages
    Documentation: devicetree: deprecate "soft_bch" nand-ecc-mode value
    mtd: nand: add support for "nand-ecc-algo" DT property
    mtd: mtd: drop NAND_ECC_SOFT_BCH enum value
    mtd: drop support for NAND_ECC_SOFT_BCH as "soft_bch" mapping
    mtd: nand: read ECC algorithm from the new field
    mtd: nand: fsmc: validate ECC setup by checking algorithm directly
    mtd: nand: set ECC algorithm to Hamming on fallback
    staging: mt29f_spinand: set ECC algorithm explicitly
    CRIS v32: nand: set ECC algorithm explicitly
    mtd: nand: atmel: set ECC algorithm explicitly
    mtd: nand: davinci: set ECC algorithm explicitly
    mtd: nand: bf5xx: set ECC algorithm explicitly
    mtd: nand: omap2: Fix high memory dma prefetch transfer
    mtd: nand: omap2: Start dma request before enabling prefetch
    mtd: nandsim: add __init attribute
    mtd: nand: move of_get_nand_xxx() helpers into nand_base.c
    ...

    Linus Torvalds
     

24 May, 2016

5 commits

  • …it/kvmarm/kvmarm into kvm-next

    KVM/ARM Changes for v4.7 take 2

    "The GIC is dead; Long live the GIC"

    This set of changes include the new vgic, which is a reimplementation of
    our horribly broken legacy vgic implementation. The two implementations
    will live side-by-side (with the new being the configured default) for
    one kernel release and then we'll remove it.

    Also fixes a non-critical issue with virtual abort injection to guests.

    Paolo Bonzini
     
  • Merge yet more updates from Andrew Morton:

    - Oleg's "wait/ptrace: assume __WALL if the child is traced". It's a
    kernel-based workaround for existing userspace issues.

    - A few hotfixes

    - befs cleanups

    - nilfs2 updates

    - sys_wait() changes

    - kexec updates

    - kdump

    - scripts/gdb updates

    - the last of the MM queue

    - a few other misc things

    * emailed patches from Andrew Morton : (84 commits)
    kgdb: depends on VT
    drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable
    drm/radeon: make radeon_mn_get wait for mmap_sem killable
    drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable
    uprobes: wait for mmap_sem for write killable
    prctl: make PR_SET_THP_DISABLE wait for mmap_sem killable
    exec: make exec path waiting for mmap_sem killable
    aio: make aio_setup_ring killable
    coredump: make coredump_wait wait for mmap_sem for write killable
    vdso: make arch_setup_additional_pages wait for mmap_sem for write killable
    ipc, shm: make shmem attach/detach wait for mmap_sem killable
    mm, fork: make dup_mmap wait for mmap_sem for write killable
    mm, proc: make clear_refs killable
    mm: make vm_brk killable
    mm, elf: handle vm_brk error
    mm, aout: handle vm_brk failures
    mm: make vm_munmap killable
    mm: make vm_mmap killable
    mm: make mmap_sem for write waits killable for mm syscalls
    MAINTAINERS: add co-maintainer for scripts/gdb
    ...

    Linus Torvalds
     
  • most architectures are relying on mmap_sem for write in their
    arch_setup_additional_pages. If the waiting task gets killed by the oom
    killer it would block oom_reaper from asynchronous address space reclaim
    and reduce the chances of timely OOM resolving. Wait for the lock in
    the killable mode and return with EINTR if the task got killed while
    waiting.

    Signed-off-by: Michal Hocko
    Acked-by: Andy Lutomirski [x86 vdso]
    Acked-by: Vlastimil Babka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     
  • This option was replaced by PAGE_COUNTER which is selected by MEMCG.

    Signed-off-by: Konstantin Khlebnikov
    Acked-by: Arnd Bergmann
    Acked-by: Balbir Singh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     
  • Pull drm updates from Dave Airlie:
    "Here's the main drm pull request for 4.7, it's been a busy one, and
    I've been a bit more distracted in real life this merge window. Lots
    more ARM drivers, not sure if it'll ever end. I think I've at least
    one more coming the next merge window.

    But changes are all over the place, support for AMD Polaris GPUs is in
    here, some missing GM108 support for nouveau (found in some Lenovos),
    a bunch of MST and skylake fixes.

    I've also noticed a few fixes from Arnd in my inbox, that I'll try and
    get in asap, but I didn't think they should hold this up.

    New drivers:
    - Hisilicon kirin display driver
    - Mediatek MT8173 display driver
    - ARC PGU - bitstreamer on Synopsys ARC SDP boards
    - Allwinner A13 initial RGB output driver
    - Analogix driver for DisplayPort IP found in exynos and rockchip

    DRM Core:
    - UAPI headers fixes and C++ safety
    - DRM connector reference counting
    - DisplayID mode parsing for Dell 5K monitors
    - Removal of struct_mutex from drivers
    - Connector registration cleanups
    - MST robustness fixes
    - MAINTAINERS updates
    - Lockless GEM object freeing
    - Generic fbdev deferred IO support

    panel:
    - Support for a bunch of new panels

    i915:
    - VBT refactoring
    - PLL computation cleanups
    - DSI support for BXT
    - Color manager support
    - More atomic patches
    - GEM improvements
    - GuC fw loading fixes
    - DP detection fixes
    - SKL GPU hang fixes
    - Lots of BXT fixes

    radeon/amdgpu:
    - Initial Polaris support
    - GPUVM/Scheduler/Clock/Power improvements
    - ASYNC pageflip support
    - New mesa feature support

    nouveau:
    - GM108 support
    - Power sensor support improvements
    - GR init + ucode fixes.
    - Use GPU provided topology information

    vmwgfx:
    - Add host messaging support

    gma500:
    - Some cleanups and fixes

    atmel:
    - Bridge support
    - Async atomic commit support

    fsl-dcu:
    - Timing controller for LCD support
    - Pixel clock polarity support

    rcar-du:
    - Misc fixes

    exynos:
    - Pipeline clock support
    - Exynoss4533 SoC support
    - HW trigger mode support
    - export HDMI_PHY clock
    - DECON5433 fixes
    - Use generic prime functions
    - use DMA mapping APIs

    rockchip:
    - Lots of little fixes

    vc4:
    - Render node support
    - Gamma ramp support
    - DPI output support

    msm:
    - Mostly cleanups and fixes
    - Conversion to generic struct fence

    etnaviv:
    - Fix for prime buffer handling
    - Allow hangcheck to be coalesced with other wakeups

    tegra:
    - Gamme table size fix"

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (1050 commits)
    drm/edid: add displayid detailed 1 timings to the modelist. (v1.1)
    drm/edid: move displayid validation to it's own function.
    drm/displayid: Iterate over all DisplayID blocks
    drm/edid: move displayid tiled block parsing into separate function.
    drm: Nuke ->vblank_disable_allowed
    drm/vmwgfx: Report vmwgfx version to vmware.log
    drm/vmwgfx: Add VMWare host messaging capability
    drm/vmwgfx: Kill some lockdep warnings
    drm/nouveau/gr/gf100-: fix race condition in fecs/gpccs ucode
    drm/nouveau/core: recognise GM108 chipsets
    drm/nouveau/gr/gm107-: fix touching non-existent ppcs in attrib cb setup
    drm/nouveau/gr/gk104-: share implementation of ppc exception init
    drm/nouveau/gr/gk104-: move rop_active_fbps init to nonctx
    drm/nouveau/bios/pll: check BIT table version before trying to parse it
    drm/nouveau/bios/pll: prevent oops when limits table can't be parsed
    drm/nouveau/volt/gk104: round up in gk104_volt_set
    drm/nouveau/fb/gm200: setup mmu debug buffer registers at init()
    drm/nouveau/fb/gk20a,gm20b: setup mmu debug buffer registers at init()
    drm/nouveau/fb/gf100-: allocate mmu debug buffers
    drm/nouveau/fb: allow chipset-specific actions for oneinit()
    ...

    Linus Torvalds
     

21 May, 2016

6 commits

  • The binary GCD algorithm is based on the following facts:
    1. If a and b are all evens, then gcd(a,b) = 2 * gcd(a/2, b/2)
    2. If a is even and b is odd, then gcd(a,b) = gcd(a/2, b)
    3. If a and b are all odds, then gcd(a,b) = gcd((a-b)/2, b) = gcd((a+b)/2, b)

    Even on x86 machines with reasonable division hardware, the binary
    algorithm runs about 25% faster (80% the execution time) than the
    division-based Euclidian algorithm.

    On platforms like Alpha and ARMv6 where division is a function call to
    emulation code, it's even more significant.

    There are two variants of the code here, depending on whether a fast
    __ffs (find least significant set bit) instruction is available. This
    allows the unpredictable branches in the bit-at-a-time shifting loop to
    be eliminated.

    If fast __ffs is not available, the "even/odd" GCD variant is used.

    I use the following code to benchmark:

    #include
    #include
    #include
    #include
    #include
    #include

    #define swap(a, b) \
    do { \
    a ^= b; \
    b ^= a; \
    a ^= b; \
    } while (0)

    unsigned long gcd0(unsigned long a, unsigned long b)
    {
    unsigned long r;

    if (a < b) {
    swap(a, b);
    }

    if (b == 0)
    return a;

    while ((r = a % b) != 0) {
    a = b;
    b = r;
    }

    return b;
    }

    unsigned long gcd1(unsigned long a, unsigned long b)
    {
    unsigned long r = a | b;

    if (!a || !b)
    return r;

    b >>= __builtin_ctzl(b);

    for (;;) {
    a >>= __builtin_ctzl(a);
    if (a == b)
    return a << __builtin_ctzl(r);

    if (a < b)
    swap(a, b);
    a -= b;
    }
    }

    unsigned long gcd2(unsigned long a, unsigned long b)
    {
    unsigned long r = a | b;

    if (!a || !b)
    return r;

    r &= -r;

    while (!(b & r))
    b >>= 1;

    for (;;) {
    while (!(a & r))
    a >>= 1;
    if (a == b)
    return a;

    if (a < b)
    swap(a, b);
    a -= b;
    a >>= 1;
    if (a & r)
    a += b;
    a >>= 1;
    }
    }

    unsigned long gcd3(unsigned long a, unsigned long b)
    {
    unsigned long r = a | b;

    if (!a || !b)
    return r;

    b >>= __builtin_ctzl(b);
    if (b == 1)
    return r & -r;

    for (;;) {
    a >>= __builtin_ctzl(a);
    if (a == 1)
    return r & -r;
    if (a == b)
    return a << __builtin_ctzl(r);

    if (a < b)
    swap(a, b);
    a -= b;
    }
    }

    unsigned long gcd4(unsigned long a, unsigned long b)
    {
    unsigned long r = a | b;

    if (!a || !b)
    return r;

    r &= -r;

    while (!(b & r))
    b >>= 1;
    if (b == r)
    return r;

    for (;;) {
    while (!(a & r))
    a >>= 1;
    if (a == r)
    return r;
    if (a == b)
    return a;

    if (a < b)
    swap(a, b);
    a -= b;
    a >>= 1;
    if (a & r)
    a += b;
    a >>= 1;
    }
    }

    static unsigned long (*gcd_func[])(unsigned long a, unsigned long b) = {
    gcd0, gcd1, gcd2, gcd3, gcd4,
    };

    #define TEST_ENTRIES (sizeof(gcd_func) / sizeof(gcd_func[0]))

    #if defined(__x86_64__)

    #define rdtscll(val) do { \
    unsigned long __a,__d; \
    __asm__ __volatile__("rdtsc" : "=a" (__a), "=d" (__d)); \
    (val) = ((unsigned long long)__a) | (((unsigned long long)__d)<= start)
    ret = end - start;
    else
    ret = ~0ULL - start + 1 + end;

    *res = gcd_res;
    return ret;
    }

    #else

    static inline struct timespec read_time(void)
    {
    struct timespec time;
    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time);
    return time;
    }

    static inline unsigned long long diff_time(struct timespec start, struct timespec end)
    {
    struct timespec temp;

    if ((end.tv_nsec - start.tv_nsec) < 0) {
    temp.tv_sec = end.tv_sec - start.tv_sec - 1;
    temp.tv_nsec = 1000000000ULL + end.tv_nsec - start.tv_nsec;
    } else {
    temp.tv_sec = end.tv_sec - start.tv_sec;
    temp.tv_nsec = end.tv_nsec - start.tv_nsec;
    }

    return temp.tv_sec * 1000000000ULL + temp.tv_nsec;
    }

    static unsigned long long benchmark_gcd_func(unsigned long (*gcd)(unsigned long, unsigned long),
    unsigned long a, unsigned long b, unsigned long *res)
    {
    struct timespec start, end;
    unsigned long gcd_res;

    start = read_time();
    gcd_res = gcd(a, b);
    end = read_time();

    *res = gcd_res;
    return diff_time(start, end);
    }

    #endif

    static inline unsigned long get_rand()
    {
    if (sizeof(long) == 8)
    return (unsigned long)rand() << 32 | rand();
    else
    return rand();
    }

    int main(int argc, char **argv)
    {
    unsigned int seed = time(0);
    int loops = 100;
    int repeats = 1000;
    unsigned long (*res)[TEST_ENTRIES];
    unsigned long long elapsed[TEST_ENTRIES];
    int i, j, k;

    for (;;) {
    int opt = getopt(argc, argv, "n:r:s:");
    /* End condition always first */
    if (opt == -1)
    break;

    switch (opt) {
    case 'n':
    loops = atoi(optarg);
    break;
    case 'r':
    repeats = atoi(optarg);
    break;
    case 's':
    seed = strtoul(optarg, NULL, 10);
    break;
    default:
    /* You won't actually get here. */
    break;
    }
    }

    res = malloc(sizeof(unsigned long) * TEST_ENTRIES * loops);
    memset(elapsed, 0, sizeof(elapsed));

    srand(seed);
    for (j = 0; j < loops; j++) {
    unsigned long a = get_rand();
    /* Do we have args? */
    unsigned long b = argc > optind ? strtoul(argv[optind], NULL, 10) : get_rand();
    unsigned long long min_elapsed[TEST_ENTRIES];
    for (k = 0; k < repeats; k++) {
    for (i = 0; i < TEST_ENTRIES; i++) {
    unsigned long long tmp = benchmark_gcd_func(gcd_func[i], a, b, &res[j][i]);
    if (k == 0 || min_elapsed[i] > tmp)
    min_elapsed[i] = tmp;
    }
    }
    for (i = 0; i < TEST_ENTRIES; i++)
    elapsed[i] += min_elapsed[i];
    }

    for (i = 0; i < TEST_ENTRIES; i++)
    printf("gcd%d: elapsed %llu\n", i, elapsed[i]);

    k = 0;
    srand(seed);
    for (j = 0; j < loops; j++) {
    unsigned long a = get_rand();
    unsigned long b = argc > optind ? strtoul(argv[optind], NULL, 10) : get_rand();
    for (i = 1; i < TEST_ENTRIES; i++) {
    if (res[j][i] != res[j][0])
    break;
    }
    if (i < TEST_ENTRIES) {
    if (k == 0) {
    k = 1;
    fprintf(stderr, "Error:\n");
    }
    fprintf(stderr, "gcd(%lu, %lu): ", a, b);
    for (i = 0; i < TEST_ENTRIES; i++)
    fprintf(stderr, "%ld%s", res[j][i], i < TEST_ENTRIES - 1 ? ", " : "\n");
    }
    }

    if (k == 0)
    fprintf(stderr, "PASS\n");

    free(res);

    return 0;
    }

    Compiled with "-O2", on "VirtualBox 4.4.0-22-generic #38-Ubuntu x86_64" got:

    zhaoxiuzeng@zhaoxiuzeng-VirtualBox:~/develop$ ./gcd -r 500000 -n 10
    gcd0: elapsed 10174
    gcd1: elapsed 2120
    gcd2: elapsed 2902
    gcd3: elapsed 2039
    gcd4: elapsed 2812
    PASS
    zhaoxiuzeng@zhaoxiuzeng-VirtualBox:~/develop$ ./gcd -r 500000 -n 10
    gcd0: elapsed 9309
    gcd1: elapsed 2280
    gcd2: elapsed 2822
    gcd3: elapsed 2217
    gcd4: elapsed 2710
    PASS
    zhaoxiuzeng@zhaoxiuzeng-VirtualBox:~/develop$ ./gcd -r 500000 -n 10
    gcd0: elapsed 9589
    gcd1: elapsed 2098
    gcd2: elapsed 2815
    gcd3: elapsed 2030
    gcd4: elapsed 2718
    PASS
    zhaoxiuzeng@zhaoxiuzeng-VirtualBox:~/develop$ ./gcd -r 500000 -n 10
    gcd0: elapsed 9914
    gcd1: elapsed 2309
    gcd2: elapsed 2779
    gcd3: elapsed 2228
    gcd4: elapsed 2709
    PASS

    [akpm@linux-foundation.org: avoid #defining a CONFIG_ variable]
    Signed-off-by: Zhaoxiu Zeng
    Signed-off-by: George Spelvin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zhaoxiu Zeng
     
  • printk() takes some locks and could not be used a safe way in NMI
    context.

    The chance of a deadlock is real especially when printing stacks from
    all CPUs. This particular problem has been addressed on x86 by the
    commit a9edc8809328 ("x86/nmi: Perform a safe NMI stack trace on all
    CPUs").

    The patchset brings two big advantages. First, it makes the NMI
    backtraces safe on all architectures for free. Second, it makes all NMI
    messages almost safe on all architectures (the temporary buffer is
    limited. We still should keep the number of messages in NMI context at
    minimum).

    Note that there already are several messages printed in NMI context:
    WARN_ON(in_nmi()), BUG_ON(in_nmi()), anything being printed out from MCE
    handlers. These are not easy to avoid.

    This patch reuses most of the code and makes it generic. It is useful
    for all messages and architectures that support NMI.

    The alternative printk_func is set when entering and is reseted when
    leaving NMI context. It queues IRQ work to copy the messages into the
    main ring buffer in a safe context.

    __printk_nmi_flush() copies all available messages and reset the buffer.
    Then we could use a simple cmpxchg operations to get synchronized with
    writers. There is also used a spinlock to get synchronized with other
    flushers.

    We do not longer use seq_buf because it depends on external lock. It
    would be hard to make all supported operations safe for a lockless use.
    It would be confusing and error prone to make only some operations safe.

    The code is put into separate printk/nmi.c as suggested by Steven
    Rostedt. It needs a per-CPU buffer and is compiled only on
    architectures that call nmi_enter(). This is achieved by the new
    HAVE_NMI Kconfig flag.

    The are MN10300 and Xtensa architectures. We need to clean up NMI
    handling there first. Let's do it separately.

    The patch is heavily based on the draft from Peter Zijlstra, see

    https://lkml.org/lkml/2015/6/10/327

    [arnd@arndb.de: printk-nmi: use %zu format string for size_t]
    [akpm@linux-foundation.org: min_t->min - all types are size_t here]
    Signed-off-by: Petr Mladek
    Suggested-by: Peter Zijlstra
    Suggested-by: Steven Rostedt
    Cc: Jan Kara
    Acked-by: Russell King [arm part]
    Cc: Daniel Thompson
    Cc: Jiri Kosina
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Martin Schwidefsky
    Cc: David Miller
    Cc: Daniel Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Petr Mladek
     
  • We need to call exit_thread from copy_process in a fail path. So make it
    accept task_struct as a parameter.

    [v2]
    * s390: exit_thread_runtime_instr doesn't make sense to be called for
    non-current tasks.
    * arm: fix the comment in vfp_thread_copy
    * change 'me' to 'tsk' for task_struct
    * now we can change only archs that actually have exit_thread

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Jiri Slaby
    Cc: "David S. Miller"
    Cc: "H. Peter Anvin"
    Cc: "James E.J. Bottomley"
    Cc: Aurelien Jacquiot
    Cc: Benjamin Herrenschmidt
    Cc: Catalin Marinas
    Cc: Chen Liqin
    Cc: Chris Metcalf
    Cc: Chris Zankel
    Cc: David Howells
    Cc: Fenghua Yu
    Cc: Geert Uytterhoeven
    Cc: Guan Xuetao
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Heiko Carstens
    Cc: Helge Deller
    Cc: Ingo Molnar
    Cc: Ivan Kokshaysky
    Cc: James Hogan
    Cc: Jeff Dike
    Cc: Jesper Nilsson
    Cc: Jiri Slaby
    Cc: Jonas Bonn
    Cc: Koichi Yasutake
    Cc: Lennox Wu
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Martin Schwidefsky
    Cc: Matt Turner
    Cc: Max Filippov
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Mikael Starvik
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Ralf Baechle
    Cc: Rich Felker
    Cc: Richard Henderson
    Cc: Richard Kuo
    Cc: Richard Weinberger
    Cc: Russell King
    Cc: Steven Miao
    Cc: Thomas Gleixner
    Cc: Tony Luck
    Cc: Vineet Gupta
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Define HAVE_EXIT_THREAD for archs which want to do something in
    exit_thread. For others, let's define exit_thread as an empty inline.

    This is a cleanup before we change the prototype of exit_thread to
    accept a task parameter.

    [akpm@linux-foundation.org: fix mips]
    Signed-off-by: Jiri Slaby
    Cc: "David S. Miller"
    Cc: "H. Peter Anvin"
    Cc: "James E.J. Bottomley"
    Cc: Aurelien Jacquiot
    Cc: Benjamin Herrenschmidt
    Cc: Catalin Marinas
    Cc: Chen Liqin
    Cc: Chris Metcalf
    Cc: Chris Zankel
    Cc: David Howells
    Cc: Fenghua Yu
    Cc: Geert Uytterhoeven
    Cc: Guan Xuetao
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Heiko Carstens
    Cc: Helge Deller
    Cc: Ingo Molnar
    Cc: Ivan Kokshaysky
    Cc: James Hogan
    Cc: Jeff Dike
    Cc: Jesper Nilsson
    Cc: Jiri Slaby
    Cc: Jonas Bonn
    Cc: Koichi Yasutake
    Cc: Lennox Wu
    Cc: Ley Foon Tan
    Cc: Mark Salter
    Cc: Martin Schwidefsky
    Cc: Matt Turner
    Cc: Max Filippov
    Cc: Michael Ellerman
    Cc: Michal Simek
    Cc: Mikael Starvik
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Ralf Baechle
    Cc: Rich Felker
    Cc: Richard Henderson
    Cc: Richard Kuo
    Cc: Richard Weinberger
    Cc: Russell King
    Cc: Steven Miao
    Cc: Thomas Gleixner
    Cc: Tony Luck
    Cc: Vineet Gupta
    Cc: Will Deacon
    Cc: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Merge "pxa changes for v4.7 cycle" from Robert Jarzmik:

    This is a minor cycle with :
    - cleanup fix from Stephen on clocks (CLK_ROOT deprecated)
    - pin control activation for device-tree platforms

    * tag 'pxa-for-4.7' of https://github.com/rjarzmik/linux:
    ARM: pxa: Remove CLK_IS_ROOT
    ARM: pxa: activate pinctrl for device-tree machines

    These should have been part of the original pull request but got
    accidentally dropped. Both changes in this branch can be considered
    bugfixes, so I'm putting them in the fixes branch now.

    Arnd Bergmann
     
  • Pull ARM updates from Russell King:
    "Changes included in this pull request:

    - revert pxa2xx-flash back to using ioremap_cached() and switch
    memremap() to use arch_memremap_wb()

    - remove pci=firmware command line argument handling

    - remove unnecessary arm_dma_set_mask() implementation, the generic
    implementation will do for ARM

    - removal of the ARM kallsyms "hack" to work around mode switching
    veneers and vectors located below PAGE_OFFSET

    - tidy up build system output a little

    - add L2 cache power management DT bindings

    - remove duplicated local_irq_disable() in reboot paths

    - handle AMBA primecell devices better at registration time with PM
    domains (needed for Samsung SoCs)

    - ARM specific preparation to support Keystone II kexec"

    * 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: 8567/1: cache-uniphier: activate ways for secondary CPUs
    ARM: 8570/2: Documentation: devicetree: Add PL310 PM bindings
    ARM: 8569/1: pl2x0: Add OF control of cache power management
    ARM: 8568/1: reboot: remove duplicated local_irq_disable()
    ARM: 8566/1: drivers: amba: properly handle devices with power domains
    ARM: provide arm_has_idmap_alias() helper
    ARM: kexec: remove 512MB restriction on kexec crashdump
    ARM: provide improved virt_to_idmap() functionality
    ARM: kexec: fix crashkernel= handling
    ARM: 8557/1: specify install, zinstall, and uinstall as PHONY targets
    ARM: 8562/1: suppress "include/generated/mach-types.h is up to date."
    ARM: 8553/1: kallsyms: remove --page-offset command line option
    ARM: 8552/1: kallsyms: remove special lower address limit for CONFIG_ARM
    ARM: 8555/1: kallsyms: ignore ARM mode switching veneers
    ARM: 8548/1: dma-mapping: remove arm_dma_set_mask()
    ARM: 8554/1: kernel: pci: remove pci=firmware command line parameter handling
    ARM: memremap: implement arch_memremap_wb()
    memremap: add arch specific hook for MEMREMAP_WB mappings
    mtd: pxa2xx-flash: switch back from memremap to ioremap_cached
    ARM: reintroduce ioremap_cached() for creating cached I/O mappings

    Linus Torvalds
     

20 May, 2016

13 commits

  • When modifying the active state of an interrupt via the MMIO interface,
    we should ensure that the write has the intended effect.

    If a guest sets an interrupt to active, but that interrupt is already
    flushed into a list register on a running VCPU, then that VCPU will
    write the active state back into the struct vgic_irq upon returning from
    the guest and syncing its state. This is a non-benign race, because the
    guest can observe that an interrupt is not active, and it can have a
    reasonable expectations that other VCPUs will not ack any IRQs, and then
    set the state to active, and expect it to stay that way. Currently we
    are not honoring this case.

    Thefore, change both the SACTIVE and CACTIVE mmio handlers to stop the
    world, change the irq state, potentially queue the irq if we're setting
    it to active, and then continue.

    We take this chance to slightly optimize these functions by not stopping
    the world when touching private interrupts where there is inherently no
    possible race.

    Signed-off-by: Christoffer Dall

    Christoffer Dall
     
  • Now that the new VGIC implementation has reached feature parity with
    the old one, add the new files to the build system and add a Kconfig
    option to switch between the two versions.
    We set the default to the new version to get maximum test coverage,
    in case people experience problems they can switch back to the old
    behaviour if needed.

    Signed-off-by: Andre Przywara
    Acked-by: Christoffer Dall

    Andre Przywara
     
  • For some rare corner cases in our VGIC emulation later we have to stop
    the guest to make sure the VGIC state is consistent.
    Provide the necessary framework to pause and resume a guest.

    Signed-off-by: Christoffer Dall
    Signed-off-by: Andre Przywara

    Christoffer Dall
     
  • Rename mmio_{read,write}_bus to kvm_mmio_{read,write}_bus and export
    them out of mmio.c.
    This will be needed later for the new VGIC implementation.

    Signed-off-by: Christoffer Dall
    Signed-off-by: Andre Przywara
    Acked-by: Marc Zyngier
    Reviewed-by: Andre Przywara

    Christoffer Dall
     
  • When the kernel was handling a guest MMIO read access internally, we
    need to copy the emulation result into the run->mmio structure in order
    for the kvm_handle_mmio_return() function to pick it up and inject the
    result back into the guest.

    Currently the only user of kvm_io_bus for ARM is the VGIC, which did
    this copying itself, so this was not causing issues so far.

    But with the upcoming new vgic implementation we need this done
    properly.

    Update the kvm_handle_mmio_return description and cleanup the code to
    only perform a single copying when needed.

    Code and commit message inspired by Andre Przywara.

    Reported-by: Andre Przywara
    Signed-off-by: Christoffer Dall
    Signed-off-by: Andre Przywara
    Reviewed-by: Marc Zyngier
    Reviewed-by: Andre Przywara

    Christoffer Dall
     
  • We are about to modify the VGIC to allocate all data structures
    dynamically and store mapped IRQ information on a per-IRQ struct, which
    is indeed allocated dynamically at init time.

    Therefore, we cannot record the mapped IRQ info from the timer at timer
    reset time like it's done now, because VCPU reset happens before timer
    init.

    A possible later time to do this is on the first run of a per VCPU, it
    just requires us to move the enable state to be a per-VCPU state and do
    the lookup of the physical IRQ number when we are about to run the VCPU.

    Signed-off-by: Christoffer Dall
    Signed-off-by: Andre Przywara

    Christoffer Dall
     
  • …ernel/git/acme/linux into perf/core

    Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:

    User visible changes:

    - Honour the kernel.perf_event_max_stack knob more precisely by not counting
    PERF_CONTEXT_{KERNEL,USER} when deciding when to stop adding entries to
    the perf_sample->ip_callchain[] array (Arnaldo Carvalho de Melo)

    - Fix identation of 'stalled-backend-cycles' in 'perf stat' (Namhyung Kim)

    - Update runtime using 'cpu-clock' event in 'perf stat' (Namhyung Kim)

    - Use 'cpu-clock' for cpu targets in 'perf stat' (Namhyung Kim)

    - Avoid fractional digits for integer scales in 'perf stat' (Andi Kleen)

    - Store vdso buildid unconditionally, as it appears in callchains and
    we're not checking those when creating the build-id table, so we
    end up not being able to resolve VDSO symbols when doing analysis
    on a different machine than the one where recording was done, possibly
    of a different arch even (arm -> x86_64) (He Kuang)

    Infrastructure changes:

    - Generalize max_stack sysctl handler, will be used for configuring
    multiple kernel knobs related to callchains (Arnaldo Carvalho de Melo)

    Cleanups:

    - Introduce DSO__NAME_KALLSYMS and DSO__NAME_KCORE, to stop using
    open coded strings (Masami Hiramatsu)

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • Merge updates from Andrew Morton:

    - fsnotify fix

    - poll() timeout fix

    - a few scripts/ tweaks

    - debugobjects updates

    - the (small) ocfs2 queue

    - Minor fixes to kernel/padata.c

    - Maybe half of the MM queue

    * emailed patches from Andrew Morton : (117 commits)
    mm, page_alloc: restore the original nodemask if the fast path allocation failed
    mm, page_alloc: uninline the bad page part of check_new_page()
    mm, page_alloc: don't duplicate code in free_pcp_prepare
    mm, page_alloc: defer debugging checks of pages allocated from the PCP
    mm, page_alloc: defer debugging checks of freed pages until a PCP drain
    cpuset: use static key better and convert to new API
    mm, page_alloc: inline pageblock lookup in page free fast paths
    mm, page_alloc: remove unnecessary variable from free_pcppages_bulk
    mm, page_alloc: pull out side effects from free_pages_check
    mm, page_alloc: un-inline the bad part of free_pages_check
    mm, page_alloc: check multiple page fields with a single branch
    mm, page_alloc: remove field from alloc_context
    mm, page_alloc: avoid looking up the first zone in a zonelist twice
    mm, page_alloc: shortcut watermark checks for order-0 pages
    mm, page_alloc: reduce cost of fair zone allocation policy retry
    mm, page_alloc: shorten the page allocator fast path
    mm, page_alloc: check once if a zone has isolated pageblocks
    mm, page_alloc: move __GFP_HARDWALL modifications out of the fastpath
    mm, page_alloc: simplify last cpupid reset
    mm, page_alloc: remove unnecessary initialisation from __alloc_pages_nodemask()
    ...

    Linus Torvalds
     
  • I've just discovered that the useful-sounding has_transparent_hugepage()
    is actually an architecture-dependent minefield: on some arches it only
    builds if CONFIG_TRANSPARENT_HUGEPAGE=y, on others it's also there when
    not, but on some of those (arm and arm64) it then gives the wrong
    answer; and on mips alone it's marked __init, which would crash if
    called later (but so far it has not been called later).

    Straighten this out: make it available to all configs, with a sensible
    default in asm-generic/pgtable.h, removing its definitions from those
    arches (arc, arm, arm64, sparc, tile) which are served by the default,
    adding #define has_transparent_hugepage has_transparent_hugepage to
    those (mips, powerpc, s390, x86) which need to override the default at
    runtime, and removing the __init from mips (but maybe that kind of code
    should be avoided after init: set a static variable the first time it's
    called).

    Signed-off-by: Hugh Dickins
    Cc: "Kirill A. Shutemov"
    Cc: Andrea Arcangeli
    Cc: Andres Lagar-Cavilla
    Cc: Yang Shi
    Cc: Ning Qu
    Cc: Mel Gorman
    Cc: Konstantin Khlebnikov
    Acked-by: David S. Miller
    Acked-by: Vineet Gupta [arch/arc]
    Acked-by: Gerald Schaefer [arch/s390]
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Pull IOMMU updates from Joerg Roedel:
    "The updates include:

    - rate limiting for the VT-d fault handler

    - remove statistics code from the AMD IOMMU driver. It is unused and
    should be replaced by something more generic if needed

    - per-domain pagesize-bitmaps in IOMMU core code to support systems
    with different types of IOMMUs

    - support for ACPI devices in the AMD IOMMU driver

    - 4GB mode support for Mediatek IOMMU driver

    - ARM-SMMU updates from Will Deacon:
    - support for 64k pages with SMMUv1 implementations (e.g MMU-401)
    - remove open-coded 64-bit MMIO accessors
    - initial support for 16-bit VMIDs, as supported by some ThunderX
    SMMU implementations
    - a couple of errata workarounds for silicon in the field

    - various fixes here and there"

    * tag 'iommu-updates-v4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (44 commits)
    iommu/arm-smmu: Use per-domain page sizes.
    iommu/amd: Remove statistics code
    iommu/dma: Finish optimising higher-order allocations
    iommu: Allow selecting page sizes per domain
    iommu: of: enforce const-ness of struct iommu_ops
    iommu: remove unused priv field from struct iommu_ops
    iommu/dma: Implement scatterlist segment merging
    iommu/arm-smmu: Clear cache lock bit of ACR
    iommu/arm-smmu: Support SMMUv1 64KB supplement
    iommu/arm-smmu: Decouple context format from kernel config
    iommu/arm-smmu: Tidy up 64-bit/atomic I/O accesses
    io-64-nonatomic: Add relaxed accessor variants
    iommu/arm-smmu: Work around MMU-500 prefetch errata
    iommu/arm-smmu: Convert ThunderX workaround to new method
    iommu/arm-smmu: Differentiate specific implementations
    iommu/arm-smmu: Workaround for ThunderX erratum #27704
    iommu/arm-smmu: Add support for 16 bit VMID
    iommu/amd: Move get_device_id() and friends to beginning of file
    iommu/amd: Don't use IS_ERR_VALUE to check integer values
    iommu/amd: Signedness bug in acpihid_device_group()
    ...

    Linus Torvalds
     
  • Pull PCI updates from Bjorn Helgaas:
    "Enumeration:
    - Refine PCI support check in pcibios_init() (Adrian-Ken Rueegsegger)
    - Provide common functions for ECAM mapping (Jayachandran C)
    - Allow all PCIe services on non-ACPI host bridges (Jon Derrick)
    - Remove return values from pcie_port_platform_notify() and relatives (Jon Derrick)
    - Widen portdrv service type from 4 bits to 8 bits (Keith Busch)
    - Add Downstream Port Containment portdrv service type (Keith Busch)
    - Add Downstream Port Containment driver (Keith Busch)

    Resource management:
    - Identify Enhanced Allocation (EA) BAR Equivalent resources in sysfs (Alex Williamson)
    - Supply CPU physical address (not bus address) to iomem_is_exclusive() (Bjorn Helgaas)
    - alpha: Call iomem_is_exclusive() for IORESOURCE_MEM, but not IORESOURCE_IO (Bjorn Helgaas)
    - Mark Broadwell-EP Home Agent 1 as having non-compliant BARs (Prarit Bhargava)
    - Disable all BAR sizing for devices with non-compliant BARs (Prarit Bhargava)
    - Move PCI I/O space management from OF to PCI core code (Tomasz Nowicki)

    PCI device hotplug:
    - acpiphp_ibm: Avoid uninitialized variable reference (Dan Carpenter)
    - Use cached copy of PCI_EXP_SLTCAP_HPC bit (Lukas Wunner)

    Virtualization:
    - Mark Intel i40e NIC INTx masking as broken (Alex Williamson)
    - Reverse standard ACS vs device-specific ACS enabling (Alex Williamson)
    - Work around Intel Sunrise Point PCH incorrect ACS capability (Alex Williamson)

    IOMMU:
    - Add pci_add_dma_alias() to abstract implementation (Bjorn Helgaas)
    - Move informational printk to pci_add_dma_alias() (Bjorn Helgaas)
    - Add support for multiple DMA aliases (Jacek Lawrynowicz)
    - Add DMA alias quirk for mic_x200_dma (Jacek Lawrynowicz)

    Thunderbolt:
    - Fix double free of drom buffer (Andreas Noever)
    - Add Intel Thunderbolt device IDs (Lukas Wunner)
    - Fix typos and magic number (Lukas Wunner)
    - Support 1st gen Light Ridge controller (Lukas Wunner)

    Generic host bridge driver:
    - Use generic ECAM API (Jayachandran C)

    Cavium ThunderX host bridge driver:
    - Don't clobber read-only bits in bridge config registers (David Daney)
    - Use generic ECAM API (Jayachandran C)

    Freescale i.MX6 host bridge driver:
    - Use enum instead of bool for variant indicator (Andrey Smirnov)
    - Implement reset sequence for i.MX6+ (Andrey Smirnov)
    - Factor out ref clock enable (Bjorn Helgaas)
    - Add initial imx6sx support (Christoph Fritz)
    - Add reset-gpio-active-high boolean property to DT (Petr Štetiar)
    - Add DT property for link gen, default to Gen1 (Tim Harvey)
    - dts: Specify imx6qp version of PCIe core (Andrey Smirnov)
    - dts: Fix PCIe reset GPIO polarity on Toradex Apalis Ixora (Petr Štetiar)

    Marvell Armada host bridge driver:
    - add DT binding for Marvell Armada 7K/8K PCIe controller (Thomas Petazzoni)
    - Add driver for Marvell Armada 7K/8K PCIe controller (Thomas Petazzoni)

    Marvell MVEBU host bridge driver:
    - Constify mvebu_pcie_pm_ops structure (Jisheng Zhang)
    - Use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS for mvebu_pcie_pm_ops (Jisheng Zhang)

    Microsoft Hyper-V host bridge driver:
    - Report resources release after stopping the bus (Vitaly Kuznetsov)
    - Add explicit barriers to config space access (Vitaly Kuznetsov)

    Renesas R-Car host bridge driver:
    - Select PCI_MSI_IRQ_DOMAIN (Arnd Bergmann)

    Synopsys DesignWare host bridge driver:
    - Remove incorrect RC memory base/limit configuration (Gabriele Paoloni)
    - Move Root Complex setup code to dw_pcie_setup_rc() (Jisheng Zhang)

    TI Keystone host bridge driver:
    - Add error IRQ handler (Murali Karicheri)
    - Remove unnecessary goto statement (Murali Karicheri)

    Miscellaneous:
    - Fix spelling errors (Colin Ian King)"

    * tag 'pci-v4.7-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (48 commits)
    PCI: Disable all BAR sizing for devices with non-compliant BARs
    x86/PCI: Mark Broadwell-EP Home Agent 1 as having non-compliant BARs
    PCI: Identify Enhanced Allocation (EA) BAR Equivalent resources in sysfs
    PCI, of: Move PCI I/O space management to PCI core code
    PCI: generic, thunder: Use generic ECAM API
    PCI: Provide common functions for ECAM mapping
    PCI: hv: Add explicit barriers to config space access
    PCI: Use cached copy of PCI_EXP_SLTCAP_HPC bit
    PCI: Add Downstream Port Containment driver
    PCI: Add Downstream Port Containment portdrv service type
    PCI: Widen portdrv service type from 4 bits to 8 bits
    PCI: designware: Remove incorrect RC memory base/limit configuration
    PCI: hv: Report resources release after stopping the bus
    ARM: dts: imx6qp: Specify imx6qp version of PCIe core
    PCI: imx6: Implement reset sequence for i.MX6+
    PCI: imx6: Use enum instead of bool for variant indicator
    PCI: thunder: Don't clobber read-only bits in bridge config registers
    thunderbolt: Fix double free of drom buffer
    PCI: rcar: Select PCI_MSI_IRQ_DOMAIN
    PCI: armada: Add driver for Marvell Armada 7K/8K PCIe controller
    ...

    Linus Torvalds
     
  • Pull dmaengine updates from Vinod Koul:
    "This time round the update brings in following changes:

    - new tegra driver for ADMA device

    - support for Xilinx AXI Direct Memory Access Engine and Xilinx AXI
    Central Direct Memory Access Engine and few updates to this driver

    - new cyclic capability to sun6i and few updates

    - slave-sg support in bcm2835

    - updates to many drivers like designware, hsu, mv_xor, pxa, edma,
    qcom_hidma & bam"

    * tag 'dmaengine-4.7-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (84 commits)
    dmaengine: ioatdma: disable relaxed ordering for ioatdma
    dmaengine: of_dma: approximate an average distribution
    dmaengine: core: Use IS_ENABLED() instead of checking for built-in or module
    dmaengine: edma: Re-evaluate errors when ccerr is triggered w/o error event
    dmaengine: qcom_hidma: add support for object hierarchy
    dmaengine: qcom_hidma: add debugfs hooks
    dmaengine: qcom_hidma: implement lower level hardware interface
    dmaengine: vdma: Add clock support
    Documentation: DT: vdma: Add clock support for dmas
    dmaengine: vdma: Add config structure to differentiate dmas
    MAINTAINERS: Update Tegra DMA maintainers
    dmaengine: tegra-adma: Add support for Tegra210 ADMA
    Documentation: DT: Add binding documentation for NVIDIA ADMA
    dmaengine: vdma: Add Support for Xilinx AXI Central Direct Memory Access Engine
    Documentation: DT: vdma: update binding doc for AXI CDMA
    dmaengine: vdma: Add Support for Xilinx AXI Direct Memory Access Engine
    Documentation: DT: vdma: update binding doc for AXI DMA
    dmaengine: vdma: Rename xilinx_vdma_ prefix to xilinx_dma
    dmaengine: slave means at least one of DMA_SLAVE, DMA_CYCLIC
    dmaengine: mv_xor: Allow selecting mv_xor for mvebu only compatible SoC
    ...

    Linus Torvalds
     
  • Pull KVM updates from Paolo Bonzini:
    "Small release overall.

    x86:
    - miscellaneous fixes
    - AVIC support (local APIC virtualization, AMD version)

    s390:
    - polling for interrupts after a VCPU goes to halted state is now
    enabled for s390
    - use hardware provided information about facility bits that do not
    need any hypervisor activity, and other fixes for cpu models and
    facilities
    - improve perf output
    - floating interrupt controller improvements.

    MIPS:
    - miscellaneous fixes

    PPC:
    - bugfixes only

    ARM:
    - 16K page size support
    - generic firmware probing layer for timer and GIC

    Christoffer Dall (KVM-ARM maintainer) says:
    "There are a few changes in this pull request touching things
    outside KVM, but they should all carry the necessary acks and it
    made the merge process much easier to do it this way."

    though actually the irqchip maintainers' acks didn't make it into the
    patches. Marc Zyngier, who is both irqchip and KVM-ARM maintainer,
    later acked at http://mid.gmane.org/573351D1.4060303@arm.com ('more
    formally and for documentation purposes')"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (82 commits)
    KVM: MTRR: remove MSR 0x2f8
    KVM: x86: make hwapic_isr_update and hwapic_irr_update look the same
    svm: Manage vcpu load/unload when enable AVIC
    svm: Do not intercept CR8 when enable AVIC
    svm: Do not expose x2APIC when enable AVIC
    KVM: x86: Introducing kvm_x86_ops.apicv_post_state_restore
    svm: Add VMEXIT handlers for AVIC
    svm: Add interrupt injection via AVIC
    KVM: x86: Detect and Initialize AVIC support
    svm: Introduce new AVIC VMCB registers
    KVM: split kvm_vcpu_wake_up from kvm_vcpu_kick
    KVM: x86: Introducing kvm_x86_ops VCPU blocking/unblocking hooks
    KVM: x86: Introducing kvm_x86_ops VM init/destroy hooks
    KVM: x86: Rename kvm_apic_get_reg to kvm_lapic_get_reg
    KVM: x86: Misc LAPIC changes to expose helper functions
    KVM: shrink halt polling even more for invalid wakeups
    KVM: s390: set halt polling to 80 microseconds
    KVM: halt_polling: provide a way to qualify wakeups during poll
    KVM: PPC: Book3S HV: Re-enable XICS fast path for irqfd-generated interrupts
    kvm: Conditionally register IRQ bypass consumer
    ...

    Linus Torvalds
     

19 May, 2016

6 commits

  • Russell King
     
  • Pull input updates from Dmitry Torokhov:
    "First round of updates for the input subsystem. No new drivers here,
    just some driver fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: rotary-encoder - fix bare use of 'unsigned'
    Input: cm109 - spin_lock in complete() cleanup
    Input: cm109 - fix handling of volume and mute buttons
    Input: byd - don't wipe dynamically allocated memory twice
    Input: twl4030 - fix unsafe macro definition
    Input: twl6040-vibra - remove mutex
    Input: bcm_iproc_tsc - DT spelling s/clock-name/clock-names/
    Input: bcm_iproc_tsc - use syscon to access shared registers
    Input: ti_am335x_tsc - use SIMPLE_DEV_PM_OPS
    Input: omap-keypad - remove set_col_gpio_val() and get_row_gpio_val()
    Input: omap-keypad - drop empty PM stubs
    Input: omap-keypad - remove adjusting of scan delay
    Input: gpio-keys - clean up device tree binding example
    Input: kbtab - stop saving struct usb_device
    Input: gtco - stop saving struct usb_device
    Input: aiptek - stop saving struct usb_device
    Input: acecad - stop saving struct usb_device

    Linus Torvalds
     
  • Pull ARM SoC driver updates from Arnd Bergmann:
    "Driver updates for ARM SoCs, these contain various things that touch
    the drivers/ directory but got merged through arm-soc for practical
    reasons.

    For the most part, this is now related to power management
    controllers, which have not yet been abstracted into a separate
    subsystem, and typically require some code in drivers/soc or arch/arm
    to control the power domains.

    Another large chunk here is a rework of the NVIDIA Tegra USB3.0
    support, which was surprisingly tricky and took a long time to get
    done.

    Finally, reset controller handling as always gets merged through here
    as well"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (97 commits)
    arm-ccn: Enable building as module
    soc/tegra: pmc: Add generic PM domain support
    usb: xhci: tegra: Add Tegra210 support
    usb: xhci: Add NVIDIA Tegra XUSB controller driver
    dt-bindings: usb: xhci-tegra: Add Tegra210 XUSB controller support
    dt-bindings: usb: Add NVIDIA Tegra XUSB controller binding
    PCI: tegra: Support per-lane PHYs
    dt-bindings: pci: tegra: Update for per-lane PHYs
    phy: tegra: Add Tegra210 support
    phy: Add Tegra XUSB pad controller support
    dt-bindings: phy: tegra-xusb-padctl: Add Tegra210 support
    dt-bindings: phy: Add NVIDIA Tegra XUSB pad controller binding
    phy: core: Allow children node to be overridden
    clk: tegra: Add interface to enable hardware control of SATA/XUSB PLLs
    drivers: firmware: psci: make two helper functions inline
    soc: renesas: rcar-sysc: Add support for R-Car H3 power areas
    soc: renesas: rcar-sysc: Add support for R-Car E2 power areas
    soc: renesas: rcar-sysc: Add support for R-Car M2-N power areas
    soc: renesas: rcar-sysc: Add support for R-Car M2-W power areas
    soc: renesas: rcar-sysc: Add support for R-Car H2 power areas
    ...

    Linus Torvalds
     
  • Pull ARM SoC defconfig updates from Arnd Bergmann:
    "As usual, a bunch of commits, mostly adding drivers and other options
    to defconfigs.

    We are adding three new defconfig files for the newly added 32-bit
    machines (aspeed and mps2), the rest is mainly housekeeping.

    The changes outside of arch/arm/config/ are for a Kconfig symbol that
    got renamed"

    * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (63 commits)
    ARM: aspeed: adapt defconfigs for new CONFIG_PRINTK_TIME
    ARM: u8500_defconfig: update sensor config
    ARM: u8500_defconfig: remove staging from defconfig
    ARM: multi_v7_defconfig: Remove unused Kconfig option MACH_UX500_DT
    ARM: at91/defconfig: sama5: add CONFIG_FHANDLE
    arm/configs: Add Aspeed defconfig
    arm/configs/multi_v5: Add Aspeed ast2400
    ARM: at91: sama5: Update defconfig
    ARM: imx_v6_v7_defconfig: add CONFIG_MICREL_PHY
    ARM: imx_v6_v7_defconfig: add CONFIG_I2C_GPIO
    ARM: multi_v7: Enable Tegra XUSB controller in defconfig
    ARM: tegra: Enable XUSB controller in defconfig
    ARM: omap2plus_defconfig: Enable PWM and ir-rx51 as loadable modules
    ARM: multi_v7_defconfig: add the Atmel sama5d2-compatible ADC driver
    ARM: multi_v7_defconfig: add the Atmel Audio microphone interface PDMIC
    ARM: multi_v7_defconfig: add Atmel ISI (Image Sensor Interface) driver
    ARM: multi_v7_defconfig: add Atmel watchdog timers
    ARM: multi_v7_defconfig: add HLCDC drivers as modules
    ARM: at91/defconfig: add PDMIC driver to sama5_defconfig
    ARM: at91/defconfig: add HLCDC driver to sama5_defconfig
    ...

    Linus Torvalds
     
  • Pull ARM DT updates from Arnd Bergmann:
    "These are all the updates to device tree files for 32-bit platforms,
    which as usual makes up the bulk of the ARM SoC changes: 462 non-merge
    changesets, 450 files changed, 23340 insertions, 5216 deletions.

    The three platforms that are added with the "soc" branch are here as
    well, and we add some related machine files:

    - For Aspeed AST2400/AST2500, we get the evaluation platform and the
    Tyan Palmetto POWER8 mainboard that uses the AST2400 BMC
    - For Oxnas 810SE, the Western Digital "My Book World Edition" is
    added as the only platform at the moment.
    - For ARM MPS2, the AN385 (Cortex-M3) and AN399 (Cortex-M7) are
    supported

    On the ARM Realview development platform, we now support all machines
    with device tree, previously only the board files were supported,
    which in turn will likely be removed soon.

    Qualcomm IPQ4019 is the second generation ARM based "Internet
    Processor", following the IPQ806x that is used in many high-end WiFi
    routers. This one integrates two ath10k wifi radios that were
    previously on separate chips.

    Other boards that got added for existing chips are:

    Ti OMAP family:
    - Amazon Kindle Fire, first generation, tablet and ebook reader
    - OnRISC Baltos iR 2110 and 3220 embedded industrial PCs
    - TI AM5728 IDK, TI AM3359 ICE-V2, and TI DRA722 Rev C EVM
    development systems

    Samsung EXYNOS platform:
    - Samsung ARTIK5 evaluation board, see

    https://www.artik.io/modules/overview/artik-5/

    NXP i.MX platforms:
    - Ka-Ro electronics TX6S-8034, TX6S-8035, TX6U-8033, TX6U-81xx,
    TX6Q-1036, TX6Q-1110/-1130, TXUL-0010 and TXUL-0011 industrial
    SoM modules
    - Embest MarS Board i.MX6Dual DIY platform
    - Boundary Devices i.MX6 Quad Plus Nitrogen6_MAX and SoloX
    Nitrogen6sx embedded boards
    - Technexion Pico i.MX6UL compute module
    - ZII VF610 Development Board

    Marvell embedded (mvebu, orion, kirkwood) platforms:
    - Linksys Viper (E4200v2 / EA4500) WiFi router
    - Buffalo Kurobox Pro NAS

    Qualcomm Snapdragon:
    - Arrow DragonBoard 600c (96boards) with APQ8064 Snapdragon 600

    Rockchips platform:
    - mqmaker MiQi single-board computer

    Altera SoCFPGA:
    - samtec VIN|ING 1000 vehicle communication interface

    Allwinner Sunxi platforms:
    - Dserve DSRV9703C tablet
    - Difrnce DIT4350 tablet
    - Colorfly E708 Q1 tablet
    - Polaroid MID2809PXE04 tablet
    - Olimex A20 OLinuXino LIME2 single board computer
    - Xunlong Orange Pi 2, Orange Pi One, and Orange Pi PC single board
    computers

    Across many platforms, bug fixes went in to address warnings that dtc
    now emits with 'make dtbs W=1'. Further changes for device enablement
    went into Ti OMAP, bcm283x (Raspberry Pi), bcm47xx (wifi router), Ti
    Davinci, Samsung EXYNOS, Marvell mvebu/kirkwood/orion, NXP i.MX/Vybrid
    NXP LPC18xx, NXP LPC32xx, Renesas shmobile/r-mobile/r-car, Rockchips
    rk3xxx, ST Ux500, ST STi, Atmel AT91/SAMA5, Altera SoCFPGA, Allwinner
    Sunxi, Sigma Designs Tango, NVIDIA Tegra, Socionext Uniphier and ARM
    Versatile Express"

    * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (458 commits)
    ARM: dts: tango4: Import watchdog node
    ARM: dts: tango4: Update cpus node for cpufreq
    ARM: dts: tango4: Update DT to match clk driver
    ARM: dts: tango4: Initial thermal support
    arm/dst: Add Aspeed ast2500 device tree
    arm/dts: Add Aspeed ast2400 device tree
    ARM: sun7i: dt: Add pll3 and pll7 clocks
    ARM: dts: sunxi: Add a olinuxino-lime2-emmc
    ARM: dts: at91: sama5d4: add trng node
    ARM: dts: at91: sama5d3: add trng node
    ARM: dts: at91: sama5d2: add trng node
    ARM: dts: at91: at91sam9g45 family: reduce the trng register map size
    ARM: sun4i: dt: Add pll3 and pll7 clocks
    ARM: sun5i: chip: Enable the TV Encoder
    ARM: sun5i: r8: Add display blocks to the DTSI
    ARM: sun5i: a13: Add display and TCON clocks
    ARM: dts: ux500: configure the accelerometers open drain
    ARM: mx5: dts: Enable USB OTG on M53EVK
    ARM: dts: imx6ul-14x14-evk: Add audio support
    ARM: dts: imx6qdl: Remove unneeded unit-addresses
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Arnd Bergmann:
    "We get support for three new 32-bit SoC platforms this time.

    The amount of changes in arch/arm for any of them is miniscule, as all
    the interesting code is in device driver subsystems (irqchip, clk,
    pinctrl, ...) these days. I'm listing them here, as the addition of
    the Kconfig statement is the main relevant milestone for a new
    platform. In each case, some drivers are are shared with existing
    platforms, while other drivers are added for v4.7 as well, or come in
    a later release.

    - The Aspeed platform is probably the most interesting one, this is
    what most whitebox servers use as their baseboard management
    controller. We get support for the very common ast2400 and ast2500
    SoCs. The OpenBMC project focuses on this chip, and the LWN
    article about their ELC 2016 presentation at

    https://lwn.net/Articles/683320/

    triggered the submission, but the code comes from IBM's OpenPOWER
    team rather than the team at Facebook. There are still a lot more
    drivers that need to get added over time, and I hope both teams can
    work together on that.

    - OXNAS is an old platform for Network Attached Storage devices from
    Oxford Semiconductor. There are models with ARM10 (!) and
    ARM11MPCore cores, but for now, we only support the original ARM9
    based versions. The product lineup was subsequently part of PLX,
    Avago and now the new Broadcom Ltd.

    https://wiki.openwrt.org/doc/hardware/soc/soc.oxnas

    has some more information.

    - V2M-MPS2 is a prototyping platform from ARM for their Cortex-M
    cores and is related to the existing Realview / Versatile Express
    lineup, but without MMU.

    We now support various NOMMU platforms, so adding a new one is
    fairly straightforward.

    http://infocenter.arm.com/help/topic/com.arm.doc.100112_0100_03_en/

    has detailed information about the platform.

    Other noteworthy updates:

    - Work on LPC32xx has resumed, and Vladimir Zapolskiy and Sylvain
    Lemieux are now maintaining the platform.

    This is an older ARM9 based platform from NXP (not Freescale), but
    it remains in use in embedded markets.

    - Kevin Hilman is now co-maintaining the Amlogic Meson platform for
    both 32-bit and 64-bit ARM, and started contributing some patches.

    - As is often the case, work on the OMAP platforms makes up the bulk
    of the actual SoC code changes in arch/arm, but there isn't a lot
    of that either"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (42 commits)
    MAINTAINERS: ARM/Amlogic: add co-maintainer, misc. updates
    MAINTAINERS: add ARM/NXP LPC32XX SoC specific drivers to the section
    MAINTAINERS: add new maintainers of NXP LPC32xx SoC
    MAINTAINERS: move ARM/NXP LPC32xx record to ARM section
    arm: Add Aspeed machine
    ARM: lpc32xx: remove duplicate const on lpc32xx_auxdata_lookup
    ARM: lpc32xx: remove leftovers of legacy clock source and provider drivers
    ARM: lpc32xx: remove reboot header file
    ARM: dove: Remove CLK_IS_ROOT
    ARM: orion5x: Remove CLK_IS_ROOT
    ARM: mv78xx0: Remove CLK_IS_ROOT
    ARM: davinci: da850: use clk->set_parent for async3
    ARM: davinci: Move clock init after ioremap.
    MAINTAINERS: Update ARM Versatile Express platform entry
    ARM: vexpress/mps2: introduce MPS2 platform
    MAINTAINERS: add maintainer entry for ARM/OXNAS platform
    ARM: Add new mach-oxnas
    irqchip: versatile-fpga: add new compatible for OX810SE SoC
    ARM: uniphier: correct the call order of of_node_put()
    MAINTAINERS: fix stale TI DaVinci entries
    ...

    Linus Torvalds