--- /dev/null
+From 828f6fa65ce7e80f77f5ab12942e44eb3d9d174e Mon Sep 17 00:00:00 2001
+From: Kenneth Lee <liguozhu@hisilicon.com>
+Date: Thu, 5 Jan 2017 15:00:05 +0800
+Subject: IB/umem: Release pid in error and ODP flow
+
+From: Kenneth Lee <liguozhu@hisilicon.com>
+
+commit 828f6fa65ce7e80f77f5ab12942e44eb3d9d174e upstream.
+
+1. Release pid before enter odp flow
+2. Release pid when fail to allocate memory
+
+Fixes: 87773dd56d54 ("IB: ib_umem_release() should decrement mm->pinned_vm from ib_umem_get")
+Fixes: 8ada2c1c0c1d ("IB/core: Add support for on demand paging regions")
+Signed-off-by: Kenneth Lee <liguozhu@hisilicon.com>
+Reviewed-by: Haggai Eran <haggaie@mellanox.com>
+Reviewed-by: Leon Romanovsky <leon@kernel.org>
+Signed-off-by: Doug Ledford <dledford@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/infiniband/core/umem.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/infiniband/core/umem.c
++++ b/drivers/infiniband/core/umem.c
+@@ -134,6 +134,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
+ IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_MW_BIND));
+
+ if (access & IB_ACCESS_ON_DEMAND) {
++ put_pid(umem->pid);
+ ret = ib_umem_odp_get(context, umem);
+ if (ret) {
+ kfree(umem);
+@@ -149,6 +150,7 @@ struct ib_umem *ib_umem_get(struct ib_uc
+
+ page_list = (struct page **) __get_free_page(GFP_KERNEL);
+ if (!page_list) {
++ put_pid(umem->pid);
+ kfree(umem);
+ return ERR_PTR(-ENOMEM);
+ }
--- /dev/null
+From 3674534b775354516e5c148ea48f51d4d1909a78 Mon Sep 17 00:00:00 2001
+From: David Rientjes <rientjes@google.com>
+Date: Tue, 24 Jan 2017 15:18:10 -0800
+Subject: mm, memcg: do not retry precharge charges
+
+From: David Rientjes <rientjes@google.com>
+
+commit 3674534b775354516e5c148ea48f51d4d1909a78 upstream.
+
+When memory.move_charge_at_immigrate is enabled and precharges are
+depleted during move, mem_cgroup_move_charge_pte_range() will attempt to
+increase the size of the precharge.
+
+Prevent precharges from ever looping by setting __GFP_NORETRY. This was
+probably the intention of the GFP_KERNEL & ~__GFP_NORETRY, which is
+pointless as written.
+
+Fixes: 0029e19ebf84 ("mm: memcontrol: remove explicit OOM parameter in charge path")
+Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1701130208510.69402@chino.kir.corp.google.com
+Signed-off-by: David Rientjes <rientjes@google.com>
+Acked-by: Michal Hocko <mhocko@suse.com>
+Cc: Johannes Weiner <hannes@cmpxchg.org>
+Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/memcontrol.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/mm/memcontrol.c
++++ b/mm/memcontrol.c
+@@ -4496,9 +4496,9 @@ static int mem_cgroup_do_precharge(unsig
+ return ret;
+ }
+
+- /* Try charges one by one with reclaim */
++ /* Try charges one by one with reclaim, but do not retry */
+ while (count--) {
+- ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_NORETRY, 1);
++ ret = try_charge(mc.to, GFP_KERNEL | __GFP_NORETRY, 1);
+ if (ret)
+ return ret;
+ mc.precharge++;
--- /dev/null
+From ecc8995363ee6231b32dad61c955b371b79cc4cf Mon Sep 17 00:00:00 2001
+From: Mika Westerberg <mika.westerberg@linux.intel.com>
+Date: Tue, 10 Jan 2017 17:31:56 +0300
+Subject: pinctrl: broxton: Use correct PADCFGLOCK offset
+
+From: Mika Westerberg <mika.westerberg@linux.intel.com>
+
+commit ecc8995363ee6231b32dad61c955b371b79cc4cf upstream.
+
+PADCFGLOCK (and PADCFGLOCK_TX) offset in Broxton actually starts at 0x060
+and not 0x090 as used in the driver. Fix it to use the correct offset.
+
+Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pinctrl/intel/pinctrl-broxton.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/pinctrl/intel/pinctrl-broxton.c
++++ b/drivers/pinctrl/intel/pinctrl-broxton.c
+@@ -19,7 +19,7 @@
+
+ #define BXT_PAD_OWN 0x020
+ #define BXT_HOSTSW_OWN 0x080
+-#define BXT_PADCFGLOCK 0x090
++#define BXT_PADCFGLOCK 0x060
+ #define BXT_GPI_IE 0x110
+
+ #define BXT_COMMUNITY(s, e) \
--- /dev/null
+From 5a00b6c2438460b870a451f14593fc40d3c7edf6 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Thu, 19 Jan 2017 18:39:40 +0200
+Subject: platform/x86: intel_mid_powerbtn: Set IRQ_ONESHOT
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+commit 5a00b6c2438460b870a451f14593fc40d3c7edf6 upstream.
+
+The commit 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
+starts refusing misconfigured interrupt handlers. This makes
+intel_mid_powerbtn not working anymore.
+
+Add a mandatory flag to a threaded IRQ request in the driver.
+
+Fixes: 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/platform/x86/intel_mid_powerbtn.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/platform/x86/intel_mid_powerbtn.c
++++ b/drivers/platform/x86/intel_mid_powerbtn.c
+@@ -77,7 +77,7 @@ static int mfld_pb_probe(struct platform
+
+ input_set_capability(input, EV_KEY, KEY_POWER);
+
+- error = request_threaded_irq(irq, NULL, mfld_pb_isr, 0,
++ error = request_threaded_irq(irq, NULL, mfld_pb_isr, IRQF_ONESHOT,
+ DRIVER_NAME, input);
+ if (error) {
+ dev_err(&pdev->dev, "Unable to request irq %d for mfld power"
--- /dev/null
+From c739c0a7c3c2472d7562b8f802cdce44d2597c8b Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 9 Dec 2016 09:41:29 -0200
+Subject: [media] s5k4ecgx: select CRC32 helper
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit c739c0a7c3c2472d7562b8f802cdce44d2597c8b upstream.
+
+A rare randconfig build failure shows up in this driver when
+the CRC32 helper is not there:
+
+drivers/media/built-in.o: In function `s5k4ecgx_s_power':
+s5k4ecgx.c:(.text+0x9eb4): undefined reference to `crc32_le'
+
+This adds the 'select' that all other users of this function have.
+
+Fixes: 8b99312b7214 ("[media] Add v4l2 subdev driver for S5K4ECGX sensor")
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/media/i2c/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/media/i2c/Kconfig
++++ b/drivers/media/i2c/Kconfig
+@@ -607,6 +607,7 @@ config VIDEO_S5K6A3
+ config VIDEO_S5K4ECGX
+ tristate "Samsung S5K4ECGX sensor support"
+ depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
++ select CRC32
+ ---help---
+ This is a V4L2 sensor-level driver for Samsung S5K4ECGX 5M
+ camera sensor with an embedded SoC image signal processor.
sunrpc-cleanup-ida-information-when-removing-sunrpc-module.patch
drm-i915-don-t-leak-edid-in-intel_crt_detect_ddc.patch
ib-ipoib-move-back-ib-ll-address-into-the-hard-header.patch
+ib-umem-release-pid-in-error-and-odp-flow.patch
+s5k4ecgx-select-crc32-helper.patch
+pinctrl-broxton-use-correct-padcfglock-offset.patch
+platform-x86-intel_mid_powerbtn-set-irq_oneshot.patch
+mm-memcg-do-not-retry-precharge-charges.patch