1. 02 Jan, 2019 1 commit
    • Linus Torvalds's avatar
      Merge branch 'next-integrity' of... · f218a29c
      Linus Torvalds authored
      Merge branch 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
      
      Pull integrity updates from James Morris:
       "In Linux 4.19, a new LSM hook named security_kernel_load_data was
        upstreamed, allowing LSMs and IMA to prevent the kexec_load syscall.
        Different signature verification methods exist for verifying the
        kexec'ed kernel image. This adds additional support in IMA to prevent
        loading unsigned kernel images via the kexec_load syscall,
        independently of the IMA policy rules, based on the runtime "secure
        boot" flag. An initial IMA kselftest is included.
      
        In addition, this pull request defines a new, separate keyring named
        ".platform" for storing the preboot/firmware keys needed for verifying
        the kexec'ed kernel image's signature and includes the associated IMA
        kexec usage of the ".platform" keyring.
      
        (David Howell's and Josh Boyer's patches for reading the
        preboot/firmware keys, which were previously posted for a different
        use case scenario, are included here)"
      
      * 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
        integrity: Remove references to module keyring
        ima: Use inode_is_open_for_write
        ima: Support platform keyring for kernel appraisal
        efi: Allow the "db" UEFI variable to be suppressed
        efi: Import certificates from UEFI Secure Boot
        efi: Add an EFI signature blob parser
        efi: Add EFI signature data types
        integrity: Load certs to the platform keyring
        integrity: Define a trusted platform keyring
        selftests/ima: kexec_load syscall test
        ima: don't measure/appraise files on efivarfs
        x86/ima: retry detecting secure boot mode
        docs: Extend trusted keys documentation for TPM 2.0
        x86/ima: define arch_get_ima_policy() for x86
        ima: add support for arch specific policies
        ima: refactor ima_init_policy()
        ima: prevent kexec_load syscall based on runtime secureboot flag
        x86/ima: define arch_ima_get_secureboot
        integrity: support new struct public_key_signature encoding field
      f218a29c
  2. 01 Jan, 2019 12 commits
    • Linus Torvalds's avatar
      Merge tag 'iommu-updates-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 8e143b90
      Linus Torvalds authored
      Pull IOMMU updates from Joerg Roedel:
      
       - Page table code for AMD IOMMU now supports large pages where smaller
         page-sizes were mapped before. VFIO had to work around that in the
         past and I included a patch to remove it (acked by Alex Williamson)
      
       - Patches to unmodularize a couple of IOMMU drivers that would never
         work as modules anyway.
      
       - Work to unify the the iommu-related pointers in 'struct device' into
         one pointer. This work is not finished yet, but will probably be in
         the next cycle.
      
       - NUMA aware allocation in iommu-dma code
      
       - Support for r8a774a1 and r8a774c0 in the Renesas IOMMU driver
      
       - Scalable mode support for the Intel VT-d driver
      
       - PM runtime improvements for the ARM-SMMU driver
      
       - Support for the QCOM-SMMUv2 IOMMU hardware from Qualcom
      
       - Various smaller fixes and improvements
      
      * tag 'iommu-updates-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (78 commits)
        iommu: Check for iommu_ops == NULL in iommu_probe_device()
        ACPI/IORT: Don't call iommu_ops->add_device directly
        iommu/of: Don't call iommu_ops->add_device directly
        iommu: Consolitate ->add/remove_device() calls
        iommu/sysfs: Rename iommu_release_device()
        dmaengine: sh: rcar-dmac: Use device_iommu_mapped()
        xhci: Use device_iommu_mapped()
        powerpc/iommu: Use device_iommu_mapped()
        ACPI/IORT: Use device_iommu_mapped()
        iommu/of: Use device_iommu_mapped()
        driver core: Introduce device_iommu_mapped() function
        iommu/tegra: Use helper functions to access dev->iommu_fwspec
        iommu/qcom: Use helper functions to access dev->iommu_fwspec
        iommu/of: Use helper functions to access dev->iommu_fwspec
        iommu/mediatek: Use helper functions to access dev->iommu_fwspec
        iommu/ipmmu-vmsa: Use helper functions to access dev->iommu_fwspec
        iommu/dma: Use helper functions to access dev->iommu_fwspec
        iommu/arm-smmu: Use helper functions to access dev->iommu_fwspec
        ACPI/IORT: Use helper functions to access dev->iommu_fwspec
        iommu: Introduce wrappers around dev->iommu_fwspec
        ...
      8e143b90
    • Linus Torvalds's avatar
      Merge tag 'dmaengine-4.21-rc1' of git://git.infradead.org/users/vkoul/slave-dma · 78e8696c
      Linus Torvalds authored
      Pull dmaengine updates from Vinod Koul:
       "This includes a new driver, removes R-Mobile APE6 as it is no longer
        used, sprd cyclic dma support, last batch of dma_slave_config
        direction removal and random updates to bunch of drivers.
      
        Summary:
         - New driver for UniPhier MIO DMA controller
         - Remove R-Mobile APE6 support
         - Sprd driver updates and support for cyclic link-list
         - Remove dma_slave_config direction usage from rest of drivers
         - Minor updates to dmatest, dw-dmac, zynqmp and bcm dma drivers"
      
      * tag 'dmaengine-4.21-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (48 commits)
        dmaengine: qcom_hidma: convert to DEFINE_SHOW_ATTRIBUTE
        dmaengine: pxa: remove DBGFS_FUNC_DECL()
        dmaengine: mic_x100_dma: convert to DEFINE_SHOW_ATTRIBUTE
        dmaengine: amba-pl08x: convert to DEFINE_SHOW_ATTRIBUTE
        dmaengine: Documentation: Add documentation for multi chan testing
        dmaengine: dmatest: Add transfer_size parameter
        dmaengine: dmatest: Add alignment parameter
        dmaengine: dmatest: Use fixed point div to calculate iops
        dmaengine: dmatest: Add support for multi channel testing
        dmaengine: rcar-dmac: Document R8A774C0 bindings
        dt-bindings: dmaengine: usb-dmac: Add binding for r8a774c0
        dmaengine: zynqmp_dma: replace spin_lock_bh with spin_lock_irqsave
        dmaengine: sprd: Add me as one of the module authors
        dmaengine: sprd: Support DMA 2-stage transfer mode
        dmaengine: sprd: Support DMA link-list cyclic callback
        dmaengine: sprd: Set cur_desc as NULL when free or terminate one dma channel
        dmaengine: sprd: Fix the last link-list configuration
        dmaengine: sprd: Get transfer residue depending on the transfer direction
        dmaengine: sprd: Remove direction usage from struct dma_slave_config
        dmaengine: dmatest: fix a small memory leak in dmatest_func()
        ...
      78e8696c
    • Linus Torvalds's avatar
      Merge tag 'kgdb-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux · fcf01044
      Linus Torvalds authored
      Pull kgdb updates from Daniel Thompson:
       "Mostly clean ups although while Doug's was chasing down a odd lockdep
        warning he also did some work to improved debugger resilience when
        some CPUs fail to respond to the round up request.
      
        The main changes are:
      
         - Fixing a lockdep warning on architectures that cannot use an NMI
           for the round up plus related changes to make CPU round up and all
           CPU backtrace more resilient.
      
         - Constify the arch ops tables
      
         - A couple of other small clean ups
      
        Two of the three patchsets here include changes that spill over into
        arch/. Changes in the arch space are relatively narrow in scope (and
        directly related to kgdb). Didn't get comprehensive acks but all
        impacted maintainers were Cc:ed in good time"
      
      * tag 'kgdb-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux:
        kgdb/treewide: constify struct kgdb_arch arch_kgdb_ops
        mips/kgdb: prepare arch_kgdb_ops for constness
        kdb: use bool for binary state indicators
        kdb: Don't back trace on a cpu that didn't round up
        kgdb: Don't round up a CPU that failed rounding up before
        kgdb: Fix kgdb_roundup_cpus() for arches who used smp_call_function()
        kgdb: Remove irq flags from roundup
      fcf01044
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://github.com/openrisc/linux · fbea8c7c
      Linus Torvalds authored
      Pull OpenRISC update from Stafford Horne:
       "Just one change for 4.21: Update comments for name change or32 -> or1k
        from Geert Uytterhoeven"
      
      * tag 'for-linus' of git://github.com/openrisc/linux:
        openrisc: Fix broken paths to arch/or32
      fbea8c7c
    • Linus Torvalds's avatar
      Merge tag 'rtc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux · 28e8c4bc
      Linus Torvalds authored
      Pull RTC updates from Alexandre Belloni:
       "Subsystem:
         - new %ptR printk format
         - rename core files
         - allow registration of multiple nvmem devices
      
        New driver:
         - i.MX system controller RTC
      
        Driver updates:
         - abx80x: handle voltage ioctls, correct binding doc
         - m41t80: correct month in alarm reads
         - pcf85363: add pcf85263 support
         - pcf8523: properly handle battery low flag
         - s3c: limit alarm to one year in the future as ALMYEAR is broken
         - sun6i: rework clock output binding"
      
      * tag 'rtc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (54 commits)
        rtc: rename core files
        rtc: nvmem: fix possible use after free
        rtc: add i.MX system controller RTC support
        dt-bindings: fsl: scu: add rtc binding
        rtc: pcf2123: Add Microcrystal rv2123
        rtc: class: reimplement devm_rtc_device_register
        rtc: enforce rtc_timer_init private_data type
        rtc: abx80x: Implement RTC_VL_READ,CLR ioctls
        rtc: pcf85363: Add support for NXP pcf85263 rtc
        dt-bindings: rtc: pcf85363: Document pcf85263 real-time clock
        rtc: pcf8523: don't return invalid date when battery is low
        dt-bindings: rtc: use a generic node name for ds1307
        PM: Switch to use %ptR
        m68k/mac: Switch to use %ptR
        Input: hp_sdc_rtc - Switch to use %ptR
        rtc: tegra: Switch to use %ptR
        rtc: s5m: Switch to use %ptR
        rtc: s3c: Switch to use %ptR
        rtc: rx8025: Switch to use %ptR
        rtc: rx6110: Switch to use %ptR
        ...
      28e8c4bc
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · c9bef4a6
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "We have no core changes but lots of incremental development in drivers
        all over the place: Renesas, NXP, Mediatek and Actions Semiconductor
        keep churning out new SoCs.
      
        I have some subtree maintainers for Renesas and Intel helping out to
        keep down the load, it's been working smoothly (Samsung also have a
        subtree but it was not used this cycle.)
      
        New drivers:
      
         - NXP (ex Freescale) i.MX 8 QXP SoC driver.
      
         - Mediatek MT6797 SoC driver.
      
         - Mediatek MT7629 SoC driver.
      
         - Actions Semiconductor S700 SoC driver.
      
         - Renesas RZ/A2 SoC driver.
      
         - Allwinner sunxi suniv F1C100 SoC driver.
      
         - Qualcomm PMS405 PMIC driver.
      
         - Microsemi Ocelot Jaguar2 SoC driver.
      
        Improvements:
      
         - Some RT improvements (using raw spinlocks where appropriate).
      
         - A lot of new pin sets on the Renesas PFC pin controllers.
      
         - GPIO hogs now work on the Qualcomm SPMI/SSBI pin controller GPIO
           chips, and Xway.
      
         - Major modernization of the Intel pin control drivers.
      
         - STM32 pin control driver will now synchronize usage of pins with
           another CPU using a hardware spinlock"
      
      * tag 'pinctrl-v4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (145 commits)
        dt-bindings: arm: fsl-scu: add imx8qm pinctrl support
        pinctrl: freescale: Break dependency on SOC_IMX8MQ for i.MX8MQ
        pinctrl: imx-scu: Depend on IMX_SCU
        pinctrl: ocelot: Add dependency on HAS_IOMEM
        pinctrl: ocelot: add MSCC Jaguar2 support
        pinctrl: bcm: ns: support updated DT binding as syscon subnode
        dt-bindings: pinctrl: bcm4708-pinmux: rework binding to use syscon
        MAINTAINERS: merge at91 pinctrl entries
        pinctrl: imx8qxp: break the dependency on SOC_IMX8QXP
        pinctrl: uniphier: constify uniphier_pinctrl_socdata
        pinctrl: mediatek: improve Kconfig dependencies
        pinctrl: msm: mark PM functions as __maybe_unused
        dt-bindings: pinctrl: sunxi: Add supply properties
        pinctrl: meson: meson8b: add the missing GPIO_GROUPs for BOOT and CARD
        pinctrl: meson: meson8: add the missing GPIO_GROUPs for BOOT and CARD
        pinctrl: meson: meson8: rename the "gpio" function to "gpio_periphs"
        pinctrl: meson: meson8: rename the "gpio" function to "gpio_periphs"
        pinctrl: meson: meson8b: fix the GPIO function for the GPIOAO pins
        pinctrl: meson: meson8: fix the GPIO function for the GPIOAO pins
        pinctrl: sh-pfc: Make pinmux_cfg_reg.var_field_width[] variable-length
        ...
      c9bef4a6
    • Linus Torvalds's avatar
      Merge tag 'linux-watchdog-4.21-rc1' of git://www.linux-watchdog.org/linux-watchdog · 115502a6
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       - add TQ-Systems TQMX86 watchdog driver
       - add Qualcomm PM8916 watchdog driver
       - w83627hf_wdt: add quirk for Inves system
       - renesas_wdt: several improvements and document r8a774c0 support
       - mena21_wdt, mtx-1: Convert to use GPIO descriptor
       - bcm281xx, ie6xx_wdt: convert to DEFINE_SHOW_ATTRIBUTE
       - documentation: add PM usage and kernel-api: don't reference removed functions
       - update bindings for MT7629 SoC
       - several small fixes
      
      * tag 'linux-watchdog-4.21-rc1' of git://www.linux-watchdog.org/linux-watchdog: (22 commits)
        watchdog: tqmx86: Add watchdog driver for the IO controller
        dt-bindings: watchdog: renesas-wdt: Document r8a774c0 support
        watchdog: docs: kernel-api: don't reference removed functions
        watchdog: add documentation for PM usage
        watchdog: mtx-1: Convert to use GPIO descriptor
        watchdog: mena21_wdt: Convert to GPIO descriptors
        dt-bindings: watchdog: Add Qualcomm PM8916 watchdog
        watchdog: Add pm8916 watchdog driver
        dt-bindings: watchdog: update bindings for MT7629 SoC
        watchdog: renesas_wdt: don't keep timer value during suspend/resume
        watchdog: ie6xx_wdt: convert to DEFINE_SHOW_ATTRIBUTE
        watchdog: bcm281xx: convert to DEFINE_SHOW_ATTRIBUTE
        watchdog: asm9260_wdt: make array mode_name static, shrinks object size
        watchdog/hpwdt: Update driver version.
        watchdog/hpwdt: Do not claim unsupported hardware
        watchdog/hpwdt: Exclude via blacklist
        Watchdog: remove outdated comment
        watchdog: w83627hf_wdt: Add quirk for Inves system
        watchdog: cpwd: add of_node_put()
        watchdog: renesas_wdt: don't set divider while watchdog is running
        ...
      115502a6
    • Eric Biggers's avatar
      KEYS: fix parsing invalid pkey info string · 57b0e314
      Eric Biggers authored
      We need to check the return value of match_token() for Opt_err before
      doing anything with it.
      
      [ Not only did the old "-1" value for Opt_err cause problems for the
        __test_and_set_bit(), as fixed in commit 94c13f66 ("security:
        don't use a negative Opt_err token index"), but accessing
        "args[0].from" is invalid for the Opt_err case, as pointed out by Eric
        later.  - Linus ]
      
      Reported-by: syzbot+a22e0dc07567662c50bc@syzkaller.appspotmail.com
      Fixes: 00d60fd3 ("KEYS: Provide keyctls to drive the new key type ops for asymmetric keys [ver #2]")
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      Cc: stable@kernel.org # 4.20
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      57b0e314
    • Linus Torvalds's avatar
      Merge tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · e1ef035d
      Linus Torvalds authored
      Pull ARM SoC defconfig updates from Olof Johansson:
       "Most changes here are to enable new drivers and platforms in the
        various configs that affect them. Most of these have been covered and
        described in the other branches, we mostly keep defconfig separate to
        avoid conflicts between SoC/dt/driver updates that they otherwise
        would be grouped with.
      
        One thing worth mentioning here is that OMAP changes from using their
        own UART driver, to 8250, for the multi_v7_defconfig shared config on
        32-bit. This means that the console is now named ttyS* instead of
        ttyO*. This change was already done for omap2_defconfig a while back,
        so most users of these configs have either already updated, or can
        easily follow the same patterns as they did at that time. This makes
        platform support slightly easier for distros, since they no longer
        need to keep track of a separate console prefix for these platforms"
      
      * tag 'armsoc-defconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (31 commits)
        Revert "arm64: defconfig: Enable FSL_MC_BUS and FSL_MC_DPIO"
        arm64: defconfig: Enable FSL_MC_BUS and FSL_MC_DPIO
        arm64: defconfig: Replace PINCTRL_MT7622 with PINCTRL_MTK_MOORE
        arm64: defconfig: Regenerate for v4.20
        ARM: multi_v7_defconfig: Add TOSHIBA TC358764 bridge driver
        ARM: multi_v7_defconfig: Add MAX8952 regulator driver
        ARM: exynos_defconfig: Add TOSHIBA TC358764 bridge driver
        ARM: exynos_defconfig: Add MAX8952 regulator driver
        ARM: exynos_defconfig: Add MAX8998 RTC and charger drivers
        ARM: imx_v6_v7_defconfig: add imx7ulp support
        ARM: imx_v6_v7_defconfig: Select TOUCHSCREEN_GOODIX
        ARM: multi_v7_defconfig: enable STM32 analog & timer drivers
        arm64: defconfig: Enable GCC and PINCTRL for MSM8998
        arm64: defconfig: Enable core Qualcomm SDM845 options
        ARM: defconfig: Enable the PL111 DRM driver on vexpress
        ARM: defconfig: Update the vexpress defconfig
        arm64: defconfig: Enable some qcom remoteproc configs
        arm64: defconfig: Enable QCS404 configs
        ARM: imx_v6_v7_defconfig: Enable USB_ANNOUNCE_NEW_DEVICES
        ARM: imx_v6_v7_defconfig: Enable BT_BNEP
        ...
      e1ef035d
    • Linus Torvalds's avatar
      Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · b7badd1d
      Linus Torvalds authored
      Pull ARM Device-tree updates from Olof Johansson:
       "As usual, this is where the bulk of our changes end up landing each
        merge window.
      
        The individual updates are too many to enumerate, many many platforms
        have seen additions of device descriptions such that they are
        functionally more complete (in fact, this is often the bulk of updates
        we see).
      
        Instead I've mostly focused on highlighting the new platforms below as
        they are introduced. Sometimes the introduction is of mostly a
        fragment, that later gets filled in on later releases, and in some
        cases it's near-complete platform support. The latter is more common
        for derivative platforms that already has similar support in-tree.
      
        Two SoCs are slight outliers from the usual range of additions.
        Allwinner support for F1C100s, a quite old SoC (ARMv5-based) shipping
        in the Lychee Pi Nano platform. At the other end is NXP Layerscape
        LX2160A, a 16-core 2.2GHz Cortex-A72 SoC with a large amount of I/O
        aimed at infrastructure/networking.
      
        TI updates stick out in the diff stats too, in particular because they
        have moved the description of their L4 on-chip interconnect to
        devicetree, which opens up for removal of even more of their
        platform-specific 'hwmod' description tables over the next few
        releases.
      
        SoCs:
         - Qualcomm QCS404 (4x Cortex-A53)
         - Allwinner T3 (rebranded R40) and f1c100s (armv5)
         - NXP i.MX7ULP (1x Cortex-A7 + 1x Cortex-M4)
         - NXP LS1028A (2x Cortex-A72), LX2160A (16x Cortex-A72)
      
        New platforms:
         - Rockchip: Gru Scarlet (RK3188 Tablet)
         - Amlogic: Phicomm N1 (S905D), Libretech S805-AC
         - Broadcom: Linksys EA6500 v2 Wi-Fi router (BCM4708)
         - Qualcomm: QCS404 base platform and EVB
         - Qualcomm: Remove of Arrow SD600
         - PXA: First PXA3xx DT board: Raumfeld
         - Aspeed: Facebook Backpack-CMM BMC
         - Renesas iWave G20D-Q7 (RZ/G1N)
         - Allwinner t3-cqa3t-bv3 (T3/R40) and Lichee Pi Nano (F1C100s)
         - Allwinner Emlid Neutis N5, Mapleboard MP130
         - Marvell Macchiatobin Single Shot (Armada 8040, no 10GbE)
         - i.MX: mtrion emCON-MX6, imx6ul-pico-pi, imx7d-sdb-reva
         - VF610: Liebherr's BK4 device, ZII SCU4 AIB board
         - i.MX7D PICO Hobbit baseboard
         - i.MX7ULP EVK board
         - NXP LX2160AQDS and LX2160ARDB boards
      
        Other:
         - Coresight binding updates across the board
         - CPU cooling maps updates across the board"
      
      * tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (648 commits)
        ARM: dts: suniv: Fix improper bindings include patch
        ARM: dts: sunxi: Enable Broadcom-based Bluetooth for multiple boards
        arm64: dts: allwinner: a64: bananapi-m64: Add Bluetooth device node
        ARM: dts: suniv: Fix improper bindings include patch
        arm64: dts: Add spi-[tx/rx]-bus-width for the FSL QSPI controller
        arm64: dts: Remove unused properties from FSL QSPI driver nodes
        ARM: dts: Add spi-[tx/rx]-bus-width for the FSL QSPI controller
        ARM: dts: imx6sx-sdb: Fix the reg properties for the FSL QSPI nodes
        ARM: dts: Remove unused properties from FSL QSPI driver nodes
        arm64: dts: ti: k3-am654: Enable main domain McSPI0
        arm64: dts: ti: k3-am654: Add McSPI DT nodes
        arm64: dts: ti: k3-am654: Populate power-domain property for UART nodes
        arm64: dts: ti: k3-am654-base-board: Enable ECAP PWM
        arm64: dts: ti: k3-am65-main: Add ECAP PWM node
        arm64: dts: ti: k3-am654-base-board: Add I2C nodes
        arm64: dts: ti: am654-base-board: Add pinmux for main uart0
        arm64: dts: ti: k3-am65: Add pinctrl regions
        dt-bindings: pinctrl: k3: Introduce pinmux definitions
        ARM: dts: exynos: Specify I2S assigned clocks in proper node
        ARM: dts: exynos: Add missing CPUs in cooling maps for Odroid X2
        ...
      b7badd1d
    • Linus Torvalds's avatar
      Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · d36377c6
      Linus Torvalds authored
      Pull ARM SoC driver updates from Olof Johansson:
       "Misc driver updates for platforms, many of them power related.
      
         - Rockchip adds power domain support for rk3066 and rk3188
      
         - Amlogic adds a power measurement driver
      
         - Allwinner adds SRAM support for three platforms (F1C100, H5, A64
           C1)
      
         - Wakeup and ti-sysc (platform bus) fixes for OMAP/DRA7
      
         - Broadcom fixes suspend/resume with Thumb2 kernels, and improves
           stability of a handful of firmware/platform interfaces
      
         - PXA completes their conversion to dmaengine framework
      
         - Renesas does a bunch of PM cleanups across many platforms
      
         - Tegra adds support for suspend/resume on T186/T194, which includes
           some driver cleanups and addition of wake events
      
         - Tegra also adds a driver for memory controller (EMC) on Tegra2
      
         - i.MX tweaks power domain bindings, and adds support for i.MX8MQ in
           GPC
      
         - Atmel adds identifiers and LPDDR2 support for a new SoC, SAM9X60
      
        and misc cleanups across several platforms"
      
      * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (73 commits)
        ARM: at91: add support in soc driver for new SAM9X60
        ARM: at91: add support in soc driver for LPDDR2 SiP
        memory: omap-gpmc: Use of_node_name_eq for node name comparisons
        bus: ti-sysc: Check for no-reset and no-idle flags at the child level
        ARM: OMAP2+: Check also the first dts child for hwmod flags
        soc: amlogic: meson-clk-measure: Add missing REGMAP_MMIO dependency
        soc: imx: gpc: Increase GPC_CLK_MAX to 7
        soc: renesas: rcar-sysc: Fix power domain control after system resume
        soc: renesas: rcar-sysc: Merge PM Domain registration and linking
        soc: renesas: rcar-sysc: Remove rcar_sysc_power_{down,up}() helpers
        soc: renesas: r8a77990-sysc: Fix initialization order of 3DG-{A,B}
        dt-bindings: sram: sunxi: Add compatible for the A64 SRAM C1
        dt-bindings: sram: sunxi: Add bindings for the H5 with SRAM C1
        dt-bindings: sram: Add Allwinner suniv F1C100s
        soc: sunxi: sram: Add support for the H5 SoC system control
        soc: sunxi: sram: Enable EMAC clock access for H3 variant
        soc: imx: gpcv2: add support for i.MX8MQ SoC
        soc: imx: gpcv2: move register access table to domain data
        soc: imx: gpcv2: prefix i.MX7 specific defines
        dmaengine: pxa: make the filter function internal
        ...
      d36377c6
    • Linus Torvalds's avatar
      Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 0922275e
      Linus Torvalds authored
      Pull arm SoC platform updates from Olof Johansson:
       "SoC updates, mostly refactorings and cleanups of old legacy platforms,
        but also a few more things:
      
        New SoC support this release:
         - NXP/Freescale i.MX7ULP (1x Cortex-A7, Cortex-M4, graphics, etc)
         - Allwinner F1C100, older platform with an ARM926-EJS (ARMv5) core
      
        Cleanups of various platforms:
         - OMAP1 ams-delta does some GPIO cleanups
         - Davinci removes of at24 platform data
         - Samsung cleans up old wakeup, PM debug and secondary core boot code
         - Renesas moves around config options and PM code to drivers/soc for
           sharing with 64-bit and more consistency
         - i.MX, Broadcom and SoCFPGA all have tweaks to lowlevel debug
           console setups
         - SoCFPGA adds explicit selection of ARM errata and removes some
           unused code
      
        This also contains a few patches that I had queued up as fixes for
        4.20 but didn't send in before the release"
      
      * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (68 commits)
        arm64: dts: renesas: draak: Fix CVBS input
        ARM: omap2: avoid section mismatch warning
        ARM: tegra: avoid section mismatch warning
        ARM: ks8695: fix section mismatch warning
        ARM: pxa: avoid section mismatch warning
        ARM: mmp: fix pxa168_device_usb_phy use on aspenite
        ARM: mmp: fix timer_init calls
        ARM: OMAP1: fix USB configuration for device-only setups
        ARM: OMAP1: add MMC configuration for Palm Tungsten E
        ARM: imx: fix dependencies on imx7ulp
        ARM: meson: select HAVE_ARM_TWD and ARM_GLOBAL_TIMER
        MAINTAINERS: add drivers/soc/amlogic/ to amlogic list
        ARM: imx: add initial support for imx7ulp
        ARM: debug-imx: only define DEBUG_IMX_UART_PORT if needed
        ARM: dts: Fix OMAP4430 SDP Ethernet startup
        ARM: dts: am335x-pdu001: Fix polarity of card detection input
        ARM: OMAP1: ams-delta: Fix audio permanently muted
        ARM: dts: omap5: Fix dual-role mode on Super-Speed port
        arm64: dts: rockchip: fix rk3399-rockpro64 regulator gpios
        ARM: davinci: da850-evm: remove unnecessary include
        ...
      0922275e
  3. 31 Dec, 2018 20 commits
    • Olof Johansson's avatar
      Merge branch 'fixes' into next/soc · cac1fc8f
      Olof Johansson authored
      Merge in fixes here, since the last batch didn't make it in before the
      release of 4.20, and we might as well group them with this set of
      patches.
      
      * fixes: (822 commits)
        arm64: dts: renesas: draak: Fix CVBS input
        ARM: dts: Fix OMAP4430 SDP Ethernet startup
        ARM: dts: am335x-pdu001: Fix polarity of card detection input
        ARM: OMAP1: ams-delta: Fix audio permanently muted
        ARM: dts: omap5: Fix dual-role mode on Super-Speed port
        arm64: dts: rockchip: fix rk3399-rockpro64 regulator gpios
        ARM: dts: imx7d-nitrogen7: Fix the description of the Wifi clock
        ARM: imx: update the cpu power up timing setting on i.mx6sx
        Revert "arm64: dts: marvell: add CPU Idle power state support on Armada 7K/8K"
        ARM: dts: imx7d-pico: Describe the Wifi clock
        ARM: dts: realview: Fix some more duplicate regulator nodes
        MAINTAINERS: update entry for MMP platform
        ARM: mmp/mmp2: fix cpu_is_mmp2() on mmp2-dt
        MAINTAINERS: mediatek: Update SoC entry
        ARM: dts: bcm2837: Fix polarity of wifi reset GPIOs
        + Linux 4.20-rc5
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      cac1fc8f
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 495d714a
      Linus Torvalds authored
      Pull tracing updates from Steven Rostedt:
      
       - Rework of the kprobe/uprobe and synthetic events to consolidate all
         the dynamic event code. This will make changes in the future easier.
      
       - Partial rewrite of the function graph tracing infrastructure. This
         will allow for multiple users of hooking onto functions to get the
         callback (return) of the function. This is the ground work for having
         kprobes and function graph tracer using one code base.
      
       - Clean up of the histogram code that will facilitate adding more
         features to the histograms in the future.
      
       - Addition of str_has_prefix() and a few use cases. There currently is
         a similar function strstart() that is used in a few places, but only
         returns a bool and not a length. These instances will be removed in
         the future to use str_has_prefix() instead.
      
       - A few other various clean ups as well.
      
      * tag 'trace-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (57 commits)
        tracing: Use the return of str_has_prefix() to remove open coded numbers
        tracing: Have the historgram use the result of str_has_prefix() for len of prefix
        tracing: Use str_has_prefix() instead of using fixed sizes
        tracing: Use str_has_prefix() helper for histogram code
        string.h: Add str_has_prefix() helper function
        tracing: Make function ‘ftrace_exports’ static
        tracing: Simplify printf'ing in seq_print_sym
        tracing: Avoid -Wformat-nonliteral warning
        tracing: Merge seq_print_sym_short() and seq_print_sym_offset()
        tracing: Add hist trigger comments for variable-related fields
        tracing: Remove hist trigger synth_var_refs
        tracing: Use hist trigger's var_ref array to destroy var_refs
        tracing: Remove open-coding of hist trigger var_ref management
        tracing: Use var_refs[] for hist trigger reference checking
        tracing: Change strlen to sizeof for hist trigger static strings
        tracing: Remove unnecessary hist trigger struct field
        tracing: Fix ftrace_graph_get_ret_stack() to use task and not current
        seq_buf: Use size_t for len in seq_buf_puts()
        seq_buf: Make seq_buf_puts() null-terminate the buffer
        arm64: Use ftrace_graph_get_ret_stack() instead of curr_ret_stack
        ...
      495d714a
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha · f12e840c
      Linus Torvalds authored
      Pull alpha architecture updates from Matt Turner:
       "A few small changes for alpha as well as the new system call table
        generation support from Firoz Khan"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha:
        alpha: Remove some unused variables
        alpha: rtc: simplify alpha_rtc_init
        alpha: Fix a typo on ptrace.h
        alpha: fix spelling mistake QSD_PORT_ACTUVE -> QSD_PORT_ACTIVE
        alpha: generate uapi header and syscall table header files
        alpha: add system call table generation support
        alpha: add __NR_syscalls along with NR_SYSCALLS
        alpha: remove CONFIG_OSF4_COMPAT flag from syscall table
        alpha: move __IGNORE* entries to non uapi header
      f12e840c
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e3ed513b
      Linus Torvalds authored
      Pull scheduler fix from Ingo Molnar:
       "This is a revert for a lockup in cgroups-intense workloads - the real
        fixes will come later"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/fair: Fix infinite loop in update_blocked_averages() by reverting a9e7f654
      e3ed513b
    • Linus Torvalds's avatar
      Merge tag 'dax-fix-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 2a1a2c1a
      Linus Torvalds authored
      Pull dax fix from Dan Williams:
       "Clean up unnecessary usage of prepare_to_wait_exclusive().
      
        While I feel a bit silly sending a single-commit pull-request there is
        nothing else queued up for dax this cycle. This change has shipped in
        -next for multiple releases"
      
      * tag 'dax-fix-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        dax: Use non-exclusive wait in wait_entry_unlocked()
      2a1a2c1a
    • Linus Torvalds's avatar
      Merge tag 'f2fs-for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs · 9ab97aea
      Linus Torvalds authored
      Pull f2fs updates from Jaegeuk Kim:
       "In this round, we've focused on bug fixes since Pixel devices have
        been shipping with f2fs. Some of them were related to hardware
        encryption support which are actually not an issue in mainline, but
        would be better to merge them in order to avoid potential bugs.
      
        Enhancements:
         - do GC sub-sections when the section is large
         - add a flag in ioctl(SHUTDOWN) to trigger fsck for QA
         - use kvmalloc() in order to give another chance to avoid ENOMEM
      
        Bug fixes:
         - fix accessing memory boundaries in a malformed iamge
         - GC gives stale unencrypted block
         - GC counts in large sections
         - detect idle time more precisely
         - block allocation of DIO writes
         - race conditions between write_begin and write_checkpoint
         - allow GCs for node segments via ioctl()
      
        There are various clean-ups and minor bug fixes as well"
      
      * tag 'f2fs-for-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (43 commits)
        f2fs: sanity check of xattr entry size
        f2fs: fix use-after-free issue when accessing sbi->stat_info
        f2fs: check PageWriteback flag for ordered case
        f2fs: fix validation of the block count in sanity_check_raw_super
        f2fs: fix missing unlock(sbi->gc_mutex)
        f2fs: fix to dirty inode synchronously
        f2fs: clean up structure extent_node
        f2fs: fix block address for __check_sit_bitmap
        f2fs: fix sbi->extent_list corruption issue
        f2fs: clean up checkpoint flow
        f2fs: flush stale issued discard candidates
        f2fs: correct wrong spelling, issing_*
        f2fs: use kvmalloc, if kmalloc is failed
        f2fs: remove redundant comment of unused wio_mutex
        f2fs: fix to reorder set_page_dirty and wait_on_page_writeback
        f2fs: clear PG_writeback if IPU failed
        f2fs: add an ioctl() to explicitly trigger fsck later
        f2fs: avoid frequent costly fsck triggers
        f2fs: fix m_may_create to make OPU DIO write correctly
        f2fs: fix to update new block address correctly for OPU
        ...
      9ab97aea
    • Vinod Koul's avatar
      Merge branch 'topic/xilinx' into for-linus · 66061182
      Vinod Koul authored
      66061182
    • Vinod Koul's avatar
      Merge branch 'topic/uniphier' into for-linus · 69ca36b3
      Vinod Koul authored
      69ca36b3
    • Vinod Koul's avatar
      Merge branch 'topic/sprd' into for-linus · 990beed9
      Vinod Koul authored
      990beed9
    • Vinod Koul's avatar
      Merge branch 'topic/sh' into for-linus · f782086a
      Vinod Koul authored
      f782086a
    • Vinod Koul's avatar
      Merge branch 'topic/sa11x0' into for-linus · 56e8e1a1
      Vinod Koul authored
      56e8e1a1
    • Vinod Koul's avatar
      Merge branch 'topic/mtk' into for-linus · 68ded1dc
      Vinod Koul authored
      68ded1dc
    • Vinod Koul's avatar
      Merge branch 'topic/imx' into for-linus · 23a1bff7
      Vinod Koul authored
      23a1bff7
    • Vinod Koul's avatar
      Merge branch 'topic/ep93xx' into for-linus · b7ff66ca
      Vinod Koul authored
      b7ff66ca
    • Vinod Koul's avatar
      Merge branch 'topic/dw' into for-linus · 010299bf
      Vinod Koul authored
      010299bf
    • Vinod Koul's avatar
      Merge branch 'topic/dmatest' into for-linus · 466e601a
      Vinod Koul authored
      466e601a
    • Vinod Koul's avatar
      77ee1aac
    • Vinod Koul's avatar
      Merge branch 'topic/coh' into for-linus · 5f443256
      Vinod Koul authored
      5f443256
    • Vinod Koul's avatar
      Merge branch 'topic/bcm' into for-linus · 7c2269e9
      Vinod Koul authored
      7c2269e9
    • Alexandre Belloni's avatar
      rtc: rename core files · 36e14f5f
      Alexandre Belloni authored
      Rename core files so there is a clearer separation between the RTC core and
      the RTC drivers.
      Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
      36e14f5f
  4. 30 Dec, 2018 7 commits
    • Alexandre Belloni's avatar
      rtc: nvmem: fix possible use after free · bba3d2da
      Alexandre Belloni authored
      In cas of probe failure, devres may free the memory allocated for
      rtc->nvram before devm_rtc_release_device() is called. This leads to
      rtc_nvram_unregister using it after being freed which may lead to a crash.
      
      This has been shown to happen after commit 461e557b ("rtc: nvmem: use
      devm_nvmem_register()")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
      bba3d2da
    • Linus Torvalds's avatar
      sched/fair: Fix infinite loop in update_blocked_averages() by reverting a9e7f654 · c40f7d74
      Linus Torvalds authored
      Zhipeng Xie, Xie XiuQi and Sargun Dhillon reported lockups in the
      scheduler under high loads, starting at around the v4.18 time frame,
      and Zhipeng Xie tracked it down to bugs in the rq->leaf_cfs_rq_list
      manipulation.
      
      Do a (manual) revert of:
      
        a9e7f654 ("sched/fair: Fix O(nr_cgroups) in load balance path")
      
      It turns out that the list_del_leaf_cfs_rq() introduced by this commit
      is a surprising property that was not considered in followup commits
      such as:
      
        9c2791f9 ("sched/fair: Fix hierarchical order in rq->leaf_cfs_rq_list")
      
      As Vincent Guittot explains:
      
       "I think that there is a bigger problem with commit a9e7f654 and
        cfs_rq throttling:
      
        Let take the example of the following topology TG2 --> TG1 --> root:
      
         1) The 1st time a task is enqueued, we will add TG2 cfs_rq then TG1
            cfs_rq to leaf_cfs_rq_list and we are sure to do the whole branch in
            one path because it has never been used and can't be throttled so
            tmp_alone_branch will point to leaf_cfs_rq_list at the end.
      
         2) Then TG1 is throttled
      
         3) and we add TG3 as a new child of TG1.
      
         4) The 1st enqueue of a task on TG3 will add TG3 cfs_rq just before TG1
            cfs_rq and tmp_alone_branch will stay  on rq->leaf_cfs_rq_list.
      
        With commit a9e7f654, we can del a cfs_rq from rq->leaf_cfs_rq_list.
        So if the load of TG1 cfs_rq becomes NULL before step 2) above, TG1
        cfs_rq is removed from the list.
        Then at step 4), TG3 cfs_rq is added at the beginning of rq->leaf_cfs_rq_list
        but tmp_alone_branch still points to TG3 cfs_rq because its throttled
        parent can't be enqueued when the lock is released.
        tmp_alone_branch doesn't point to rq->leaf_cfs_rq_list whereas it should.
      
        So if TG3 cfs_rq is removed or destroyed before tmp_alone_branch
        points on another TG cfs_rq, the next TG cfs_rq that will be added,
        will be linked outside rq->leaf_cfs_rq_list - which is bad.
      
        In addition, we can break the ordering of the cfs_rq in
        rq->leaf_cfs_rq_list but this ordering is used to update and
        propagate the update from leaf down to root."
      
      Instead of trying to work through all these cases and trying to reproduce
      the very high loads that produced the lockup to begin with, simplify
      the code temporarily by reverting a9e7f654 - which change was clearly
      not thought through completely.
      
      This (hopefully) gives us a kernel that doesn't lock up so people
      can continue to enjoy their holidays without worrying about regressions. ;-)
      
      [ mingo: Wrote changelog, fixed weird spelling in code comment while at it. ]
      Analyzed-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
      Analyzed-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
      Reported-by: default avatarZhipeng Xie <xiezhipeng1@huawei.com>
      Reported-by: default avatarSargun Dhillon <sargun@sargun.me>
      Reported-by: default avatarXie XiuQi <xiexiuqi@huawei.com>
      Tested-by: default avatarZhipeng Xie <xiezhipeng1@huawei.com>
      Tested-by: default avatarSargun Dhillon <sargun@sargun.me>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Acked-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
      Cc: <stable@vger.kernel.org> # v4.13+
      Cc: Bin Li <huawei.libin@huawei.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Fixes: a9e7f654 ("sched/fair: Fix O(nr_cgroups) in load balance path")
      Link: http://lkml.kernel.org/r/1545879866-27809-1-git-send-email-xiexiuqi@huawei.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      c40f7d74
    • Christophe Leroy's avatar
      kgdb/treewide: constify struct kgdb_arch arch_kgdb_ops · cc028297
      Christophe Leroy authored
      checkpatch.pl reports the following:
      
        WARNING: struct kgdb_arch should normally be const
        #28: FILE: arch/mips/kernel/kgdb.c:397:
        +struct kgdb_arch arch_kgdb_ops = {
      
      This report makes sense, as all other ops struct, this
      one should also be const. This patch does the change.
      
      Cc: Vineet Gupta <vgupta@synopsys.com>
      Cc: Russell King <linux@armlinux.org.uk>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
      Cc: Richard Kuo <rkuo@codeaurora.org>
      Cc: Michal Simek <monstr@monstr.eu>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Burton <paul.burton@mips.com>
      Cc: James Hogan <jhogan@kernel.org>
      Cc: Ley Foon Tan <lftan@altera.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Rich Felker <dalias@libc.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: x86@kernel.org
      Acked-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Acked-by: default avatarPaul Burton <paul.burton@mips.com>
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Acked-by: default avatarBorislav Petkov <bp@suse.de>
      Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      cc028297
    • Christophe Leroy's avatar
      mips/kgdb: prepare arch_kgdb_ops for constness · 911b7afd
      Christophe Leroy authored
      MIPS is the only architecture modifying arch_kgdb_ops during init.
      This patch makes the init static, so that it can be changed to
      const in following patch, as recommended by checkpatch.pl
      Suggested-by: default avatarPaul Burton <paul.burton@mips.com>
      Acked-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Acked-by: default avatarPaul Burton <paul.burton@mips.com>
      Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      911b7afd
    • Nicholas Mc Guire's avatar
      kdb: use bool for binary state indicators · 7faedcd4
      Nicholas Mc Guire authored
      defcmd_in_progress  is the state trace for command group processing
      - within a command group or not -  usable  is an indicator if a command
      set is valid (allocated/non-empty) - so use a bool for those binary
      indication here.
      Signed-off-by: default avatarNicholas Mc Guire <hofrat@osadl.org>
      Reviewed-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      7faedcd4
    • Douglas Anderson's avatar
      kdb: Don't back trace on a cpu that didn't round up · 162bc7f5
      Douglas Anderson authored
      If you have a CPU that fails to round up and then run 'btc' you'll end
      up crashing in kdb becaue we dereferenced NULL.  Let's add a check.
      It's wise to also set the task to NULL when leaving the debugger so
      that if we fail to round up on a later entry into the debugger we
      won't backtrace a stale task.
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Acked-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      162bc7f5
    • Douglas Anderson's avatar
      kgdb: Don't round up a CPU that failed rounding up before · 87b09592
      Douglas Anderson authored
      If we're using the default implementation of kgdb_roundup_cpus() that
      uses smp_call_function_single_async() we can end up hanging
      kgdb_roundup_cpus() if we try to round up a CPU that failed to round
      up before.
      
      Specifically smp_call_function_single_async() will try to wait on the
      csd lock for the CPU that we're trying to round up.  If the previous
      round up never finished then that lock could still be held and we'll
      just sit there hanging.
      
      There's not a lot of use trying to round up a CPU that failed to round
      up before.  Let's keep a flag that indicates whether the CPU started
      but didn't finish to round up before.  If we see that flag set then
      we'll skip the next round up.
      
      In general we have a few goals here:
      - We never want to end up calling smp_call_function_single_async()
        when the csd is still locked.  This is accomplished because
        flush_smp_call_function_queue() unlocks the csd _before_ invoking
        the callback.  That means that when kgdb_nmicallback() runs we know
        for sure the the csd is no longer locked.  Thus when we set
        "rounding_up = false" we know for sure that the csd is unlocked.
      - If there are no timeouts rounding up we should never skip a round
        up.
      
      NOTE #1: In general trying to continue running after failing to round
      up CPUs doesn't appear to be supported in the debugger.  When I
      simulate this I find that kdb reports "Catastrophic error detected"
      when I try to continue.  I can overrule and continue anyway, but it
      should be noted that we may be entering the land of dragons here.
      Possibly the "Catastrophic error detected" was added _because_ of the
      future failure to round up, but even so this is an area of the code
      that hasn't been strongly tested.
      
      NOTE #2: I did a bit of testing before and after this change.  I
      introduced a 10 second hang in the kernel while holding a spinlock
      that I could invoke on a certain CPU with 'taskset -c 3 cat /sys/...".
      
      Before this change if I did:
      - Invoke hang
      - Enter debugger
      - g (which warns about Catastrophic error, g again to go anyway)
      - g
      - Enter debugger
      
      ...I'd hang the rest of the 10 seconds without getting a debugger
      prompt.  After this change I end up in the debugger the 2nd time after
      only 1 second with the standard warning about 'Timed out waiting for
      secondary CPUs.'
      
      I'll also note that once the CPU finished waiting I could actually
      debug it (aka "btc" worked)
      
      I won't promise that everything works perfectly if the errant CPU
      comes back at just the wrong time (like as we're entering or exiting
      the debugger) but it certainly seems like an improvement.
      
      NOTE #3: setting 'kgdb_info[cpu].rounding_up = false' is in
      kgdb_nmicallback() instead of kgdb_call_nmi_hook() because some
      implementations override kgdb_call_nmi_hook().  It shouldn't hurt to
      have it in kgdb_nmicallback() in any case.
      
      NOTE #4: this logic is really only needed because there is no API call
      like "smp_try_call_function_single_async()" or "smp_csd_is_locked()".
      If such an API existed then we'd use it instead, but it seemed a bit
      much to add an API like this just for kgdb.
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Acked-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      87b09592