1. 16 5月, 2015 4 次提交
    • L
      ACPI / EC: Fix and clean up register access guarding logics. · d8d031a6
      Lv Zheng 提交于
      In the polling mode, EC driver shouldn't access the EC registers too
      frequently. Though this statement is concluded from the non-root caused
      bugs (see links below), we've maintained the register access guarding
      logics in the current EC driver. The guarding logics can be found here and
      there, makes it hard to root cause real timing issues. This patch collects
      the guarding logics into one single function so that all hidden logics
      related to this can be seen clearly.
      
      The current guarding related code also has several issues:
      1. Per-transaction timestamp prevents inter-transaction guarding from being
         implemented in the same place. We have an inter-transaction udelay() in
         acpi_ec_transaction_unblocked(), this logic can be merged into ec_poll()
         if we can use per-device timestamp. This patch completes such merge to
         form a new ec_guard() function and collects all guarding related hidden
         logics in it.
         One hidden logic is: there is no inter-transaction guarding performed
         for non MSI quirk (wait polling mode), this patch skips
         inter-transaction guarding before wait_event_timeout() for the wait
         polling mode to reveal the hidden logic.
         The other hidden logic is: there is msleep() inter-transaction guarding
         performed when the GPE storming is observed. As after merging this
         commit:
           Commit: e1d4d90f
           Subject: ACPI / EC: Refine command storm prevention support
         EC_FLAGS_COMMAND_STORM is ensured to be cleared after invoking
         acpi_ec_transaction_unlocked(), the msleep() guard logic will never
         happen now. Since no one complains such change, this logic is likely
         added during the old times where the EC race issues are not fixed and
         the bugs are false root-caused to the timing issue. This patch simply
         removes the out-dated logic. We can restore it by stop skipping
         inter-transaction guarding for wait polling mode.
         Two different delay values are defined for msleep() and udelay() while
         they are merged in this patch to 550us.
      2. time_after() causes additional delay in the polling mode (can only be
         observed in noirq suspend/resume processes where polling mode is always
         used) before advance_transaction() is invoked ("wait polling" log is
         added before wait_event_timeout()). We can see 2 wait_event_timeout()
         invocations. This is because time_after() ensures a ">" validation while
         we only need a ">=" validation here:
         [   86.739909] ACPI: Waking up from system sleep state S3
         [   86.742857] ACPI : EC: 2: Increase command
         [   86.742859] ACPI : EC: ***** Command(RD_EC) started *****
         [   86.742861] ACPI : EC: ===== TASK (0) =====
         [   86.742871] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
         [   86.742873] ACPI : EC: EC_SC(W) = 0x80
         [   86.742876] ACPI : EC: ***** Event started *****
         [   86.742880] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   86.743972] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   86.747966] ACPI : EC: ===== TASK (0) =====
         [   86.747977] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
         [   86.747978] ACPI : EC: EC_DATA(W) = 0x06
         [   86.747981] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   86.751971] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   86.755969] ACPI : EC: ===== TASK (0) =====
         [   86.755991] ACPI : EC: EC_SC(R) = 0x21 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=1
         [   86.755993] ACPI : EC: EC_DATA(R) = 0x03
         [   86.755994] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   86.755995] ACPI : EC: ***** Command(RD_EC) stopped *****
         [   86.755996] ACPI : EC: 1: Decrease command
         This patch corrects this by using time_before() instead in ec_guard():
         [   54.283146] ACPI: Waking up from system sleep state S3
         [   54.285414] ACPI : EC: 2: Increase command
         [   54.285415] ACPI : EC: ***** Command(RD_EC) started *****
         [   54.285416] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   54.285417] ACPI : EC: ===== TASK (0) =====
         [   54.285424] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
         [   54.285425] ACPI : EC: EC_SC(W) = 0x80
         [   54.285427] ACPI : EC: ***** Event started *****
         [   54.285429] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   54.287209] ACPI : EC: ===== TASK (0) =====
         [   54.287218] ACPI : EC: EC_SC(R) = 0x20 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=0
         [   54.287219] ACPI : EC: EC_DATA(W) = 0x06
         [   54.287222] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   54.291190] ACPI : EC: ===== TASK (0) =====
         [   54.291210] ACPI : EC: EC_SC(R) = 0x21 SCI_EVT=1 BURST=0 CMD=0 IBF=0 OBF=1
         [   54.291213] ACPI : EC: EC_DATA(R) = 0x03
         [   54.291214] ACPI : EC: ~~~~~ wait polling ~~~~~
         [   54.291215] ACPI : EC: ***** Command(RD_EC) stopped *****
         [   54.291216] ACPI : EC: 1: Decrease command
      
      After cleaning up all guarding logics, we have one single function
      ec_guard() collecting all old, non-root-caused, hidden logics. Then we can
      easily tune the logics in one place to respond to the bug reports.
      
      Except the time_before() change, all other changes do not change the
      behavior of the EC driver.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=12011
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=20242
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=77431Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      d8d031a6
    • L
      ACPI / EC: Remove irqs_disabled() check. · 373783e6
      Lv Zheng 提交于
      The following commit merges polling and interrupt modes for EC driver:
        Commit: 2a84cb98 Mon Sep 17 00:00:00 2001
        Subject: ACPI: EC: Merge IRQ and POLL modes
      The irqs_disabled() check introduced in it tries to fall into busy polling
      mode when the context of ec_poll() cannot sleep.
      
      Actually ec_poll() is ensured to be invoked in the contexts that can sleep
      (from a sysfs /sys/kernel/debug/ec/ec0/io access, or from
      acpi_evaluate_object(), or from acpi_ec_gpe_poller()). Without the MSI
      quirk, we never saw the udelay() logic invoked. Thus this check is useless
      and can be removed.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      373783e6
    • L
      ACPI / EC: Remove storming threashold enlarging quirk. · 5ab82a11
      Lv Zheng 提交于
      This patch removes the storming threashold enlarging quirk.
      
      After applying the following commit, we can notice that there is no no-op
      GPE handling invocation can be observed, thus it is unlikely that the
      no-op counts can exceed the storming threashold:
        Commit: ca37bfdf
        Subject: ACPI / EC: Fix several GPE handling issues by deploying ACPI_GPE_DISPATCH_RAW_HANDLER mode.
      Even when the storming happens, we have already limited its affection to
      the only transaction and no further transactions will be affected. This is
      done by this commit:
        Commit: e1d4d90f
        Subject: ACPI / EC: Refine command storm prevention support
      
      So it's time to remove this quirk.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=45151Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5ab82a11
    • L
      ACPI / EC: Update acpi_ec_is_gpe_raised() with new GPE status flag. · 7c0b2595
      Lv Zheng 提交于
      This patch updates acpi_ec_is_gpe_raised() according to the following
      commit:
        Commit: 09af8e82
        Subject: ACPICA: Events: Add support to return both enable/status register values for GPE and fixed event.
      This is actually a no-op change as both the flags are defined to a same
      value.
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      7c0b2595
  2. 15 5月, 2015 1 次提交
  3. 13 5月, 2015 1 次提交
  4. 11 5月, 2015 6 次提交
    • L
      Linux 4.1-rc3 · 030bbdbf
      Linus Torvalds 提交于
      030bbdbf
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 01d07351
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "I really need to get back to sending these on my Friday, instead of my
        Monday morning, but nothing too amazing in here: a few amdkfd fixes, a
        few radeon fixes, i915 fixes, one tegra fix and one core fix"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm: Zero out invalid vblank timestamp in drm_update_vblank_count.
        drm/tegra: Don't use vblank_disable_immediate on incapable driver.
        drm/radeon: stop trying to suspend UVD sessions
        drm/radeon: more strictly validate the UVD codec
        drm/radeon: make UVD handle checking more strict
        drm/radeon: make VCE handle check more strict
        drm/radeon: fix userptr lockup
        drm/radeon: fix userptr BO unpin bug v3
        drm/amdkfd: Initialize sdma vm when creating sdma queue
        drm/amdkfd: Don't report local memory size
        drm/amdkfd: allow unregister process with queues
        drm/i915: Drop PIPE-A quirk for 945GSE HP Mini
        drm/i915: Sink rate read should be saved in deca-kHz
        drm/i915/dp: there is no audio on port A
        drm/i915: Add missing MacBook Pro models with dual channel LVDS
        drm/i915: Assume dual channel LVDS if pixel clock necessitates it
        drm/radeon: don't setup audio on asics that don't support it
        drm/radeon: disable semaphores for UVD V1 (v2)
      01d07351
    • D
      Merge tag 'drm-intel-fixes-2015-05-08' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 332545b3
      Dave Airlie 提交于
      misc i915 fixes.
      
      * tag 'drm-intel-fixes-2015-05-08' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Drop PIPE-A quirk for 945GSE HP Mini
        drm/i915: Sink rate read should be saved in deca-kHz
        drm/i915/dp: there is no audio on port A
        drm/i915: Add missing MacBook Pro models with dual channel LVDS
        drm/i915: Assume dual channel LVDS if pixel clock necessitates it
      332545b3
    • M
      drm: Zero out invalid vblank timestamp in drm_update_vblank_count. · fdb68e09
      Mario Kleiner 提交于
      Since commit 844b03f2 we make
      sure that after vblank irq off, we return the last valid
      (vblank count, vblank timestamp) pair to clients, e.g., during
      modesets, which is good.
      
      An overlooked side effect of that commit for kms drivers without
      support for precise vblank timestamping is that at vblank irq
      enable, when we update the vblank counter from the hw counter, we
      can't update the corresponding vblank timestamp, so now we have a
      totally mismatched timestamp for the new count to confuse clients.
      
      Restore old client visible behaviour from before Linux 3.17, but
      zero out the timestamp at vblank counter update (instead of disable
      as in original implementation) if we can't generate a meaningful
      timestamp immediately for the new vblank counter. This will fix
      this regression, so callers know they need to retry again later
      if they need a valid timestamp, but at the same time preserves
      the improvements made in the commit mentioned above.
      Signed-off-by: NMario Kleiner <mario.kleiner.de@gmail.com>
      Cc: <stable@vger.kernel.org> #v3.17+
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      fdb68e09
    • L
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · 41f2a93c
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
       "A set of ARM fixes:
      
         - fix an off-by-one error in the iommu DMA ops, which caused errors
           with a 4GiB size.
      
         - remove comments mentioning the non-existent CONFIG_CPU_ARM1020_CPU_IDLE
           macro.
      
         - remove useless CONFIG_CPU_ICACHE_STREAMING_DISABLE blocks, where
           this symbol never appeared in any Kconfig.
      
         - fix Feroceon code to cope with a previous change correctly (it
           incorrectly left an additional word in an assembly structure
           definition)
      
         - avoid a misleading IRQ affinity warning in the ARM PMU code for
           IRQs which are already affine to their CPUs.
      
         - fix the node name printed in the IRQ affinity warning"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: 8352/1: perf: Fix the pmu node name in warning message
        ARM: 8351/1: perf: don't warn about missing interrupt-affinity property for PPIs
        ARM: 8350/1: proc-feroceon: Fix feroceon_proc_info macro
        ARM: 8349/1: arch/arm/mm/proc-arm925.S: remove dead #ifdef block
        ARM: 8348/1: remove comments on CPU_ARM1020_CPU_IDLE
        ARM: 8347/1: dma-mapping: fix off-by-one check in arm_setup_iommu_dma_ops
      41f2a93c
    • L
      Merge tag 'samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung · 8425ac7a
      Linus Torvalds 提交于
      Pull samsung fixes from Kukjin Kim:
       "Here is Samsung fixes for v4.1.  Since I've missed to send this via
        arm-soc tree before v4.1-rc3, so I'm sending this to you directly
      
         - fix commit ea08de16 ("ARM: dts: Add DISP1 power domain for
           exynos5420") which causes 'unhandled fault: imprecise external
           abort' error when PD turned off.  ("make DP a consumer of DISP1
           power domain")
      
         - fix 's3c-rtc' probe failure on Odriod-X2/U2/U3 boards ("add
           'rtc_src' clock to rtc node for source clock of rtc")
      
         - fix typo for 'cpu-crit-0' trip point on exynos5420/5440
      
         - fix S2R failure on exynos5250-snow due to card power of Marvell
           WiFi driver (suspend/resume) ("add keep-power-in-susped to WiFi
           SDIO node")"
      
      * tag 'samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
        ARM: dts: Add keep-power-in-suspend to WiFi SDIO node for exynos5250-snow
        ARM: dts: Fix typo in trip point temperature for exynos5420/5440
        ARM: dts: add 'rtc_src' clock to rtc node for exynos4412-odroid boards
        ARM: dts: Make DP a consumer of DISP1 power domain on Exynos5420
      8425ac7a
  5. 10 5月, 2015 6 次提交
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 8f59ae06
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Arnd Bergmann:
       "A few patches have come up since the merge window.  The largest one is
        a rewrite of the PXA lubbock/mainstone IRQ handling.  This was already
        broken in 2011 by a change to the GPIO code and only noticed now.
      
        The other changes contained here are:
      
        MAINTAINERS file updates:
      
         - Ray Jui and Scott Branden are now co-maintainers for some of the
           mach-bcm chips, while Christian Daudt and Marc Carino have stepped
           down.
      
         - Andrew Victor is no longer maintaining at91.  Instead, Alexandre
           Belloni now becomes an official maintainer, after having done a
           bulk of the work for a while.
      
         - Baruch Siach, who added the mach-digicolor platform in 4.1 is now
           listed as maintainer
      
         - The git URL for mach-socfpga has changed
      
        Bug fixes:
      
         - Three bug fixes for new rockchip rk3288 code
      
         - A regression fix to make SD card support work on certain ux500
           boards
      
         - multiple smaller dts fixes for imx, omap, mvebu, and shmobile
      
         - a regression fiix for omap3 power consumption
      
         - a fix for regression in the ARM CCI bus driver
      
        Configuration changes:
      
         - more imx platforms are now enabled in multi_v7_defconfig"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (39 commits)
        MAINTAINERS: add Conexant Digicolor machines entry
        MAINTAINERS: socfpga: update the git repo for SoCFPGA
        ARM: multi_v7_defconfig: Select more FSL SoCs
        MAINTAINERS: replace an AT91 maintainer
        drivers: CCI: fix used_mask init in validate_group()
        bus: omap_l3_noc: Fix master id address decoding for OMAP5
        bus: omap_l3_noc: Fix offset for DRA7 CLK1_HOST_CLK1_2 instance
        ARM: dts: dra7: Fix efuse register size for ABB
        ARM: dts: am57xx-beagle-x15: Switch GPIO fan number
        ARM: dts: am57xx-beagle-x15: Switch UART mux pins
        ARM: dts: am437x-sk: reduce col-scan-delay-us
        ARM: dts: am437x-sk: fix for new newhaven display module revision
        ARM: dts: am57xx-beagle-x15: Fix RTC aliases
        ARM: dts: am57xx-beagle-x15: Fix IRQ type for mcp7941x
        ARM: dts: omap3: Add #iommu-cells to isp and iva iommu
        ARM: omap2plus_defconfig: Enable EXTCON_USB_GPIO
        ARM: dts: OMAP3-N900: Add microphone bias voltages
        ARM: OMAP2+: Fix omap off idle power consumption creeping up
        MAINTAINERS: Update brcmstb entry
        MAINTAINERS: Remove Christian Daudt for mach-bcm
        ...
      8f59ae06
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace · 51dfcb07
      Linus Torvalds 提交于
      Pull user-namespace fix from Eric Biederman:
       "Eric Windish recently reported a really bug that allows mounting fresh
        copies of proc and sysfs when it really should not be allowed.  The
        code attempted to verify that proc and sysfs were fully visible but
        there is a test missing to ensure that the root of the filesystem is
        visible.  Doh!
      
        The following patch fixes that.
      
        This fixes a containment issue that the docker folks are seeing"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
        mnt: Fix fs_fully_visible to verify the root directory is visible
      51dfcb07
    • L
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9d88f22a
      Linus Torvalds 提交于
      Pull irq updates from Thomas Gleixner:
       "Two patches from the irq departement:
      
         - a simple fix to make dummy_irq_chip usable for wakeup scenarios
      
         - removal of the gic arch_extn hackery.  Now that all users are
           converted we really want to get rid of the interface so people wont
           come up with new use cases"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip: gic: Drop support for gic_arch_extn
        genirq: Set IRQCHIP_SKIP_SET_WAKE flag for dummy_irq_chip
      9d88f22a
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 95f3b1f4
      Linus Torvalds 提交于
      Pull timer fix from Thomas Gleixner:
       "A simple fix to actually shut down a detached device instead of
        keeping it active"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clockevents: Shutdown detached clockevent device
      95f3b1f4
    • R
      m32r: make flush_cpumask non-volatile. · 1a9f064f
      Rusty Russell 提交于
      We cast away the volatile, but really, why make it volatile at all?
      We already do a mb() inside the cpumask_empty() loop.
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1a9f064f
    • E
      mnt: Fix fs_fully_visible to verify the root directory is visible · 7e96c1b0
      Eric W. Biederman 提交于
      This fixes a dumb bug in fs_fully_visible that allows proc or sys to
      be mounted if there is a bind mount of part of /proc/ or /sys/ visible.
      
      Cc: stable@vger.kernel.org
      Reported-by: NEric Windisch <ewindisch@docker.com>
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      7e96c1b0
  6. 09 5月, 2015 15 次提交
  7. 08 5月, 2015 7 次提交