--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Tue, 29 Nov 2016 09:23:48 -0200
+Subject: [media] adv7604: Initialize drive strength to default when using DT
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+
+[ Upstream commit da8892d410db224d9a24104529794e6e37e0c100 ]
+
+The adv7604 driver platform data contains fields for configuring the drive
+strength of the output pins. When probing the driver through DT these
+fields are not explicitly initialized, which means they are left at 0. This
+is a reserved setting for the drive strength configuration though and can
+cause signal integrity issues.
+
+Whether these signal integrity issues are visible depends on the PCB
+specifics (e.g. the higher the load capacitance for the output the more
+visible the issue). But it has been observed on existing solutions at high
+pixel clock rates.
+
+Initialize the drive strength settings to the power-on-reset value of the
+device when probing through devicetree to avoid this issue.
+
+Fixes: 0e158be0162b ("adv7604: Add DT support")
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
+Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/media/i2c/adv7604.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/media/i2c/adv7604.c
++++ b/drivers/media/i2c/adv7604.c
+@@ -2856,6 +2856,9 @@ static int adv76xx_parse_dt(struct adv76
+ state->pdata.alt_data_sat = 1;
+ state->pdata.op_format_mode_sel = ADV7604_OP_FORMAT_MODE0;
+ state->pdata.bus_order = ADV7604_BUS_ORDER_RGB;
++ state->pdata.dr_str_data = ADV76XX_DR_STR_MEDIUM_HIGH;
++ state->pdata.dr_str_clk = ADV76XX_DR_STR_MEDIUM_HIGH;
++ state->pdata.dr_str_sync = ADV76XX_DR_STR_MEDIUM_HIGH;
+
+ return 0;
+ }
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Patrick Bruenn <p.bruenn@beckhoff.com>
+Date: Wed, 25 Jan 2017 06:25:48 +0100
+Subject: ARM: dts: imx53-qsb-common: fix FEC pinmux config
+
+From: Patrick Bruenn <p.bruenn@beckhoff.com>
+
+
+[ Upstream commit 8b649e426336d7d4800ff9c82858328f4215ba01 ]
+
+The pinmux configuration in device tree was different from manual
+muxing in <u-boot>/board/freescale/mx53loco/mx53loco.c
+All pins were configured as NO_PAD_CTL(1 << 31), which was fine as the
+bootloader already did the correct pinmuxing for us.
+But recently u-boot is migrating to reuse device tree files from the
+kernel tree, so it seems to be better to have the correct pinmuxing in
+our files, too.
+
+Signed-off-by: Patrick Bruenn <p.bruenn@beckhoff.com>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm/boot/dts/imx53-qsb-common.dtsi | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/arch/arm/boot/dts/imx53-qsb-common.dtsi
++++ b/arch/arm/boot/dts/imx53-qsb-common.dtsi
+@@ -215,16 +215,16 @@
+
+ pinctrl_fec: fecgrp {
+ fsl,pins = <
+- MX53_PAD_FEC_MDC__FEC_MDC 0x80000000
+- MX53_PAD_FEC_MDIO__FEC_MDIO 0x80000000
+- MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x80000000
+- MX53_PAD_FEC_RX_ER__FEC_RX_ER 0x80000000
+- MX53_PAD_FEC_CRS_DV__FEC_RX_DV 0x80000000
+- MX53_PAD_FEC_RXD1__FEC_RDATA_1 0x80000000
+- MX53_PAD_FEC_RXD0__FEC_RDATA_0 0x80000000
+- MX53_PAD_FEC_TX_EN__FEC_TX_EN 0x80000000
+- MX53_PAD_FEC_TXD1__FEC_TDATA_1 0x80000000
+- MX53_PAD_FEC_TXD0__FEC_TDATA_0 0x80000000
++ MX53_PAD_FEC_MDC__FEC_MDC 0x4
++ MX53_PAD_FEC_MDIO__FEC_MDIO 0x1fc
++ MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x180
++ MX53_PAD_FEC_RX_ER__FEC_RX_ER 0x180
++ MX53_PAD_FEC_CRS_DV__FEC_RX_DV 0x180
++ MX53_PAD_FEC_RXD1__FEC_RDATA_1 0x180
++ MX53_PAD_FEC_RXD0__FEC_RDATA_0 0x180
++ MX53_PAD_FEC_TX_EN__FEC_TX_EN 0x4
++ MX53_PAD_FEC_TXD1__FEC_TDATA_1 0x4
++ MX53_PAD_FEC_TXD0__FEC_TDATA_0 0x4
+ >;
+ };
+
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Tony Lindgren <tony@atomide.com>
+Date: Fri, 20 Jan 2017 12:13:19 -0800
+Subject: ARM: omap2plus_defconfig: Fix probe errors on UARTs 5 and 6
+
+From: Tony Lindgren <tony@atomide.com>
+
+
+[ Upstream commit 4cd6a59f5c1a9b0cca0da09fbba42b9450ffc899 ]
+
+We have more than four uarts on some SoCs and that can cause
+noise with errors while booting.
+
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm/configs/omap2plus_defconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm/configs/omap2plus_defconfig
++++ b/arch/arm/configs/omap2plus_defconfig
+@@ -221,6 +221,7 @@ CONFIG_SERIO=m
+ CONFIG_SERIAL_8250=y
+ CONFIG_SERIAL_8250_CONSOLE=y
+ CONFIG_SERIAL_8250_NR_UARTS=32
++CONFIG_SERIAL_8250_RUNTIME_UARTS=6
+ CONFIG_SERIAL_8250_EXTENDED=y
+ CONFIG_SERIAL_8250_MANY_PORTS=y
+ CONFIG_SERIAL_8250_SHARE_IRQ=y
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Li Zhong <zhong@linux.vnet.ibm.com>
+Date: Fri, 20 Jan 2017 16:35:33 +0800
+Subject: crypto: vmx - disable preemption to enable vsx in aes_ctr.c
+
+From: Li Zhong <zhong@linux.vnet.ibm.com>
+
+
+[ Upstream commit 7dede913fc2ab9c0d3bff3a49e26fa9e858b0c13 ]
+
+Some preemptible check warnings were reported from enable_kernel_vsx(). This
+patch disables preemption in aes_ctr.c before enabling vsx, and they are now
+consistent with other files in the same directory.
+
+Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/crypto/vmx/aes_ctr.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/crypto/vmx/aes_ctr.c
++++ b/drivers/crypto/vmx/aes_ctr.c
+@@ -80,11 +80,13 @@ static int p8_aes_ctr_setkey(struct cryp
+ int ret;
+ struct p8_aes_ctr_ctx *ctx = crypto_tfm_ctx(tfm);
+
++ preempt_disable();
+ pagefault_disable();
+ enable_kernel_altivec();
+ enable_kernel_vsx();
+ ret = aes_p8_set_encrypt_key(key, keylen * 8, &ctx->enc_key);
+ pagefault_enable();
++ preempt_enable();
+
+ ret += crypto_blkcipher_setkey(ctx->fallback, key, keylen);
+ return ret;
+@@ -99,11 +101,13 @@ static void p8_aes_ctr_final(struct p8_a
+ u8 *dst = walk->dst.virt.addr;
+ unsigned int nbytes = walk->nbytes;
+
++ preempt_disable();
+ pagefault_disable();
+ enable_kernel_altivec();
+ enable_kernel_vsx();
+ aes_p8_encrypt(ctrblk, keystream, &ctx->enc_key);
+ pagefault_enable();
++ preempt_enable();
+
+ crypto_xor(keystream, src, nbytes);
+ memcpy(dst, keystream, nbytes);
+@@ -132,6 +136,7 @@ static int p8_aes_ctr_crypt(struct blkci
+ blkcipher_walk_init(&walk, dst, src, nbytes);
+ ret = blkcipher_walk_virt_block(desc, &walk, AES_BLOCK_SIZE);
+ while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) {
++ preempt_disable();
+ pagefault_disable();
+ enable_kernel_altivec();
+ enable_kernel_vsx();
+@@ -143,6 +148,7 @@ static int p8_aes_ctr_crypt(struct blkci
+ &ctx->enc_key,
+ walk.iv);
+ pagefault_enable();
++ preempt_enable();
+
+ /* We need to update IV mostly for last bytes/round */
+ inc = (nbytes & AES_BLOCK_MASK) / AES_BLOCK_SIZE;
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Noralf Trønnes <noralf@tronnes.org>
+Date: Thu, 26 Jan 2017 23:56:04 +0100
+Subject: drm: drm_minor_register(): Clean up debugfs on failure
+
+From: Noralf Trønnes <noralf@tronnes.org>
+
+
+[ Upstream commit a67834f8bfa1e2f48bb27d07b9a552ba7c3af82a ]
+
+Call drm_debugfs_cleanup() in case drm_debugfs_init() fails to
+cover for failure in the drm_driver.debugfs_init callback.
+
+Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Link: http://patchwork.freedesktop.org/patch/msgid/20170126225621.12314-3-noralf@tronnes.org
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/drm_drv.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/drm_drv.c
++++ b/drivers/gpu/drm/drm_drv.c
+@@ -312,7 +312,7 @@ static int drm_minor_register(struct drm
+ ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root);
+ if (ret) {
+ DRM_ERROR("DRM: Failed to initialize /sys/kernel/debug/dri.\n");
+- return ret;
++ goto err_debugfs;
+ }
+
+ ret = device_add(minor->kdev);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: David Lechner <david@lechnology.com>
+Date: Fri, 13 Jan 2017 13:03:40 -0600
+Subject: dt-bindings: Add LEGO MINDSTORMS EV3 compatible specification
+
+From: David Lechner <david@lechnology.com>
+
+
+[ Upstream commit 21078ab174c99885ca83a5c32db0d33b1617745e ]
+
+This adds the board level device tree specification for LEGO MINDSTORMS EV3
+
+Acked-by: Rob Herring <robh@kernel.org>
+Signed-off-by: David Lechner <david@lechnology.com>
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/arm/davinci.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/Documentation/devicetree/bindings/arm/davinci.txt
++++ b/Documentation/devicetree/bindings/arm/davinci.txt
+@@ -9,6 +9,10 @@ EnBW AM1808 based CMC board
+ Required root node properties:
+ - compatible = "enbw,cmc", "ti,da850;
+
++LEGO MINDSTORMS EV3 (AM1808 based)
++Required root node properties:
++ - compatible = "lego,ev3", "ti,da850";
++
+ Generic DaVinci Boards
+ ----------------------
+
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: David Lechner <david@lechnology.com>
+Date: Fri, 13 Jan 2017 13:03:39 -0600
+Subject: dt-bindings: Add vendor prefix for LEGO
+
+From: David Lechner <david@lechnology.com>
+
+
+[ Upstream commit 7dcc31e2e68a386a29070384b51683ece80982bf ]
+
+Add a vendor prefix for LEGO Systems A/S
+
+Acked-by: Rob Herring <robh@kernel.org>
+Signed-off-by: David Lechner <david@lechnology.com>
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
++++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
+@@ -126,6 +126,7 @@ keymile Keymile GmbH
+ kinetic Kinetic Technologies
+ lacie LaCie
+ lantiq Lantiq Semiconductor
++lego LEGO Systems A/S
+ lenovo Lenovo Group Ltd.
+ lg LG Corporation
+ linux Linux-specific binding
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Harninder Rai <harninder.rai@nxp.com>
+Date: Wed, 9 Nov 2016 23:40:53 +0530
+Subject: dt-bindings: clockgen: Add compatible string for LS1012A
+
+From: Harninder Rai <harninder.rai@nxp.com>
+
+
+[ Upstream commit 73447f68d7b2bc1df870da88b0e21d2bc1afc025 ]
+
+Signed-off-by: Harninder Rai <harninder.rai@nxp.com>
+Signed-off-by: Bhaskar Upadhaya <Bhaskar.Upadhaya@nxp.com>
+Acked-by: Rob Herring <robh@kernel.org>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/clock/qoriq-clock.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/Documentation/devicetree/bindings/clock/qoriq-clock.txt
++++ b/Documentation/devicetree/bindings/clock/qoriq-clock.txt
+@@ -31,6 +31,7 @@ Required properties:
+ * "fsl,t4240-clockgen"
+ * "fsl,b4420-clockgen"
+ * "fsl,b4860-clockgen"
++ * "fsl,ls1012a-clockgen"
+ * "fsl,ls1021a-clockgen"
+ Chassis-version clock strings include:
+ * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Feras Daoud <ferasda@mellanox.com>
+Date: Wed, 28 Dec 2016 14:47:28 +0200
+Subject: IB/ipoib: Change list_del to list_del_init in the tx object
+
+From: Feras Daoud <ferasda@mellanox.com>
+
+
+[ Upstream commit 27d41d29c7f093f6f77843624fbb080c1b4a8b9c ]
+
+Since ipoib_cm_tx_start function and ipoib_cm_tx_reap function
+belong to different work queues, they can run in parallel.
+In this case if ipoib_cm_tx_reap calls list_del and release the
+lock, ipoib_cm_tx_start may acquire it and call list_del_init
+on the already deleted object.
+Changing list_del to list_del_init in ipoib_cm_tx_reap fixes the problem.
+
+Fixes: 839fcaba355a ("IPoIB: Connected mode experimental support")
+Signed-off-by: Feras Daoud <ferasda@mellanox.com>
+Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
+Reviewed-by: Alex Vesker <valex@mellanox.com>
+Signed-off-by: Leon Romanovsky <leon@kernel.org>
+Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
+Signed-off-by: Doug Ledford <dledford@redhat.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+@@ -1373,7 +1373,7 @@ static void ipoib_cm_tx_reap(struct work
+
+ while (!list_empty(&priv->cm.reap_list)) {
+ p = list_entry(priv->cm.reap_list.next, typeof(*p), list);
+- list_del(&p->list);
++ list_del_init(&p->list);
+ spin_unlock_irqrestore(&priv->lock, flags);
+ netif_tx_unlock_bh(dev);
+ ipoib_cm_tx_destroy(p);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Alison Schofield <amsfield22@gmail.com>
+Date: Thu, 19 Jan 2017 19:47:38 -0800
+Subject: iio: trigger: free trigger resource correctly
+
+From: Alison Schofield <amsfield22@gmail.com>
+
+
+[ Upstream commit 10e840dfb0b7fc345082dd9e5fff3c1c02e7690e ]
+
+These stand-alone trigger drivers were using iio_trigger_put()
+where they should have been using iio_trigger_free(). The
+iio_trigger_put() adds a module_put which is bad since they
+never did a module_get.
+
+In the sysfs driver, module_get/put's are used as triggers are
+added & removed. This extra module_put() occurs on an error path
+in the probe routine (probably rare).
+
+In the bfin-timer & interrupt trigger drivers, the module resources
+are not explicitly managed, so it's doing a put on something that
+was never get'd. It occurs on the probe error path and on the
+remove path (not so rare).
+
+Tested with the sysfs trigger driver.
+The bfin & interrupt drivers were build tested & inspected only.
+
+Signed-off-by: Alison Schofield <amsfield22@gmail.com>
+Signed-off-by: Jonathan Cameron <jic23@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/trigger/iio-trig-interrupt.c | 8 ++++----
+ drivers/iio/trigger/iio-trig-sysfs.c | 2 +-
+ drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 4 ++--
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+--- a/drivers/iio/trigger/iio-trig-interrupt.c
++++ b/drivers/iio/trigger/iio-trig-interrupt.c
+@@ -58,7 +58,7 @@ static int iio_interrupt_trigger_probe(s
+ trig_info = kzalloc(sizeof(*trig_info), GFP_KERNEL);
+ if (!trig_info) {
+ ret = -ENOMEM;
+- goto error_put_trigger;
++ goto error_free_trigger;
+ }
+ iio_trigger_set_drvdata(trig, trig_info);
+ trig_info->irq = irq;
+@@ -83,8 +83,8 @@ error_release_irq:
+ free_irq(irq, trig);
+ error_free_trig_info:
+ kfree(trig_info);
+-error_put_trigger:
+- iio_trigger_put(trig);
++error_free_trigger:
++ iio_trigger_free(trig);
+ error_ret:
+ return ret;
+ }
+@@ -99,7 +99,7 @@ static int iio_interrupt_trigger_remove(
+ iio_trigger_unregister(trig);
+ free_irq(trig_info->irq, trig);
+ kfree(trig_info);
+- iio_trigger_put(trig);
++ iio_trigger_free(trig);
+
+ return 0;
+ }
+--- a/drivers/iio/trigger/iio-trig-sysfs.c
++++ b/drivers/iio/trigger/iio-trig-sysfs.c
+@@ -174,7 +174,7 @@ static int iio_sysfs_trigger_probe(int i
+ return 0;
+
+ out2:
+- iio_trigger_put(t->trig);
++ iio_trigger_free(t->trig);
+ free_t:
+ kfree(t);
+ out1:
+--- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
++++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
+@@ -259,7 +259,7 @@ out_free_irq:
+ out1:
+ iio_trigger_unregister(st->trig);
+ out:
+- iio_trigger_put(st->trig);
++ iio_trigger_free(st->trig);
+ return ret;
+ }
+
+@@ -272,7 +272,7 @@ static int iio_bfin_tmr_trigger_remove(s
+ peripheral_free(st->t->pin);
+ free_irq(st->irq, st);
+ iio_trigger_unregister(st->trig);
+- iio_trigger_put(st->trig);
++ iio_trigger_free(st->trig);
+
+ return 0;
+ }
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Akinobu Mita <akinobu.mita@gmail.com>
+Date: Sun, 15 Jan 2017 14:44:30 -0800
+Subject: Input: mpr121 - handle multiple bits change of status register
+
+From: Akinobu Mita <akinobu.mita@gmail.com>
+
+
+[ Upstream commit 08fea55e37f58371bffc5336a59e55d1f155955a ]
+
+This driver reports input events on their interrupts which are triggered
+by the sensor's status register changes. But only single bit change is
+reported in the interrupt handler. So if there are multiple bits are
+changed at almost the same time, other press or release events are ignored.
+
+This fixes it by detecting all changed bits in the status register.
+
+Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/input/keyboard/mpr121_touchkey.c | 23 ++++++++++++++---------
+ 1 file changed, 14 insertions(+), 9 deletions(-)
+
+--- a/drivers/input/keyboard/mpr121_touchkey.c
++++ b/drivers/input/keyboard/mpr121_touchkey.c
+@@ -87,7 +87,8 @@ static irqreturn_t mpr_touchkey_interrup
+ struct mpr121_touchkey *mpr121 = dev_id;
+ struct i2c_client *client = mpr121->client;
+ struct input_dev *input = mpr121->input_dev;
+- unsigned int key_num, key_val, pressed;
++ unsigned long bit_changed;
++ unsigned int key_num;
+ int reg;
+
+ reg = i2c_smbus_read_byte_data(client, ELE_TOUCH_STATUS_1_ADDR);
+@@ -105,18 +106,22 @@ static irqreturn_t mpr_touchkey_interrup
+
+ reg &= TOUCH_STATUS_MASK;
+ /* use old press bit to figure out which bit changed */
+- key_num = ffs(reg ^ mpr121->statusbits) - 1;
+- pressed = reg & (1 << key_num);
++ bit_changed = reg ^ mpr121->statusbits;
+ mpr121->statusbits = reg;
++ for_each_set_bit(key_num, &bit_changed, mpr121->keycount) {
++ unsigned int key_val, pressed;
+
+- key_val = mpr121->keycodes[key_num];
++ pressed = reg & BIT(key_num);
++ key_val = mpr121->keycodes[key_num];
+
+- input_event(input, EV_MSC, MSC_SCAN, key_num);
+- input_report_key(input, key_val, pressed);
+- input_sync(input);
++ input_event(input, EV_MSC, MSC_SCAN, key_num);
++ input_report_key(input, key_val, pressed);
++
++ dev_dbg(&client->dev, "key %d %d %s\n", key_num, key_val,
++ pressed ? "pressed" : "released");
+
+- dev_dbg(&client->dev, "key %d %d %s\n", key_num, key_val,
+- pressed ? "pressed" : "released");
++ }
++ input_sync(input);
+
+ out:
+ return IRQ_HANDLED;
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Akinobu Mita <akinobu.mita@gmail.com>
+Date: Sun, 15 Jan 2017 14:44:05 -0800
+Subject: Input: mpr121 - set missing event capability
+
+From: Akinobu Mita <akinobu.mita@gmail.com>
+
+
+[ Upstream commit 9723ddc8fe0d76ce41fe0dc16afb241ec7d0a29d ]
+
+This driver reports misc scan input events on the sensor's status
+register changes. But the event capability for them was not set in the
+device initialization, so these events were ignored.
+
+This change adds the missing event capability.
+
+Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/input/keyboard/mpr121_touchkey.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/input/keyboard/mpr121_touchkey.c
++++ b/drivers/input/keyboard/mpr121_touchkey.c
+@@ -236,6 +236,7 @@ static int mpr_touchkey_probe(struct i2c
+ input_dev->id.bustype = BUS_I2C;
+ input_dev->dev.parent = &client->dev;
+ input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
++ input_set_capability(input_dev, EV_MSC, MSC_SCAN);
+
+ input_dev->keycode = mpr121->keycodes;
+ input_dev->keycodesize = sizeof(mpr121->keycodes[0]);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Nate Watterson <nwatters@codeaurora.org>
+Date: Tue, 20 Dec 2016 23:11:48 -0500
+Subject: iommu/arm-smmu-v3: Clear prior settings when updating STEs
+
+From: Nate Watterson <nwatters@codeaurora.org>
+
+
+[ Upstream commit 810871c57011eb3e89e6768932757f169d666cd2 ]
+
+To prevent corruption of the stage-1 context pointer field when
+updating STEs, rebuild the entire containing dword instead of
+clearing individual fields.
+
+Signed-off-by: Nate Watterson <nwatters@codeaurora.org>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iommu/arm-smmu-v3.c | 10 ++--------
+ 1 file changed, 2 insertions(+), 8 deletions(-)
+
+--- a/drivers/iommu/arm-smmu-v3.c
++++ b/drivers/iommu/arm-smmu-v3.c
+@@ -1033,13 +1033,8 @@ static void arm_smmu_write_strtab_ent(st
+ }
+ }
+
+- /* Nuke the existing Config, as we're going to rewrite it */
+- val &= ~(STRTAB_STE_0_CFG_MASK << STRTAB_STE_0_CFG_SHIFT);
+-
+- if (ste->valid)
+- val |= STRTAB_STE_0_V;
+- else
+- val &= ~STRTAB_STE_0_V;
++ /* Nuke the existing STE_0 value, as we're going to rewrite it */
++ val = ste->valid ? STRTAB_STE_0_V : 0;
+
+ if (ste->bypass) {
+ val |= disable_bypass ? STRTAB_STE_0_CFG_ABORT
+@@ -1068,7 +1063,6 @@ static void arm_smmu_write_strtab_ent(st
+ val |= (ste->s1_cfg->cdptr_dma & STRTAB_STE_0_S1CTXPTR_MASK
+ << STRTAB_STE_0_S1CTXPTR_SHIFT) |
+ STRTAB_STE_0_CFG_S1_TRANS;
+-
+ }
+
+ if (ste->s2_cfg) {
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Gilad Ben-Yossef <gilad@benyossef.com>
+Date: Mon, 16 Jan 2017 13:17:55 +0200
+Subject: IPsec: do not ignore crypto err in ah4 input
+
+From: Gilad Ben-Yossef <gilad@benyossef.com>
+
+
+[ Upstream commit ebd89a2d0675f1325c2be5b7576fd8cb7e8defd0 ]
+
+ah4 input processing uses the asynchronous hash crypto API which
+supplies an error code as part of the operation completion but
+the error code was being ignored.
+
+Treat a crypto API error indication as a verification failure.
+
+While a crypto API reported error would almost certainly result
+in a memcpy of the digest failing anyway and thus the security
+risk seems minor, performing a memory compare on what might be
+uninitialized memory is wrong.
+
+Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
+Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/ipv4/ah4.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/net/ipv4/ah4.c
++++ b/net/ipv4/ah4.c
+@@ -270,6 +270,9 @@ static void ah_input_done(struct crypto_
+ int ihl = ip_hdrlen(skb);
+ int ah_hlen = (ah->hdrlen + 2) << 2;
+
++ if (err)
++ goto out;
++
+ work_iph = AH_SKB_CB(skb)->tmp;
+ auth_data = ah_tmp_auth(work_iph, ihl);
+ icv = ah_tmp_icv(ahp->ahash, auth_data, ahp->icv_trunc_len);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Li Zhong <zhong@linux.vnet.ibm.com>
+Date: Fri, 11 Nov 2016 12:57:33 +0800
+Subject: KVM: PPC: Book 3S: XICS: correct the real mode ICP rejecting counter
+
+From: Li Zhong <zhong@linux.vnet.ibm.com>
+
+
+[ Upstream commit 37451bc95dee0e666927d6ffdda302dbbaaae6fa ]
+
+Some counters are added in Commit 6e0365b78273 ("KVM: PPC: Book3S HV:
+Add ICP real mode counters"), to provide some performance statistics to
+determine whether further optimizing is needed for real mode functions.
+
+The n_reject counter counts how many times ICP rejects an irq because of
+priority in real mode. The redelivery of an lsi that is still asserted
+after eoi doesn't fall into this category, so the increasement there is
+removed.
+
+Also, it needs to be increased in icp_rm_deliver_irq() if it rejects
+another one.
+
+Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
+Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kvm/book3s_hv_rm_xics.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/arch/powerpc/kvm/book3s_hv_rm_xics.c
++++ b/arch/powerpc/kvm/book3s_hv_rm_xics.c
+@@ -280,6 +280,7 @@ static void icp_rm_deliver_irq(struct kv
+ */
+ if (reject && reject != XICS_IPI) {
+ arch_spin_unlock(&ics->lock);
++ icp->n_reject++;
+ new_irq = reject;
+ goto again;
+ }
+@@ -611,10 +612,8 @@ int kvmppc_rm_h_eoi(struct kvm_vcpu *vcp
+ state = &ics->irq_state[src];
+
+ /* Still asserted, resend it */
+- if (state->asserted) {
+- icp->n_reject++;
++ if (state->asserted)
+ icp_rm_deliver_irq(xics, icp, irq);
+- }
+
+ if (!hlist_empty(&vcpu->kvm->irq_ack_notifier_list)) {
+ icp->rm_action |= XICS_RM_NOTIFY_EOI;
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
+Date: Mon, 9 Jan 2017 16:49:26 -0500
+Subject: net: dsa: select NET_SWITCHDEV
+
+From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
+
+
+[ Upstream commit 3a89eaa65db68bf53bf92dedc60084f810e1779a ]
+
+The support for DSA Ethernet switch chips depends on TCP/IP networking,
+thus explicit that HAVE_NET_DSA depends on INET.
+
+DSA uses SWITCHDEV, thus select it instead of depending on it.
+
+Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
+Tested-by: Randy Dunlap <rdunlap@infradead.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/dsa/Kconfig | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/net/dsa/Kconfig
++++ b/net/dsa/Kconfig
+@@ -1,12 +1,13 @@
+ config HAVE_NET_DSA
+ def_bool y
+- depends on NETDEVICES && !S390
++ depends on INET && NETDEVICES && !S390
+
+ # Drivers must select NET_DSA and the appropriate tagging format
+
+ config NET_DSA
+ tristate "Distributed Switch Architecture"
+- depends on HAVE_NET_DSA && NET_SWITCHDEV
++ depends on HAVE_NET_DSA
++ select NET_SWITCHDEV
+ select PHYLIB
+ ---help---
+ Say Y if you want to enable support for the hardware switches supported
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Liping Zhang <zlpnobody@gmail.com>
+Date: Sat, 7 Jan 2017 21:33:55 +0800
+Subject: netfilter: nft_meta: deal with PACKET_LOOPBACK in netdev family
+
+From: Liping Zhang <zlpnobody@gmail.com>
+
+
+[ Upstream commit f169fd695b192dd7b23aff8e69d25a1bc881bbfa ]
+
+After adding the following nft rule, then ping 224.0.0.1:
+ # nft add rule netdev t c pkttype host counter
+
+The warning complain message will be printed out again and again:
+ WARNING: CPU: 0 PID: 10182 at net/netfilter/nft_meta.c:163 \
+ nft_meta_get_eval+0x3fe/0x460 [nft_meta]
+ [...]
+ Call Trace:
+ <IRQ>
+ dump_stack+0x85/0xc2
+ __warn+0xcb/0xf0
+ warn_slowpath_null+0x1d/0x20
+ nft_meta_get_eval+0x3fe/0x460 [nft_meta]
+ nft_do_chain+0xff/0x5e0 [nf_tables]
+
+So we should deal with PACKET_LOOPBACK in netdev family too. For ipv4,
+convert it to PACKET_BROADCAST/MULTICAST according to the destination
+address's type; For ipv6, convert it to PACKET_MULTICAST directly.
+
+Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/netfilter/nft_meta.c | 28 +++++++++++++++++++++++++++-
+ 1 file changed, 27 insertions(+), 1 deletion(-)
+
+--- a/net/netfilter/nft_meta.c
++++ b/net/netfilter/nft_meta.c
+@@ -151,8 +151,34 @@ void nft_meta_get_eval(const struct nft_
+ else
+ *dest = PACKET_BROADCAST;
+ break;
++ case NFPROTO_NETDEV:
++ switch (skb->protocol) {
++ case htons(ETH_P_IP): {
++ int noff = skb_network_offset(skb);
++ struct iphdr *iph, _iph;
++
++ iph = skb_header_pointer(skb, noff,
++ sizeof(_iph), &_iph);
++ if (!iph)
++ goto err;
++
++ if (ipv4_is_multicast(iph->daddr))
++ *dest = PACKET_MULTICAST;
++ else
++ *dest = PACKET_BROADCAST;
++
++ break;
++ }
++ case htons(ETH_P_IPV6):
++ *dest = PACKET_MULTICAST;
++ break;
++ default:
++ WARN_ON_ONCE(1);
++ goto err;
++ }
++ break;
+ default:
+- WARN_ON(1);
++ WARN_ON_ONCE(1);
+ goto err;
+ }
+ break;
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+Date: Mon, 12 Dec 2016 11:30:20 -0700
+Subject: PCI: mvebu: Handle changes to the bridge windows while enabled
+
+From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+
+
+[ Upstream commit d9bf28e2650fe3eeefed7e34841aea07d10c6543 ]
+
+The PCI core will write to the bridge window config multiple times while
+they are enabled. This can lead to mbus failures like this:
+
+ mvebu_mbus: cannot add window '4:e8', conflicts with another window
+ mvebu-pcie mbus:pex@e0000000: Could not create MBus window at [mem 0xe0000000-0xe00fffff]: -22
+
+For me this is happening during a hotplug cycle. The PCI core is not
+changing the values, just writing them twice while active.
+
+The patch addresses the general case of any change to an active window, but
+not atomically. The code is slightly refactored so io and mem can share
+more of the window logic.
+
+Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Jason Cooper <jason@lakedaemon.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/host/pci-mvebu.c | 101 +++++++++++++++++++++++++------------------
+ 1 file changed, 60 insertions(+), 41 deletions(-)
+
+--- a/drivers/pci/host/pci-mvebu.c
++++ b/drivers/pci/host/pci-mvebu.c
+@@ -131,6 +131,12 @@ struct mvebu_pcie {
+ int nports;
+ };
+
++struct mvebu_pcie_window {
++ phys_addr_t base;
++ phys_addr_t remap;
++ size_t size;
++};
++
+ /* Structure representing one PCIe interface */
+ struct mvebu_pcie_port {
+ char *name;
+@@ -148,10 +154,8 @@ struct mvebu_pcie_port {
+ struct mvebu_sw_pci_bridge bridge;
+ struct device_node *dn;
+ struct mvebu_pcie *pcie;
+- phys_addr_t memwin_base;
+- size_t memwin_size;
+- phys_addr_t iowin_base;
+- size_t iowin_size;
++ struct mvebu_pcie_window memwin;
++ struct mvebu_pcie_window iowin;
+ u32 saved_pcie_stat;
+ };
+
+@@ -377,23 +381,45 @@ static void mvebu_pcie_add_windows(struc
+ }
+ }
+
++static void mvebu_pcie_set_window(struct mvebu_pcie_port *port,
++ unsigned int target, unsigned int attribute,
++ const struct mvebu_pcie_window *desired,
++ struct mvebu_pcie_window *cur)
++{
++ if (desired->base == cur->base && desired->remap == cur->remap &&
++ desired->size == cur->size)
++ return;
++
++ if (cur->size != 0) {
++ mvebu_pcie_del_windows(port, cur->base, cur->size);
++ cur->size = 0;
++ cur->base = 0;
++
++ /*
++ * If something tries to change the window while it is enabled
++ * the change will not be done atomically. That would be
++ * difficult to do in the general case.
++ */
++ }
++
++ if (desired->size == 0)
++ return;
++
++ mvebu_pcie_add_windows(port, target, attribute, desired->base,
++ desired->size, desired->remap);
++ *cur = *desired;
++}
++
+ static void mvebu_pcie_handle_iobase_change(struct mvebu_pcie_port *port)
+ {
+- phys_addr_t iobase;
++ struct mvebu_pcie_window desired = {};
+
+ /* Are the new iobase/iolimit values invalid? */
+ if (port->bridge.iolimit < port->bridge.iobase ||
+ port->bridge.iolimitupper < port->bridge.iobaseupper ||
+ !(port->bridge.command & PCI_COMMAND_IO)) {
+-
+- /* If a window was configured, remove it */
+- if (port->iowin_base) {
+- mvebu_pcie_del_windows(port, port->iowin_base,
+- port->iowin_size);
+- port->iowin_base = 0;
+- port->iowin_size = 0;
+- }
+-
++ mvebu_pcie_set_window(port, port->io_target, port->io_attr,
++ &desired, &port->iowin);
+ return;
+ }
+
+@@ -410,32 +436,27 @@ static void mvebu_pcie_handle_iobase_cha
+ * specifications. iobase is the bus address, port->iowin_base
+ * is the CPU address.
+ */
+- iobase = ((port->bridge.iobase & 0xF0) << 8) |
+- (port->bridge.iobaseupper << 16);
+- port->iowin_base = port->pcie->io.start + iobase;
+- port->iowin_size = ((0xFFF | ((port->bridge.iolimit & 0xF0) << 8) |
+- (port->bridge.iolimitupper << 16)) -
+- iobase) + 1;
+-
+- mvebu_pcie_add_windows(port, port->io_target, port->io_attr,
+- port->iowin_base, port->iowin_size,
+- iobase);
++ desired.remap = ((port->bridge.iobase & 0xF0) << 8) |
++ (port->bridge.iobaseupper << 16);
++ desired.base = port->pcie->io.start + desired.remap;
++ desired.size = ((0xFFF | ((port->bridge.iolimit & 0xF0) << 8) |
++ (port->bridge.iolimitupper << 16)) -
++ desired.remap) +
++ 1;
++
++ mvebu_pcie_set_window(port, port->io_target, port->io_attr, &desired,
++ &port->iowin);
+ }
+
+ static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port)
+ {
++ struct mvebu_pcie_window desired = {.remap = MVEBU_MBUS_NO_REMAP};
++
+ /* Are the new membase/memlimit values invalid? */
+ if (port->bridge.memlimit < port->bridge.membase ||
+ !(port->bridge.command & PCI_COMMAND_MEMORY)) {
+-
+- /* If a window was configured, remove it */
+- if (port->memwin_base) {
+- mvebu_pcie_del_windows(port, port->memwin_base,
+- port->memwin_size);
+- port->memwin_base = 0;
+- port->memwin_size = 0;
+- }
+-
++ mvebu_pcie_set_window(port, port->mem_target, port->mem_attr,
++ &desired, &port->memwin);
+ return;
+ }
+
+@@ -445,14 +466,12 @@ static void mvebu_pcie_handle_membase_ch
+ * window to setup, according to the PCI-to-PCI bridge
+ * specifications.
+ */
+- port->memwin_base = ((port->bridge.membase & 0xFFF0) << 16);
+- port->memwin_size =
+- (((port->bridge.memlimit & 0xFFF0) << 16) | 0xFFFFF) -
+- port->memwin_base + 1;
+-
+- mvebu_pcie_add_windows(port, port->mem_target, port->mem_attr,
+- port->memwin_base, port->memwin_size,
+- MVEBU_MBUS_NO_REMAP);
++ desired.base = ((port->bridge.membase & 0xFFF0) << 16);
++ desired.size = (((port->bridge.memlimit & 0xFFF0) << 16) | 0xFFFFF) -
++ desired.base + 1;
++
++ mvebu_pcie_set_window(port, port->mem_target, port->mem_attr, &desired,
++ &port->memwin);
+ }
+
+ /*
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Volodymyr Bendiuga <volodymyr.bendiuga@gmail.com>
+Date: Thu, 19 Jan 2017 17:05:04 +0100
+Subject: phy: increase size of MII_BUS_ID_SIZE and bus_id
+
+From: Volodymyr Bendiuga <volodymyr.bendiuga@gmail.com>
+
+
+[ Upstream commit 4567d686f5c6d955e57a3afa1741944c1e7f4033 ]
+
+Some bus names are pretty long and do not fit into
+17 chars. Increase therefore MII_BUS_ID_SIZE and
+phy_fixup.bus_id to larger number. Now mii_bus.id
+can host larger name.
+
+Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@gmail.com>
+Signed-off-by: Magnus Öberg <magnus.oberg@westermo.se>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/linux/phy.h | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/include/linux/phy.h
++++ b/include/linux/phy.h
+@@ -136,11 +136,7 @@ static inline const char *phy_modes(phy_
+ /* Used when trying to connect to a specific phy (mii bus id:phy device id) */
+ #define PHY_ID_FMT "%s:%02x"
+
+-/*
+- * Need to be a little smaller than phydev->dev.bus_id to leave room
+- * for the ":%02x"
+- */
+-#define MII_BUS_ID_SIZE (20 - 3)
++#define MII_BUS_ID_SIZE 61
+
+ /* Or MII_ADDR_C45 into regnum for read/write on mii_bus to enable the 21 bit
+ IEEE 802.3ae clause 45 addressing mode used by 10GIGE phy chips. */
+@@ -599,7 +595,7 @@ struct phy_driver {
+ /* A Structure for boards to register fixups with the PHY Lib */
+ struct phy_fixup {
+ struct list_head list;
+- char bus_id[20];
++ char bus_id[MII_BUS_ID_SIZE + 3];
+ u32 phy_uid;
+ u32 phy_uid_mask;
+ int (*run)(struct phy_device *phydev);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Valentin Longchamp <valentin.longchamp@keymile.com>
+Date: Thu, 15 Dec 2016 14:22:26 +0100
+Subject: powerpc/corenet: explicitly disable the SDHC controller on kmcoge4
+
+From: Valentin Longchamp <valentin.longchamp@keymile.com>
+
+
+[ Upstream commit a674c7d470bb47e82f4eb1fa944eadeac2f6bbaf ]
+
+It is not implemented on the kmcoge4 hardware and if not disabled it
+leads to error messages with the corenet32_smp_defconfig.
+
+Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
+Signed-off-by: Scott Wood <oss@buserror.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/boot/dts/fsl/kmcoge4.dts | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/powerpc/boot/dts/fsl/kmcoge4.dts
++++ b/arch/powerpc/boot/dts/fsl/kmcoge4.dts
+@@ -83,6 +83,10 @@
+ };
+ };
+
++ sdhc@114000 {
++ status = "disabled";
++ };
++
+ i2c@119000 {
+ status = "disabled";
+ };
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Julian Wiedmann <jwi@linux.vnet.ibm.com>
+Date: Thu, 12 Jan 2017 15:48:42 +0100
+Subject: s390/qeth: issue STARTLAN as first IPA command
+
+From: Julian Wiedmann <jwi@linux.vnet.ibm.com>
+
+
+[ Upstream commit 1034051045d125579ab1e8fcd5a724eeb0e70149 ]
+
+STARTLAN needs to be the first IPA command after MPC initialization
+completes.
+So move the qeth_send_startlan() call from the layer disciplines
+into the core path, right after the MPC handshake.
+While at it, replace the magic LAN OFFLINE return code
+with the existing enum.
+
+Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
+Reviewed-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
+Reviewed-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/s390/net/qeth_core.h | 1 -
+ drivers/s390/net/qeth_core_main.c | 21 +++++++++++++++++----
+ drivers/s390/net/qeth_l2_main.c | 15 ---------------
+ drivers/s390/net/qeth_l3_main.c | 15 ---------------
+ 4 files changed, 17 insertions(+), 35 deletions(-)
+
+--- a/drivers/s390/net/qeth_core.h
++++ b/drivers/s390/net/qeth_core.h
+@@ -909,7 +909,6 @@ void qeth_clear_thread_running_bit(struc
+ int qeth_core_hardsetup_card(struct qeth_card *);
+ void qeth_print_status_message(struct qeth_card *);
+ int qeth_init_qdio_queues(struct qeth_card *);
+-int qeth_send_startlan(struct qeth_card *);
+ int qeth_send_ipa_cmd(struct qeth_card *, struct qeth_cmd_buffer *,
+ int (*reply_cb)
+ (struct qeth_card *, struct qeth_reply *, unsigned long),
+--- a/drivers/s390/net/qeth_core_main.c
++++ b/drivers/s390/net/qeth_core_main.c
+@@ -2955,7 +2955,7 @@ int qeth_send_ipa_cmd(struct qeth_card *
+ }
+ EXPORT_SYMBOL_GPL(qeth_send_ipa_cmd);
+
+-int qeth_send_startlan(struct qeth_card *card)
++static int qeth_send_startlan(struct qeth_card *card)
+ {
+ int rc;
+ struct qeth_cmd_buffer *iob;
+@@ -2968,7 +2968,6 @@ int qeth_send_startlan(struct qeth_card
+ rc = qeth_send_ipa_cmd(card, iob, NULL, NULL);
+ return rc;
+ }
+-EXPORT_SYMBOL_GPL(qeth_send_startlan);
+
+ static int qeth_default_setadapterparms_cb(struct qeth_card *card,
+ struct qeth_reply *reply, unsigned long data)
+@@ -5080,6 +5079,20 @@ retriable:
+ goto out;
+ }
+
++ rc = qeth_send_startlan(card);
++ if (rc) {
++ QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
++ if (rc == IPA_RC_LAN_OFFLINE) {
++ dev_warn(&card->gdev->dev,
++ "The LAN is offline\n");
++ card->lan_online = 0;
++ } else {
++ rc = -ENODEV;
++ goto out;
++ }
++ } else
++ card->lan_online = 1;
++
+ card->options.ipa4.supported_funcs = 0;
+ card->options.ipa6.supported_funcs = 0;
+ card->options.adp.supported_funcs = 0;
+@@ -5091,14 +5104,14 @@ retriable:
+ if (qeth_is_supported(card, IPA_SETADAPTERPARMS)) {
+ rc = qeth_query_setadapterparms(card);
+ if (rc < 0) {
+- QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
++ QETH_DBF_TEXT_(SETUP, 2, "7err%d", rc);
+ goto out;
+ }
+ }
+ if (qeth_adp_supported(card, IPA_SETADP_SET_DIAG_ASSIST)) {
+ rc = qeth_query_setdiagass(card);
+ if (rc < 0) {
+- QETH_DBF_TEXT_(SETUP, 2, "7err%d", rc);
++ QETH_DBF_TEXT_(SETUP, 2, "8err%d", rc);
+ goto out;
+ }
+ }
+--- a/drivers/s390/net/qeth_l2_main.c
++++ b/drivers/s390/net/qeth_l2_main.c
+@@ -1203,21 +1203,6 @@ static int __qeth_l2_set_online(struct c
+ /* softsetup */
+ QETH_DBF_TEXT(SETUP, 2, "softsetp");
+
+- rc = qeth_send_startlan(card);
+- if (rc) {
+- QETH_DBF_TEXT_(SETUP, 2, "1err%d", rc);
+- if (rc == 0xe080) {
+- dev_warn(&card->gdev->dev,
+- "The LAN is offline\n");
+- card->lan_online = 0;
+- goto contin;
+- }
+- rc = -ENODEV;
+- goto out_remove;
+- } else
+- card->lan_online = 1;
+-
+-contin:
+ if ((card->info.type == QETH_CARD_TYPE_OSD) ||
+ (card->info.type == QETH_CARD_TYPE_OSX)) {
+ if (qeth_l2_start_ipassists(card))
+--- a/drivers/s390/net/qeth_l3_main.c
++++ b/drivers/s390/net/qeth_l3_main.c
+@@ -3298,21 +3298,6 @@ static int __qeth_l3_set_online(struct c
+ /* softsetup */
+ QETH_DBF_TEXT(SETUP, 2, "softsetp");
+
+- rc = qeth_send_startlan(card);
+- if (rc) {
+- QETH_DBF_TEXT_(SETUP, 2, "1err%d", rc);
+- if (rc == 0xe080) {
+- dev_warn(&card->gdev->dev,
+- "The LAN is offline\n");
+- card->lan_online = 0;
+- goto contin;
+- }
+- rc = -ENODEV;
+- goto out_remove;
+- } else
+- card->lan_online = 1;
+-
+-contin:
+ rc = qeth_l3_setadapter_parms(card);
+ if (rc)
+ QETH_DBF_TEXT_(SETUP, 2, "2err%04x", rc);
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+Date: Wed, 11 Jan 2017 16:43:32 +0200
+Subject: serial: sh-sci: Fix register offsets for the IRDA serial port
+
+From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+
+
+[ Upstream commit a752ba18af8285e3eeda572f40dddaebff0c3621 ]
+
+Even though most of its registers are 8-bit wide, the IRDA has two
+16-bit registers that make it a 16-bit peripheral and not a 8-bit
+peripheral with addresses shifted by one. Fix the registers offset in
+the driver and the platform data regshift value.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/sh/kernel/cpu/sh3/setup-sh770x.c | 1 -
+ drivers/tty/serial/sh-sci.c | 17 ++++++++---------
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+--- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c
++++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c
+@@ -165,7 +165,6 @@ static struct plat_sci_port scif2_platfo
+ .scscr = SCSCR_TE | SCSCR_RE,
+ .type = PORT_IRDA,
+ .ops = &sh770x_sci_port_ops,
+- .regshift = 1,
+ };
+
+ static struct resource scif2_resources[] = {
+--- a/drivers/tty/serial/sh-sci.c
++++ b/drivers/tty/serial/sh-sci.c
+@@ -163,18 +163,17 @@ static const struct plat_sci_reg sci_reg
+ },
+
+ /*
+- * Common definitions for legacy IrDA ports, dependent on
+- * regshift value.
++ * Common definitions for legacy IrDA ports.
+ */
+ [SCIx_IRDA_REGTYPE] = {
+ [SCSMR] = { 0x00, 8 },
+- [SCBRR] = { 0x01, 8 },
+- [SCSCR] = { 0x02, 8 },
+- [SCxTDR] = { 0x03, 8 },
+- [SCxSR] = { 0x04, 8 },
+- [SCxRDR] = { 0x05, 8 },
+- [SCFCR] = { 0x06, 8 },
+- [SCFDR] = { 0x07, 16 },
++ [SCBRR] = { 0x02, 8 },
++ [SCSCR] = { 0x04, 8 },
++ [SCxTDR] = { 0x06, 8 },
++ [SCxSR] = { 0x08, 16 },
++ [SCxRDR] = { 0x0a, 8 },
++ [SCFCR] = { 0x0c, 8 },
++ [SCFDR] = { 0x0e, 16 },
+ [SCTFDR] = sci_reg_invalid,
+ [SCRFDR] = sci_reg_invalid,
+ [SCSPTR] = sci_reg_invalid,
--- /dev/null
+adv7604-initialize-drive-strength-to-default-when-using-dt.patch
+video-fbdev-pmag-ba-fb-remove-bad-__init-annotation.patch
+pci-mvebu-handle-changes-to-the-bridge-windows-while-enabled.patch
+xen-netback-set-default-upper-limit-of-tx-rx-queues-to-8.patch
+arm-dts-imx53-qsb-common-fix-fec-pinmux-config.patch
+dt-bindings-clockgen-add-compatible-string-for-ls1012a.patch
+drm-drm_minor_register-clean-up-debugfs-on-failure.patch
+kvm-ppc-book-3s-xics-correct-the-real-mode-icp-rejecting-counter.patch
+iommu-arm-smmu-v3-clear-prior-settings-when-updating-stes.patch
+powerpc-corenet-explicitly-disable-the-sdhc-controller-on-kmcoge4.patch
+arm-omap2plus_defconfig-fix-probe-errors-on-uarts-5-and-6.patch
+crypto-vmx-disable-preemption-to-enable-vsx-in-aes_ctr.c.patch
+iio-trigger-free-trigger-resource-correctly.patch
+dt-bindings-add-lego-mindstorms-ev3-compatible-specification.patch
+dt-bindings-add-vendor-prefix-for-lego.patch
+phy-increase-size-of-mii_bus_id_size-and-bus_id.patch
+serial-sh-sci-fix-register-offsets-for-the-irda-serial-port.patch
+usb-hcd-initialize-hcd-flags-to-0-when-rm-hcd.patch
+netfilter-nft_meta-deal-with-packet_loopback-in-netdev-family.patch
+ipsec-do-not-ignore-crypto-err-in-ah4-input.patch
+input-mpr121-handle-multiple-bits-change-of-status-register.patch
+input-mpr121-set-missing-event-capability.patch
+ib-ipoib-change-list_del-to-list_del_init-in-the-tx-object.patch
+s390-qeth-issue-startlan-as-first-ipa-command.patch
+net-dsa-select-net_switchdev.patch
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: William wu <wulf@rock-chips.com>
+Date: Fri, 13 Jan 2017 11:04:22 +0800
+Subject: usb: hcd: initialize hcd->flags to 0 when rm hcd
+
+From: William wu <wulf@rock-chips.com>
+
+
+[ Upstream commit 76b8db0d480e8045e1a1902fc9ab143b3b9ef115 ]
+
+On some platforms(e.g. rk3399 board), we can call hcd_add/remove
+consecutively without calling usb_put_hcd/usb_create_hcd in between,
+so hcd->flags can be stale.
+
+If the HC dies due to whatever reason then without this patch we get
+the below error on next hcd_add.
+
+[173.296154] xhci-hcd xhci-hcd.2.auto: HC died; cleaning up
+[173.296209] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
+[173.296762] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 6
+[173.296931] usb usb6: We don't know the algorithms for LPM for this host, disabling LPM.
+[173.297179] usb usb6: New USB device found, idVendor=1d6b, idProduct=0003
+[173.297203] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
+[173.297222] usb usb6: Product: xHCI Host Controller
+[173.297240] usb usb6: Manufacturer: Linux 4.4.21 xhci-hcd
+[173.297257] usb usb6: SerialNumber: xhci-hcd.2.auto
+[173.298680] hub 6-0:1.0: USB hub found
+[173.298749] hub 6-0:1.0: 1 port detected
+[173.299382] rockchip-dwc3 usb@fe800000: USB HOST connected
+[173.395418] hub 5-0:1.0: activate --> -19
+[173.603447] irq 228: nobody cared (try booting with the "irqpoll" option)
+[173.603493] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.21 #9
+[173.603513] Hardware name: Google Kevin (DT)
+[173.603531] Call trace:
+[173.603568] [<ffffffc0002087dc>] dump_backtrace+0x0/0x160
+[173.603596] [<ffffffc00020895c>] show_stack+0x20/0x28
+[173.603623] [<ffffffc0004b28a8>] dump_stack+0x90/0xb0
+[173.603650] [<ffffffc00027347c>] __report_bad_irq+0x48/0xe8
+[173.603674] [<ffffffc0002737cc>] note_interrupt+0x1e8/0x28c
+[173.603698] [<ffffffc000270a38>] handle_irq_event_percpu+0x1d4/0x25c
+[173.603722] [<ffffffc000270b0c>] handle_irq_event+0x4c/0x7c
+[173.603748] [<ffffffc00027456c>] handle_fasteoi_irq+0xb4/0x124
+[173.603777] [<ffffffc00026fe3c>] generic_handle_irq+0x30/0x44
+[173.603804] [<ffffffc0002701a8>] __handle_domain_irq+0x90/0xbc
+[173.603827] [<ffffffc0002006f4>] gic_handle_irq+0xcc/0x188
+...
+[173.604500] [<ffffffc000203700>] el1_irq+0x80/0xf8
+[173.604530] [<ffffffc000261388>] cpu_startup_entry+0x38/0x3cc
+[173.604558] [<ffffffc00090f7d8>] rest_init+0x8c/0x94
+[173.604585] [<ffffffc000e009ac>] start_kernel+0x3d0/0x3fc
+[173.604607] [<0000000000b16000>] 0xb16000
+[173.604622] handlers:
+[173.604648] [<ffffffc000642084>] usb_hcd_irq
+[173.604673] Disabling IRQ #228
+
+Signed-off-by: William wu <wulf@rock-chips.com>
+Acked-by: Roger Quadros <rogerq@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/core/hcd.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/core/hcd.c
++++ b/drivers/usb/core/hcd.c
+@@ -2997,6 +2997,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
+ }
+
+ usb_put_invalidate_rhdev(hcd);
++ hcd->flags = 0;
+ }
+ EXPORT_SYMBOL_GPL(usb_remove_hcd);
+
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: "Maciej W. Rozycki" <macro@linux-mips.org>
+Date: Mon, 30 Jan 2017 17:39:48 +0100
+Subject: video: fbdev: pmag-ba-fb: Remove bad `__init' annotation
+
+From: "Maciej W. Rozycki" <macro@linux-mips.org>
+
+
+[ Upstream commit 879e5a0df626f39cbb3c61bb90373e56d67012c4 ]
+
+Fix:
+
+WARNING: drivers/video/fbdev/pmag-ba-fb.o(.text+0x308): Section mismatch in reference from the function pmagbafb_probe() to the function .init.text:pmagbafb_erase_cursor()
+The function pmagbafb_probe()
+references the function __init pmagbafb_erase_cursor().
+This is often because pmagbafb_probe lacks a __init
+annotation or the annotation of pmagbafb_erase_cursor is wrong.
+
+-- a fallout from a missed update from commit 9625b51350cc ("VIDEO:
+PMAG-BA: Fix section mismatch") and then commit 48c68c4f1b54 ("Drivers:
+video: remove __dev* attributes.")
+
+Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
+Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/video/fbdev/pmag-ba-fb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/video/fbdev/pmag-ba-fb.c
++++ b/drivers/video/fbdev/pmag-ba-fb.c
+@@ -129,7 +129,7 @@ static struct fb_ops pmagbafb_ops = {
+ /*
+ * Turn the hardware cursor off.
+ */
+-static void __init pmagbafb_erase_cursor(struct fb_info *info)
++static void pmagbafb_erase_cursor(struct fb_info *info)
+ {
+ struct pmagbafb_par *par = info->par;
+
--- /dev/null
+From foo@baz Thu Nov 9 18:22:51 CET 2017
+From: Juergen Gross <jgross@suse.com>
+Date: Tue, 10 Jan 2017 14:32:52 +0100
+Subject: xen/netback: set default upper limit of tx/rx queues to 8
+
+From: Juergen Gross <jgross@suse.com>
+
+
+[ Upstream commit 56dd5af9bc23d0d5d23bb207c477715b4c2216c5 ]
+
+The default for the maximum number of tx/rx queues of one interface is
+the number of cpus of the system today. As each queue pair reserves 512
+grant pages this default consumes a ridiculous number of grants for
+large guests.
+
+Limit the queue number to 8 as default. This value can be modified
+via a module parameter if required.
+
+Signed-off-by: Juergen Gross <jgross@suse.com>
+Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/xen-netback/netback.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/xen-netback/netback.c
++++ b/drivers/net/xen-netback/netback.c
+@@ -67,6 +67,7 @@ module_param(rx_drain_timeout_msecs, uin
+ unsigned int rx_stall_timeout_msecs = 60000;
+ module_param(rx_stall_timeout_msecs, uint, 0444);
+
++#define MAX_QUEUES_DEFAULT 8
+ unsigned int xenvif_max_queues;
+ module_param_named(max_queues, xenvif_max_queues, uint, 0644);
+ MODULE_PARM_DESC(max_queues,
+@@ -2157,11 +2158,12 @@ static int __init netback_init(void)
+ if (!xen_domain())
+ return -ENODEV;
+
+- /* Allow as many queues as there are CPUs if user has not
++ /* Allow as many queues as there are CPUs but max. 8 if user has not
+ * specified a value.
+ */
+ if (xenvif_max_queues == 0)
+- xenvif_max_queues = num_online_cpus();
++ xenvif_max_queues = min_t(unsigned int, MAX_QUEUES_DEFAULT,
++ num_online_cpus());
+
+ if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
+ pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",