1. 27 Mar, 2012 10 commits
    • Linus Torvalds's avatar
      Merge tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 66f03c61
      Linus Torvalds authored
      Pull "ARM: device tree work" from Arnd Bergmann:
       "Most of these patches convert code from using static platform data to
        describing the hardware in the device tree.  This is only the first
        half of the changes for v3.4 because a lot of patches for this topic
        came in the last week before the merge window.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      Fix up trivial conflicts in arch/arm/mach-vexpress/{Kconfig,core.h}
      
      * tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (86 commits)
        Document: devicetree: add OF documents for arch-mmp
        ARM: dts: append DTS file of pxa168
        ARM: mmp: append OF support on pxa168
        ARM: mmp: enable rtc clk in pxa168
        i2c: pxa: add OF support
        serial: pxa: add OF support
        arm/dts: mt_ventoux: very basic support for TeeJet Mt.Ventoux board
        ARM: OMAP2+: Remove extra ifdefs for board-generic
        ARM: OMAP2+: Fix build error when only ARCH_OMAP2/3 or 4 is selected
        ASoC: DT: Add digital microphone binding to PAZ00 board.
        ARM: dt: Add ARM PMU to tegra*.dtsi
        ARM: at91: at91sam9x5cm/dt: add leds support
        ARM: at91: usb_a9g20/dt: add gpio-keys support
        ARM: at91: at91sam9m10g45ek/dt: add gpio-keys support
        ARM: at91: at91sam9m10g45ek/dt: add leds support
        ARM: at91: usb_a9g20/dt: add leds support
        ARM: at91/pio: add new PIO3 features
        ARM: at91: add sam9_smc.o to at91sam9x5 build
        ARM: at91/tc/clocksource: Add 32 bit variant to Timer Counter
        ARM: at91/tc: add device tree support to atmel_tclib
        ...
      66f03c61
    • Linus Torvalds's avatar
      Merge tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 34800598
      Linus Torvalds authored
      Pull "ARM: driver specific updates" from Arnd Bergmann:
       "These are all specific to some driver.  They are typically the
        platform side of a change in the drivers directory, such as adding a
        new driver or extending the interface to the platform.  In cases where
        there is no maintainer for the driver, or the maintainer prefers to
        have the platform changes in the same branch as the driver changes,
        the patches to the drivers are included as well.
      
        A much smaller set of driver updates that depend on other branches
        getting merged first will be sent later.
      
        The new export of tegra_chip_uid conflicts with other changes in
        fuse.c.  In rtc-sa1100.c, the global removal of IRQF_DISABLED
        conflicts with the cleanup of the interrupt handling of that driver.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      Fixed up aforementioned trivial conflicts.
      
      * tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (94 commits)
        ARM: SAMSUNG: change the name from s3c-sdhci to exynos4-sdhci
        mmc: sdhci-s3c: add platform data for the second capability
        ARM: SAMSUNG: support the second capability for samsung-soc
        ARM: EXYNOS: add support DMA for EXYNOS4X12 SoC
        ARM: EXYNOS: Add apb_pclk clkdev entry for mdma1
        ARM: EXYNOS: Enable MDMA driver
        regulator: Remove bq24022 regulator driver
        rtc: sa1100: add OF support
        pxa: magician/hx4700: Convert to gpio-regulator from bq24022
        ARM: OMAP3+: SmartReflex: fix error handling
        ARM: OMAP3+: SmartReflex: fix the use of debugfs_create_* API
        ARM: OMAP3+: SmartReflex: micro-optimization for sanity check
        ARM: OMAP3+: SmartReflex: misc cleanups
        ARM: OMAP3+: SmartReflex: move late_initcall() closer to its argument
        ARM: OMAP3+: SmartReflex: add missing platform_set_drvdata()
        ARM: OMAP3+: hwmod: add SmartReflex IRQs
        ARM: OMAP3+: SmartReflex: clear ERRCONFIG_VPBOUNDINTST only on a need
        ARM: OMAP3+: SmartReflex: Fix status masking in ERRCONFIG register
        ARM: OMAP3+: SmartReflex: Add a shutdown hook
        ARM: OMAP3+: SmartReflex Class3: disable errorgen before disable VP
        ...
      
      Conflicts:
      	arch/arm/mach-tegra/Makefile
      	arch/arm/mach-tegra/fuse.c
      	drivers/rtc/rtc-sa1100.c
      34800598
    • Linus Torvalds's avatar
      Merge tag 'rpmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 46b407ca
      Linus Torvalds authored
      Pull "remoteproc/rpmsg: new subsystem" from Arnd Bergmann:
       "This new subsystem provides a common way to talk to secondary
        processors on an SoC, e.g.  a DSP, GPU or service processor, using
        virtio as the transport.  In the long run, it should replace a few
        dozen vendor specific ways to do the same thing, which all never made
        it into the upstream kernel.  There is a broad agreement that rpmsg is
        the way to go here and several vendors have started working on
        replacing their own subsystems.
      
        Two branches each add one virtio protocol number.  Fortunately the
        numbers were agreed upon in advance, so there are only context
        changes.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      Fixed up trivial protocol number conflict due to the mentioned additions
      next to each other.
      
      * tag 'rpmsg' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (32 commits)
        remoteproc: cleanup resource table parsing paths
        remoteproc: remove the hardcoded vring alignment
        remoteproc/omap: remove the mbox_callback limitation
        remoteproc: remove the single rpmsg vdev limitation
        remoteproc: safer boot/shutdown order
        remoteproc: remoteproc_rpmsg -> remoteproc_virtio
        remoteproc: resource table overhaul
        rpmsg: fix build warning when dma_addr_t is 64-bit
        rpmsg: fix published buffer length in rpmsg_recv_done
        rpmsg: validate incoming message length before propagating
        rpmsg: fix name service endpoint leak
        remoteproc/omap: two Kconfig fixes
        remoteproc: make sure we're parsing a 32bit firmware
        remoteproc: s/big switch/lookup table/
        remoteproc: bail out if firmware has different endianess
        remoteproc: don't use virtio's weak barriers
        rpmsg: rename virtqueue_add_buf_gfp to virtqueue_add_buf
        rpmsg: depend on EXPERIMENTAL
        remoteproc: depend on EXPERIMENTAL
        rpmsg: add Kconfig menu
        ...
      
      Conflicts:
      	include/linux/virtio_ids.h
      46b407ca
    • Linus Torvalds's avatar
      Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 1bfecd93
      Linus Torvalds authored
      Pull "ARM: board specific updates" from Arnd Bergmann/Olof Johansson:
       "These changes are all specific to one board only.  We're trying to
        keep the number of board files low, but generally board level updates
        are ok on platforms that are working on moving towards DT based
        probing, which will eventually lead to removing them.
      
        The board-ams-delta.c board file gets a conflict between the removal
        of ams_delta_config and the addition of a lot of other data.  The
        Kconfig file has two changes in the same line, and in exynos, the
        power domain cleanup conflicts with the addition of the image sensor
        device.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
        [olof: Amended a fix for a mismerge to board-omap4panda.c]
        Signed-off-by: Olof Johansson <olof@lixom.net>"
      
      Fixed up some fairly trivial conflicts manually.
      
      * tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (82 commits)
        i.MX35-PDK: Add Camera support
        ARM : mx35: 3ds-board: add framebuffer device
        pxa/hx4700: Remove pcmcia platform_device structure
        ARM: pxa/hx4700: Reduce sleep mode battery discharge by 35%
        ARM: pxa/hx4700: Remove unwanted request for GPIO105
        ARM: EXYNOS: support Exynos4210-bus Devfreq driver on Nuri board
        ARM: EXYNOS: Register JPEG on nuri
        ARM: EXYNOS: Register JPEG on universal_c210
        ARM: S5PV210: Enable JPEG on SMDKV210
        ARM: S5PV210: Add JPEG board definition
        ARM: EXYNOS: Enable JPEG on Origen
        ARM: EXYNOS: Enable JPEG on SMDKV310
        ARM: EXYNOS: Add __init attribute to universal_camera_init()
        ARM: EXYNOS: Add __init attribute to nuri_camera_init()
        ARM: S5PV210: Enable FIMC on SMDKC110
        ARM: S5PV210: Enable FIMC on SMDKV210
        ARM: S5PV210: Enable MFC on SMDKC110
        ARM: S5PV210: Enable MFC on SMDKV210
        ARM: EXYNOS: Enable G2D on SMDKV310
        ARM: tegra: update defconfig
        ...
      1bfecd93
    • Linus Torvalds's avatar
      Merge tag 'soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 281b0539
      Linus Torvalds authored
      Pull "ARM: SoC specific updates" from Arnd Bergmann:
       "These changes are all specific to an soc family or the code for one
        soc.  Lots of work for Tegra3 this time, but also a lot of other
        platforms.  There will be another (smaller) set of soc patches later
        in the merge window for stuff that has dependencies on external trees
        or that was sent just before the merge window opened.
      
        The asoc tree added a few devices to the i.mx platform, which conflict
        with other devices added in the same place here.
      
        The tegra Makefile conflicts between a number of branches, mostly
        because of changes regarding localtimer.c, which was removed in the
        end.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      Fix up some trivial conflicts, including the mentioned Tegra Makefile.
      
      * tag 'soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (51 commits)
        ARM: EXYNOS: fix cycle count for periodic mode of clock event timers
        ARM: EXYNOS: add support JPEG
        ARM: EXYNOS: Add DMC1, allow PPMU access for DMC
        ARM: SAMSUNG: Correct MIPI-CSIS io memory resource definition
        ARM: SAMSUNG: fix __init attribute on regarding s3c_set_platdata()
        ARM: SAMSUNG: Add __init attribute to samsung_bl_set()
        ARM: S5PV210: Add usb otg phy control
        ARM: S3C64XX: Add usb otg phy control
        ARM: EXYNOS: Enable l2 configuration through device tree
        ARM: EXYNOS: remove useless code to save/restore L2
        ARM: EXYNOS: save L2 settings during bootup
        ARM: S5P: add L2 early resume code
        ARM: EXYNOS: Add support AFTR mode on EXYNOS4210
        ARM: mx35: Setup the AIPS registers
        ARM: mx5: Use common function for configuring AIPS
        ARM: mx3: Setup AIPS registers
        ARM: mx3: Let mx31 and mx35 enter in LPM mode in WFI
        ARM: defconfig: imx_v6_v7: build in REGULATOR_FIXED_VOLTAGE
        ARM: imx: update imx_v6_v7_defconfig
        ARM: tegra: Demote EMC clock inconsistency BUG to WARN
        ...
      281b0539
    • Linus Torvalds's avatar
      Merge tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 48d55441
      Linus Torvalds authored
      Pull "ARM: timer cleanup work" from Arnd Bergmann:
       "These are split out from the generic soc and driver updates because
        there was a lot of conflicting work by multiple people.  Marc Zyngier
        worked on simplifying the "localtimer" interfaces, and some of the
        platforms are touching the same code as they move to device tree based
        booting.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      * tag 'timer' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (61 commits)
        ARM: tegra: select USB_ULPI if USB is selected
        arm/tegra: pcie: fix return value of function
        ARM: ux500: fix compilation after local timer rework
        ARM: shmobile: remove additional __io() macro use
        ARM: local timers: make the runtime registration interface mandatory
        ARM: local timers: convert MSM to runtime registration interface
        ARM: local timers: convert exynos to runtime registration interface
        ARM: smp_twd: remove old local timer interface
        ARM: imx6q: convert to twd_local_timer_register() interface
        ARM: highbank: convert to twd_local_timer_register() interface
        ARM: ux500: convert to twd_local_timer_register() interface
        ARM: shmobile: convert to twd_local_timer_register() interface
        ARM: tegra: convert to twd_local_timer_register() interface
        ARM: plat-versatile: convert to twd_local_timer_register() interface
        ARM: OMAP4: convert to twd_local_timer_register() interface
        ARM: smp_twd: add device tree support
        ARM: smp_twd: add runtime registration support
        ARM: local timers: introduce a new registration interface
        ARM: smp_twd: make local_timer_stop a symbol instead of a #define
        ARM: mach-shmobile: default to no earlytimer
        ...
      48d55441
    • Linus Torvalds's avatar
      Merge tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · d61b7a57
      Linus Torvalds authored
      Pull "ARM: global cleanups" from Arnd Bergmann:
       "Quite a bit of code gets removed, and some stuff moved around, mostly
        the old samsung s3c24xx stuff.  There should be no functional changes
        in this series otherwise.  Some cleanups have dependencies on other
        arm-soc branches and will be sent in the second round.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      Fixed up trivial conflicts mainly due to #include's being changes on
      both sides.
      
      * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (121 commits)
        ep93xx: Remove unnecessary includes of ep93xx-regs.h
        ep93xx: Move EP93XX_SYSCON defines to SoC private header
        ep93xx: Move crunch code to mach-ep93xx directory
        ep93xx: Make syscon access functions private to SoC
        ep93xx: Configure GPIO ports in core code
        ep93xx: Move peripheral defines to local SoC header
        ep93xx: Convert the watchdog driver into a platform device.
        ep93xx: Use ioremap for backlight driver
        ep93xx: Move GPIO defines to gpio-ep93xx.h
        ep93xx: Don't use system controller defines in audio drivers
        ep93xx: Move PHYS_BASE defines to local SoC header file
        ARM: EXYNOS: Add clock register addresses for EXYNOS4X12 bus devfreq driver
        ARM: EXYNOS: add clock registers for exynos4x12-cpufreq
        PM / devfreq: update the name of EXYNOS clock registers that were omitted
        PM / devfreq: update the name of EXYNOS clock register
        ARM: EXYNOS: change the prefix S5P_ to EXYNOS4_ for clock
        ARM: EXYNOS: use static declaration on regarding clock
        ARM: EXYNOS: replace clock.c for other new EXYNOS SoCs
        ARM: OMAP2+: Fix build error after merge
        ARM: S3C24XX: remove call to s3c24xx_setup_clocks
        ...
      d61b7a57
    • Linus Torvalds's avatar
      Merge tag 'maintainers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 18d9946b
      Linus Torvalds authored
      Pull "ARM: subarch maintainer updates" from Arnd Bergmann:
       "This is a collection of updates to the MAINTAINERS file, separated out
        mostly to give an overview of what has changed regarding who does
        what.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      * tag 'maintainers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: tegra: update main repo and add patchwork
        MAINTAINERS: update MAINTAINERS email entry
        MAINTAINERS: update maintainer entry for pxa/hx4700
        MAINTAINERS: ARM: tegra: update Stephen's email address
        MAINTAINERS: add TI DaVinci git tree information
        MAINTAINERS: mark TI DaVinci list as "moderated"
        MAINTAINERS: remove arch/arm/mach-mx*/ from IMX entry
      18d9946b
    • Linus Torvalds's avatar
      Merge tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · c8bc5e39
      Linus Torvalds authored
      Pull "ARM: Non-critical bug fixes" from Ardn Bergmann:
       "Simple bug fixes that were not considered important enough for
        inclusion into 3.3.  One bug fix was originally intended for 3.3 but
        accidentally got missed, but is not marked stable because it should
        only get backported once later fixes also make it into v3.4.
      
        Signed-off-by: Arnd Bergmann <arnd@arndb.de>"
      
      * tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (66 commits)
        iomux-mx25.h slew rate adjusted for LCD __LD pins
        ARM: davinci: DA850: move da850_register_pm to .init.text
        ARM: davinci: cpufreq: fix compiler warning
        ARM: OMAP2+: Fix build for omap4 only builds with missing include of linux/bug.h
        ARM: OMAP2+: Fix section warnings for hsmmc_init_one
        ARM: OMAP2+: Fix build issues with missing include of linux/bug.h
        ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance
        ARM: OMAP3+: PM: VP: fix integer truncation error
        ARM: OMAP2+: PM: fix wakeupgen warning when hotplug disabled
        ARM: OMAP2+: PM: fix section mismatch with omap2_init_processor_devices()
        ARM: OMAP2: Fix section warning for n8x0 when CONFIG_MMC_OMAP is not set
        ARM: OMAP2+: Fix omap24xx_io_desc warning if SoC subtypes are not selected
        ARM: OMAP1: Fix section mismatch for omap1_init_early()
        ARM: OMAP1: Fix typo in lcd_dma.c
        ARM: OMAP: mailbox: trivial whitespace fix
        ARM: OMAP: Remove definition cpu_is_omap4430()
        ARM: OMAP2+: included some headers twice
        ARM: OMAP: clock.c: included linux/debugfs.h twice
        ARM: OMAP: don't build hwspinlock in vain
        ARM: OMAP2+: ads7846_init: put gpio_pendown into pdata if it's provided
        ...
      c8bc5e39
    • Arnd Bergmann's avatar
      Merge tag 'asoc-3.4' of... · a754a87c
      Arnd Bergmann authored
      Merge tag 'asoc-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into next/boards
      
      The asoc branch that was already merged into v3.4 contains some
      board-level changes that conflict with patches we already have
      here, so pull in that branch to resolve the conflicts.
      
      Conflicts:
      	arch/arm/mach-imx/mach-imx27_visstrim_m10.c
      	arch/arm/mach-omap2/board-omap4panda.c
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      [olof: Amended fix for mismerge as reported by Kevin Hilman]
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      a754a87c
  2. 24 Mar, 2012 18 commits
    • Linus Torvalds's avatar
      Merge tag 'stable/for-linus-3.4-tag-two' of... · e22057c8
      Linus Torvalds authored
      Merge tag 'stable/for-linus-3.4-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      Pull more xen updates from Konrad Rzeszutek Wilk:
       "One tiny feature that accidentally got lost in the initial git pull:
         * Add fast-EOI acking of interrupts (clear a bit instead of
           hypercall)
        And bug-fixes:
         * Fix CPU bring-up code missing a call to notify other subsystems.
         * Fix reading /sys/hypervisor even if PVonHVM drivers are not loaded.
         * In Xen ACPI processor driver: remove too verbose WARN messages, fix
           up the Kconfig dependency to be a module by default, and add
           dependency on CPU_FREQ.
         * Disable CPU frequency drivers from loading when booting under Xen
           (as we want the Xen ACPI processor to be used instead).
         * Cleanups in tmem code."
      
      * tag 'stable/for-linus-3.4-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/acpi: Fix Kconfig dependency on CPU_FREQ
        xen: initialize platform-pci even if xen_emul_unplug=never
        xen/smp: Fix bringup bug in AP code.
        xen/acpi: Remove the WARN's as they just create noise.
        xen/tmem: cleanup
        xen: support pirq_eoi_map
        xen/acpi-processor: Do not depend on CPU frequency scaling drivers.
        xen/cpufreq: Disable the cpu frequency scaling drivers from loading.
        provide disable_cpufreq() function to disable the API.
      e22057c8
    • Rik van Riel's avatar
      Fix potential endless loop in kswapd when compaction is not enabled · 496b919b
      Rik van Riel authored
      We should only test compaction_suitable if the kernel is built with
      CONFIG_COMPACTION, otherwise the stub compaction_suitable function will
      always return COMPACT_SKIPPED and send kswapd into an infinite loop.
      Reported-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarRik van Riel <riel@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      496b919b
    • Linus Torvalds's avatar
      Merge tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 250f6715
      Linus Torvalds authored
      Pull <linux/device.h> avoidance patches from Paul Gortmaker:
       "Nearly every subsystem has some kind of header with a proto like:
      
      	void foo(struct device *dev);
      
        and yet there is no reason for most of these guys to care about the
        sub fields within the device struct.  This allows us to significantly
        reduce the scope of headers including headers.  For this instance, a
        reduction of about 40% is achieved by replacing the include with the
        simple fact that the device is some kind of a struct.
      
        Unlike the much larger module.h cleanup, this one is simply two
        commits.  One to fix the implicit <linux/device.h> users, and then one
        to delete the device.h includes from the linux/include/ dir wherever
        possible."
      
      * tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        device.h: audit and cleanup users in main include dir
        device.h: cleanup users outside of linux/include (C files)
      250f6715
    • Linus Torvalds's avatar
      Merge tag 'module-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · 11bcb328
      Linus Torvalds authored
      Pull cleanup of fs/ and lib/ users of module.h from Paul Gortmaker:
       "Fix up files in fs/ and lib/ dirs to only use module.h if they really
        need it.
      
        These are trivial in scope vs the work done previously.  We now have
        things where any few remaining cleanups can be farmed out to arch or
        subsystem maintainers, and I have done so when possible.  What is
        remaining here represents the bits that don't clearly lie within a
        single arch/subsystem boundary, like the fs dir and the lib dir.
      
        Some duplicate includes arising from overlapping fixes from
        independent subsystem maintainer submissions are also quashed."
      
      Fix up trivial conflicts due to clashes with other include file cleanups
      (including some due to the previous bug.h cleanup pull).
      
      * tag 'module-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        lib: reduce the use of module.h wherever possible
        fs: reduce the use of module.h wherever possible
        includecheck: delete any duplicate instances of module.h
      11bcb328
    • Linus Torvalds's avatar
      Merge tag 'bug-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · ed2d265d
      Linus Torvalds authored
      Pull <linux/bug.h> cleanup from Paul Gortmaker:
       "The changes shown here are to unify linux's BUG support under the one
        <linux/bug.h> file.  Due to historical reasons, we have some BUG code
        in bug.h and some in kernel.h -- i.e.  the support for BUILD_BUG in
        linux/kernel.h predates the addition of linux/bug.h, but old code in
        kernel.h wasn't moved to bug.h at that time.  As a band-aid, kernel.h
        was including <asm/bug.h> to pseudo link them.
      
        This has caused confusion[1] and general yuck/WTF[2] reactions.  Here
        is an example that violates the principle of least surprise:
      
            CC      lib/string.o
            lib/string.c: In function 'strlcat':
            lib/string.c:225:2: error: implicit declaration of function 'BUILD_BUG_ON'
            make[2]: *** [lib/string.o] Error 1
            $
            $ grep linux/bug.h lib/string.c
            #include <linux/bug.h>
            $
      
        We've included <linux/bug.h> for the BUG infrastructure and yet we
        still get a compile fail! [We've not kernel.h for BUILD_BUG_ON.] Ugh -
        very confusing for someone who is new to kernel development.
      
        With the above in mind, the goals of this changeset are:
      
        1) find and fix any include/*.h files that were relying on the
           implicit presence of BUG code.
        2) find and fix any C files that were consuming kernel.h and hence
           relying on implicitly getting some/all BUG code.
        3) Move the BUG related code living in kernel.h to <linux/bug.h>
        4) remove the asm/bug.h from kernel.h to finally break the chain.
      
        During development, the order was more like 3-4, build-test, 1-2.  But
        to ensure that git history for bisect doesn't get needless build
        failures introduced, the commits have been reorderd to fix the problem
        areas in advance.
      
      	[1]  https://lkml.org/lkml/2012/1/3/90
      	[2]  https://lkml.org/lkml/2012/1/17/414"
      
      Fix up conflicts (new radeon file, reiserfs header cleanups) as per Paul
      and linux-next.
      
      * tag 'bug-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        kernel.h: doesn't explicitly use bug.h, so don't include it.
        bug: consolidate BUILD_BUG_ON with other bug code
        BUG: headers with BUG/BUG_ON etc. need linux/bug.h
        bug.h: add include of it to various implicit C users
        lib: fix implicit users of kernel.h for TAINT_WARN
        spinlock: macroize assert_spin_locked to avoid bug.h dependency
        x86: relocate get/set debugreg fcns to include/asm/debugreg.
      ed2d265d
    • Konrad Rzeszutek Wilk's avatar
      xen/acpi: Fix Kconfig dependency on CPU_FREQ · df7a3ee2
      Konrad Rzeszutek Wilk authored
      The functions: "acpi_processor_*" sound like they depend on CONFIG_ACPI_PROCESSOR
      but in reality they are exposed when CONFIG_CPU_FREQ=[y|m]. As such
      update the Kconfig to have this dependency and fix compile issues:
      
      ERROR: "acpi_processor_unregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_notify_smm" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_register_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      ERROR: "acpi_processor_preregister_performance" [drivers/xen/xen-acpi-processor.ko] undefined!
      
      Note: We still need the CONFIG_ACPI
      Reported-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      df7a3ee2
    • Arnd Bergmann's avatar
      Merge tag 'regulator-3.4' of... · 511f1cb6
      Arnd Bergmann authored
      Merge tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator into next/drivers
      
      The pxa regulator branch removes the bq24022 driver, while a lot of
      other regulator drivers got added in the regulator tree. This
      resolves the trivial conflicts by merging in the regulator patches
      that are already merged into v3.4.
      
      Conflicts:
      	drivers/regulator/Kconfig
      	drivers/regulator/Makefile
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      511f1cb6
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl · f1d38e42
      Linus Torvalds authored
      Pull sysctl updates from Eric Biederman:
      
       - Rewrite of sysctl for speed and clarity.
      
         Insert/remove/Lookup in sysctl are all now O(NlogN) operations, and
         are no longer bottlenecks in the process of adding and removing
         network devices.
      
         sysctl is now focused on being a filesystem instead of system call
         and the code can all be found in fs/proc/proc_sysctl.c.  Hopefully
         this means the code is now approachable.
      
         Much thanks is owed to Lucian Grinjincu for keeping at this until
         something was found that was usable.
      
       - The recent proc_sys_poll oops found by the fuzzer during hibernation
         is fixed.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl: (36 commits)
        sysctl: protect poll() in entries that may go away
        sysctl: Don't call sysctl_follow_link unless we are a link.
        sysctl: Comments to make the code clearer.
        sysctl: Correct error return from get_subdir
        sysctl: An easier to read version of find_subdir
        sysctl: fix memset parameters in setup_sysctl_set()
        sysctl: remove an unused variable
        sysctl: Add register_sysctl for normal sysctl users
        sysctl: Index sysctl directories with rbtrees.
        sysctl: Make the header lists per directory.
        sysctl: Move sysctl_check_dups into insert_header
        sysctl: Modify __register_sysctl_paths to take a set instead of a root and an nsproxy
        sysctl: Replace root_list with links between sysctl_table_sets.
        sysctl: Add sysctl_print_dir and use it in get_subdir
        sysctl: Stop requiring explicit management of sysctl directories
        sysctl: Add a root pointer to ctl_table_set
        sysctl: Rewrite proc_sys_readdir in terms of first_entry and next_entry
        sysctl: Rewrite proc_sys_lookup introducing find_entry and lookup_entry.
        sysctl: Normalize the root_table data structure.
        sysctl: Factor out insert_header and erase_header
        ...
      f1d38e42
    • Linus Torvalds's avatar
      Merge tag 'amd64-edac-updates-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · dae430c6
      Linus Torvalds authored
      Pull AMD64 EDAC fixes from Borislav Petkov:
       "A bunch of fixes/updates for the AMD side of EDAC including
      
         * MCE decoding updates
         * tree-wide EDAC sweep making pci_device_ids __devinitconst
         * Scrub rate API correction
         * two amd64_edac corrections for K8 boxes and sysfs csrow nodes"
      
      * tag 'amd64-edac-updates-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        MCE, AMD: Constify error tables
        MCE, AMD: Correct bank 5 error signatures
        MCE, AMD: Rework NB MCE signatures
        MCE, AMD: Correct VB data error description
        MCE, AMD: Correct ucode patch buffer description
        MCE, AMD: Correct some MC0 error types
        EDAC: Make pci_device_id tables __devinitconst.
        EDAC: Correct scrub rate API
        amd64_edac: Fix K8 revD and later chip select sizes
        amd64_edac: Fix missing csrows sysfs nodes
      dae430c6
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · cf821923
      Linus Torvalds authored
      Pull cpufreq updates for 3.4 from Dave Jones: new drivers and some fixes.
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        provide disable_cpufreq() function to disable the API.
        EXYNOS5250: Add support cpufreq for EXYNOS5250
        EXYNOS4X12: Add support cpufreq for EXYNOS4X12
        [CPUFREQ] CPUfreq ondemand: update sampling rate without waiting for next sampling
        [CPUFREQ] Add S3C2416/S3C2450 cpufreq driver
        [CPUFREQ] Fix exposure of ARM_EXYNOS4210_CPUFREQ
        [CPUFREQ] EXYNOS4210: update the name of EXYNOS clock register
        [CPUFREQ] EXYNOS: Initialize locking_frequency with initial frequency
        [CPUFREQ] s3c64xx: Fix mis-cherry pick of VDDINT
      
      Fix up trivial conflicts in Kconfig and Makefile due to just changes
      next to each other (OMAP2PLUS changes vs some new EXYNOS cpufreq
      drivers).
      cf821923
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq · 4416b0ea
      Linus Torvalds authored
      Pull cpufreq fixes from Dave Jones:
       "I meant to get some of these in for 3.3 final, but left things too
        late, so I've got two trees this time."
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
        cpufreq: OMAP: specify range for voltage scaling
        cpufreq: OMAP: scale voltage along with frequency
        cpufreq: OMAP driver depends CPUfreq tables
      4416b0ea
    • Linus Torvalds's avatar
      Merge branch 'pcmcia' of git://git.linaro.org/people/rmk/linux-arm · 24613ff9
      Linus Torvalds authored
      Pull #3 ARM updates from Russell King:
       "This adds gpio support to soc_common, allowing an amount of code to be
        deleted from each PCMCIA socket driver for the PXA/SA11x0 SoCs."
      
      * 'pcmcia' of git://git.linaro.org/people/rmk/linux-arm:
        PCMCIA: sa1111: rename sa1111 socket drivers to have sa1111_ prefix.
        PCMCIA: make lubbock socket driver part of sa1111_cs
        PCMCIA: add Kconfig control for building sa11xx_base.c
        PCMCIA: sa1111: jornada720: no need to disable IRQs around sa1111_set_io
        PCMCIA: sa1111: pass along sa1111_pcmcia_configure_socket() failure code
        PCMCIA: soc_common: remove explicit wrprot initialization in socket drivers
        PCMCIA: soc_common: remove soc_pcmcia_*_irqs functions
        PCMCIA: sa11x0: h3600: convert to use new irq/gpio management
        PCMCIA: sa11x0: simpad: convert to use new irq/gpio management
        PCMCIA: sa11x0: shannon: convert to use new irq/gpio management
        PCMCIA: sa11x0: nanoengine: convert reset handling to use GPIO subsystem
        PCMCIA: sa11x0: nanoengine: convert to use new irq/gpio management
        PCMCIA: sa11x0: cerf: convert reset handling to use GPIO subsystem
        PCMCIA: sa11x0: cerf: convert to use new irq/gpio management
        PCMCIA: sa11x0: assabet: convert to use new irq/gpio management
        PCMCIA: sa1111: use new per-socket irq/gpio infrastructure
        PCMCIA: pxa: convert PXA socket drivers to use new irq/gpio management
        PCMCIA: soc_common: add GPIO support for card status signals
        PCMCIA: soc_common: move common initialization into soc_common
      24613ff9
    • Linus Torvalds's avatar
      Merge branch 'amba' of git://git.linaro.org/people/rmk/linux-arm · 0d19eac1
      Linus Torvalds authored
      Pull #2 ARM updates from Russell King:
       "Further ARM AMBA primecell updates which aren't included directly in
        the previous commit.  I wanted to keep these separate as they're
        touching stuff outside arch/arm/."
      
      * 'amba' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7362/1: AMBA: Add module_amba_driver() helper macro for amba_driver
        ARM: 7335/1: mach-u300: do away with MMC config files
        ARM: 7280/1: mmc: mmci: Cache MMCICLOCK and MMCIPOWER register
        ARM: 7309/1: realview: fix unconnected interrupts on EB11MP
        ARM: 7230/1: mmc: mmci: Fix PIO read for small SDIO packets
        ARM: 7227/1: mmc: mmci: Prepare for SDIO before setting up DMA job
        ARM: 7223/1: mmc: mmci: Fixup use of runtime PM and use autosuspend
        ARM: 7221/1: mmc: mmci: Change from using legacy suspend
        ARM: 7219/1: mmc: mmci: Change vdd_handler to a generic ios_handler
        ARM: 7218/1: mmc: mmci: Provide option to configure bus signal direction
        ARM: 7217/1: mmc: mmci: Put power register deviations in variant data
        ARM: 7216/1: mmc: mmci: Do not release spinlock in request_end
        ARM: 7215/1: mmc: mmci: Increase max_segs from 16 to 128
      0d19eac1
    • Linus Torvalds's avatar
      Merge branch 'for-armsoc' of git://git.linaro.org/people/rmk/linux-arm · 56c10bf8
      Linus Torvalds authored
      Pull #1 ARM updates from Russell King:
       "This one covers stuff which Arnd is waiting for me to push, as this is
        shared between both our trees and probably other trees elsewhere.
      
        Essentially, this contains:
         - AMBA primecell device initializer updates - mostly shrinking the
           size of the device declarations in platform code to something more
           reasonable.
         - Getting rid of the NO_IRQ crap from AMBA primecell stuff.
         - Nicolas' idle cleanups.  This in combination with the restart
           cleanups from the last merge window results in a great many
           mach/system.h files being deleted."
      
      Yay: ~80 files, ~2000 lines deleted.
      
      * 'for-armsoc' of git://git.linaro.org/people/rmk/linux-arm: (60 commits)
        ARM: remove disable_fiq and arch_ret_to_user macros
        ARM: make entry-macro.S depend on !MULTI_IRQ_HANDLER
        ARM: rpc: make default fiq handler run-time installed
        ARM: make arch_ret_to_user macro optional
        ARM: amba: samsung: use common amba device initializers
        ARM: amba: spear: use common amba device initializers
        ARM: amba: nomadik: use common amba device initializers
        ARM: amba: u300: use common amba device initializers
        ARM: amba: lpc32xx: use common amba device initializers
        ARM: amba: netx: use common amba device initializers
        ARM: amba: bcmring: use common amba device initializers
        ARM: amba: ep93xx: use common amba device initializers
        ARM: amba: omap2: use common amba device initializers
        ARM: amba: integrator: use common amba device initializers
        ARM: amba: realview: get rid of private platform amba_device initializer
        ARM: amba: versatile: get rid of private platform amba_device initializer
        ARM: amba: vexpress: get rid of private platform amba_device initializer
        ARM: amba: provide common initializers for static amba devices
        ARM: amba: make use of -1 IRQs warn
        ARM: amba: u300: get rid of NO_IRQ initializers
        ...
      56c10bf8
    • Linus Torvalds's avatar
      Merge tag 'for-3.4' of git://openrisc.net/jonas/linux · bab2d8c6
      Linus Torvalds authored
      Pull OpenRISC changes for 3.4 from Jonas Bonn:
       "This series for the OpenRISC architecture consists of mostly trivial
        fixups.  The most interesting bits of the series are:
      
        * A fix to the timer code whereby the shortest trigger period is set
          to 100 cycles; previously, it was possible to set this to 1 cycle,
          but by the time the register was written, that time had already
          passed and the timer interrupt would not go off until the cycle
          counter had gone a full cycle.
      
        * Allowing a device tree binary to be passed in to the kernel from
          u-boot.  The OpenRISC architecture has been recently merged into
          upstream u-boot, so this change gets OpenRISC Linux into sync with
          that project."
      
      * tag 'for-3.4' of git://openrisc.net/jonas/linux:
        OpenRISC: Remove memory_start/end prototypes
        openrisc: remove semicolon from KSTK_ defs
        openrisc: sanitize use of orig_gpr11
        openrisc: fix virt_addr_valid
        OpenRISC: Export dump_stack()
        OpenRISC: Select GENERIC_ATOMIC64
        openrisc: Set shortest clock event to 100 ticks
        openrisc: included linux/thread_info.h twice
        OpenRISC: Use set_current_blocked() and block_sigmask()
        OpenRISC: Don't mask signals if we fail to setup signal stack
        OpenRISC: No need to reset handler if SA_ONESHOT
        OpenRISC: Don't reimplement force_sigsegv()
        openrisc: enable passing of flattened device tree pointer
        arch/openrisc/mm/init.c: trivial: use BUG_ON
      bab2d8c6
    • Linus Torvalds's avatar
      Merge tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · 0e65ae09
      Linus Torvalds authored
      Pull miscellaneous Itanium patches from Tony Luck.
      
      The conflicts in arch/ia64/hp/sim/simserial.c were due to patches to
      simserial that had alredy been included (with lots of further cleanups)
      in the serial tree.
      
      * tag 'ia64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        Documentation/kernel-parameters: remove inttest parameter
        [IA64] Fix ISA IRQ trigger model and polarity setting
        [IA64] Fix a couple of warnings for EXPORT_SYMBOL
        [IA64] Check return from device_register() in cx_device_register()
        [IA64] Fix warning from machine_kexec.c
        [IA64] simserial, bail out when request_irq fails
        [IA64] hpsim, initialize chip for assigned irqs
        [IA64] simserial, include some headers
        [IA64] hpsim, fix SAL handling in fw-emu
        [IA64] genirq fixup for SGI/SN
        [IA64] disable interrupts when exiting from ia64_mca_cmc_int_handler()
      0e65ae09
    • Russell King's avatar
      Merge branch 'mmci' into amba · bba1594d
      Russell King authored
      bba1594d
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2fb9e96c
      Linus Torvalds authored
      Pull additional x86 fixes from Peter Anvin:
       - address a long-standing bug related to when a kernel-spawned process
         gets a signal on an i386 kernel compiled without CONFIG_VM86.
      
       - fix the newly introduced build warning in arch/x86/boot.
      
       - fix a typo in the i386 system call table which affects building some
         libcs.
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86-32: Fix endless loop when processing signals for kernel tasks
        x86, boot: Correct CFLAGS for hostprogs
        x86-32: Fix typo for mq_getsetattr in syscall table
      2fb9e96c
  3. 23 Mar, 2012 12 commits
    • Linus Torvalds's avatar
      Merge branch 'akpm' (Andrew's patch-bomb) · 8e3ade25
      Linus Torvalds authored
      Merge second batch of patches from Andrew Morton:
       - various misc things
       - core kernel changes to prctl, exit, exec, init, etc.
       - kernel/watchdog.c updates
       - get_maintainer
       - MAINTAINERS
       - the backlight driver queue
       - core bitops code cleanups
       - the led driver queue
       - some core prio_tree work
       - checkpatch udpates
       - largeish crc32 update
       - a new poll() feature for the v4l guys
       - the rtc driver queue
       - fatfs
       - ptrace
       - signals
       - kmod/usermodehelper updates
       - coredump
       - procfs updates
      
      * emailed from Andrew Morton <akpm@linux-foundation.org>: (141 commits)
        seq_file: add seq_set_overflow(), seq_overflow()
        proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate().
        procfs: speed up /proc/pid/stat, statm
        procfs: add num_to_str() to speed up /proc/stat
        proc: speed up /proc/stat handling
        fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static
        coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP
        coredump: remove VM_ALWAYSDUMP flag
        kmod: make __request_module() killable
        kmod: introduce call_modprobe() helper
        usermodehelper: ____call_usermodehelper() doesn't need do_exit()
        usermodehelper: kill umh_wait, renumber UMH_* constants
        usermodehelper: implement UMH_KILLABLE
        usermodehelper: introduce umh_complete(sub_info)
        usermodehelper: use UMH_WAIT_PROC consistently
        signal: zap_pid_ns_processes: s/SEND_SIG_NOINFO/SEND_SIG_FORCED/
        signal: oom_kill_task: use SEND_SIG_FORCED instead of force_sig()
        signal: cosmetic, s/from_ancestor_ns/force/ in prepare_signal() paths
        signal: give SEND_SIG_FORCED more power to beat SIGNAL_UNKILLABLE
        Hexagon: use set_current_blocked() and block_sigmask()
        ...
      8e3ade25
    • KAMEZAWA Hiroyuki's avatar
      seq_file: add seq_set_overflow(), seq_overflow() · e075f591
      KAMEZAWA Hiroyuki authored
      It is undocumented but a seq_file's overflow state is indicated by
      m->count == m->size.  Add seq_set_overflow() and seq_overflow() to
      set/check overflow status explicitly.
      
      Based on an idea from Eric Dumazet.
      
      [akpm@linux-foundation.org: tweak code comment]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e075f591
    • Pravin B Shelar's avatar
      proc-ns: use d_set_d_op() API to set dentry ops in proc_ns_instantiate(). · 1b26c9b3
      Pravin B Shelar authored
      The namespace cleanup path leaks a dentry which holds a reference count
      on a network namespace.  Keeping that network namespace from being freed
      when the last user goes away.  Leaving things like vlan devices in the
      leaked network namespace.
      
      If you use ip netns add for much real work this problem becomes apparent
      pretty quickly.  It light testing the problem hides because frequently
      you simply don't notice the leak.
      
      Use d_set_d_op() so that DCACHE_OP_* flags are set correctly.
      
      This issue exists back to 3.0.
      Acked-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Reported-by: default avatarJustin Pettit <jpettit@nicira.com>
      Signed-off-by: default avatarPravin B Shelar <pshelar@nicira.com>
      Signed-off-by: default avatarJesse Gross <jesse@nicira.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1b26c9b3
    • KAMEZAWA Hiroyuki's avatar
      procfs: speed up /proc/pid/stat, statm · bda7bad6
      KAMEZAWA Hiroyuki authored
      Process accounting applications as top, ps visit some files under
      /proc/<pid>.  With seq_put_decimal_ull(), we can optimize /proc/<pid>/stat
      and /proc/<pid>/statm files.
      
      This patch adds
        - seq_put_decimal_ll() for signed values.
        - allow delimiter == 0.
        - convert seq_printf() to seq_put_decimal_ull/ll in /proc/stat, statm.
      
      Test result on a system with 2000+ procs.
      
      Before patch:
        [kamezawa@bluextal test]$ top -b -n 1 | wc -l
        2223
        [kamezawa@bluextal test]$ time top -b -n 1 > /dev/null
      
        real    0m0.675s
        user    0m0.044s
        sys     0m0.121s
      
        [kamezawa@bluextal test]$ time ps -elf > /dev/null
      
        real    0m0.236s
        user    0m0.056s
        sys     0m0.176s
      
      After patch:
        kamezawa@bluextal ~]$ time top -b -n 1 > /dev/null
      
        real    0m0.657s
        user    0m0.052s
        sys     0m0.100s
      
        [kamezawa@bluextal ~]$ time ps -elf > /dev/null
      
        real    0m0.198s
        user    0m0.050s
        sys     0m0.145s
      
      Considering top, ps tend to scan /proc periodically, this will reduce cpu
      consumption by top/ps to some extent.
      
      [akpm@linux-foundation.org: checkpatch fixes]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bda7bad6
    • KAMEZAWA Hiroyuki's avatar
      procfs: add num_to_str() to speed up /proc/stat · 1ac101a5
      KAMEZAWA Hiroyuki authored
      == stat_check.py
      num = 0
      with open("/proc/stat") as f:
              while num < 1000 :
                      data = f.read()
                      f.seek(0, 0)
                      num = num + 1
      ==
      
      perf shows
      
          20.39%  stat_check.py  [kernel.kallsyms]    [k] format_decode
          13.41%  stat_check.py  [kernel.kallsyms]    [k] number
          12.61%  stat_check.py  [kernel.kallsyms]    [k] vsnprintf
          10.85%  stat_check.py  [kernel.kallsyms]    [k] memcpy
           4.85%  stat_check.py  [kernel.kallsyms]    [k] radix_tree_lookup
           4.43%  stat_check.py  [kernel.kallsyms]    [k] seq_printf
      
      This patch removes most of calls to vsnprintf() by adding num_to_str()
      and seq_print_decimal_ull(), which prints decimal numbers without rich
      functions provided by printf().
      
      On my 8cpu box.
      == Before patch ==
      [root@bluextal test]# time ./stat_check.py
      
      real    0m0.150s
      user    0m0.026s
      sys     0m0.121s
      
      == After patch ==
      [root@bluextal test]# time ./stat_check.py
      
      real    0m0.055s
      user    0m0.022s
      sys     0m0.030s
      
      [akpm@linux-foundation.org: remove incorrect comment, use less statck in num_to_str(), move comment from .h to .c, simplify seq_put_decimal_ull()]
      [andrea@betterlinux.com: avoid breaking the ABI in /proc/stat]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: default avatarAndrea Righi <andrea@betterlinux.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Glauber Costa <glommer@parallels.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Turner <pjt@google.com>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1ac101a5
    • Eric Dumazet's avatar
      proc: speed up /proc/stat handling · 59a32e2c
      Eric Dumazet authored
      On a typical 16 cpus machine, "cat /proc/stat" gives more than 4096 bytes,
      and is slow :
      
        # strace -T -o /tmp/STRACE cat /proc/stat | wc -c
        5826
        # grep "cpu " /tmp/STRACE
        read(0, "cpu  1949310 19 2144714 12117253"..., 32768) = 5826 <0.001504>
      
      Thats partly because show_stat() must be called twice since initial
      buffer size is too small (4096 bytes for less than 32 possible cpus)
      
      Fix this by :
      
       1) Taking into account nr_irqs in the initial buffer sizing.
      
       2) Using ksize() to allow better filling of initial buffer.
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Cc: Glauber Costa <glommer@parallels.com>
      Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Paul Turner <pjt@google.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      59a32e2c
    • Djalal Harouni's avatar
      fs/proc/kcore.c: make get_sparsemem_vmemmap_info() static · b908243c
      Djalal Harouni authored
      get_sparsemem_vmemmap_info() is only used inside fs/proc/kcore.c
      Signed-off-by: default avatarDjalal Harouni <tixxdz@opendz.org>
      Reviewed-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b908243c
    • Jason Baron's avatar
      coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP · accb61fe
      Jason Baron authored
      Since we no longer need the VM_ALWAYSDUMP flag, let's use the freed bit
      for 'VM_NODUMP' flag.  The idea is is to add a new madvise() flag:
      MADV_DONTDUMP, which can be set by applications to specifically request
      memory regions which should not dump core.
      
      The specific application I have in mind is qemu: we can add a flag there
      that wouldn't dump all of guest memory when qemu dumps core.  This flag
      might also be useful for security sensitive apps that want to absolutely
      make sure that parts of memory are not dumped.  To clear the flag use:
      MADV_DODUMP.
      
      [akpm@linux-foundation.org: s/MADV_NODUMP/MADV_DONTDUMP/, s/MADV_CLEAR_NODUMP/MADV_DODUMP/, per Roland]
      [akpm@linux-foundation.org: fix up the architectures which broke]
      Signed-off-by: default avatarJason Baron <jbaron@redhat.com>
      Acked-by: default avatarRoland McGrath <roland@hack.frob.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Matt Turner <mattst88@gmail.com>
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
      Cc: Helge Deller <deller@gmx.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      accb61fe
    • Jason Baron's avatar
      coredump: remove VM_ALWAYSDUMP flag · 909af768
      Jason Baron authored
      The motivation for this patchset was that I was looking at a way for a
      qemu-kvm process, to exclude the guest memory from its core dump, which
      can be quite large.  There are already a number of filter flags in
      /proc/<pid>/coredump_filter, however, these allow one to specify 'types'
      of kernel memory, not specific address ranges (which is needed in this
      case).
      
      Since there are no more vma flags available, the first patch eliminates
      the need for the 'VM_ALWAYSDUMP' flag.  The flag is used internally by
      the kernel to mark vdso and vsyscall pages.  However, it is simple
      enough to check if a vma covers a vdso or vsyscall page without the need
      for this flag.
      
      The second patch then replaces the 'VM_ALWAYSDUMP' flag with a new
      'VM_NODUMP' flag, which can be set by userspace using new madvise flags:
      'MADV_DONTDUMP', and unset via 'MADV_DODUMP'.  The core dump filters
      continue to work the same as before unless 'MADV_DONTDUMP' is set on the
      region.
      
      The qemu code which implements this features is at:
      
        http://people.redhat.com/~jbaron/qemu-dump/qemu-dump.patch
      
      In my testing the qemu core dump shrunk from 383MB -> 13MB with this
      patch.
      
      I also believe that the 'MADV_DONTDUMP' flag might be useful for
      security sensitive apps, which might want to select which areas are
      dumped.
      
      This patch:
      
      The VM_ALWAYSDUMP flag is currently used by the coredump code to
      indicate that a vma is part of a vsyscall or vdso section.  However, we
      can determine if a vma is in one these sections by checking it against
      the gate_vma and checking for a non-NULL return value from
      arch_vma_name().  Thus, freeing a valuable vma bit.
      Signed-off-by: default avatarJason Baron <jbaron@redhat.com>
      Acked-by: default avatarRoland McGrath <roland@hack.frob.com>
      Cc: Chris Metcalf <cmetcalf@tilera.com>
      Cc: Avi Kivity <avi@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      909af768
    • Oleg Nesterov's avatar
      kmod: make __request_module() killable · 1cc684ab
      Oleg Nesterov authored
      As Tetsuo Handa pointed out, request_module() can stress the system
      while the oom-killed caller sleeps in TASK_UNINTERRUPTIBLE.
      
      The task T uses "almost all" memory, then it does something which
      triggers request_module().  Say, it can simply call sys_socket().  This
      in turn needs more memory and leads to OOM.  oom-killer correctly
      chooses T and kills it, but this can't help because it sleeps in
      TASK_UNINTERRUPTIBLE and after that oom-killer becomes "disabled" by the
      TIF_MEMDIE task T.
      
      Make __request_module() killable.  The only necessary change is that
      call_modprobe() should kmalloc argv and module_name, they can't live in
      the stack if we use UMH_KILLABLE.  This memory is freed via
      call_usermodehelper_freeinfo()->cleanup.
      Reported-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1cc684ab
    • Oleg Nesterov's avatar
      kmod: introduce call_modprobe() helper · 3e63a93b
      Oleg Nesterov authored
      No functional changes.  Move the call_usermodehelper code from
      __request_module() into the new simple helper, call_modprobe().
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3e63a93b
    • Oleg Nesterov's avatar
      usermodehelper: ____call_usermodehelper() doesn't need do_exit() · 5b9bd473
      Oleg Nesterov authored
      Minor cleanup.  ____call_usermodehelper() can simply return, no need to
      call do_exit() explicitely.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5b9bd473