1. 08 3月, 2016 1 次提交
    • T
      ALSA: hda - Fix unexpected resume through regmap code path · fc4f000b
      Takashi Iwai 提交于
      HD-audio driver has a mechanism to trigger the runtime resume
      automatically at accessing the verbs.  This auto-resume, however,
      causes the mutex deadlock when invoked from the regmap handler since
      the regmap keeps the mutex while auto-resuming.  For avoiding that,
      there is some tricky check in the HDA regmap handler to return -EAGAIN
      error to back-off when the codec is powered down.  Then the caller of
      regmap r/w will retry after properly turning on the codec power.
      
      This works in most cases, but there seems a slight race between the
      codec power check and the actual on-demand auto-resume trigger.  This
      resulted in the lockdep splat, eventually leading to a real deadlock.
      
      This patch tries to address the race window by getting the runtime PM
      refcount at the check time using pm_runtime_get_if_in_use().  With
      this call, we can keep the power on only when the codec has been
      already turned on, and back off if not.
      
      For keeping the code consistency, the code touching the runtime PM is
      stored in hdac_device.c although it's used only locally in
      hdac_regmap.c.
      Reported-by: NJiri Slaby <jslaby@suse.cz>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fc4f000b
  2. 07 3月, 2016 1 次提交
    • T
      Merge tag 'asoc-fix-v4.5-rc6' of... · ad09ef2c
      Takashi Iwai 提交于
      Merge tag 'asoc-fix-v4.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Fixes for v4.5
      
      This is far too big a set of fixes for this late in the release cycle
      but the overwhelming bulk is essentially the same simple fix from
      Takashi for a cut'n'pasted 64 bit cleanliness issue in the userspace
      interface where drivers were accessing things using the wrong element in
      a union which worked OK on 32 bit platforms as the correct element
      happened to be aligned the same way but with 64 bit platforms ABIs are
      different and the two members of the union are laid out in different
      places.  They aren't all tagged to stable since some of these chips have
      vanishingly little chance of being used in 64 bit systems.
      
      The other changes are:
       - A fix for Qualcomm devices to work on big endian systems.  The
         original change is actually correct but triggered a bug in regmap
         which is too invasive to fix for this cycle and can be worked around
         by just letting regmap pick the default.
       - A fix for the Samsung I2S driver locking which wasn't using IRQ safe
         spinlocks when it needed to.
       - A fix for the new Intel Sky Lake driver forgetting that C pointer
         arithmetic takes the type of the pointer into consideration.
       - A revert of a change to the FSL SSI driver that broke some systems.
       - A fix for the cleanup path of the wm9713 driver.
       - A fix for some incorrect register definitions in the ADAU17x1 driver
         that caused misclocking in some configurations.
       - A fix for the tracepoints for jack detection to avoid using an
         internal field of the core jack structure which is no longer present
         in all configurations.
       - A fix for another of the new Intel drivers which tried to write to a
         string literal.
      ad09ef2c
  3. 05 3月, 2016 6 次提交
  4. 04 3月, 2016 2 次提交
  5. 03 3月, 2016 1 次提交
  6. 02 3月, 2016 1 次提交
  7. 01 3月, 2016 28 次提交