]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Jun 2014 19:54:37 +0000 (15:54 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Jun 2014 19:54:37 +0000 (15:54 -0400)
added patches:
asoc-dapm-make-sure-to-always-update-the-dapm-graph-in-_put_volsw.patch
asoc-max98090-fix-reset-at-resume-time.patch
asoc-tlv320aci3x-fix-custom-snd_soc_dapm_put_volsw_aic3x-function.patch
drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch
hv-use-correct-order-when-freeing-monitor_pages.patch

queue-3.15/asoc-dapm-make-sure-to-always-update-the-dapm-graph-in-_put_volsw.patch [new file with mode: 0644]
queue-3.15/asoc-max98090-fix-reset-at-resume-time.patch [new file with mode: 0644]
queue-3.15/asoc-tlv320aci3x-fix-custom-snd_soc_dapm_put_volsw_aic3x-function.patch [new file with mode: 0644]
queue-3.15/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch [new file with mode: 0644]
queue-3.15/hv-use-correct-order-when-freeing-monitor_pages.patch [new file with mode: 0644]
queue-3.15/series

diff --git a/queue-3.15/asoc-dapm-make-sure-to-always-update-the-dapm-graph-in-_put_volsw.patch b/queue-3.15/asoc-dapm-make-sure-to-always-update-the-dapm-graph-in-_put_volsw.patch
new file mode 100644 (file)
index 0000000..d02fe74
--- /dev/null
@@ -0,0 +1,58 @@
+From c9e065c27fe9b81e5d6e7681d77a24f7b9616675 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Sun, 4 May 2014 19:17:05 +0200
+Subject: ASoC: dapm: Make sure to always update the DAPM graph in _put_volsw()
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit c9e065c27fe9b81e5d6e7681d77a24f7b9616675 upstream.
+
+When using auto-muted controls it may happen that the register value will not
+change when changing a control from enabled to disabled (since the control might
+be physically disabled due to the auto-muting). We have to make sure to still
+update the DAPM graph and disconnect the mixer input.
+
+Fixes: commit 5729507 ("ASoC: dapm: Implement mixer input auto-disable")
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-dapm.c |   23 ++++++++++-------------
+ 1 file changed, 10 insertions(+), 13 deletions(-)
+
+--- a/sound/soc/soc-dapm.c
++++ b/sound/soc/soc-dapm.c
+@@ -2857,22 +2857,19 @@ int snd_soc_dapm_put_volsw(struct snd_kc
+       mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);
+       change = dapm_kcontrol_set_value(kcontrol, val);
+-
+-      if (reg != SND_SOC_NOPM) {
+-              mask = mask << shift;
+-              val = val << shift;
+-
+-              change = snd_soc_test_bits(codec, reg, mask, val);
+-      }
+-
+       if (change) {
+               if (reg != SND_SOC_NOPM) {
+-                      update.kcontrol = kcontrol;
+-                      update.reg = reg;
+-                      update.mask = mask;
+-                      update.val = val;
++                      mask = mask << shift;
++                      val = val << shift;
++
++                      if (snd_soc_test_bits(codec, reg, mask, val)) {
++                              update.kcontrol = kcontrol;
++                              update.reg = reg;
++                              update.mask = mask;
++                              update.val = val;
++                              card->update = &update;
++                      }
+-                      card->update = &update;
+               }
+               ret = soc_dapm_mixer_update_power(card, kcontrol, connect);
diff --git a/queue-3.15/asoc-max98090-fix-reset-at-resume-time.patch b/queue-3.15/asoc-max98090-fix-reset-at-resume-time.patch
new file mode 100644 (file)
index 0000000..549edae
--- /dev/null
@@ -0,0 +1,42 @@
+From 25b4ab430f8e166c9b63f4db28e7e812d5a59396 Mon Sep 17 00:00:00 2001
+From: Liam Girdwood <liam.r.girdwood@linux.intel.com>
+Date: Fri, 16 May 2014 16:55:20 +0300
+Subject: ASoC: max98090: Fix reset at resume time
+
+From: Liam Girdwood <liam.r.girdwood@linux.intel.com>
+
+commit 25b4ab430f8e166c9b63f4db28e7e812d5a59396 upstream.
+
+Reset needs to wait 20ms before other codec IO is performed. This wait
+was not being performed. Fix this by making sure the reset register is not
+restored with the cache, but use the manual reset method in resume with
+the wait.
+
+Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
+Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/max98090.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/codecs/max98090.c
++++ b/sound/soc/codecs/max98090.c
+@@ -255,6 +255,7 @@ static struct reg_default max98090_reg[]
+ static bool max98090_volatile_register(struct device *dev, unsigned int reg)
+ {
+       switch (reg) {
++      case M98090_REG_SOFTWARE_RESET:
+       case M98090_REG_DEVICE_STATUS:
+       case M98090_REG_JACK_STATUS:
+       case M98090_REG_REVISION_ID:
+@@ -2373,6 +2374,8 @@ static int max98090_runtime_resume(struc
+       regcache_cache_only(max98090->regmap, false);
++      max98090_reset(max98090);
++
+       regcache_sync(max98090->regmap);
+       return 0;
diff --git a/queue-3.15/asoc-tlv320aci3x-fix-custom-snd_soc_dapm_put_volsw_aic3x-function.patch b/queue-3.15/asoc-tlv320aci3x-fix-custom-snd_soc_dapm_put_volsw_aic3x-function.patch
new file mode 100644 (file)
index 0000000..7f57f63
--- /dev/null
@@ -0,0 +1,35 @@
+From e6c111fac4464e3f4bf7b3802b517dafc80f8e0f Mon Sep 17 00:00:00 2001
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Date: Fri, 30 May 2014 16:47:41 +0300
+Subject: ASoC: tlv320aci3x: Fix custom snd_soc_dapm_put_volsw_aic3x() function
+
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+
+commit e6c111fac4464e3f4bf7b3802b517dafc80f8e0f upstream.
+
+For some unknown reason the parameters for snd_soc_test_bits() were in wrong
+order:
+It was:
+snd_soc_test_bits(codec, val, mask, reg); /* WRONG!!! */
+while it should be:
+snd_soc_test_bits(codec, reg, mask, val);
+
+Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/tlv320aic3x.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/tlv320aic3x.c
++++ b/sound/soc/codecs/tlv320aic3x.c
+@@ -169,7 +169,7 @@ static int snd_soc_dapm_put_volsw_aic3x(
+       mask <<= shift;
+       val <<= shift;
+-      change = snd_soc_test_bits(codec, val, mask, reg);
++      change = snd_soc_test_bits(codec, reg, mask, val);
+       if (change) {
+               update.kcontrol = kcontrol;
+               update.reg = reg;
diff --git a/queue-3.15/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch b/queue-3.15/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch
new file mode 100644 (file)
index 0000000..1cbccbd
--- /dev/null
@@ -0,0 +1,114 @@
+From ae339336dc950b9b05e7ccd3565dd3e8781c06d9 Mon Sep 17 00:00:00 2001
+From: "K. Y. Srinivasan" <kys@microsoft.com>
+Date: Wed, 23 Apr 2014 13:53:39 -0700
+Subject: Drivers: hv: balloon: Ensure pressure reports are posted regularly
+
+From: "K. Y. Srinivasan" <kys@microsoft.com>
+
+commit ae339336dc950b9b05e7ccd3565dd3e8781c06d9 upstream.
+
+The current code posts periodic memory pressure status from a dedicated thread.
+Under some conditions, especially when we are releasing a lot of memory into
+the guest, we may not send timely pressure reports back to the host. Fix this
+issue by reporting pressure in all contexts that can be active in this driver.
+
+Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hv/hv_balloon.c |   29 ++++++++++++++++++++++++++---
+ 1 file changed, 26 insertions(+), 3 deletions(-)
+
+--- a/drivers/hv/hv_balloon.c
++++ b/drivers/hv/hv_balloon.c
+@@ -19,6 +19,7 @@
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+ #include <linux/kernel.h>
++#include <linux/jiffies.h>
+ #include <linux/mman.h>
+ #include <linux/delay.h>
+ #include <linux/init.h>
+@@ -459,6 +460,11 @@ static bool do_hot_add;
+  */
+ static uint pressure_report_delay = 45;
++/*
++ * The last time we posted a pressure report to host.
++ */
++static unsigned long last_post_time;
++
+ module_param(hot_add, bool, (S_IRUGO | S_IWUSR));
+ MODULE_PARM_DESC(hot_add, "If set attempt memory hot_add");
+@@ -542,6 +548,7 @@ struct hv_dynmem_device {
+ static struct hv_dynmem_device dm_device;
++static void post_status(struct hv_dynmem_device *dm);
+ #ifdef CONFIG_MEMORY_HOTPLUG
+ static void hv_bring_pgs_online(unsigned long start_pfn, unsigned long size)
+@@ -612,7 +619,7 @@ static void hv_mem_hot_add(unsigned long
+                * have not been "onlined" within the allowed time.
+                */
+               wait_for_completion_timeout(&dm_device.ol_waitevent, 5*HZ);
+-
++              post_status(&dm_device);
+       }
+       return;
+@@ -951,11 +958,17 @@ static void post_status(struct hv_dynmem
+ {
+       struct dm_status status;
+       struct sysinfo val;
++      unsigned long now = jiffies;
++      unsigned long last_post = last_post_time;
+       if (pressure_report_delay > 0) {
+               --pressure_report_delay;
+               return;
+       }
++
++      if (!time_after(now, (last_post_time + HZ)))
++              return;
++
+       si_meminfo(&val);
+       memset(&status, 0, sizeof(struct dm_status));
+       status.hdr.type = DM_STATUS_REPORT;
+@@ -983,6 +996,14 @@ static void post_status(struct hv_dynmem
+       if (status.hdr.trans_id != atomic_read(&trans_id))
+               return;
++      /*
++       * If the last post time that we sampled has changed,
++       * we have raced, don't post the status.
++       */
++      if (last_post != last_post_time)
++              return;
++
++      last_post_time = jiffies;
+       vmbus_sendpacket(dm->dev->channel, &status,
+                               sizeof(struct dm_status),
+                               (unsigned long)NULL,
+@@ -1117,7 +1138,7 @@ static void balloon_up(struct work_struc
+                       if (ret == -EAGAIN)
+                               msleep(20);
+-
++                      post_status(&dm_device);
+               } while (ret == -EAGAIN);
+               if (ret) {
+@@ -1144,8 +1165,10 @@ static void balloon_down(struct hv_dynme
+       struct dm_unballoon_response resp;
+       int i;
+-      for (i = 0; i < range_count; i++)
++      for (i = 0; i < range_count; i++) {
+               free_balloon_pages(dm, &range_array[i]);
++              post_status(&dm_device);
++      }
+       if (req->more_pages == 1)
+               return;
diff --git a/queue-3.15/hv-use-correct-order-when-freeing-monitor_pages.patch b/queue-3.15/hv-use-correct-order-when-freeing-monitor_pages.patch
new file mode 100644 (file)
index 0000000..56c0eca
--- /dev/null
@@ -0,0 +1,38 @@
+From a100d88df1e924e5c9678fabf054d1bae7ab74fb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <rkrcmar@redhat.com>
+Date: Tue, 27 May 2014 19:16:20 +0200
+Subject: hv: use correct order when freeing monitor_pages
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <rkrcmar@redhat.com>
+
+commit a100d88df1e924e5c9678fabf054d1bae7ab74fb upstream.
+
+We try to free two pages when only one has been allocated.
+Cleanup path is unlikely, so I haven't found any trace that would fit,
+but I hope that free_pages_prepare() does catch it.
+
+Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
+Reviewed-by: Amos Kong <akong@redhat.com>
+Acked-by: Jason Wang <jasowang@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hv/connection.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/hv/connection.c
++++ b/drivers/hv/connection.c
+@@ -224,8 +224,8 @@ cleanup:
+               vmbus_connection.int_page = NULL;
+       }
+-      free_pages((unsigned long)vmbus_connection.monitor_pages[0], 1);
+-      free_pages((unsigned long)vmbus_connection.monitor_pages[1], 1);
++      free_pages((unsigned long)vmbus_connection.monitor_pages[0], 0);
++      free_pages((unsigned long)vmbus_connection.monitor_pages[1], 0);
+       vmbus_connection.monitor_pages[0] = NULL;
+       vmbus_connection.monitor_pages[1] = NULL;
index d7a46157633c108bdc259be9732c8e8ce3e7d93f..10ac6da2b4e32e893ffd7a2f70db62ca679fc6a8 100644 (file)
@@ -33,3 +33,8 @@ usb-cdc-acm-fix-open-and-suspend-race.patch
 usb-cdc-acm-fix-failed-open-not-being-detected.patch
 usb-cdc-acm-fix-i-o-after-failed-open.patch
 usb-cdc-acm-fix-runtime-pm-imbalance-at-shutdown.patch
+drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch
+hv-use-correct-order-when-freeing-monitor_pages.patch
+asoc-dapm-make-sure-to-always-update-the-dapm-graph-in-_put_volsw.patch
+asoc-max98090-fix-reset-at-resume-time.patch
+asoc-tlv320aci3x-fix-custom-snd_soc_dapm_put_volsw_aic3x-function.patch