1. 03 5月, 2014 3 次提交
    • T
      ALSA: usb-audio: Fix deadlocks at resuming · 1ee23fe0
      Takashi Iwai 提交于
      The recent addition of the USB audio mixer suspend/resume may lead to
      deadlocks when the driver tries to call usb_autopm_get_interface()
      recursively, since the function tries to sync with the finish of the
      other calls.  For avoiding it, introduce a flag indicating the resume
      operation and avoids the recursive usb_autopm_get_interface() calls
      during the resume.
      Reported-and-tested-by: NBryan Quigley <gquigs@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1ee23fe0
    • T
      ALSA: usb-audio: Save mixer status only once at suspend · 1c53e725
      Takashi Iwai 提交于
      The suspend callback of usb-audio driver may be called multiple times
      per suspend when multiple USB interfaces are bound to a single sound
      card instance.  In such a case, it's superfluous to save the mixer
      values multiple times.  This patch fixes it by checking the counter.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1c53e725
    • S
      ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined · b7a77235
      Sander Eikelenboom 提交于
      This (widely used) construction:
      
      if(printk_ratelimit())
      	dev_dbg()
      
      Causes the ratelimiting to spam the kernel log with the "callbacks suppressed"
      message below, even while the dev_dbg it is supposed to rate limit wouldn't
      print anything because DEBUG is not defined for this device.
      
      [  533.803964] retire_playback_urb: 852 callbacks suppressed
      [  538.807930] retire_playback_urb: 852 callbacks suppressed
      [  543.811897] retire_playback_urb: 852 callbacks suppressed
      [  548.815745] retire_playback_urb: 852 callbacks suppressed
      [  553.819826] retire_playback_urb: 852 callbacks suppressed
      
      So use dev_dbg_ratelimited() instead of this construction.
      Signed-off-by: NSander Eikelenboom <linux@eikelenboom.it>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b7a77235
  2. 30 4月, 2014 2 次提交
  3. 28 4月, 2014 1 次提交
  4. 23 4月, 2014 2 次提交
    • L
      ASoC: jz4740: Remove Makefile entry for removed file · eebdec04
      Lars-Peter Clausen 提交于
      Commit 0406a40a ("ASoC: jz4740: Use the generic dmaengine PCM driver")
      jz4740-pcm.c file, but neglected to remove the Makefile entries.
      
      Fixes: 0406a40a ("ASoC: jz4740: Use the generic dmaengine PCM driver")
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Reported-by: NRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      eebdec04
    • W
      ASoC: Intel: Fix audio crash due to negative address offset · 95e9ee92
      Wenkai Du 提交于
      There were occasional ADSP crash during reboot testing:
      
      [   11.883364] BUG: unable to handle kernel paging request at ffffc90121700000
      [   11.883380] IP: [<ffffffffc024d8bc>] sst_module_insert_fixed_block+0x24f/0x26d [snd_soc_sst_dsp]
      [   11.883397] PGD 7800b067 PUD 0
      [   11.883405] Oops: 0002 [#1] SMP
      [   11.886418] gsmi: Log Shutdown Reason 0x03
      
      The virtual address, ffffc90121700000, was out of range. The virtual
      address is calculated by adding LPE base address with an offset:
      
      sst_memcpy32(dsp->addr.lpe + data->offset, data->data, data->size);
      
      The offset is calculated in sst_byt_parse_module, by subtraction of
      two virtual addresses dsp->addr.fw_ext and dsp->addr.lpe:
      
      block_data.offset = block->ram_offset + (dsp->addr.fw_ext - dsp->addr.lpe);
      
      These virtual addresses are assigned by kernel from ioremap:
      
      sst->addr.lpe = ioremap(pdata->lpe_base, pdata->lpe_size);
      sst->addr.fw_ext = ioremap(pdata->fw_base, pdata->fw_size);
      
      In current driver code, offset is defined as unsigned int32:
      
      struct sst_module_data {
      ...
      	u32 offset;		/* offset in FW file */
      };
      
      Most of the time kernel assigned virtual addresses with addr.fw_ext
      greater than addr.lpe. But sometimes it was the other way round.
      
      Fix the problem by declaring offset as signed int32_t.
      Signed-off-by: NWenkai Du <wenkai.du@intel.com>
      Signed-off-by: NJarkko Nikula <jarkko.nikula@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      95e9ee92
  5. 21 4月, 2014 1 次提交
    • J
      ASoC: dapm: Fix widget double free with auto-disable DAPM kcontrol · 2697e4fb
      Jarkko Nikula 提交于
      Commit 9e1fda4ae158 ("ASoC: dapm: Implement mixer input auto-disable")
      is trying to free the widget it allocated by snd_soc_dapm_new_control()
      call in dapm_kcontrol_data_alloc() by adding kfree(data->widget) to
      dapm_kcontrol_free().
      
      This is causing a widget double free with auto-disabled DAPM kcontrols
      in sound card unregistration because widgets are already freed before
      dapm_kcontrol_free() is called.
      
      Reason for that is all widgets are added into dapm->card->widgets list
      in snd_soc_dapm_new_control() and freed in dapm_free_widgets() during
      execution of snd_soc_dapm_free().
      
      Now snd_soc_dapm_free() calls for different DAPM contexts happens before
      snd_card_free() call from where the call chain to dapm_kcontrol_free()
      begins:
      
      soc_cleanup_card_resources()
        soc_remove_dai_links()
          soc_remove_link_dais()
            snd_soc_dapm_free(&cpu_dai->dapm)
          soc_remove_link_components()
            soc_remove_platform()
              snd_soc_dapm_free(&platform->dapm)
            soc_remove_codec()
              snd_soc_dapm_free(&codec->dapm)
        snd_soc_dapm_free(&card->dapm)
        snd_card_free()
          snd_card_do_free()
            snd_device_free_all()
              snd_device_free()
                snd_ctl_dev_free()
                  snd_ctl_remove()
                    snd_ctl_free_one()
                      dapm_kcontrol_free()
      
      This wasn't making harm with ordinary DAPM kcontrols since data->widget is NULL for
      them.
      
      Fixes: 9e1fda4ae158 (ASoC: dapm: Implement mixer input auto-disable)
      Signed-off-by: NJarkko Nikula <jarkko.nikula@linux.intel.com>
      Acked-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      Cc: stable@vger.kernel.org
      2697e4fb
  6. 19 4月, 2014 2 次提交
  7. 18 4月, 2014 3 次提交
  8. 16 4月, 2014 2 次提交
  9. 15 4月, 2014 2 次提交
  10. 14 4月, 2014 2 次提交
  11. 11 4月, 2014 1 次提交
  12. 10 4月, 2014 1 次提交
  13. 09 4月, 2014 5 次提交
  14. 08 4月, 2014 8 次提交
  15. 07 4月, 2014 3 次提交
  16. 05 4月, 2014 1 次提交
  17. 04 4月, 2014 1 次提交