1. 05 Jul, 2013 3 commits
    • Arnd Bergmann's avatar
      ARM: OMAP: build mach-omap code only if needed · 59d92875
      Arnd Bergmann authored
      If we build a kernel with CONFIG_ARCH_OMAP2PLUS enabled but all of the
      individual SoCs disabled, we run into a large number of link errors
      because if incorrect dependencies:
      
      arch/arm/mach-omap2/built-in.o: In function `_add_initiator_dep':
      arch/arm/mach-omap2/omap_hwmod.c:691: undefined reference to `clkdm_add_sleepdep' arch/arm/mach-omap2/built-in.o: In function `_del_initiator_dep':
      arch/arm/mach-omap2/omap_hwmod.c:720: undefined reference to `clkdm_del_sleepdep' arch/arm/mach-omap2/built-in.o: In function `_enable':
      arch/arm/mach-omap2/omap_hwmod.c:2145: undefined reference to `clkdm_in_hwsup'
      arch/arm/mach-omap2/omap_hwmod.c:2147: undefined reference to `clkdm_hwmod_enable'
      arch/arm/mach-omap2/omap_hwmod.c:2191: undefined reference to `clkdm_hwmod_disable'
      arch/arm/mach-omap2/omap_hwmod.c:2146: undefined reference to `clkdm_missing_idle_reporting' arch/arm/mach-omap2/built-in.o: In function `_idle':
      arch/arm/mach-omap2/omap_hwmod.c:2235: undefined reference to `clkdm_hwmod_disable' arch/arm/mach-omap2/built-in.o: In function `_shutdown':
      arch/arm/mach-omap2/omap_hwmod.c:2338: undefined reference to `clkdm_hwmod_disable' arch/arm/mach-omap2/built-in.o: In function `omap_hwmod_get_context_loss_count':
      arch/arm/mach-omap2/omap_hwmod.c:4071: undefined reference to `pwrdm_get_context_loss_count' arch/arm/mach-omap2/built-in.o: In function `omap_pm_clkdms_setup':
      arch/arm/mach-omap2/pm.c:114: undefined reference to `clkdm_allow_idle'
      arch/arm/mach-omap2/pm.c:117: undefined reference to `clkdm_sleep' arch/arm/mach-omap2/built-in.o: In function `omap2_common_pm_late_init':
      arch/arm/mach-omap2/pm.c:294: undefined reference to `omap_voltage_late_init' arch/arm/mach-omap2/built-in.o: In function `omap2_gpio_dev_init':
      arch/arm/mach-omap2/gpio.c:133: undefined reference to `pwrdm_can_ever_lose_context'
      
      We can avoid this if we make CONFIG_ARCH_OMAP2PLUS a silent option that
      gets enabled any time that one of the SoC versions is enabled.
      
      Cc: Tony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      59d92875
    • Arnd Bergmann's avatar
      ARM: zynq: use DT_MACHINE_START · 514a5908
      Arnd Bergmann authored
      The zynq platform code only supports DT based booting, so we
      should use DT_MACHINE_START rather than MACHINE_START.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Michal Simek <michal.simek@xilinx.com>
      514a5908
    • Arnd Bergmann's avatar
      ARM: omap5: omap5 has SCU and TWD · 896eba3b
      Arnd Bergmann authored
      These are selected by omap4 but used in common omap4/5
      SMP code, so building an omap5-only kernel is actually
      broken without this patch.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Tony Lindgren <tony@atomide.com>
      896eba3b
  2. 03 Jul, 2013 3 commits
  3. 02 Jul, 2013 20 commits
    • Linus Torvalds's avatar
      Merge tag 'late-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 42daabf6
      Linus Torvalds authored
      Pull ARM SoC late changes from Arnd Bergmann:
       "These are changes that arrived a little late before the merge window
        or that have multiple dependencies on previous branches so they did
        not fit into one of the earlier ones.  There are 10 branches merged
        here, a total of 39 non-merge commits.  Contents are a mixed bag for
        the above reasons:
      
         * Two new SoC platforms: ST microelectronics stixxxx and the TI
           'Nspire' graphing calculator.  These should have been in the 'soc'
           branch but were a little late
         * Support for the Exynos 5420 variant in mach-exynos, which is based
           on the other exynos branches to avoid conflicts.
         * Various small changes for sh-mobile, ux500 and davinci
         * Common clk support for MSM"
      
      * tag 'late-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (39 commits)
        ARM: ux500: bail out on alien cpus
        ARM: davinci: da850: adopt to pinctrl-single change for configuring multiple pins
        serial: sh-sci: Initialise variables before access in sci_set_termios()
        ARM: stih41x: Add B2020 board support
        ARM: stih41x: Add B2000 board support
        ARM: sti: Add DEBUG_LL console support
        ARM: sti: Add STiH416 SOC support
        ARM: sti: Add STiH415 SOC support
        ARM: msm: Migrate to common clock framework
        ARM: msm: Make proc_comm clock control into a platform driver
        ARM: msm: Prepare clk_get() users in mach-msm for clock-pcom driver
        ARM: msm: Remove clock-7x30.h include file
        ARM: msm: Remove custom clk_set_{max,min}_rate() API
        ARM: msm: Remove custom clk_set_flags() API
        msm: iommu: Use clk_set_rate() instead of clk_set_min_rate()
        msm: iommu: Convert to clk_prepare/unprepare
        msm_sdcc: Convert to clk_prepare/unprepare
        usb: otg: msm: Convert to clk_prepare/unprepare
        msm_serial: Use devm_clk_get() and properly return errors
        msm_serial: Convert to clk_prepare/unprepare
        ...
      42daabf6
    • Linus Torvalds's avatar
      Merge tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 0bf6a210
      Linus Torvalds authored
      Pull ARM SoC driver specific changes from Arnd Bergmann:
       "These changes are all driver specific and cross over between arm-soc
        contents and some other subsystem, in these cases cpufreq, crypto,
        dma, pinctrl, mailbox and usb, and the subsystem owners agreed to have
        these changes merged through arm-soc.
      
        As we proceed to untangle the dependencies between platform code and
        driver code, the amount of changes in this category is fortunately
        shrinking, for 3.11 we have 16 branches here and 101 non-merge
        changesets, the majority of which are for the stedma40 dma engine
        driver used in the ux500 platform.  Cleaning up that code touches
        multiple subsystems, but gets rid of the dependency in the end.
      
        The mailbox code moved out from mach-omap2 to drivers/mailbox is an
        intermediate step and is still omap specific at the moment.  Patches
        exist to generalize the subsystem and add other drivers with the same
        API, but those did not make it for 3.11."
      
      * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (101 commits)
        crypto: ux500: use dmaengine_submit API
        crypto: ux500: use dmaengine_prep_slave_sg API
        crypto: ux500: use dmaengine_device_control API
        crypto: ux500/crypt: add missing __iomem qualifiers
        crypto: ux500/hash: add missing static qualifiers
        crypto: ux500/hash: use readl on iomem addresses
        dmaengine: ste_dma40: Declare memcpy config as static
        ARM: ux500: Remove mop500_snowball_ethernet_clock_enable()
        ARM: ux500: Correct the EN_3v3 regulator's on/off GPIO
        ARM: ux500: Provide a AB8500 GPIO Device Tree node
        gpio: rcar: fix gpio_rcar_of_table
        gpio-rcar: Remove #ifdef CONFIG_OF around OF-specific sections
        gpio-rcar: Reference core gpio documentation in the DT bindings
        clk: exynos5250: Add enum entries for divider clock of i2s1 and i2s2
        ARM: dts: Update Samsung I2S documentation
        ARM: dts: add clock provider information for i2s controllers in Exynos5250
        ARM: dts: add Exynos audio subsystem clock controller node
        clk: samsung: register audio subsystem clocks using common clock framework
        ARM: dts: use #include for all device trees for Samsung
        pinctrl: s3c24xx: use correct header for chained_irq functions
        ...
      0bf6a210
    • Linus Torvalds's avatar
      Merge tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · ee1a8d40
      Linus Torvalds authored
      Pull ARM SoC device tree changes from Arnd Bergmann:
       "These changes from 30 individual branches for the most part update
        device tree files, but there are also a few source code changes that
        have crept in this time, usually in order to atomically move over a
        driver from using hardcoded data to DT probing.
      
        A number of platforms change their DT files to use the C preprocessor,
        which is causing a bit of churn, but that is hopefully only this once"
      
      * tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (372 commits)
        ARM: at91: dt: rm9200ek: add spi support
        ARM: at91: dt: rm9200: add spi support
        ARM: at91/DT: at91sam9n12: add SPI DMA client infos
        ARM: at91/DT: sama5d3: add SPI DMA client infos
        ARM: at91/DT: fix SPI compatibility string
        ARM: Kirkwood: Fix the internal register ranges translation
        ARM: dts: bcm281xx: change comment to C89 style
        ARM: mmc: bcm281xx SDHCI driver (dt mods)
        ARM: nomadik: add the new clocks to the device tree
        clk: nomadik: implement the Nomadik clocks properly
        ARM: dts: omap5-uevm: Provide USB Host PHY clock frequency
        ARM: dts: omap4-panda: Fix DVI EDID reads
        ARM: dts: omap4-panda: Add USB Host support
        arm: mvebu: enable mini-PCIe connectors on Armada 370 RD
        ARM: shmobile: irqpin: add a DT property to enable masking on parent
        ARM: dts: AM43x EPOS EVM support
        ARM: dts: OMAP5: Add bandgap DT entry
        ARM: dts: AM33XX: Add pinmux configuration for CPSW to am335x EVM
        ARM: dts: AM33XX: Add pinmux configuration for CPSW to EVMsk
        ARM: dts: AM33XX: Add pinmux configuration for CPSW to beaglebone
        ...
      ee1a8d40
    • Linus Torvalds's avatar
      Merge tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 40e71e70
      Linus Torvalds authored
      Pull ARM SoC board specific changes from Arnd Bergmann:
       "These are 18 branches on 9 platforms with board specific changes,
        mostly for defconfig files, but nothing really exciting in here.
      
        Since the shmobile platform still uses board files for some of the
        newer machines, we get a few changes there as the result of drivers
        getting enabled for those boards.  This causes some conflicts with
        contents getting added from multiple branches in sh-mobile specific
        files.  Renesas is putting a lot of work into migrating to device-tree
        based setup, which will make all those files obsolete in the future
        and avoid both the conflicts and the need to have these files in the
        first place."
      
      * tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (49 commits)
        arm: multi_v7_defconfig: Enable initrd/initramfs support
        arm: multi_v7_defconfig: Enable Zynq UART driver
        ARM: omap2plus_defconfig: enable USB_PHY and NOP_USB_XCEIV
        ARM: OMAP1: nokia770: enable Tahvo
        ARM: OMAP3EVM: Marking omap3_evm_display_init() with CONFIG_BROKEN
        arm: omap: board-overo: reset GPIO for SMSC911x
        ARM: shmobile: BOCK-W: change Ether device name
        ARM: ux500: board-mop500: remove unused pin modes
        ARM: shmobile: bockw: add MMCIF support
        ARM: shmobile: bockw: add SPI FLASH support
        ARM: shmobile: bockw: add I2C device support
        ARM: shmobile: BOCK-W: add Ether support
        ARM: tegra: defconfig updates
        ARM: shmobile: bockw defconfig: add MMCIF support
        ARM: shmobile: bockw defconfig: add M25P80 support
        ARM: shmobile: bockw defconfig: add RTC RX8581 support
        ARM: shmobile: marzen: keep local function as static
        ARM: shmobile: bockw: add SDHI0 support
        ARM: shmobile: marzen: Use INTC External IRQ pin driver for SMSC
        ARM: shmobile: lager: support GPIO switches
        ...
      40e71e70
    • Linus Torvalds's avatar
      Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 3883cbb6
      Linus Torvalds authored
      Pull ARM SoC specific changes from Arnd Bergmann:
       "These changes are all to SoC-specific code, a total of 33 branches on
        17 platforms were pulled into this.  Like last time, Renesas sh-mobile
        is now the platform with the most changes, followed by OMAP and
        EXYNOS.
      
        Two new platforms, TI Keystone and Rockchips RK3xxx are added in this
        branch, both containing almost no platform specific code at all, since
        they are using generic subsystem interfaces for clocks, pinctrl,
        interrupts etc.  The device drivers are getting merged through the
        respective subsystem maintainer trees.
      
        One more SoC (u300) is now multiplatform capable and several others
        (shmobile, exynos, msm, integrator, kirkwood, clps711x) are moving
        towards that goal with this series but need more work.
      
        Also noteworthy is the work on PCI here, which is traditionally part
        of the SoC specific code.  With the changes done by Thomas Petazzoni,
        we can now more easily have PCI host controller drivers as loadable
        modules and keep them separate from the platform code in
        drivers/pci/host.  This has already led to the discovery that three
        platforms (exynos, spear and imx) are actually using an identical PCIe
        host controller and will be able to share a driver once support for
        spear and imx is added."
      
      * tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (480 commits)
        ARM: integrator: let pciv3 use mem/premem from device tree
        ARM: integrator: set local side PCI addresses right
        ARM: dts: Add pcie controller node for exynos5440-ssdk5440
        ARM: dts: Add pcie controller node for Samsung EXYNOS5440 SoC
        ARM: EXYNOS: Enable PCIe support for Exynos5440
        pci: Add PCIe driver for Samsung Exynos
        ARM: OMAP5: voltagedomain data: remove temporary OMAP4 voltage data
        ARM: keystone: Move CPU bringup code to dedicated asm file
        ARM: multiplatform: always pick one CPU type
        ARM: imx: select syscon for IMX6SL
        ARM: keystone: select ARM_ERRATA_798181 only for SMP
        ARM: imx: Synertronixx scb9328 needs to select SOC_IMX1
        ARM: OMAP2+: AM43x: resolve SMP related build error
        dmaengine: edma: enable build for AM33XX
        ARM: edma: Add EDMA crossbar event mux support
        ARM: edma: Add DT and runtime PM support to the private EDMA API
        dmaengine: edma: Add TI EDMA device tree binding
        arm: add basic support for Rockchip RK3066a boards
        arm: add debug uarts for rockchip rk29xx and rk3xxx series
        arm: Add basic clocks for Rockchip rk3066a SoCs
        ...
      3883cbb6
    • Linus Torvalds's avatar
      Merge tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · d2033f2c
      Linus Torvalds authored
      Pull ARM SoC cleanups from Arnd Bergmann:
       "This contains cleanups as preparation for other branches adding new
        features, we pulled 16 branches for 9 platforms into this one.
      
        Most notable here is the removal of support for ATAGS based OMAP4
        systems.  Since all OMAP4 machines are fully functional with DT based
        booting in 3.10, we can remove a lot of code here.
      
        Also noteworthy is Maxime Ripard's cleanup of the machine descriptors,
        which means we need no machine descriptors in a lot more cases and can
        boot additional machines by just having the respective device drivers
        enabled."
      
      * tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (76 commits)
        ARM: picoxcell: remove .nr_irqs reference
        ARM: s5p64x0: avoid build warning for uncompress.h
        ARM: SAMSUNG: Remove unused plat/regs-watchdog.h header
        ARM: SAMSUNG: Remove legacy watchdog reset code
        ARM: SAMSUNG: Let platforms use the new watchdog reset driver
        ARM: SAMSUNG: Add watchdog reset driver
        ARM: SAMSUNG: Use local definitions of watchdog registers
        watchdog: s3c2410_wdt: Use local register definitions
        ARM: S5P64X0: Use common uncompress.h part for plat-samsung
        ARM: SAMSUNG: Consolidate uncompress subroutine
        ARM: at91: drop rm9200dk board support
        ARM: dts: msm: Fix merge resolution
        ARM: OMAP1: Remove dma.h
        ARM: OMAP1: Remove legacy irda.h and irda setup from board files
        ARM: OMAP1: Remove duplicated DMA channel definitions
        ARM: OMAP1: Remove McBSP DMA channel definitions
        ARM: OMAP2+: Remove dma.h
        ARM: OMAP2+: hwmod: Remove remaining DMA channel definitions
        ARM: OMAP2+: Remove duplicated DMA channel definitions
        ARM: OMAP2+: Remove AES crypto device DMA channel definitions
        ...
      d2033f2c
    • Linus Torvalds's avatar
      Merge tag 'fixes-non-critical-for-linus' of... · 22237d5a
      Linus Torvalds authored
      Merge tag 'fixes-non-critical-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
      
      Pull ARM SoC non-cricitical bug fixes from Arnd Bergmann:
       "These are various bug fixes that were not considered important enough
        for merging into 3.10.
      
        The majority of the ARM fixes are for the OMAP and at91 platforms, and
        there is another set of bug fixes for device drivers that resolve
        'randconfig' build errors and that the subsystem maintainers either
        did not pick up or preferred to get merged through the arm-soc tree."
      
      * tag 'fixes-non-critical-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (43 commits)
        ARM: at91/PMC: use at91_usb_rate() for UTMI PLL
        ARM: at91/PMC: fix at91sam9n12 USB FS init
        ARM: at91/PMC: at91sam9n12 family has a PLLB
        ARM: at91/PMC: sama5d3 family doesn't have a PLLB
        ARM: tegra: fix section mismatch in tegra_pmc_parse_dt
        ARM: mxs: don't select HAVE_PWM
        ARM: mxs: stub out mxs_pm_init for !CONFIG_PM
        cpuidle: calxeda: select ARM_CPU_SUSPEND
        ARM: mvebu: fix length of ethernet registers in mv78260 dtsi
        ARM: at91: cpuidle: Fix target_residency
        ARM: at91: fix at91_extern_irq usage for non-dt boards
        ARM: sirf: use CONFIG_SIRF rather than CONFIG_PRIMA2 where necessary
        clocksource: kona: adapt to CLOCKSOURCE_OF_DECLARE change
        X.509: do not emit any informational output
        mtd: omap2: allow bulding as a module
        [SCSI] nsp32: use mdelay instead of large udelay constants
        hwrng: bcm2835: fix MODULE_LICENSE tag
        ARM: at91: Change the internal SRAM memory type MT_MEMORY_NONCACHED
        ARM: at91: Fix link breakage when !CONFIG_PHYLIB
        MAINTAINERS: Add exynos filename match to ARM/S5P EXYNOS ARM ARCHITECTURES
        ...
      22237d5a
    • Linus Torvalds's avatar
      Merge tag 'driver-core-3.11-rc1' of... · fc76a258
      Linus Torvalds authored
      Merge tag 'driver-core-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core updates from Greg KH:
       "Here's the big driver core merge for 3.11-rc1
      
        Lots of little things, and larger firmware subsystem updates, all
        described in the shortlog.  Nice thing here is that we finally get rid
        of CONFIG_HOTPLUG, after 10+ years, thanks to Stephen Rohtwell (it had
        been always on for a number of kernel releases, now it's just
        removed)"
      
      * tag 'driver-core-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (27 commits)
        driver core: device.h: fix doc compilation warnings
        firmware loader: fix another compile warning with PM_SLEEP unset
        build some drivers only when compile-testing
        firmware loader: fix compile warning with PM_SLEEP set
        kobject: sanitize argument for format string
        sysfs_notify is only possible on file attributes
        firmware loader: simplify holding module for request_firmware
        firmware loader: don't export cache_firmware and uncache_firmware
        drivers/base: Use attribute groups to create sysfs memory files
        firmware loader: fix compile warning
        firmware loader: fix build failure with !CONFIG_FW_LOADER_USER_HELPER
        Documentation: Updated broken link in HOWTO
        Finally eradicate CONFIG_HOTPLUG
        driver core: firmware loader: kill FW_ACTION_NOHOTPLUG requests before suspend
        driver core: firmware loader: don't cache FW_ACTION_NOHOTPLUG firmware
        Documentation: Tidy up some drivers/base/core.c kerneldoc content.
        platform_device: use a macro instead of platform_driver_register
        firmware: move EXPORT_SYMBOL annotations
        firmware: Avoid deadlock of usermodehelper lock at shutdown
        dell_rbu: Select CONFIG_FW_LOADER_USER_HELPER explicitly
        ...
      fc76a258
    • Linus Torvalds's avatar
      Merge tag 'char-misc-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · fe3c22bd
      Linus Torvalds authored
      Pull char/misc updates from Greg KH:
       "Here's the big char/misc driver tree merge for 3.11-rc1
      
        A variety of different driver patches here.  All of these have been in
        linux-next for a while, and the networking patches were acked-by David
        Miller, as it made sense for those patches to come through this tree"
      
      * tag 'char-misc-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (102 commits)
        Revert "char: misc: assign file->private_data in all cases"
        drivers: uio_pdrv_genirq: Use of_match_ptr() macro
        mei: check whether hw start has succeeded
        mei: check if the hardware reset succeeded
        mei: mei_cl_connect: don't multiply the timeout twice
        mei: do not override a client writing state when buffering
        mei: move mei_cl_irq_write_complete to client.c
        UIO: Fix concurrency issue
        drivers: uio_dmem_genirq: Use of_match_ptr() macro
        char: misc: assign file->private_data in all cases
        drivers: hv: allocate synic structures before hv_synic_init()
        drivers: hv: check interrupt mask before read_index
        vme: vme_tsi148.c: fix error return code in tsi148_probe()
        FMC: fix error handling in probe() function
        fmc: avoid readl/writel namespace conflict
        FMC: NULL dereference on allocation failure
        UIO: fix uio_pdrv_genirq with device tree but no interrupt
        UIO: allow binding uio_pdrv_genirq.c to devices using command line option
        FMC: add a char-device mezzanine driver
        FMC: add a driver to write mezzanine EEPROM
        ...
      fe3c22bd
    • Linus Torvalds's avatar
      Merge tag 'staging-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · ce49b628
      Linus Torvalds authored
      Pull staging tree update from Greg KH:
       "Here's the large staging tree merge for 3.11-rc1
      
        Huge thing here is the Lustre client code.  Unfortunatly, due to it
        not building properly on a wide variety of different architectures
        (this was production code???), it is currently disabled from the build
        so as to not annoy people.
      
        Other than Lustre, there are loads of comedi patches, working to clean
        up that subsystem, iio updates and new drivers, and a load of cleanups
        from the OPW applicants in their quest to get a summer internship.
      
        All of these have been in the linux-next releases for a while (hence
        the Lustre code being disabled)"
      
      Fixed up trivial conflict in drivers/staging/serqt_usb2/serqt_usb2.c due
      to independent renamings in the staging driver cleanup and the USB
      tree..
      
      * tag 'staging-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (868 commits)
        Revert "Revert "Revert "staging/lustre: drop CONFIG_BROKEN dependency"""
        staging: rtl8192u: fix line length in r819xU_phy.h
        staging: rtl8192u: rename variables in r819xU_phy.h
        staging: rtl8192u: fix comments in r819xU_phy.h
        staging: rtl8192u: fix whitespace in r819xU_phy.h
        staging: rtl8192u: fix newlines in r819xU_phy.c
        staging: comedi: unioxx5: use comedi_alloc_spriv()
        staging: comedi: unioxx5: fix unioxx5_detach()
        silicom: checkpatch: errors caused by macros
        Staging: silicom: remove the board_t typedef in bpctl_mod.c
        Staging: silicom: capitalize labels in the bp_media_type enum
        Staging: silicom: remove bp_media_type enum typedef
        staging: rtl8192u: replace msleep(1) with usleep_range() in r819xU_phy.c
        staging: rtl8192u: rename dwRegRead and rtStatus in r819xU_phy.c
        staging: rtl8192u: replace __FUNCTION__ in r819xU_phy.c
        staging: rtl8192u: limit line size in r819xU_phy.c
        zram: allow request end to coincide with disksize
        staging: drm/imx: use generic irq chip unused field to block out invalid irqs
        staging: drm/imx: use generic irqchip
        staging: drm/imx: ipu-dmfc: use defines for ipu channel numbers
        ...
      ce49b628
    • Linus Torvalds's avatar
      Merge tag 'tty-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 0de10f9e
      Linus Torvalds authored
      Pull tty/serial updates from Greg KH:
       "Here is the big TTY / Serial driver merge for 3.11-rc1.
      
        It's not all that big, nothing major changed in the tty api, which is
        a nice change, just a number of serial driver fixes and updates and
        new drivers, along with some n_tty fixes to help resolve some reported
        issues.
      
        All of these have been in the linux-next releases for a while, with
        the exception of the last revert patch, which was reported this past
        weekend by two different people as being needed."
      
      * tag 'tty-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (51 commits)
        Revert "serial: 8250_pci: add support for another kind of NetMos Technology PCI 9835 Multi-I/O Controller"
        pch_uart: Add uart_clk selection for the MinnowBoard
        tty: atmel_serial: prepare clk before calling enable
        tty: Reset itty for other pty
        n_tty: Buffer work should not reschedule itself
        n_tty: Fix unsafe update of available buffer space
        n_tty: Untangle read completion variables
        n_tty: Encapsulate minimum_to_wake within N_TTY
        serial: omap: Fix device tree based PM runtime
        serial: imx: Fix serial clock unbalance
        serial/mpc52xx_uart: fix kernel panic when system reboot
        serial: mfd: Add sysrq support
        serial: imx: enable the clocks for console
        tty: serial: add Freescale lpuart driver support
        serial: imx: Improve Kconfig text
        serial: imx: Allow module build
        serial: imx: Fix warning when !CONFIG_SERIAL_IMX_CONSOLE
        tty/serial/sirf: fix error propagation in sirfsoc_uart_probe()
        serial: omap: fix potential NULL pointer dereference in serial_omap_runtime_suspend()
        tty: serial: Enable uartlite for ARM zynq
        ...
      0de10f9e
    • Linus Torvalds's avatar
      Merge tag 'usb-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · a8427018
      Linus Torvalds authored
      Pull USB updates from Greg KH:
       "Here's the big USB 3.11-rc1 merge request.
      
        Lots of gadget and finally, chipidea driver updates (they were much
        needed), along with a new host controller driver, lots of little
        serial driver fixes, the removal of the 255 usb-serial device
        limitation, and a variety of other minor things.
      
        All of these have been in the linux-next releases for a while"
      
      * tag 'usb-3.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (254 commits)
        usb: musb: omap2430: make it compile again
        usb: chipidea: ci_hdrc_imx: access phy via private data
        xhci: Add missing unlocks on error paths
        USB: option,qcserial: move Novatel Gobi1K IDs to qcserial
        ehci-atmel.c: prepare clk before calling enable
        USB: ohci-at91: prepare clk before calling enable
        USB: HWA: fix device probe failure
        wusbcore: add entries in Documentation/ABI for new wusbhc sysfs attributes
        wusbcore: add sysfs attribute for retry count
        wusbcore: add sysfs attribute for DNTS count and interval
        usb: chipidea: drop "13xxx" infix
        usb: phy: tegra: remove duplicated include from phy-tegra-usb.c
        usb: host: xhci-plat: release mem region while removing module
        usbmisc_imx: allow autoloading on according to dt ids
        usb: fix build error without CONFIG_USB_PHY
        usb: check usb_hub_to_struct_hub() return value
        xhci: check for failed dma pool allocation
        usb: gadget: f_subset: fix missing unlock on error in geth_alloc()
        usb: gadget: f_ncm: fix missing unlock on error in ncm_alloc()
        usb: gadget: f_ecm: fix missing unlock on error in ecm_alloc()
        ...
      a8427018
    • Linus Torvalds's avatar
      Merge tag 'fscache-20130702' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs · bcd7351e
      Linus Torvalds authored
      Pull FS-Cache updates from David Howells:
       "This contains a number of fixes for various FS-Cache issues plus some
        cleanups.  The commits are, in order:
      
         1) Provide a system wait_on_atomic_t() and wake_up_atomic_t() sharing
            the bit-wait table (enhancement for #8).
      
         2) Don't put spin_lock() in a while-condition as spin_lock() may have
            a do {} while(0) wrapper (cleanup).
      
         3) Symbolically name i_mutex lock classes rather than using numbers
            in CacheFiles (cleanup).
      
         4) Don't sleep in page release if __GFP_FS is not set (deadlock vs
            ext4).
      
         5) Uninline fscache_object_init() (cleanup for #7).
      
         6) Wrap checks on object state (cleanup for #7).
      
         7) Simplify the object state machine by separating work states from
            wait states.
      
         8) Simplify cookie retention by objects (NULL pointer deref fix).
      
         9) Remove unused list_to_page() macro (cleanup).
      
        10) Make the remaining-pages counter in the retrieval op atomic
            (assertion failure fix).
      
        11) Don't use spin_is_locked() in assertions (assertion failure fix)"
      
      * tag 'fscache-20130702' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
        FS-Cache: Don't use spin_is_locked() in assertions
        FS-Cache: The retrieval remaining-pages counter needs to be atomic_t
        cachefiles: remove unused macro list_to_page()
        FS-Cache: Simplify cookie retention for fscache_objects, fixing oops
        FS-Cache: Fix object state machine to have separate work and wait states
        FS-Cache: Wrap checks on object state
        FS-Cache: Uninline fscache_object_init()
        FS-Cache: Don't sleep in page release if __GFP_FS is not set
        CacheFiles: name i_mutex lock class explicitly
        fs/fscache: remove spin_lock() from the condition in while()
        Add wait_on_atomic_t() and wake_up_atomic_t()
      bcd7351e
    • Linus Torvalds's avatar
      Merge tag 'dlm-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm · 6072a93b
      Linus Torvalds authored
      Pull dlm updates from David Teigland:
       "This set includes a number of SCTP related fixes in the dlm, and a few
        other minor fixes and changes."
      
      * tag 'dlm-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
        dlm: Avoid LVB truncation
        dlm: log an error for unmanaged lockspaces
        dlm: config: using strlcpy instead of strncpy
        dlm: remove duplicated include from lowcomms.c
        dlm: disable nagle for SCTP
        dlm: retry failed SCTP sends
        dlm: try other IPs when sctp init assoc fails
        dlm: clear correct bit during sctp init failure handling
        dlm: set sctp assoc id during setup
        dlm: clear correct init bit during sctp setup
      6072a93b
    • Linus Torvalds's avatar
      Merge tag 'for-f2fs-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs · 3f490f7f
      Linus Torvalds authored
      Pull f2fs updates from Jaegeuk Kim:
       "This patch-set includes the following major enhancement patches:
         - remount_fs callback function
         - restore parent inode number to enhance the fsync performance
         - xattr security labels
         - reduce the number of redundant lock/unlock data pages
         - avoid frequent write_inode calls
      
        The other minor bug fixes are as follows.
         - endian conversion bugs
         - various bugs in the roll-forward recovery routine"
      
      * tag 'for-f2fs-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (56 commits)
        f2fs: fix to recover i_size from roll-forward
        f2fs: remove the unused argument "sbi" of func destroy_fsync_dnodes()
        f2fs: remove reusing any prefree segments
        f2fs: code cleanup and simplify in func {find/add}_gc_inode
        f2fs: optimize the init_dirty_segmap function
        f2fs: fix an endian conversion bug detected by sparse
        f2fs: fix crc endian conversion
        f2fs: add remount_fs callback support
        f2fs: recover wrong pino after checkpoint during fsync
        f2fs: optimize do_write_data_page()
        f2fs: make locate_dirty_segment() as static
        f2fs: remove unnecessary parameter "offset" from __add_sum_entry()
        f2fs: avoid freqeunt write_inode calls
        f2fs: optimise the truncate_data_blocks_range() range
        f2fs: use the F2FS specific flags in f2fs_ioctl()
        f2fs: sync dir->i_size with its block allocation
        f2fs: fix i_blocks translation on various types of files
        f2fs: set sb->s_fs_info before calling parse_options()
        f2fs: support xattr security labels
        f2fs: fix iget/iput of dir during recovery
        ...
      3f490f7f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw · c4eb1b07
      Linus Torvalds authored
      Pull GFS2 updates from Steven Whitehouse:
       "There are a few bug fixes for various, mostly very minor corner cases,
        plus some interesting new features.
      
        The new features include atomic_open whose main benefit will be the
        reduction in locking overhead in case of combined lookup/create and
        open operations, sorting the log buffer lists by block number to
        improve the efficiency of AIL writeback, and aggressively issuing
        revokes in gfs2_log_flush to reduce overhead when dropping glocks."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:
        GFS2: Reserve journal space for quota change in do_grow
        GFS2: Fix fstrim boundary conditions
        GFS2: fix warning message
        GFS2: aggressively issue revokes in gfs2_log_flush
        GFS2: fix regression in dir_double_exhash
        GFS2: Add atomic_open support
        GFS2: Only do one directory search on create
        GFS2: fix error propagation in init_threads()
        GFS2: Remove no-op wrapper function
        GFS2: Cocci spatch "ptr_ret.spatch"
        GFS2: Eliminate gfs2_rg_lops
        GFS2: Sort buffer lists by inplace block number
      c4eb1b07
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 9e239bb9
      Linus Torvalds authored
      Pull ext4 update from Ted Ts'o:
       "Lots of bug fixes, cleanups and optimizations.  In the bug fixes
        category, of note is a fix for on-line resizing file systems where the
        block size is smaller than the page size (i.e., file systems 1k blocks
        on x86, or more interestingly file systems with 4k blocks on Power or
        ia64 systems.)
      
        In the cleanup category, the ext4's punch hole implementation was
        significantly improved by Lukas Czerner, and now supports bigalloc
        file systems.  In addition, Jan Kara significantly cleaned up the
        write submission code path.  We also improved error checking and added
        a few sanity checks.
      
        In the optimizations category, two major optimizations deserve
        mention.  The first is that ext4_writepages() is now used for
        nodelalloc and ext3 compatibility mode.  This allows writes to be
        submitted much more efficiently as a single bio request, instead of
        being sent as individual 4k writes into the block layer (which then
        relied on the elevator code to coalesce the requests in the block
        queue).  Secondly, the extent cache shrink mechanism, which was
        introduce in 3.9, no longer has a scalability bottleneck caused by the
        i_es_lru spinlock.  Other optimizations include some changes to reduce
        CPU usage and to avoid issuing empty commits unnecessarily."
      
      * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (86 commits)
        ext4: optimize starting extent in ext4_ext_rm_leaf()
        jbd2: invalidate handle if jbd2_journal_restart() fails
        ext4: translate flag bits to strings in tracepoints
        ext4: fix up error handling for mpage_map_and_submit_extent()
        jbd2: fix theoretical race in jbd2__journal_restart
        ext4: only zero partial blocks in ext4_zero_partial_blocks()
        ext4: check error return from ext4_write_inline_data_end()
        ext4: delete unnecessary C statements
        ext3,ext4: don't mess with dir_file->f_pos in htree_dirblock_to_tree()
        jbd2: move superblock checksum calculation to jbd2_write_superblock()
        ext4: pass inode pointer instead of file pointer to punch hole
        ext4: improve free space calculation for inline_data
        ext4: reduce object size when !CONFIG_PRINTK
        ext4: improve extent cache shrink mechanism to avoid to burn CPU time
        ext4: implement error handling of ext4_mb_new_preallocation()
        ext4: fix corruption when online resizing a fs with 1K block size
        ext4: delete unused variables
        ext4: return FIEMAP_EXTENT_UNKNOWN for delalloc extents
        jbd2: remove debug dependency on debug_fs and update Kconfig help text
        jbd2: use a single printk for jbd_debug()
        ...
      9e239bb9
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 63580e51
      Linus Torvalds authored
      Pull VFS patches (part 1) from Al Viro:
       "The major change in this pile is ->readdir() replacement with
        ->iterate(), dealing with ->f_pos races in ->readdir() instances for
        good.
      
        There's a lot more, but I'd prefer to split the pull request into
        several stages and this is the first obvious cutoff point."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (67 commits)
        [readdir] constify ->actor
        [readdir] ->readdir() is gone
        [readdir] convert ecryptfs
        [readdir] convert coda
        [readdir] convert ocfs2
        [readdir] convert fatfs
        [readdir] convert xfs
        [readdir] convert btrfs
        [readdir] convert hostfs
        [readdir] convert afs
        [readdir] convert ncpfs
        [readdir] convert hfsplus
        [readdir] convert hfs
        [readdir] convert befs
        [readdir] convert cifs
        [readdir] convert freevxfs
        [readdir] convert fuse
        [readdir] convert hpfs
        reiserfs: switch reiserfs_readdir_dentry to inode
        reiserfs: is_privroot_deh() needs only directory inode, actually
        ...
      63580e51
    • Dave Chinner's avatar
      sync: don't block the flusher thread waiting on IO · 7747bd4b
      Dave Chinner authored
      When sync does it's WB_SYNC_ALL writeback, it issues data Io and
      then immediately waits for IO completion. This is done in the
      context of the flusher thread, and hence completely ties up the
      flusher thread for the backing device until all the dirty inodes
      have been synced. On filesystems that are dirtying inodes constantly
      and quickly, this means the flusher thread can be tied up for
      minutes per sync call and hence badly affect system level write IO
      performance as the page cache cannot be cleaned quickly.
      
      We already have a wait loop for IO completion for sync(2), so cut
      this out of the flusher thread and delegate it to wait_sb_inodes().
      Hence we can do rapid IO submission, and then wait for it all to
      complete.
      
      Effect of sync on fsmark before the patch:
      
      FSUse%        Count         Size    Files/sec     App Overhead
      .....
           0       640000         4096      35154.6          1026984
           0       720000         4096      36740.3          1023844
           0       800000         4096      36184.6           916599
           0       880000         4096       1282.7          1054367
           0       960000         4096       3951.3           918773
           0      1040000         4096      40646.2           996448
           0      1120000         4096      43610.1           895647
           0      1200000         4096      40333.1           921048
      
      And a single sync pass took:
      
        real    0m52.407s
        user    0m0.000s
        sys     0m0.090s
      
      After the patch, there is no impact on fsmark results, and each
      individual sync(2) operation run concurrently with the same fsmark
      workload takes roughly 7s:
      
        real    0m6.930s
        user    0m0.000s
        sys     0m0.039s
      
      IOWs, sync is 7-8x faster on a busy filesystem and does not have an
      adverse impact on ongoing async data write operations.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7747bd4b
    • Magnus Damm's avatar
      ARM: shmobile: emev2 GIO3 resource fix · 1eb14ea1
      Magnus Damm authored
      Fix GIO3 base addresses for EMEV2.
      
      This bug was introduced by 088efd92
      ("mach-shmobile: Emma Mobile EV2 GPIO support V3") which was included in v3.5.
      Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Cc: stable@vger.kernel.org
      1eb14ea1
  4. 01 Jul, 2013 14 commits
    • Jaegeuk Kim's avatar
      f2fs: fix to recover i_size from roll-forward · a1dd3c13
      Jaegeuk Kim authored
      If user requests many data writes and fsync together, the last updated i_size
      should be stored to the inode block consistently.
      
      But, previous write_end just marks the inode as dirty and doesn't update its
      metadata into its inode block.
      After that, fsync just writes the inode block with newly updated data index
      excluding inode metadata updates.
      
      So, this patch introduces write_end in which updates inode block too when the
      i_size is changed.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      a1dd3c13
    • Gu Zheng's avatar
      f2fs: remove the unused argument "sbi" of func destroy_fsync_dnodes() · 5ebefc5b
      Gu Zheng authored
      As destroy_fsync_dnodes() is a simple list-cleanup func, so delete the unused
      and unrelated f2fs_sb_info argument of it.
      Signed-off-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      5ebefc5b
    • Jaegeuk Kim's avatar
      f2fs: remove reusing any prefree segments · 763bfe1b
      Jaegeuk Kim authored
      This patch removes check_prefree_segments initially designed to enhance the
      performance by narrowing the range of LBA usage across the whole block device.
      
      When allocating a new segment, previous f2fs tries to find proper prefree
      segments, and then, if finds a segment, it reuses the segment for further
      data or node block allocation.
      
      However, I found that this was totally wrong approach since the prefree segments
      have several data or node blocks that will be used by the roll-forward mechanism
      operated after sudden-power-off.
      
      Let's assume the following scenario.
      
      /* write 8MB with fsync */
      for (i = 0; i < 2048; i++) {
      	offset = i * 4096;
      	write(fd, offset, 4KB);
      	fsync(fd);
      }
      
      In this case, naive segment allocation sequence will be like:
       data segment: x, x+1, x+2, x+3
       node segment: y, y+1, y+2, y+3.
      
      But, if we can reuse prefree segments, the sequence can be like:
       data segment: x, x+1, y, y+1
       node segment: y, y+1, y+2, y+3.
      Because, y, y+1, and y+2 became prefree segments one by one, and those are
      reused by data allocation.
      
      After conducting this workload, we should consider how to recover the latest
      inode with its data.
      If we reuse the prefree segments such as y or y+1, we lost the old node blocks
      so that f2fs even cannot start roll-forward recovery.
      
      Therefore, I suggest that we should remove reusing prefree segments.
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      763bfe1b
    • Gu Zheng's avatar
      f2fs: code cleanup and simplify in func {find/add}_gc_inode · 6cc4af56
      Gu Zheng authored
      This patch simplifies list operations in find_gc_inode and add_gc_inode.
      Just simple code cleanup.
      Signed-off-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      [Jaegeuk Kim: add description]
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      6cc4af56
    • Namjae Jeon's avatar
      f2fs: optimize the init_dirty_segmap function · 8736fbf0
      Namjae Jeon authored
      Optimize the while loop condition
      
      Since this condition will always be true and while loop will
      be terminated by the following condition in code:
      
      if (segno >= TOTAL_SEGS(sbi))
          break;
      Hence we can replace the while loop condition with while(1)
      instead of always checking for segno to be less than Total segs.
      
      Also we do not need to use TOTAL_SEGS() everytime. We can store
      this value in a local variable since this value is constant.
      Signed-off-by: default avatarNamjae Jeon <namjae.jeon@samsung.com>
      Signed-off-by: default avatarPankaj Kumar <pankaj.km@samsung.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      8736fbf0
    • Jaegeuk Kim's avatar
      f2fs: fix an endian conversion bug detected by sparse · 060dd67b
      Jaegeuk Kim authored
      This patch should fix the following bug reported by kbuild test robot.
      
      fs/f2fs/recovery.c:233:33: sparse: incorrect type in assignment
      (different base types)
      
      parse warnings: (new ones prefixed by >>)
      
      >> recovery.c:233: sparse: incorrect type in assignment (different base types)
         recovery.c:233:    expected unsigned int [unsigned] [assigned] ofs_in_node
         recovery.c:233:    got restricted __le16 [assigned] [usertype] ofs_in_node
      >> recovery.c:238: sparse: incorrect type in assignment (different base types)
         recovery.c:238:    expected unsigned int [unsigned] ofs_in_node
         recovery.c:238:    got restricted __le16 [assigned] [usertype] ofs_in_node
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      060dd67b
    • Jaegeuk Kim's avatar
      f2fs: fix crc endian conversion · 7e586fa0
      Jaegeuk Kim authored
      While calculating CRC for the checkpoint block, we use __u32, but when storing
      the crc value to the disk, we use __le32.
      
      Let's fix the inconsistency.
      Reported-and-Tested-by: default avatarOded Gabbay <ogabbay@advaoptical.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
      7e586fa0
    • Ashish Sangwan's avatar
      ext4: optimize starting extent in ext4_ext_rm_leaf() · 6ae06ff5
      Ashish Sangwan authored
      Both hole punch and truncate use ext4_ext_rm_leaf() for removing
      blocks.  Currently we choose the last extent as the starting
      point for removing blocks:
      
      	ex = EXT_LAST_EXTENT(eh);
      
      This is OK for truncate but for hole punch we can optimize the extent
      selection as the path is already initialized.  We could use this
      information to select proper starting extent.  The code change in this
      patch will not affect truncate as for truncate path[depth].p_ext will
      always be NULL.
      Signed-off-by: default avatarAshish Sangwan <a.sangwan@samsung.com>
      Signed-off-by: default avatarNamjae Jeon <namjae.jeon@samsung.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      6ae06ff5
    • Theodore Ts'o's avatar
      jbd2: invalidate handle if jbd2_journal_restart() fails · 41a5b913
      Theodore Ts'o authored
      If jbd2_journal_restart() fails the handle will have been disconnected
      from the current transaction.  In this situation, the handle must not
      be used for for any jbd2 function other than jbd2_journal_stop().
      Enforce this with by treating a handle which has a NULL transaction
      pointer as an aborted handle, and issue a kernel warning if
      jbd2_journal_extent(), jbd2_journal_get_write_access(),
      jbd2_journal_dirty_metadata(), etc. is called with an invalid handle.
      
      This commit also fixes a bug where jbd2_journal_stop() would trip over
      a kernel jbd2 assertion check when trying to free an invalid handle.
      
      Also move the responsibility of setting current->journal_info to
      start_this_handle(), simplifying the three users of this function.
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Reported-by: default avatarYounger Liu <younger.liu@huawei.com>
      Cc: Jan Kara <jack@suse.cz>
      41a5b913
    • Theodore Ts'o's avatar
      ext4: translate flag bits to strings in tracepoints · 21ddd568
      Theodore Ts'o authored
      Translate the bitfields used in various flags argument to strings to
      make the tracepoint output more human-readable.
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      21ddd568
    • Theodore Ts'o's avatar
      ext4: fix up error handling for mpage_map_and_submit_extent() · cb530541
      Theodore Ts'o authored
      The function mpage_released_unused_page() must only be called once;
      otherwise the kernel will BUG() when the second call to
      mpage_released_unused_page() tries to unlock the pages which had been
      unlocked by the first call.
      
      Also restructure the error handling so that we only give up on writing
      the dirty pages in the case of ENOSPC where retrying the allocation
      won't help.  Otherwise, a transient failure, such as a kmalloc()
      failure in calling ext4_map_blocks() might cause us to give up on
      those pages, leading to a scary message in /var/log/messages plus data
      loss.
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Reviewed-by: default avatarJan Kara <jack@suse.cz>
      cb530541
    • Theodore Ts'o's avatar
      jbd2: fix theoretical race in jbd2__journal_restart · 39c04153
      Theodore Ts'o authored
      Once we decrement transaction->t_updates, if this is the last handle
      holding the transaction from closing, and once we release the
      t_handle_lock spinlock, it's possible for the transaction to commit
      and be released.  In practice with normal kernels, this probably won't
      happen, since the commit happens in a separate kernel thread and it's
      unlikely this could all happen within the space of a few CPU cycles.
      
      On the other hand, with a real-time kernel, this could potentially
      happen, so save the tid found in transaction->t_tid before we release
      t_handle_lock.  It would require an insane configuration, such as one
      where the jbd2 thread was set to a very high real-time priority,
      perhaps because a high priority real-time thread is trying to read or
      write to a file system.  But some people who use real-time kernels
      have been known to do insane things, including controlling
      laser-wielding industrial robots.  :-)
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: stable@vger.kernel.org
      39c04153
    • Lukas Czerner's avatar
      ext4: only zero partial blocks in ext4_zero_partial_blocks() · e1be3a92
      Lukas Czerner authored
      Currently if we pass range into ext4_zero_partial_blocks() which covers
      entire block we would attempt to zero it even though we should only zero
      unaligned part of the block.
      
      Fix this by checking whether the range covers the whole block skip
      zeroing if so.
      Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      e1be3a92
    • Theodore Ts'o's avatar
      ext4: check error return from ext4_write_inline_data_end() · 42c832de
      Theodore Ts'o authored
      The function ext4_write_inline_data_end() can return an error.  So we
      need to assign it to a signed integer variable to check for an error
      return (since copied is an unsigned int).
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Zheng Liu <wenqing.lz@taobao.com>
      Cc: stable@vger.kernel.org
      42c832de