From e65a638d7338a42eab6a18a2694051a41347feaf Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 23 Jun 2014 15:54:11 -0400 Subject: [PATCH] 3.10-stable patches added patches: asoc-max98090-fix-reset-at-resume-time.patch drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch --- ...oc-max98090-fix-reset-at-resume-time.patch | 42 +++++++ ...ressure-reports-are-posted-regularly.patch | 114 ++++++++++++++++++ queue-3.10/series | 2 + 3 files changed, 158 insertions(+) create mode 100644 queue-3.10/asoc-max98090-fix-reset-at-resume-time.patch create mode 100644 queue-3.10/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch diff --git a/queue-3.10/asoc-max98090-fix-reset-at-resume-time.patch b/queue-3.10/asoc-max98090-fix-reset-at-resume-time.patch new file mode 100644 index 00000000000..331d9179806 --- /dev/null +++ b/queue-3.10/asoc-max98090-fix-reset-at-resume-time.patch @@ -0,0 +1,42 @@ +From 25b4ab430f8e166c9b63f4db28e7e812d5a59396 Mon Sep 17 00:00:00 2001 +From: Liam Girdwood +Date: Fri, 16 May 2014 16:55:20 +0300 +Subject: ASoC: max98090: Fix reset at resume time + +From: Liam Girdwood + +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 +Signed-off-by: Jarkko Nikula +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + 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: +@@ -2343,6 +2344,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.10/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch b/queue-3.10/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch new file mode 100644 index 00000000000..1cbccbd2cca --- /dev/null +++ b/queue-3.10/drivers-hv-balloon-ensure-pressure-reports-are-posted-regularly.patch @@ -0,0 +1,114 @@ +From ae339336dc950b9b05e7ccd3565dd3e8781c06d9 Mon Sep 17 00:00:00 2001 +From: "K. Y. Srinivasan" +Date: Wed, 23 Apr 2014 13:53:39 -0700 +Subject: Drivers: hv: balloon: Ensure pressure reports are posted regularly + +From: "K. Y. Srinivasan" + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 ++#include + #include + #include + #include +@@ -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.10/series b/queue-3.10/series index 6b271667b55..c48db727076 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -34,3 +34,5 @@ usb-cdc-acm-fix-runtime-pm-for-control-messages.patch usb-cdc-acm-fix-shutdown-and-suspend-race.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 +asoc-max98090-fix-reset-at-resume-time.patch -- 2.47.3