1. 09 3月, 2014 1 次提交
    • L
      Merge tag 'pm+acpi-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · abfba60c
      Linus Torvalds 提交于
      Pull ACPI and power management fixes from Rafael Wysocki:
      
       - ACPI tables in some BIOSes list device resources with size equal to
         0, which doesn't make sense, so we should ignore them, but instead we
         try to use them and mangle things completely.  Fix from Zhang Rui.
      
       - Several models of Samsung laptops accumulate EC events when they are
         in sleep states which leads to EC buffer overflows that prevent new
         events from being signaled after system resume or reboot.  This has
         been affecting many users for quite a while and may be addressed by
         clearing the EC buffer during system resume and system startup on
         those machines.  From Kieran Clancy.
      
       - If the ACPI sleep control and status registers are not present (which
         happens if the Hardware Reduced ACPI mode bit is set in the ACPI
         tables, but also may result from BIOS bugs), we should not try to use
         ACPI to power off the system and ACPI S5 should not be listed as
         supported.  Fix from Aubrey Li.
      
       - There's a race condition in cpufreq_get() that leads to a kernel
         crash if that function is called at a wrong time.  Fix from Aaron
         Plattner.
      
       - cpufreq policy objects have to be initialized entirely before they
         are first accessed by their users which isn't the case currently and
         that potentially leads to various kinds of breakage that is difficult
         to debug.  Fix from Viresh Kumar.
      
       - Locking is missing in __cpufreq_add_dev() which leads to a race
         condition that may trigger a kernel crash.  Fix from Viresh Kumar.
      
      * tag 'pm+acpi-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI / EC: Clear stale EC events on Samsung systems
        cpufreq: Initialize governor for a new policy under policy->rwsem
        cpufreq: Initialize policy before making it available for others to use
        cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions
        ACPI / sleep: pm_power_off needs more sanity checks to be installed
        ACPI / resources: ignore invalid ACPI device resources
      abfba60c
  2. 08 3月, 2014 21 次提交
    • L
      x86: fix compile error due to X86_TRAP_NMI use in asm files · b01d4e68
      Linus Torvalds 提交于
      It's an enum, not a #define, you can't use it in asm files.
      
      Introduced in commit 5fa10196 ("x86: Ignore NMIs that come in during
      early boot"), and sadly I didn't compile-test things like I should have
      before pushing out.
      
      My weak excuse is that the x86 tree generally doesn't introduce stupid
      things like this (and the ARM pull afterwards doesn't cause me to do a
      compile-test either, since I don't cross-compile).
      
      Cc: Don Zickus <dzickus@redhat.com>
      Cc: H. Peter Anvin <hpa@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b01d4e68
    • L
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · 4d7eaa12
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
       "A number of ARM updates for -rc, covering mostly ARM specific code,
        but with one change to modpost.c to allow Thumb section mismatches to
        be detected.
      
        ARM changes include reporting when an attempt is made to boot a LPAE
        kernel on hardware which does not support LPAE, rather than just being
        silent about it.
      
        A number of other minor fixes are included too"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: 7992/1: boot: compressed: ignore bswapsdi2.S
        ARM: 7991/1: sa1100: fix compile problem on Collie
        ARM: fix noMMU kallsyms symbol filtering
        ARM: 7980/1: kernel: improve error message when LPAE config doesn't match CPU
        ARM: 7964/1: Detect section mismatches in thumb relocations
        ARM: 7963/1: mm: report both sections from PMD
      4d7eaa12
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 95648c0e
      Linus Torvalds 提交于
      Pull x86 fixes from Peter Anvin:
       "A small collection of minor fixes.  The FPU stuff is still pending, I
        fear.  I haven't heard anything from Suresh so I suspect I'm going to
        have to dig into the init specifics myself and fix up the patchset"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Ignore NMIs that come in during early boot
        x86, trace: Further robustify CR2 handling vs tracing
        x86, trace: Fix CR2 corruption when tracing page faults
        x86/efi: Quirk out SGI UV
      95648c0e
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 9579f10d
      Linus Torvalds 提交于
      Pull power fixes from Ben Herrenschmidt:
       "Here are a couple of powerpc fixes for 3.14.
      
        One is (another!) nasty TM problem, we can crash the kernel by forking
        inside a transaction.  The other one is a simple fix for an alignment
        issue which can hurt in LE mode"
      
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Align p_dyn, p_rela and p_st symbols
        powerpc/tm: Fix crash when forking inside a transaction
      9579f10d
    • L
      Merge tag 'trace-fixes-v3.14-rc5' of... · 721f0c12
      Linus Torvalds 提交于
      Merge tag 'trace-fixes-v3.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull tracing fix from Steven Rostedt:
       "In the past, I've had lots of reports about trace events not working.
        Developers would say they put a trace_printk() before and after the
        trace event but when they enable it (and the trace event said it was
        enabled) they would see the trace_printks but not the trace event.
      
        I was not able to reproduce this, but that's because I wasn't looking
        at the right location.  Recently, another bug came up that showed the
        issue.
      
        If your kernel supports signed modules but allows for non-signed
        modules to be loaded, then when one is, the kernel will silently set
        the MODULE_FORCED taint on the module.  Although, this taint happens
        without the need for insmod --force or anything of the kind, it labels
        the module with that taint anyway.
      
        If this tainted module has tracepoints, the tracepoints will be
        ignored because of the MODULE_FORCED taint.  But no error message will
        be displayed.  Worse yet, the event infrastructure will still be
        created letting users enable the trace event represented by the
        tracepoint, although that event will never actually be enabled.  This
        is because the tracepoint infrastructure allows for non-existing
        tracepoints to be enabled for new modules to arrive and have their
        tracepoints set.
      
        Although there are several things wrong with the above, this change
        only addresses the creation of the trace event files for tracepoints
        that are not created when a module is loaded and is tainted.  This
        change will print an error message about the module being tainted and
        not the trace events will not be created, and it does not create the
        trace event infrastructure"
      
      * tag 'trace-fixes-v3.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Do not add event files for modules that fail tracepoints
      721f0c12
    • L
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 27ea0f78
      Linus Torvalds 提交于
      Pull irq fixes from Thomas Gleixner:
       - a bugfix for a long standing waitqueue race
       - a trivial fix for a missing include
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        genirq: Include missing header file in irqdomain.c
        genirq: Remove racy waitqueue_active check
      27ea0f78
    • R
      Merge branch 'pm-cpufreq' · 19bc45a5
      Rafael J. Wysocki 提交于
      * pm-cpufreq:
        cpufreq: Initialize governor for a new policy under policy->rwsem
        cpufreq: Initialize policy before making it available for others to use
        cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions
      19bc45a5
    • R
      Merge branches 'acpi-resources', 'acpi-ec' and 'acpi-sleep' · beb0082e
      Rafael J. Wysocki 提交于
      * acpi-resources:
        ACPI / resources: ignore invalid ACPI device resources
      
      * acpi-ec:
        ACPI / EC: Clear stale EC events on Samsung systems
      
      * acpi-sleep:
        ACPI / sleep: pm_power_off needs more sanity checks to be installed
      beb0082e
    • L
      Merge tag 'dm-3.14-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm · 2ef176f1
      Linus Torvalds 提交于
      Pull device mapper fixes from Mike Snitzer:
      
       - dm-cache memory allocation failure fix
       - fix DM's Kconfig identation
       - dm-snapshot metadata corruption fix for bug introduced in 3.14-rc1
       - important refcount < 0 fix for the DM persistent data library's space
         map metadata interface which fixes corruption reported by a few
         dm-thinp users
      
      and last but not least:
      
       - more extensive fixes than ideal for dm-thinp's data resize capability
         (which has had growing pain much like we've seen from -ENOSPC
         handling of filesystems that mature).
      
         The end result is dm-thinp now handles metadata operation failure and
         no data space error conditions much better than before.
      
      * tag 'dm-3.14-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm space map metadata: fix refcount decrement below 0 which caused corruption
        dm thin: fix Documentation for held metadata root feature
        dm thin: fix noflush suspend IO queueing
        dm thin: fix deadlock in __requeue_bio_list
        dm thin: fix out of data space handling
        dm thin: ensure user takes action to validate data and metadata consistency
        dm thin: synchronize the pool mode during suspend
        dm snapshot: fix metadata corruption
        dm: fix Kconfig indentation
        dm cache mq: fix memory allocation failure for large cache devices
      2ef176f1
    • H
      x86: Ignore NMIs that come in during early boot · 5fa10196
      H. Peter Anvin 提交于
      Don Zickus reports:
      
      A customer generated an external NMI using their iLO to test kdump
      worked.  Unfortunately, the machine hung.  Disabling the nmi_watchdog
      made things work.
      
      I speculated the external NMI fired, caused the machine to panic (as
      expected) and the perf NMI from the watchdog came in and was latched.
      My guess was this somehow caused the hang.
      
         ----
      
      It appears that the latched NMI stays latched until the early page
      table generation on 64 bits, which causes exceptions to happen which
      end in IRET, which re-enable NMI.  Therefore, ignore NMIs that come in
      during early execution, until we have proper exception handling.
      Reported-and-tested-by: NDon Zickus <dzickus@redhat.com>
      Link: http://lkml.kernel.org/r/1394221143-29713-1-git-send-email-dzickus@redhat.comSigned-off-by: NH. Peter Anvin <hpa@linux.intel.com>
      Cc: <stable@vger.kernel.org> # v3.5+, older with some backport effort
      5fa10196
    • M
      ARM: 7992/1: boot: compressed: ignore bswapsdi2.S · 38e0b088
      Mark Rutland 提交于
      Commit 017f161a (ARM: 7877/1: use built-in byte swap function) added
      bswapsdi2.{o,S} to arch/arm/boot/compressed/Makefile, but didn't update
      the .gitignore. Thus after a a build git status shows bswapsdi2.S as a
      new file, which is a little annoying.
      
      This patch updates arch/arm/boot/compressed/.gitignore to ignore
      bswapsdi2.S, as we already do for ashldi3.S and others.
      Signed-off-by: NMark Rutland <mark.rutland@arm.com>
      Acked-by: NNicolas Pitre <nico@linaro.org>
      Acked-by: NKim Phillips <kim.phillips@freescale.com>
      Cc: David Woodhouse <David.Woodhouse@intel.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      38e0b088
    • L
      ARM: 7991/1: sa1100: fix compile problem on Collie · 052450fd
      Linus Walleij 提交于
      Due to a problem in the MFD Kconfig it was not possible to
      compile the UCB battery driver for the Collie SA1100 system,
      in turn making it impossible to compile in the battery driver.
      (See patch "mfd: include all drivers in subsystem menu".)
      
      After fixing the MFD Kconfig (separate patch) a compile error
      appears in the Collie battery driver due to the <mach/collie.h>
      implicitly requiring <mach/hardware.h> through <linux/gpio.h>
      via <mach/gpio.h> prior to commit
      40ca061b "ARM: 7841/1: sa1100: remove complex GPIO interface".
      
      Fix this up by including the required header into
      <mach/collie.h>.
      
      Cc: stable@vger.kernel.org
      Cc: Andrea Adami <andrea.adami@gmail.com>
      Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      052450fd
    • R
      ARM: fix noMMU kallsyms symbol filtering · 006fa259
      Russell King 提交于
      With noMMU, CONFIG_PAGE_OFFSET was not being set correctly.  As there's
      no MMU, PAGE_OFFSET should be equal to PHYS_OFFSET in all cases.  This
      commit makes that explicit.
      
      Since we do this, we don't need to mess around in asm/memory.h with
      ifdefs to sort this out, so let's get rid of that, and there's no point
      offering the "Memory split" option for noMMU as that's meaningless
      there.
      
      Fixes: b9b32bf7 ("ARM: use linker magic for vectors and vector stubs")
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      006fa259
    • V
      ARC: Use correct PTAG register for icache flush · b053940d
      Vineet Gupta 提交于
      This fixes a subtle issue with cache flush which could potentially cause
      random userspace crashes because of stale icache lines.
      
      This error crept in when consolidating the cache flush code
      
      Fixes: bd12976c (ARC: cacheflush refactor #3: Unify the {d,i}cache)
      Signed-off-by: NVineet Gupta <vgupta@synopsys.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: stable@vger.kernel.org  # 3.13
      Cc: arc-linux-dev@synopsys.com
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b053940d
    • L
      Merge tag 'sound-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · e1aa17c7
      Linus Torvalds 提交于
      Pull sound fixes from Takashi Iwai:
       "Just a few device-specific quirks for HD-audio and USB-audio, most of
        which are one-liners"
      
      * tag 'sound-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: usb-audio: Add quirk for Logitech Webcam C500
        ALSA: hda - Use analog beep for Thinkpads with AD1984 codecs
        ALSA: hda - Add missing loopback merge path for AD1884/1984 codecs
        ALSA: hda - add automute fix for another dell AIO model
        ALSA: hda - Added inverted digital-mic handling for Acer TravelMate 8371
      e1aa17c7
    • L
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 3bf7706b
      Linus Torvalds 提交于
      Pull drm fixes from Dave Airlie:
       "Mostly intel and radeon fixes, one tda998x, one kconfig dep fix and
        two more MAINTAINERS updates,
      
        All pretty run of the mill for this stage"
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/radeon/atom: select the proper number of lanes in transmitter setup
        MAINTAINERS: add maintainer entry for TDA998x driver
        drm: fix bochs kconfig dependencies
        drm/radeon/dpm: fix typo in EVERGREEN_SMC_FIRMWARE_HEADER_softRegisters
        drm/radeon/cik: fix typo in documentation
        drm/radeon: silence GCC warning on 32 bit
        drm/radeon: resume old pm late
        drm/radeon: TTM must be init with cpu-visible VRAM, v2
        DRM: armada: fix use of kfifo_put()
        drm/i915: Reject >165MHz modes w/ DVI monitors
        drm/i915: fix assert_cursor on BDW
        drm/i915: vlv: reserve GT power context early
        drm/i915: fix pch pci device enumeration
        drm/i915: Resolving the memory region conflict for Stolen area
        drm/i915: use backlight legacy combination mode also for i915gm/i945gm
        MAINTAINERS: update AGP tree to point at drm tree
      3bf7706b
    • L
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 2a75184d
      Linus Torvalds 提交于
      Pull block fixes from Jens Axboe:
       "Small collection of fixes for 3.14-rc. It contains:
      
         - Three minor update to blk-mq from Christoph.
      
         - Reduce number of unaligned (< 4kb) in-flight writes on mtip32xx to
           two.  From Micron.
      
         - Make the blk-mq CPU notify spinlock raw, since it can't be a
           sleeper spinlock on RT.  From Mike Galbraith.
      
         - Drop now bogus BUG_ON() for bio iteration with blk integrity.  From
           Nic Bellinger.
      
         - Properly propagate the SYNC flag on requests. From Shaohua"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        blk-mq: add REQ_SYNC early
        rt,blk,mq: Make blk_mq_cpu_notify_lock a raw spinlock
        bio-integrity: Drop bio_integrity_verify BUG_ON in post bip->bip_iter world
        blk-mq: support partial I/O completions
        blk-mq: merge blk_mq_insert_request and blk_mq_run_request
        blk-mq: remove blk_mq_alloc_rq
        mtip32xx: Reduce the number of unaligned writes to 2
      2a75184d
    • L
      Merge tag 'pinctrl-v3.14-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 8ab47d3e
      Linus Torvalds 提交于
      Pull pin control fixes from Linus Walleij:
       "This is a set of pin control fixes I have collected over the last few
        days.  Some have rotated more than others in linux-next, but they were
        rebased on v3.14-rc5 due to sloppy commit messages.  I am quite
        convinced that they are all good fixes that only hit this or that
        individual driver and not the entire subsystem.
      
         - Fix chained interrupts, interrupt masking and register offset
           calculation for the sunxi driver
      
         - Make MSM a bool rather than a tristate to stop build problems to
           happen - chained interrupt controllers cannot currently be defined
           in modules
      
         - Fix a clock in the PFC driver
      
         - Fix a kernel panic in the sirf driver"
      
      * tag 'pinctrl-v3.14-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: sirf: fix kernel panic in gpio_lock_as_irq
        pinctrl: sh-pfc: r8a7791: SD1_CLK fix
        pinctrl: msm: make PINCTRL_MSM bool instead of tristate
        pinctrl: sunxi: Fix interrupt register offset calculation
        pinctrl: sunxi: Fix masking when setting irq type
        pinctrl: sunxi: use chained_irq_{enter, exit} for GIC compatibility
      8ab47d3e
    • L
      Merge tag 'stable/for-linus-3.14-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · ee693507
      Linus Torvalds 提交于
      Pull Xen fix from Konrad Rzeszutek Wilk:
       "This has exactly one patch for Xen ARM.  It sets the dependency to
        compile the kernel with MMU enabled - otherwise - the guest won't work
        very well"
      
      * tag 'stable/for-linus-3.14-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        ARM: XEN depends on having a MMU
      ee693507
    • L
      Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming · 31481401
      Linus Torvalds 提交于
      Pull c6x build fix from Mark Salter:
       "Build fix for c6x"
      
      * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
        c6x: fix build failure caused by cache.h
      31481401
    • J
      dm space map metadata: fix refcount decrement below 0 which caused corruption · cebc2de4
      Joe Thornber 提交于
      This has been a relatively long-standing issue that wasn't nailed down
      until Teng-Feng Yang's meticulous bug report to dm-devel on 3/7/2014,
      see: http://www.redhat.com/archives/dm-devel/2014-March/msg00021.html
      
      From that report:
        "When decreasing the reference count of a metadata block with its
        reference count equals 3, we will call dm_btree_remove() to remove
        this enrty from the B+tree which keeps the reference count info in
        metadata device.
      
        The B+tree will try to rebalance the entry of the child nodes in each
        node it traversed, and the rebalance process contains the following
        steps.
      
        (1) Finding the corresponding children in current node (shadow_current(s))
        (2) Shadow the children block (issue BOP_INC)
        (3) redistribute keys among children, and free children if necessary (issue BOP_DEC)
      
        Since the update of a metadata block's reference count could be
        recursive, we will stash these reference count update operations in
        smm->uncommitted and then process them in a FILO fashion.
      
        The problem is that step(3) could free the children which is created
        in step(2), so the BOP_DEC issued in step(3) will be carried out
        before the BOP_INC issued in step(2) since these BOPs will be
        processed in FILO fashion. Once the BOP_DEC from step(3) tries to
        decrease the reference count of newly shadow block, it will report
        failure for its reference equals 0 before decreasing. It looks like we
        can solve this issue by processing these BOPs in a FIFO fashion
        instead of FILO."
      
      Commit 5b564d80 ("dm space map: disallow decrementing a reference count
      below zero") changed the code to report an error for this temporary
      refcount decrement below zero.  So what was previously a harmless
      invalid refcount became a hard failure due to the new error path:
      
       device-mapper: space map common: unable to decrement a reference count below 0
       device-mapper: thin: 253:6: dm_thin_insert_block() failed: error = -22
       device-mapper: thin: 253:6: switching pool to read-only mode
      
      This bug is in dm persistent-data code that is common to the DM thin and
      cache targets.  So any users of those targets should apply this fix.
      
      Fix this by applying recursive space map operations in FIFO order rather
      than FILO.
      
      Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=68801Reported-by: NApollon Oikonomopoulos <apoikos@debian.org>
      Reported-by: edwillam1007@gmail.com
      Reported-by: NTeng-Feng Yang <shinrairis@gmail.com>
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@vger.kernel.org # 3.13+
      cebc2de4
  3. 07 3月, 2014 16 次提交
  4. 06 3月, 2014 2 次提交
    • K
      ACPI / EC: Clear stale EC events on Samsung systems · ad332c8a
      Kieran Clancy 提交于
      A number of Samsung notebooks (530Uxx/535Uxx/540Uxx/550Pxx/900Xxx/etc)
      continue to log events during sleep (lid open/close, AC plug/unplug,
      battery level change), which accumulate in the EC until a buffer fills.
      After the buffer is full (tests suggest it holds 8 events), GPEs stop
      being triggered for new events. This state persists on wake or even on
      power cycle, and prevents new events from being registered until the EC
      is manually polled.
      
      This is the root cause of a number of bugs, including AC not being
      detected properly, lid close not triggering suspend, and low ambient
      light not triggering the keyboard backlight. The bug also seemed to be
      responsible for performance issues on at least one user's machine.
      
      Juan Manuel Cabo found the cause of bug and the workaround of polling
      the EC manually on wake.
      
      The loop which clears the stale events is based on an earlier patch by
      Lan Tianyu (see referenced attachment).
      
      This patch:
       - Adds a function acpi_ec_clear() which polls the EC for stale _Q
         events at most ACPI_EC_CLEAR_MAX (currently 100) times. A warning is
         logged if this limit is reached.
       - Adds a flag EC_FLAGS_CLEAR_ON_RESUME which is set to 1 if the DMI
         system vendor is Samsung. This check could be replaced by several
         more specific DMI vendor/product pairs, but it's likely that the bug
         affects more Samsung products than just the five series mentioned
         above. Further, it should not be harmful to run acpi_ec_clear() on
         systems without the bug; it will return immediately after finding no
         data waiting.
       - Runs acpi_ec_clear() on initialisation (boot), from acpi_ec_add()
       - Runs acpi_ec_clear() on wake, from acpi_ec_unblock_transactions()
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=44161
      References: https://bugzilla.kernel.org/show_bug.cgi?id=45461
      References: https://bugzilla.kernel.org/show_bug.cgi?id=57271
      References: https://bugzilla.kernel.org/attachment.cgi?id=126801Suggested-by: NJuan Manuel Cabo <juanmanuel.cabo@gmail.com>
      Signed-off-by: NKieran Clancy <clancy.kieran@gmail.com>
      Reviewed-by: NLan Tianyu <tianyu.lan@intel.com>
      Reviewed-by: NDennis Jansen <dennis.jansen@web.de>
      Tested-by: NKieran Clancy <clancy.kieran@gmail.com>
      Tested-by: NJuan Manuel Cabo <juanmanuel.cabo@gmail.com>
      Tested-by: NDennis Jansen <dennis.jansen@web.de>
      Tested-by: NMaurizio D'Addona <mauritiusdadd@gmail.com>
      Tested-by: NSan Zamoyski <san@plusnet.pl>
      Cc: All applicable <stable@vger.kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ad332c8a
    • V
      cpufreq: Initialize governor for a new policy under policy->rwsem · 4e97b631
      Viresh Kumar 提交于
      policy->rwsem is used to lock access to all parts of code modifying
      struct cpufreq_policy, but it's not used on a new policy created by
      __cpufreq_add_dev().
      
      Because of that, if cpufreq_update_policy() is called in a tight loop
      on one CPU in parallel with offline/online of another CPU, then the
      following crash can be triggered:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000020
      pgd = c0003000
      [00000020] *pgd=80000000004003, *pmd=00000000
      Internal error: Oops: 206 [#1] PREEMPT SMP ARM
      
      PC is at __cpufreq_governor+0x10/0x1ac
      LR is at cpufreq_update_policy+0x114/0x150
      
      ---[ end trace f23a8defea6cd706 ]---
      Kernel panic - not syncing: Fatal exception
      CPU0: stopping
      CPU: 0 PID: 7136 Comm: mpdecision Tainted: G      D W    3.10.0-gd727407-00074-g979ede8 #396
      
      [<c0afe180>] (notifier_call_chain+0x40/0x68) from [<c02a23ac>] (__blocking_notifier_call_chain+0x40/0x58)
      [<c02a23ac>] (__blocking_notifier_call_chain+0x40/0x58) from [<c02a23d8>] (blocking_notifier_call_chain+0x14/0x1c)
      [<c02a23d8>] (blocking_notifier_call_chain+0x14/0x1c) from [<c0803c68>] (cpufreq_set_policy+0xd4/0x2b8)
      [<c0803c68>] (cpufreq_set_policy+0xd4/0x2b8) from [<c0803e7c>] (cpufreq_init_policy+0x30/0x98)
      [<c0803e7c>] (cpufreq_init_policy+0x30/0x98) from [<c0805a18>] (__cpufreq_add_dev.isra.17+0x4dc/0x7a4)
      [<c0805a18>] (__cpufreq_add_dev.isra.17+0x4dc/0x7a4) from [<c0805d38>] (cpufreq_cpu_callback+0x58/0x84)
      [<c0805d38>] (cpufreq_cpu_callback+0x58/0x84) from [<c0afe180>] (notifier_call_chain+0x40/0x68)
      [<c0afe180>] (notifier_call_chain+0x40/0x68) from [<c02812dc>] (__cpu_notify+0x28/0x44)
      [<c02812dc>] (__cpu_notify+0x28/0x44) from [<c0aeed90>] (_cpu_up+0xf4/0x1dc)
      [<c0aeed90>] (_cpu_up+0xf4/0x1dc) from [<c0aeeed4>] (cpu_up+0x5c/0x78)
      [<c0aeeed4>] (cpu_up+0x5c/0x78) from [<c0aec808>] (store_online+0x44/0x74)
      [<c0aec808>] (store_online+0x44/0x74) from [<c03a40f4>] (sysfs_write_file+0x108/0x14c)
      [<c03a40f4>] (sysfs_write_file+0x108/0x14c) from [<c03517d4>] (vfs_write+0xd0/0x180)
      [<c03517d4>] (vfs_write+0xd0/0x180) from [<c0351ca8>] (SyS_write+0x38/0x68)
      [<c0351ca8>] (SyS_write+0x38/0x68) from [<c0205de0>] (ret_fast_syscall+0x0/0x30)
      
      Fix that by taking locks at appropriate places in __cpufreq_add_dev()
      as well.
      Reported-by: NSaravana Kannan <skannan@codeaurora.org>
      Suggested-by: NSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      [rjw: Changelog]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4e97b631