1. 07 May, 2013 40 commits
    • Linus Torvalds's avatar
      arm: fix mismerge of arch/arm/mach-omap2/timer.c · 9affd6be
      Linus Torvalds authored
      I badly screwed up the merge in commit 6fa52ed3 ("Merge tag
      'drivers-for-linus' of git://git.kernel.org/pub/.../arm-soc") by
      incorrectly taking the arch/arm/mach-omap2/* data fully from the merge
      target because the 'drivers-for-linus' branch seemed to be a proper
      superset of the duplicate ARM commits.
      That was bogus: commit ff931c82
       ("ARM: OMAP: clocks: Delay clk inits
      atleast until slab is initialized") only existed in head, and the
      changes to arch/arm/mach-omap2/timer.c from that commit got list.
      Re-doing the merge more carefully, I do think this part was the only
      thing I screwed up.  Knock wood.
      Reported-by: default avatarTony Lindgren <tony@atomide.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Olof Johansson <olof@lixom.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Davidlohr Bueso's avatar
      rwsem: check counter to avoid cmpxchg calls · 9607a85b
      Davidlohr Bueso authored
      This patch tries to reduce the amount of cmpxchg calls in the writer
      failed path by checking the counter value first before issuing the
      instruction.  If ->count is not set to RWSEM_WAITING_BIAS then there is
      no point wasting a cmpxchg call.
      Furthermore, Michel states "I suppose it helps due to the case where
      someone else steals the lock while we're trying to acquire
      Two very different workloads and machines were used to see how this
      patch improves throughput: pgbench on a quad-core laptop and aim7 on a
      large 8 socket box with 80 cores.
      Some results comparing Michel's fast-path write lock stealing
      (tps-rwsem) on a quad-core laptop running pgbench:
        | db_size | clients  |  tps-rwsem     |   tps-patch  |
        | 160 MB   |       1 |           6906 |         9153 | + 32.5
        | 160 MB   |       2 |          15931 |        22487 | + 41.1%
        | 160 MB   |       4 |          33021 |        32503 |
        | 160 MB   |       8 |          34626 |        34695 |
        | 160 MB   |      16 |          33098 |        34003 |
        | 160 MB   |      20 |          31343 |        31440 |
        | 160 MB   |      30 |          28961 |        28987 |
        | 160 MB   |      40 |          26902 |        26970 |
        | 160 MB   |      50 |          25760 |        25810 |
        | 1.6 GB   |       1 |           7729 |         7537 |
        | 1.6 GB   |       2 |          19009 |        23508 | + 23.7%
        | 1.6 GB   |       4 |          33185 |        32666 |
        | 1.6 GB   |       8 |          34550 |        34318 |
        | 1.6 GB   |      16 |          33079 |        32689 |
        | 1.6 GB   |      20 |          31494 |        31702 |
        | 1.6 GB   |      30 |          28535 |        28755 |
        | 1.6 GB   |      40 |          27054 |        27017 |
        | 1.6 GB   |      50 |          25591 |        25560 |
        | 7.6 GB   |       1 |           6224 |         7469 | + 20.0%
        | 7.6 GB   |       2 |          13611 |        12778 |
        | 7.6 GB   |       4 |          33108 |        32927 |
        | 7.6 GB   |       8 |          34712 |        34878 |
        | 7.6 GB   |      16 |          32895 |        33003 |
        | 7.6 GB   |      20 |          31689 |        31974 |
        | 7.6 GB   |      30 |          29003 |        28806 |
        | 7.6 GB   |      40 |          26683 |        26976 |
        | 7.6 GB   |      50 |          25925 |        25652 |
      For the aim7 worloads, they overall improved on top of Michel's
      patchset.  For full graphs on how the rwsem series plus this patch
      behaves on a large 8 socket machine against a vanilla kernel:
      Signed-off-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Anatol Pomozov's avatar
      kref: minor cleanup · 2d864e41
      Anatol Pomozov authored
       - make warning smp-safe
       - result of atomic _unless_zero functions should be checked by caller
         to avoid use-after-free error
       - trivial whitespace fix.
      Link: https://lkml.org/lkml/2013/4/12/391
      Tested: compile x86, boot machine and run xfstests
      Signed-off-by: default avatarAnatol Pomozov <anatol.pomozov@gmail.com>
      [ Removed line-break, changed to use WARN_ON_ONCE()  - Linus ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 292088ee
      Linus Torvalds authored
      Pull more vfs updates from Al Viro:
       "A couple of fixes + getting rid of __blkdev_put() return value"
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        proc: Use PDE attribute setting accessor functions
        make blkdev_put() return void
        block_device_operations->release() should return void
        mtd_blktrans_ops->release() should return void
        hfs: SMP race on directory close()
    • Linus Torvalds's avatar
      Merge branch 'parisc-for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · bc2d968f
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "Main fixes and updates in this patch series are:
         - we faced kernel stack corruptions because of multiple delivery of
         - added kernel stack overflow checks
         - added possibility to use dedicated stacks for irq processing
         - initial support for page sizes > 4k
         - more information in /proc/interrupts (e.g.  TLB flushes and number
           of IPI calls)
         - documented how the parisc gateway page works
         - and of course quite some other smaller cleanups and fixes."
      * 'parisc-for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: tlb flush counting fix for SMP and UP
        parisc: more irq statistics in /proc/interrupts
        parisc: implement irq stacks
        parisc: add kernel stack overflow check
        parisc: only re-enable interrupts if we need to schedule or deliver signals when returning to userspace
        parisc: implement atomic64_dec_if_positive()
        parisc: use long branch in fork_like macro
        parisc: fix NATIVE set up in build
        parisc: document the parisc gateway page
        parisc: fix partly 16/64k PAGE_SIZE boot
        parisc: Provide default implementation for dma_{alloc, free}_attrs
        parisc: fix whitespace errors in arch/parisc/kernel/traps.c
        parisc: remove the second argument of kmap_atomic
    • Linus Torvalds's avatar
      Merge tag '3.9-rc3-smp-6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen · d75e2f90
      Linus Torvalds authored
      Pull ARM Xen SMP updates from Stefano Stabellini:
       "This contains a bunch of Xen/ARM specific changes, including some
        fixes, SMP support for Xen on ARM, and moving the xenvm machine from
        mach-vexpress to mach-virt.
        The non-Xen files that are touched are arch/arm/Kconfig, to select
        ARM_PSCI on XEN, and arch/arm/boot/dts/Makefile, to build the xenvm
         - Move xenvm to mach-virt.
         - Implement SMP support in Xen on ARM.
         - Add support for machine reboot and power off via Xen hypercalls"
      * tag '3.9-rc3-smp-6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/sstabellini/xen:
        xen/arm: remove duplicated include from enlighten.c
        xen/arm: use sched_op hypercalls for machine reboot and power off
        xenvm: add a simple PSCI node and a second cpu
        xen/arm: XEN selects ARM_PSCI
        xen: move the xenvm machine to mach-virt
        xen/arm: SMP support
        xen/arm: implement HYPERVISOR_vcpu_op
        xen/arm: actually pass a non-NULL percpu pointer to request_percpu_irq
    • Helge Deller's avatar
      parisc: tlb flush counting fix for SMP and UP · 0fc537d1
      Helge Deller authored
      Fix up build error on UP and show correctly number of function call
      (ipi) irqs.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    • Linus Torvalds's avatar
      Merge tag 'remoteproc-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc · de9c9f86
      Linus Torvalds authored
      Pull remoteproc update from Ohad Ben-Cohen:
       - Some refactoring, cleanups and small improvements from Sjur
         Brændeland.  The improvements are mainly about better supporting
         varios virtio properties (such as virtio's config space, status and
         features).  I now see that I messed up while commiting one of Sjur's
         patches and erroneously put myself as the author, as well as letting
         a nasty typo sneak in.  I will not fix this in order to avoid
         rebasing the patches.  Sjur - sorry!
       - A new remoteproc driver for OMAP-L13x (technically a DaVinci
         platform) from Robert Tivy.
       - Extend OMAP support to OMAP5 as well, from Vincent Stehlé.
       - Fix Kconfig VIRTUALIZATION dependency, from Suman Anna (a
         non-critical fix which arrived late during the rc cycle).
      * tag 'remoteproc-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc:
        remoteproc: fix kconfig dependencies for VIRTIO
        remoteproc/davinci: add a remoteproc driver for OMAP-L13x DSP
        remoteproc: support default firmware name in rproc_alloc()
        remoteproc/omap: support OMAP5 too
        remoteproc: set vring addresses in resource table
        remoteproc: support virtio config space.
        remoteproc: perserve resource table data
        remoteproc: calculate max_notifyid by counting vrings
        remoteproc: code cleanup of resource parsing
        remoteproc: parse STE-firmware and find resource table address
        remoteproc: add find_loaded_rsc_table firmware ops
        remoteproc: refactor rproc_elf_find_rsc_table()
    • Linus Torvalds's avatar
      Merge tag 'rpmsg-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/rpmsg · 3e11a00d
      Linus Torvalds authored
      Pull rpmsg changes from Ohad Ben-Cohen:
       "A small pull request consisting of:
         - Make rpmsg process all pending messages instead of just one, from
           Robert Tivy
         - Fix Kconfig dependency on VIRTUALIZATION, from Suman.
           Note: this was submitted late during the 3.9 rc cycle and it seemed
           appropriate to wait with it for the merge window.
         - Belated addition of an rpmsg entry to the MAINTAINERS file.  People
           seem to look for this"
      * tag 'rpmsg-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/rpmsg:
        rpmsg: fix kconfig dependencies for VIRTIO
        MAINTAINERS: add rpmsg entry
        rpmsg: process _all_ pending messages in rpmsg_recv_done
    • Linus Torvalds's avatar
      Merge tag 'hwspinlock-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock · c807b173
      Linus Torvalds authored
      Pullhwspinlock update from Ohad Ben-Cohen:
       "A single patch from Vincent extending OMAP's hwspinlock support to
      * tag 'hwspinlock-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock:
        hwspinlock/omap: support OMAP5 as well
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · 1b5feb4c
      Linus Torvalds authored
      Pull libata maintainership change from Tejun Heo.
      Tejun is taking over from Jeff, after many many years. Thanks Jeff.
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        libata: change maintainer
    • Helge Deller's avatar
      parisc: more irq statistics in /proc/interrupts · cd85d551
      Helge Deller authored
      Add framework and initial values for more fine grained statistics in
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    • Helge Deller's avatar
      parisc: implement irq stacks · 200c8804
      Helge Deller authored
      Default kernel stack size on parisc is 16k.  During tests we found that the
      kernel stack can easily grow beyond 13k, which leaves 3k left for irq
      This patch adds the possibility to activate an additional stack of 16k per CPU
      which is being used during irq processing.  This implementation does not yet
      uses this irq stack for the irq bh handler.
      The assembler code for call_on_stack was heavily cleaned up by John
      David Anglin.
      CC: John David Anglin <dave.anglin@bell.net>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    • Helge Deller's avatar
      parisc: add kernel stack overflow check · 9372450c
      Helge Deller authored
      Add the CONFIG_DEBUG_STACKOVERFLOW config option to enable checks to
      detect kernel stack overflows.
      Stack overflows can not be detected reliable since we do not want to
      introduce too much overhead.
      Instead, during irq processing in do_cpu_irq_mask() we check kernel
      stack usage of the interrupted kernel process. Kernel threads can be
      easily detected by checking the value of space register 7 (sr7) which
      is zero when running inside the kernel.
      Since THREAD_SIZE is 16k and PAGE_SIZE is 4k, reduce the alignment of
      the init thread to the lower value (PAGE_SIZE) in the kernel
      vmlinux.ld.S linker script.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    • Geert Uytterhoeven's avatar
      proc: Use PDE attribute setting accessor functions · 254844d3
      Geert Uytterhoeven authored
      arch/arm/mach-msm/last_radio_log.c: In function 'msm_init_last_radio_log':
      arch/arm/mach-msm/last_radio_log.c:69:7: error: dereferencing pointer to incomplete type
      arch/cris/kernel/profile.c: In function 'init_cris_profile':
      arch/cris/kernel/profile.c:79:8: error: dereferencing pointer to incomplete type
      Use proc_set_size(), cfr. commit 271a15ea
      ("proc: Supply PDE attribute setting accessor functions")
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    • John David Anglin's avatar
      parisc: only re-enable interrupts if we need to schedule or deliver signals... · c207a76b
      John David Anglin authored
      parisc: only re-enable interrupts if we need to schedule or deliver signals when returning to userspace
      Helge and I have found that we have a kernel stack overflow problem
      which causes a variety of random failures.
      Currently, we re-enable interrupts when returning from an external
      interrupt incase we need to schedule or delivery
      signals.  As a result, a potentially unlimited number of interrupts
      can occur while we are running on the kernel
      stack.  It is very limited in space (currently, 16k).  This change
      defers enabling interrupts until we have
      actually decided to schedule or delivery signals.  This only occurs
      when we about to return to userspace.  This
      limits the number of interrupts on the kernel stack to one.  In other
      cases, interrupts remain disabled until the
      final return from interrupt (rfi).
      Signed-off-by: default avatarJohn David Anglin  <dave.anglin@bell.net>
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    • Linus Torvalds's avatar
      Merge tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · bb9055b2
      Linus Torvalds authored
      Pull late ARM Exynos multiplatform changes from Arnd Bergmann:
       "These continue the multiplatform support for exynos, adding support
        for building most of the essential drivers (clocksource, clk, irqchip)
        when combined with other platforms.  As a result, it should become
        really easy to add full multiplatform exynos support in 3.11, although
        we don't yet enable it for 3.10.
        The changes were not included in the earlier multiplatform series in
        order to avoid clashes with the other Exynos updates.
        This also includes work from Tomasz Figa to fix the pwm clocksource
        code on Exynos, which is not strictly required for multiplatform, but
        related to the other patches in this set and needed as a bug fix for
        at least one board."
      * tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits)
        ARM: dts: exynops4210: really add universal_c210 dts
        ARM: dts: exynos4210: Add basic dts file for universal_c210 board
        ARM: dts: exynos4: Add node for PWM device
        ARM: SAMSUNG: Do not register legacy timer interrupts on Exynos
        clocksource: samsung_pwm_timer: Work around rounding errors in clockevents core
        clocksource: samsung_pwm_timer: Correct programming of clock events
        clocksource: samsung_pwm_timer: Use proper clockevents max_delta
        clocksource: samsung_pwm_timer: Add support for non-DT platforms
        clocksource: samsung_pwm_timer: Drop unused samsung_pwm struct
        clocksource: samsung_pwm_timer: Keep all driver data in a structure
        clocksource: samsung_pwm_timer: Make PWM spinlock global
        clocksource: samsung_pwm_timer: Let platforms select the driver
        Documentation: Add device tree bindings for Samsung PWM timers
        clocksource: add samsung pwm timer driver
        irqchip: exynos: look up irq using irq_find_mapping
        irqchip: exynos: pass irq_base from platform
        irqchip: exynos: localize irq lookup for ATAGS
        irqchip: exynos: allocate combiner_data dynamically
        irqchip: exynos: pass max combiner number to combiner_init
        ARM: exynos: add missing properties for combiner IRQs
    • Linus Torvalds's avatar
      Merge tag 'cleanup-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 1bf25e78
      Linus Torvalds authored
      Pull ARM SoC late cleanups from Arnd Bergmann:
       "These are cleanups and smaller changes that either depend on earlier
        feature branches or came in late during the development cycle.  We
        normally try to get all cleanups early, so these are the exceptions:
         - A follow-up on the clocksource reworks, hopefully the last time we
           need to merge clocksource subsystem changes through arm-soc.
           A first set of patches was part of the original 3.10 arm-soc
           cleanup series because of interdependencies with timer drivers now
           moved out of arch/arm.
         - Migrating the SPEAr13xx platform away from using auxdata for DMA
           channel descriptions towards using information in device tree,
           based on the earlier SPEAr multiplatform series
         - A few follow-ups on the Atmel SAMA5 support and other changes for
           Atmel at91 based on the larger at91 reworks.
         - Moving the armada irqchip implementation to drivers/irqchip
         - Several OMAP cleanups following up on the larger series already
           merged in 3.10."
      * tag 'cleanup-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits)
        ARM: OMAP4: change the device names in usb_bind_phy
        ARM: OMAP2+: Fix mismerge for timer.c between ff931c82 and da4a686a
        ARM: SPEAr: conditionalize SMP code
        ARM: arch_timer: Silence debug preempt warnings
        ARM: OMAP: remove unused variable
        serial: amba-pl011: fix !CONFIG_DMA_ENGINE case
        ata: arasan: remove the need for platform_data
        ARM: at91/sama5d34ek.dts: remove not needed compatibility string
        ARM: at91: dts: add MCI DMA support
        ARM: at91: dts: add i2c dma support
        ARM: at91: dts: set #dma-cells to the correct value
        ARM: at91: suspend both memory controllers on at91sam9263
        irqchip: armada-370-xp: slightly cleanup irq controller driver
        irqchip: armada-370-xp: move IRQ handler to avoid forward declaration
        irqchip: move IRQ driver for Armada 370/XP
        ARM: mvebu: move L2 cache initialization in init_early()
        devtree: add binding documentation for sp804
        ARM: integrator-cp: convert use CLKSRC_OF for timer init
        ARM: versatile: use OF init for sp804 timer
        ARM: versatile: add versatile dtbs to dtbs target
    • Linus Torvalds's avatar
      Merge tag 'dt-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 38f56f33
      Linus Torvalds authored
      Pull ARM SoC device tree updates (part 2) from Arnd Bergmann:
       "These are mostly new device tree bindings for existing drivers, as
        well as changes to the device tree source files to add support for
        those devices, and a couple of new boards, most notably Samsung's
        Exynos5 based Chromebook.
        The changes depend on earlier platform specific updates and touch the
        usual platforms: omap, exynos, tegra, mxs, mvebu and davinci."
      * tag 'dt-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (169 commits)
        ARM: exynos: dts: cros5250: add EC device
        ARM: dts: Add sbs-battery for exynos5250-snow
        ARM: dts: Add i2c-arbitrator bus for exynos5250-snow
        ARM: dts: add mshc controller node for Exynos4x12 SoCs
        ARM: dts: Add chip-id controller node on Exynos4/5 SoC
        ARM: EXYNOS: Create virtual I/O mapping for Chip-ID controller using device tree
        ARM: davinci: da850-evm: add SPI flash support
        ARM: davinci: da850: override SPI DT node device name
        ARM: davinci: da850: add SPI1 DT node
        spi/davinci: add DT binding documentation
        spi/davinci: no wildcards in DT compatible property
        ARM: dts: mvebu: Convert mvebu device tree files to 64 bits
        ARM: dts: mvebu: introduce internal-regs node
        ARM: dts: mvebu: Convert all the mvebu files to use the range property
        ARM: dts: mvebu: move all peripherals inside soc
        ARM: dts: mvebu: fix cpus section indentation
        ARM: davinci: da850: add EHRPWM & ECAP DT node
        ARM/dts: OMAP3: fix pinctrl-single configuration
        ARM: dts: Add OMAP3430 SDP NOR flash memory binding
        ARM: dts: Add NOR flash bindings for OMAP2420 H4
    • Linus Torvalds's avatar
      Merge tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · fcba9145
      Linus Torvalds authored
      Pull ARM SoC platform updates (part 3) from Arnd Bergmann:
       "This is the third and smallest of the SoC specific updates.  Changes
         - SMP support for the Xilinx zynq platform
         - Smaller imx changes
         - LPAE support for mvebu
         - Moving the orion5x, kirkwood, dove and mvebu platforms to a common
           "mbus" driver for their internal devices.
        It would be good to get feedback on the location of the "mbus" driver.
        Since this is used on multiple platforms may potentially get shared
        with other architectures (powerpc and arm64), it was moved to
        drivers/bus/.  We expect other similar drivers to get moved to the
        same place in order to avoid creating more top-level directories under
        drivers/ or cluttering up the messy drivers/misc/ even more."
      * tag 'soc-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits)
        ARM: imx: reset_controller may be disabled
        ARM: mvebu: Align the internal registers virtual base to support LPAE
        ARM: mvebu: Limit the DMA zone when LPAE is selected
        arm: plat-orion: remove addr-map code
        arm: mach-mv78xx0: convert to use the mvebu-mbus driver
        arm: mach-orion5x: convert to use mvebu-mbus driver
        arm: mach-dove: convert to use mvebu-mbus driver
        arm: mach-kirkwood: convert to use mvebu-mbus driver
        arm: mach-mvebu: convert to use mvebu-mbus driver
        ARM i.MX53: set CLK_SET_RATE_PARENT flag on the tve_ext_sel clock
        ARM i.MX53: tve_di clock is not part of the CCM, but of TVE
        ARM i.MX53: make tve_ext_sel propagate rate change to PLL
        ARM i.MX53: Remove unused tve_gate clkdev entry
        ARM i.MX5: Remove tve_sel clock from i.MX53 clock tree
        ARM: i.MX5: Add PATA and SRTC clocks
        ARM: imx: do not bring up unavailable cores
        ARM: imx: add initial imx6dl support
        ARM: imx1: mm: add call to mxc_device_init
        ARM: imx_v4_v5_defconfig: Add CONFIG_GPIO_SYSFS
        ARM: imx_v6_v7_defconfig: Select CONFIG_PERF_EVENTS
    • Linus Torvalds's avatar
      Merge tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · a8c4b90e
      Linus Torvalds authored
      Pull ARM SoC platform updates (part 2) from Arnd Bergmann:
       "These patches are all for Renesas shmobile, and depend on the earlier
        pinctrl updates.  Remarkably, this adds support for three new SoCs:
        r8a73a4, r8a73a4 and r8a7778.  The bulk of the code added for these is
        for pinctrl (using the new subsystem) and for clocks (not yet using
        the common clock subsystem).  The latter will have to get converted in
        one of the upcoming releases, but shmobile is not ready for that yet.
        The series also contains Renesas shmobile board changes, adding one
        board file for each of the three new SoCs.  These boards are using a
        mix of classic and device-tree based probing, as there is still a lot
        of infrastructure in shmobile that has not been converted to DT yet.
        Once those are resolved to the degree that no board specific setup
        code is needed, they can get folded into the respective SoC setup files."
      * tag 'soc-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (78 commits)
        ARM: shmobile: use r8a7790 timer setup code on Lager
        ARM: shmobile: force enable of r8a7790 arch timer
        ARM: shmobile: Add second I/O range for r8a7790 PFC
        ARM: shmobile: bockw: enable network settings on bootargs
        ARM: shmobile: bockw: add SMSC ethernet support
        ARM: shmobile: R8A7778: add Ether support
        ARM: shmobile: bockw: enable SMSC ethernet on defconfig
        ARM: shmobile: r8a7778: add r8a7778_init_irq_extpin()
        ARM: shmobile: r8a7778: remove pointless PLATFORM_INFO()
        ARM: shmobile: mackerel: clean up MMCIF vs. SDHI1 selection
        ARM: shmobile: mackerel: add interrupt names for SDHI0
        ARM: shmobile: mackerel: switch SDHI and MMCIF interfaces to slot-gpio
        ARM: shmobile: mackerel: remove OCR masks, where regulators are used
        ARM: shmobile: mackerel: SDHI resources do not have to be numbered
        ARM: shmobile: Initial r8a7790 Lager board support
        ARM: shmobile: APE6EVM LAN9220 support
        ARM: shmobile: APE6EVM PFC support
        ARM: shmobile: APE6EVM base support
        ARM: shmobile: kzm9g-reference: add ethernet support
        ARM: shmobile: add R-Car M1A Bock-W platform support
    • Tejun Heo's avatar
      libata: change maintainer · 3d9b9350
      Tejun Heo authored
      Jeff is leaving for something more interesting and I'm inheriting the
      maintainership of libata.  Thanks a lot for the good work and have
      fun, Jeff!
      v2: The original path forgot to update git tree URL.  Updated.
          Spotted by Sergei.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Jeff Garzik <jgarzik@pobox.com>
      Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · eac84105
      Linus Torvalds authored
      Pull more vhost fixes from Michael Tsirkin:
       "This fixes some minor issues in the patches that have been merged.
        We also finally drop the workaround disabling event_idx for scsi: it
        was always questionable, and now we know it's not needed.
        There's also a memory leak fix"
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        vhost-scsi: Enable VIRTIO_RING_F_EVENT_IDX
        vhost: drop virtio_net.h dependency
        vhost-net: Cleanup vhost_ubuf and vhost_zcopy
        vhost: Remove vhost_enable_zcopy in vhost.h
        vhost: Remove comments for hdr in vhost.h
        vhost: Move VHOST_NET_FEATURES to net.c
        vhost-net: Free ubuf when vhost_dev_set_owner fails
        vhost: Export vhost_dev_set_owner
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse · a26ea93a
      Linus Torvalds authored
      Pull fuse updates from Miklos Szeredi:
       "This contains two patchsets from Maxim Patlasov.
        The first reworks the request throttling so that only async requests
        are throttled.  Wakeup of waiting async requests is also optimized.
        The second series adds support for async processing of direct IO which
        optimizes direct IO and enables the use of the AIO userspace
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
        fuse: add flag to turn on async direct IO
        fuse: truncate file if async dio failed
        fuse: optimize short direct reads
        fuse: enable asynchronous processing direct IO
        fuse: make fuse_direct_io() aware about AIO
        fuse: add support of async IO
        fuse: move fuse_release_user_pages() up
        fuse: optimize wake_up
        fuse: implement exclusive wakeup for blocked_waitq
        fuse: skip blocking on allocations of synchronous requests
        fuse: add flag fc->initialized
        fuse: make request allocations for background processing explicit
    • Linus Torvalds's avatar
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · c818c778
      Linus Torvalds authored
      Pull powerpc updates from Benjamin Herrenschmidt:
       "Here are a few more powerpc bits that I would like in 3.10.
        Mostly remaining bolts & screw tightening of power8 support such as
        actually exposing the new features via the previously added AT_HWCAP2,
        and a few fixes, some of them for problems exposed recently like
        irqdomain warnings or sysfs access permission issues, some exposed by
        power8 hardware.
        The only change outside of arch/powerpc is a small one to irqdomain.c
        to allow silent failure to fix a problem on Cell where we get a dozen
        WARN_ON's tripping at boot for what is basically a normal case."
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Make hard_irq_disable() do the right thing vs. irq tracing
        powerpc/topology: Fix spurr attribute permission
        powerpc/pci: Support per-aperture memory offset
        powerpc/cell/iommu: Improve error message for missing node
        powerpc/cell/spufs: Fix status attribute permission
        irqdomain: Allow quiet failure mode
        powerpc/pnv: Fix "compatible" property for P8 PHB
        powerpc/pci: Don't add bogus empty resources to PHBs
        powerpc/powerpnv: Properly handle failure starting CPUs
        powerpc/cputable: Advertise support for ISEL/HTM/DSCR/TAR on POWER8
        powerpc/cputable: Advertise ISEL support on appropriate embedded processors
        powerpc/cputable: Advertise DSCR support on P7/P7+
        powerpc/cputable: Reserve bits in HWCAP2 for new features
        powerpc/pseries: Perform proper max_bus_speed detection
        powerpc/pseries: Force 32 bit MSIs for devices that require it
        powerpc/tm: Fix null pointer deference in flush_hash_page
        powerpc/powernv: Defer OPAL exception handler registration
        powerpc: Emulate non privileged DSCR read and write
    • Linus Torvalds's avatar
      Merge branch 'rwsem-optimizations' · c8de2fa4
      Linus Torvalds authored
      Merge rwsem optimizations from Michel Lespinasse:
       "These patches extend Alex Shi's work (which added write lock stealing
        on the rwsem slow path) in order to provide rwsem write lock stealing
        on the fast path (that is, without taking the rwsem's wait_lock).
        I have unfortunately been unable to push this through -next before due
        to Ingo Molnar / David Howells / Peter Zijlstra being busy with other
        things.  However, this has gotten some attention from Rik van Riel and
        Davidlohr Bueso who both commented that they felt this was ready for
        v3.10, and Ingo Molnar has said that he was OK with me pushing
        directly to you.  So, here goes :)
        Davidlohr got the following test results from pgbench running on a
        quad-core laptop:
          | db_size | clients  |  tps-vanilla   |   tps-rwsem  |
          | 160 MB   |       1 |           5803 |         6906 | + 19.0%
          | 160 MB   |       2 |          13092 |        15931 |
          | 160 MB   |       4 |          29412 |        33021 |
          | 160 MB   |       8 |          32448 |        34626 |
          | 160 MB   |      16 |          32758 |        33098 |
          | 160 MB   |      20 |          26940 |        31343 | + 16.3%
          | 160 MB   |      30 |          25147 |        28961 |
          | 160 MB   |      40 |          25484 |        26902 |
          | 160 MB   |      50 |          24528 |        25760 |
          | 1.6 GB   |       1 |           5733 |         7729 | + 34.8%
          | 1.6 GB   |       2 |           9411 |        19009 | + 101.9%
          | 1.6 GB   |       4 |          31818 |        33185 |
          | 1.6 GB   |       8 |          33700 |        34550 |
          | 1.6 GB   |      16 |          32751 |        33079 |
          | 1.6 GB   |      20 |          30919 |        31494 |
          | 1.6 GB   |      30 |          28540 |        28535 |
          | 1.6 GB   |      40 |          26380 |        27054 |
          | 1.6 GB   |      50 |          25241 |        25591 |
          | 7.6 GB   |       1 |           5779 |         6224 |
          | 7.6 GB   |       2 |          10897 |        13611 | + 24.9%
          | 7.6 GB   |       4 |          32683 |        33108 |
          | 7.6 GB   |       8 |          33968 |        34712 |
          | 7.6 GB   |      16 |          32287 |        32895 |
          | 7.6 GB   |      20 |          27770 |        31689 | + 14.1%
          | 7.6 GB   |      30 |          26739 |        29003 |
          | 7.6 GB   |      40 |          24901 |        26683 |
          | 7.6 GB   |      50 |          17115 |        25925 | + 51.5%
        (Davidlohr also has one additional patch which further improves
        throughput, though I will ask him to send it directly to you as I have
        suggested some minor changes)."
      * emailed patches from Michel Lespinasse <walken@google.com>:
        rwsem: no need for explicit signed longs
        x86 rwsem: avoid taking slow path when stealing write lock
        rwsem: do not block readers at head of queue if other readers are active
        rwsem: implement support for write lock stealing on the fastpath
        rwsem: simplify __rwsem_do_wake
        rwsem: skip initial trylock in rwsem_down_write_failed
        rwsem: avoid taking wait_lock in rwsem_down_write_failed
        rwsem: use cmpxchg for trying to steal write lock
        rwsem: more agressive lock stealing in rwsem_down_write_failed
        rwsem: simplify rwsem_down_write_failed
        rwsem: simplify rwsem_down_read_failed
        rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed
        rwsem: shorter spinlocked section in rwsem_down_failed_common()
        rwsem: make the waiter type an enumeration rather than a bitmask
    • Linus Torvalds's avatar
      Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux · 0f47c942
      Linus Torvalds authored
      Pull slab changes from Pekka Enberg:
       "The bulk of the changes are more slab unification from Christoph.
        There's also few fixes from Aaron, Glauber, and Joonsoo thrown into
        the mix."
      * 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux: (24 commits)
        mm, slab_common: Fix bootstrap creation of kmalloc caches
        slab: Return NULL for oversized allocations
        mm: slab: Verify the nodeid passed to ____cache_alloc_node
        slub: tid must be retrieved from the percpu area of the current processor
        slub: Do not dereference NULL pointer in node_match
        slub: add 'likely' macro to inc_slabs_node()
        slub: correct to calculate num of acquired objects in get_partial_node()
        slub: correctly bootstrap boot caches
        mm/sl[au]b: correct allocation type check in kmalloc_slab()
        slab: Fixup CONFIG_PAGE_ALLOC/DEBUG_SLAB_LEAK sections
        slab: Handle ARCH_DMA_MINALIGN correctly
        slab: Common definition for kmem_cache_node
        slab: Rename list3/l3 to node
        slab: Common Kmalloc cache determination
        stat: Use size_t for sizes instead of unsigned
        slab: Common function to create the kmalloc array
        slab: Common definition for the array of kmalloc caches
        slab: Common constants for kmalloc boundaries
        slab: Rename nodelists to node
        slab: Common name for the per node structures
    • Linus Torvalds's avatar
      Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · b9e306e0
      Linus Torvalds authored
      Pull misc kbuild updates from Michal Marek:
       "Non-critical kbuild changes:
         - make coccicheck improvements, but no new semantic patches this time
         - make rpm improvements
         - make tar-pkg change to include the architecture in the filename.
           This is a deliberate incompatibility, but nobody has complained so
           far and it is useful if you build for different architectures.  It
           also matches what the deb-pkg and rpm-pkg targets produce.
         - kbuild documentation fix"
      * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        rpm-pkg: Remove pointless set -e statements
        rpm-pkg: Always regenerate the specfile
        rpm-pkg: Do not write to the parent directory
        rpm-pkg: Do not package the whole source directory
        buildtar: Add ARCH to the archive name
        Coccinelle: Fix patch output when coccicheck is used with M= and C=
        Coccinelle: Add support to the SPFLAGS variable
        Coccinelle: Cleanup the setting of the FLAGS and OPTIONS variables
        Coccinelle: Restore coccicheck verbosity in ONLINE mode (C=1 or C=2)
        scripts/package/Makefile: compare objtree with srctree instead of test KBUILD_OUTPUT
        doc: change example to existing Makefile fragment
        scripts/tags.sh: Add magic for OFFSET and DEFINE
    • Linus Torvalds's avatar
      Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 685e56d2
      Linus Torvalds authored
      Pull kconfig updates from Michal Marek:
       - use pkg-config to detect curses libraries
       - clean up the way curses headers are searched
       - Some randconfig fixes, of which one had to be reverted
       - KCONFIG_SEED for randconfig debugging
       - memuconfig memory leak plugged
       - menuconfig > breadcrumbs > navigation
       - xconfig compilation fix
       - Other minor fixes
      * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        kconfig: fix lists definition for C++
        Revert "kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG"
        kconfig: implement KCONFIG_PROBABILITY for randconfig
        kconfig: allow specifying the seed for randconfig
        kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG
        kconfig: do not override symbols already set
        kconfig: fix randconfig tristate detection
        kconfig/lxdialog: rationalise the include paths where to find {.n}curses{,w}.h
        menuconfig: Add "breadcrumbs" navigation aid
        menuconfig: Fix memory leak introduced by jump keys feature
        merge_config.sh: Avoid creating unnessary source softlinks
        kconfig: optionally use pkg-config to detect ncurses libs
        menuconfig: optionally use pkg-config to detect ncurses libs
    • Linus Torvalds's avatar
      Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 57c29bd3
      Linus Torvalds authored
      Pull kbuild changes from Michal Marek:
       "Kbuild commits for v3.10-rc1:
         - Fix make mrproper after mod/file2alias rework
         - Fix ld-option Makefile function
         - Rewrite headers_install to shell to drop Perl dependency.
        There are some more patches I have to look at, so I might send another
        pull request later.  Or just queue them for 3.11."
      * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        Fix cleaning in scripts/mod
        headers_install.pl: convert to headers_install.sh
        kbuild: fix ld-option function
    • Li Zefan's avatar
      menuconfig: fix NULL pointer dereference when searching a symbol · 383da76f
      Li Zefan authored
      Searching for PPC_EFIKA results in a segmentation fault, and it's
      because get_symbol_prop() returns NULL.
      In this case CONFIG_PPC_EFIKA is defined in arch/powerpc/platforms/
      52xx/Kconfig, so it won't be parsed if ARCH!=PPC, but menuconfig knows
      this symbol when it parses sound/soc/fsl/Kconfig:
          config SND_MPC52xx_SOC_EFIKA
              tristate "SoC AC97 Audio support for bbplan Efika and STAC9766"
              depends on PPC_EFIKA
      This bug was introduced by commit bcdedcc1
       ("menuconfig: print more
      info for symbol without prompts").
      Reported-and-tested-by: default avatarBorislav Petkov <bp@alien8.de>
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Tested-by: default avatarLibo Chen <libo.chen@huawei.com>
      Reviewed-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Bruce Allan's avatar
      e1000e: fix scheduling while atomic bug · 2a437cd3
      Bruce Allan authored
      A scheduling while atomic bug was introduced recently (by commit
      : "e1000e: cleanup USLEEP_RANGE checkpatch checks").
      Revert the particular instance of usleep_range() which causes the bug.
      Reported-by: default avatarMaarten Lankhorst <m.b.lankhorst@gmail.com>
      Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Davidlohr Bueso's avatar
      rwsem: no need for explicit signed longs · b5f54181
      Davidlohr Bueso authored
      Change explicit "signed long" declarations into plain "long" as suggested
      by Peter Hurley.
      Signed-off-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Reviewed-by: default avatarMichel Lespinasse <walken@google.com>
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      x86 rwsem: avoid taking slow path when stealing write lock · a31a369b
      Michel Lespinasse authored
      modify __down_write[_nested] and __down_write_trylock to grab the write
      lock whenever the active count is 0, even if there are queued waiters
      (they must be writers pending wakeup, since the active count is 0).
      Note that this is an optimization only; architectures without this
      optimization will still work fine:
      - __down_write() would take the slow path which would take the wait_lock
        and then try stealing the lock (as in the spinlocked rwsem implementation)
      - __down_write_trylock() would fail, but callers must be ready to deal
        with that - since there are some writers pending wakeup, they could
        have raced with us and obtained the lock before we steal it.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: do not block readers at head of queue if other readers are active · 25c39325
      Michel Lespinasse authored
      This change fixes a race condition where a reader might determine it
      needs to block, but by the time it acquires the wait_lock the rwsem has
      active readers and no queued waiters.
      In this situation the reader can run in parallel with the existing
      active readers; it does not need to block until the active readers
      Thanks to Peter Hurley for noticing this possible race.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: implement support for write lock stealing on the fastpath · fe6e674c
      Michel Lespinasse authored
      When we decide to wake up readers, we must first grant them as many read
      locks as necessary, and then actually wake up all these readers.  But in
      order to know how many read shares to grant, we must first count the
      readers at the head of the queue.  This might take a while if there are
      many readers, and we want to be protected against a writer stealing the
      lock while we're counting.  To that end, we grant the first reader lock
      before counting how many more readers are queued.
      We also require some adjustments to the wake_type semantics.
      RWSEM_WAKE_NO_ACTIVE used to mean that we had found the count to be
      RWSEM_WAITING_BIAS, in which case the rwsem was known to be free as
      nobody could steal it while we hold the wait_lock.  This doesn't make
      sense once we implement fastpath write lock stealing, so we now use
      RWSEM_WAKE_ANY in that case.
      Similarly, when rwsem_down_write_failed found that a read lock was
      active, it would use RWSEM_WAKE_READ_OWNED which signalled that new
      readers could be woken without checking first that the rwsem was
      available.  We can't do that anymore since the existing readers might
      release their read locks, and a writer could steal the lock before we
      wake up additional readers.  So, we have to use a new RWSEM_WAKE_READERS
      value to indicate we only want to wake readers, but we don't currently
      hold any read lock.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: simplify __rwsem_do_wake · 8cf5322c
      Michel Lespinasse authored
      This is mostly for cleanup value:
      - We don't need several gotos to handle the case where the first
        waiter is a writer. Two simple tests will do (and generate very
        similar code).
      - In the remainder of the function, we know the first waiter is a reader,
        so we don't have to double check that. We can use do..while loops
        to iterate over the readers to wake (generates slightly better code).
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: skip initial trylock in rwsem_down_write_failed · 9b0fc9c0
      Michel Lespinasse authored
      We can skip the initial trylock in rwsem_down_write_failed() if there
      are known active lockers already, thus saving one likely-to-fail
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: avoid taking wait_lock in rwsem_down_write_failed · a7d2c573
      Michel Lespinasse authored
      In rwsem_down_write_failed(), if there are active locks after we wake up
      (i.e.  the lock got stolen from us), skip taking the wait_lock and go
      back to sleep immediately.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    • Michel Lespinasse's avatar
      rwsem: use cmpxchg for trying to steal write lock · 5ede972d
      Michel Lespinasse authored
      Using rwsem_atomic_update to try stealing the write lock forced us to
      undo the adjustment in the failure path.  We can have simpler and faster
      code by using cmpxchg instead.
      Signed-off-by: default avatarMichel Lespinasse <walken@google.com>
      Reviewed-by: default avatarPeter Hurley <peter@hurleysoftware.com>
      Acked-by: default avatarDavidlohr Bueso <davidlohr.bueso@hp.com>
      Acked-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>