--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Nicolas Ferre <nicolas.ferre@microchip.com>
+Date: Fri, 14 Sep 2018 17:48:11 +0200
+Subject: ARM: dts: at91: add new compatibility string for macb on sama5d3
+
+From: Nicolas Ferre <nicolas.ferre@microchip.com>
+
+[ Upstream commit 321cc359d899a8e988f3725d87c18a628e1cc624 ]
+
+We need this new compatibility string as we experienced different behavior
+for this 10/100Mbits/s macb interface on this particular SoC.
+Backward compatibility is preserved as we keep the alternative strings.
+
+Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Documentation/devicetree/bindings/net/macb.txt | 1 +
+ arch/arm/boot/dts/sama5d3_emac.dtsi | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+--- a/Documentation/devicetree/bindings/net/macb.txt
++++ b/Documentation/devicetree/bindings/net/macb.txt
+@@ -10,6 +10,7 @@ Required properties:
+ Use "cdns,pc302-gem" for Picochip picoXcell pc302 and later devices based on
+ the Cadence GEM, or the generic form: "cdns,gem".
+ Use "atmel,sama5d2-gem" for the GEM IP (10/100) available on Atmel sama5d2 SoCs.
++ Use "atmel,sama5d3-macb" for the 10/100Mbit IP available on Atmel sama5d3 SoCs.
+ Use "atmel,sama5d3-gem" for the Gigabit IP available on Atmel sama5d3 SoCs.
+ Use "atmel,sama5d4-gem" for the GEM IP (10/100) available on Atmel sama5d4 SoCs.
+ Use "cdns,zynq-gem" Xilinx Zynq-7xxx SoC.
+--- a/arch/arm/boot/dts/sama5d3_emac.dtsi
++++ b/arch/arm/boot/dts/sama5d3_emac.dtsi
+@@ -41,7 +41,7 @@
+ };
+
+ macb1: ethernet@f802c000 {
+- compatible = "cdns,at91sam9260-macb", "cdns,macb";
++ compatible = "atmel,sama5d3-macb", "cdns,at91sam9260-macb", "cdns,macb";
+ reg = <0xf802c000 0x100>;
+ interrupts = <35 IRQ_TYPE_LEVEL_HIGH 3>;
+ pinctrl-names = "default";
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Danny Smith <danny.smith@axis.com>
+Date: Thu, 23 Aug 2018 10:26:20 +0200
+Subject: ASoC: sigmadsp: safeload should not have lower byte limit
+
+From: Danny Smith <danny.smith@axis.com>
+
+[ Upstream commit 5ea752c6efdf5aa8a57aed816d453a8f479f1b0a ]
+
+Fixed range in safeload conditional to allow safeload to up to 20 bytes,
+without a lower limit.
+
+Signed-off-by: Danny Smith <dannys@axis.com>
+Acked-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/codecs/sigmadsp.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/sound/soc/codecs/sigmadsp.c
++++ b/sound/soc/codecs/sigmadsp.c
+@@ -117,8 +117,7 @@ static int sigmadsp_ctrl_write(struct si
+ struct sigmadsp_control *ctrl, void *data)
+ {
+ /* safeload loads up to 20 bytes in a atomic operation */
+- if (ctrl->num_bytes > 4 && ctrl->num_bytes <= 20 && sigmadsp->ops &&
+- sigmadsp->ops->safeload)
++ if (ctrl->num_bytes <= 20 && sigmadsp->ops && sigmadsp->ops->safeload)
+ return sigmadsp->ops->safeload(sigmadsp, ctrl->addr, data,
+ ctrl->num_bytes);
+ else
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Date: Wed, 22 Aug 2018 22:49:36 -0500
+Subject: ASoC: wm8804: Add ACPI support
+
+From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+
+[ Upstream commit 960cdd50ca9fdfeb82c2757107bcb7f93c8d7d41 ]
+
+HID made of either Wolfson/CirrusLogic PCI ID + 8804 identifier.
+
+This helps enumerate the HifiBerry Digi+ HAT boards on the Up2 platform.
+
+The scripts at https://github.com/thesofproject/acpi-scripts can be
+used to add the ACPI initrd overlays.
+
+Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/codecs/wm8804-i2c.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/wm8804-i2c.c
++++ b/sound/soc/codecs/wm8804-i2c.c
+@@ -13,6 +13,7 @@
+ #include <linux/init.h>
+ #include <linux/module.h>
+ #include <linux/i2c.h>
++#include <linux/acpi.h>
+
+ #include "wm8804.h"
+
+@@ -40,17 +41,29 @@ static const struct i2c_device_id wm8804
+ };
+ MODULE_DEVICE_TABLE(i2c, wm8804_i2c_id);
+
++#if defined(CONFIG_OF)
+ static const struct of_device_id wm8804_of_match[] = {
+ { .compatible = "wlf,wm8804", },
+ { }
+ };
+ MODULE_DEVICE_TABLE(of, wm8804_of_match);
++#endif
++
++#ifdef CONFIG_ACPI
++static const struct acpi_device_id wm8804_acpi_match[] = {
++ { "1AEC8804", 0 }, /* Wolfson PCI ID + part ID */
++ { "10138804", 0 }, /* Cirrus Logic PCI ID + part ID */
++ { },
++};
++MODULE_DEVICE_TABLE(acpi, wm8804_acpi_match);
++#endif
+
+ static struct i2c_driver wm8804_i2c_driver = {
+ .driver = {
+ .name = "wm8804",
+ .pm = &wm8804_pm,
+- .of_match_table = wm8804_of_match,
++ .of_match_table = of_match_ptr(wm8804_of_match),
++ .acpi_match_table = ACPI_PTR(wm8804_acpi_match),
+ },
+ .probe = wm8804_i2c_probe,
+ .remove = wm8804_i2c_remove,
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Amber Lin <Amber.Lin@amd.com>
+Date: Wed, 12 Sep 2018 21:42:18 -0400
+Subject: drm/amdgpu: Fix SDMA HQD destroy error on gfx_v7
+
+From: Amber Lin <Amber.Lin@amd.com>
+
+[ Upstream commit caaa4c8a6be2a275bd14f2369ee364978ff74704 ]
+
+A wrong register bit was examinated for checking SDMA status so it reports
+false failures. This typo only appears on gfx_v7. gfx_v8 checks the correct
+bit.
+
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Amber Lin <Amber.Lin@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+@@ -505,7 +505,7 @@ static int kgd_hqd_sdma_destroy(struct k
+
+ while (true) {
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+- if (temp & SDMA0_STATUS_REG__RB_CMD_IDLE__SHIFT)
++ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+ if (timeout <= 0)
+ return -ETIME;
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Tony Lindgren <tony@atomide.com>
+Date: Wed, 25 Apr 2018 07:29:22 -0700
+Subject: mfd: omap-usb-host: Fix dts probe of children
+
+From: Tony Lindgren <tony@atomide.com>
+
+[ Upstream commit 10492ee8ed9188d6d420e1f79b2b9bdbc0624e65 ]
+
+It currently only works if the parent bus uses "simple-bus". We
+currently try to probe children with non-existing compatible values.
+And we're missing .probe.
+
+I noticed this while testing devices configured to probe using ti-sysc
+interconnect target module driver. For that we also may want to rebind
+the driver, so let's remove __init and __exit.
+
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Acked-by: Roger Quadros <rogerq@ti.com>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mfd/omap-usb-host.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/mfd/omap-usb-host.c
++++ b/drivers/mfd/omap-usb-host.c
+@@ -548,8 +548,8 @@ static int usbhs_omap_get_dt_pdata(struc
+ }
+
+ static const struct of_device_id usbhs_child_match_table[] = {
+- { .compatible = "ti,omap-ehci", },
+- { .compatible = "ti,omap-ohci", },
++ { .compatible = "ti,ehci-omap", },
++ { .compatible = "ti,ohci-omap3", },
+ { }
+ };
+
+@@ -875,6 +875,7 @@ static struct platform_driver usbhs_omap
+ .pm = &usbhsomap_dev_pm_ops,
+ .of_match_table = usbhs_omap_dt_ids,
+ },
++ .probe = usbhs_omap_probe,
+ .remove = usbhs_omap_remove,
+ };
+
+@@ -884,9 +885,9 @@ MODULE_ALIAS("platform:" USBHS_DRIVER_NA
+ MODULE_LICENSE("GPL v2");
+ MODULE_DESCRIPTION("usb host common core driver for omap EHCI and OHCI");
+
+-static int __init omap_usbhs_drvinit(void)
++static int omap_usbhs_drvinit(void)
+ {
+- return platform_driver_probe(&usbhs_omap_driver, usbhs_omap_probe);
++ return platform_driver_register(&usbhs_omap_driver);
+ }
+
+ /*
+@@ -898,7 +899,7 @@ static int __init omap_usbhs_drvinit(voi
+ */
+ fs_initcall_sync(omap_usbhs_drvinit);
+
+-static void __exit omap_usbhs_drvexit(void)
++static void omap_usbhs_drvexit(void)
+ {
+ platform_driver_unregister(&usbhs_omap_driver);
+ }
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Nicolas Ferre <nicolas.ferre@microchip.com>
+Date: Fri, 14 Sep 2018 17:48:10 +0200
+Subject: net: macb: disable scatter-gather for macb on sama5d3
+
+From: Nicolas Ferre <nicolas.ferre@microchip.com>
+
+[ Upstream commit eb4ed8e2d7fecb5f40db38e4498b9ee23cddf196 ]
+
+Create a new configuration for the sama5d3-macb new compatibility string.
+This configuration disables scatter-gather because we experienced lock down
+of the macb interface of this particular SoC under very high load.
+
+Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/cadence/macb.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/net/ethernet/cadence/macb.c
++++ b/drivers/net/ethernet/cadence/macb.c
+@@ -2861,6 +2861,13 @@ static const struct macb_config at91sam9
+ .init = macb_init,
+ };
+
++static const struct macb_config sama5d3macb_config = {
++ .caps = MACB_CAPS_SG_DISABLED
++ | MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII_GMII,
++ .clk_init = macb_clk_init,
++ .init = macb_init,
++};
++
+ static const struct macb_config pc302gem_config = {
+ .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE,
+ .dma_burst_length = 16,
+@@ -2925,6 +2932,7 @@ static const struct of_device_id macb_dt
+ { .compatible = "cdns,gem", .data = &pc302gem_config },
+ { .compatible = "atmel,sama5d2-gem", .data = &sama5d2_config },
+ { .compatible = "atmel,sama5d3-gem", .data = &sama5d3_config },
++ { .compatible = "atmel,sama5d3-macb", .data = &sama5d3macb_config },
+ { .compatible = "atmel,sama5d4-gem", .data = &sama5d4_config },
+ { .compatible = "cdns,at91rm9200-emac", .data = &emac_config },
+ { .compatible = "cdns,emac", .data = &emac_config },
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Laura Abbott <labbott@redhat.com>
+Date: Tue, 4 Sep 2018 11:47:40 -0700
+Subject: scsi: iscsi: target: Don't use stack buffer for scatterlist
+
+From: Laura Abbott <labbott@redhat.com>
+
+[ Upstream commit 679fcae46c8b2352bba3485d521da070cfbe68e6 ]
+
+Fedora got a bug report of a crash with iSCSI:
+
+kernel BUG at include/linux/scatterlist.h:143!
+...
+RIP: 0010:iscsit_do_crypto_hash_buf+0x154/0x180 [iscsi_target_mod]
+...
+ Call Trace:
+ ? iscsi_target_tx_thread+0x200/0x200 [iscsi_target_mod]
+ iscsit_get_rx_pdu+0x4cd/0xa90 [iscsi_target_mod]
+ ? native_sched_clock+0x3e/0xa0
+ ? iscsi_target_tx_thread+0x200/0x200 [iscsi_target_mod]
+ iscsi_target_rx_thread+0x81/0xf0 [iscsi_target_mod]
+ kthread+0x120/0x140
+ ? kthread_create_worker_on_cpu+0x70/0x70
+ ret_from_fork+0x3a/0x50
+
+This is a BUG_ON for using a stack buffer with a scatterlist. There
+are two cases that trigger this bug. Switch to using a dynamically
+allocated buffer for one case and do not assign a NULL buffer in
+another case.
+
+Signed-off-by: Laura Abbott <labbott@redhat.com>
+Reviewed-by: Mike Christie <mchristi@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/target/iscsi/iscsi_target.c | 22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+--- a/drivers/target/iscsi/iscsi_target.c
++++ b/drivers/target/iscsi/iscsi_target.c
+@@ -1435,7 +1435,8 @@ static void iscsit_do_crypto_hash_buf(
+
+ sg_init_table(sg, ARRAY_SIZE(sg));
+ sg_set_buf(sg, buf, payload_length);
+- sg_set_buf(sg + 1, pad_bytes, padding);
++ if (padding)
++ sg_set_buf(sg + 1, pad_bytes, padding);
+
+ ahash_request_set_crypt(hash, sg, data_crc, payload_length + padding);
+
+@@ -3949,10 +3950,14 @@ static bool iscsi_target_check_conn_stat
+ static void iscsit_get_rx_pdu(struct iscsi_conn *conn)
+ {
+ int ret;
+- u8 buffer[ISCSI_HDR_LEN], opcode;
++ u8 *buffer, opcode;
+ u32 checksum = 0, digest = 0;
+ struct kvec iov;
+
++ buffer = kcalloc(ISCSI_HDR_LEN, sizeof(*buffer), GFP_KERNEL);
++ if (!buffer)
++ return;
++
+ while (!kthread_should_stop()) {
+ /*
+ * Ensure that both TX and RX per connection kthreads
+@@ -3960,7 +3965,6 @@ static void iscsit_get_rx_pdu(struct isc
+ */
+ iscsit_thread_check_cpumask(conn, current, 0);
+
+- memset(buffer, 0, ISCSI_HDR_LEN);
+ memset(&iov, 0, sizeof(struct kvec));
+
+ iov.iov_base = buffer;
+@@ -3969,7 +3973,7 @@ static void iscsit_get_rx_pdu(struct isc
+ ret = rx_data(conn, &iov, 1, ISCSI_HDR_LEN);
+ if (ret != ISCSI_HDR_LEN) {
+ iscsit_rx_thread_wait_for_tcp(conn);
+- return;
++ break;
+ }
+
+ if (conn->conn_ops->HeaderDigest) {
+@@ -3979,7 +3983,7 @@ static void iscsit_get_rx_pdu(struct isc
+ ret = rx_data(conn, &iov, 1, ISCSI_CRC_LEN);
+ if (ret != ISCSI_CRC_LEN) {
+ iscsit_rx_thread_wait_for_tcp(conn);
+- return;
++ break;
+ }
+
+ iscsit_do_crypto_hash_buf(conn->conn_rx_hash,
+@@ -4003,7 +4007,7 @@ static void iscsit_get_rx_pdu(struct isc
+ }
+
+ if (conn->conn_state == TARG_CONN_STATE_IN_LOGOUT)
+- return;
++ break;
+
+ opcode = buffer[0] & ISCSI_OPCODE_MASK;
+
+@@ -4014,13 +4018,15 @@ static void iscsit_get_rx_pdu(struct isc
+ " while in Discovery Session, rejecting.\n", opcode);
+ iscsit_add_reject(conn, ISCSI_REASON_PROTOCOL_ERROR,
+ buffer);
+- return;
++ break;
+ }
+
+ ret = iscsi_target_rx_opcode(conn, buffer);
+ if (ret < 0)
+- return;
++ break;
+ }
++
++ kfree(buffer);
+ }
+
+ int iscsi_target_rx_thread(void *arg)
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Sat, 8 Sep 2018 11:42:27 +0300
+Subject: scsi: qla2xxx: Fix an endian bug in fcpcmd_is_corrupted()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+[ Upstream commit cbe3fd39d223f14b1c60c80fe9347a3dd08c2edb ]
+
+We should first do the le16_to_cpu endian conversion and then apply the
+FCP_CMD_LENGTH_MASK mask.
+
+Fixes: 5f35509db179 ("qla2xxx: Terminate exchange if corrupted")
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Acked-by: Quinn Tran <Quinn.Tran@cavium.com>
+Acked-by: Himanshu Madhani <himanshu.madhani@cavium.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/scsi/qla2xxx/qla_target.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/scsi/qla2xxx/qla_target.h
++++ b/drivers/scsi/qla2xxx/qla_target.h
+@@ -440,8 +440,8 @@ struct atio_from_isp {
+ static inline int fcpcmd_is_corrupted(struct atio *atio)
+ {
+ if (atio->entry_type == ATIO_TYPE7 &&
+- (le16_to_cpu(atio->attr_n_length & FCP_CMD_LENGTH_MASK) <
+- FCP_CMD_LENGTH_MIN))
++ ((le16_to_cpu(atio->attr_n_length) & FCP_CMD_LENGTH_MASK) <
++ FCP_CMD_LENGTH_MIN))
+ return 1;
+ else
+ return 0;
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Lei Yang <Lei.Yang@windriver.com>
+Date: Wed, 5 Sep 2018 11:14:49 +0800
+Subject: selftests/efivarfs: add required kernel configs
+
+From: Lei Yang <Lei.Yang@windriver.com>
+
+[ Upstream commit 53cf59d6c0ad3edc4f4449098706a8f8986258b6 ]
+
+add config file
+
+Signed-off-by: Lei Yang <Lei.Yang@windriver.com>
+Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/efivarfs/config | 1 +
+ 1 file changed, 1 insertion(+)
+ create mode 100644 tools/testing/selftests/efivarfs/config
+
+--- /dev/null
++++ b/tools/testing/selftests/efivarfs/config
+@@ -0,0 +1 @@
++CONFIG_EFIVAR_FS=y
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Lei Yang <Lei.Yang@windriver.com>
+Date: Wed, 5 Sep 2018 17:57:15 +0800
+Subject: selftests: memory-hotplug: add required configs
+
+From: Lei Yang <Lei.Yang@windriver.com>
+
+[ Upstream commit 4d85af102a66ee6aeefa596f273169e77fb2b48e ]
+
+add CONFIG_MEMORY_HOTREMOVE=y in config
+without this config, /sys/devices/system/memory/memory*/removable
+always return 0, I endup getting an early skip during test
+
+Signed-off-by: Lei Yang <Lei.Yang@windriver.com>
+Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/memory-hotplug/config | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/tools/testing/selftests/memory-hotplug/config
++++ b/tools/testing/selftests/memory-hotplug/config
+@@ -2,3 +2,4 @@ CONFIG_MEMORY_HOTPLUG=y
+ CONFIG_MEMORY_HOTPLUG_SPARSE=y
+ CONFIG_NOTIFIER_ERROR_INJECTION=y
+ CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m
++CONFIG_MEMORY_HOTREMOVE=y
--- /dev/null
+asoc-wm8804-add-acpi-support.patch
+asoc-sigmadsp-safeload-should-not-have-lower-byte-limit.patch
+selftests-efivarfs-add-required-kernel-configs.patch
+selftests-memory-hotplug-add-required-configs.patch
+mfd-omap-usb-host-fix-dts-probe-of-children.patch
+scsi-iscsi-target-don-t-use-stack-buffer-for-scatterlist.patch
+scsi-qla2xxx-fix-an-endian-bug-in-fcpcmd_is_corrupted.patch
+sound-enable-interrupt-after-dma-buffer-initialization.patch
+stmmac-fix-valid-numbers-of-unicast-filter-entries.patch
+net-macb-disable-scatter-gather-for-macb-on-sama5d3.patch
+arm-dts-at91-add-new-compatibility-string-for-macb-on-sama5d3.patch
+x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch
+drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Yu Zhao <yuzhao@google.com>
+Date: Tue, 11 Sep 2018 15:14:04 -0600
+Subject: sound: enable interrupt after dma buffer initialization
+
+From: Yu Zhao <yuzhao@google.com>
+
+[ Upstream commit b61749a89f826eb61fc59794d9e4697bd246eb61 ]
+
+In snd_hdac_bus_init_chip(), we enable interrupt before
+snd_hdac_bus_init_cmd_io() initializing dma buffers. If irq has
+been acquired and irq handler uses the dma buffer, kernel may crash
+when interrupt comes in.
+
+Fix the problem by postponing enabling irq after dma buffer
+initialization. And warn once on null dma buffer pointer during the
+initialization.
+
+Reviewed-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Yu Zhao <yuzhao@google.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/hda/hdac_controller.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/sound/hda/hdac_controller.c
++++ b/sound/hda/hdac_controller.c
+@@ -40,6 +40,8 @@ static void azx_clear_corbrp(struct hdac
+ */
+ void snd_hdac_bus_init_cmd_io(struct hdac_bus *bus)
+ {
++ WARN_ON_ONCE(!bus->rb.area);
++
+ spin_lock_irq(&bus->reg_lock);
+ /* CORB set up */
+ bus->corb.addr = bus->rb.addr;
+@@ -478,13 +480,15 @@ bool snd_hdac_bus_init_chip(struct hdac_
+ /* reset controller */
+ azx_reset(bus, full_reset);
+
+- /* initialize interrupts */
++ /* clear interrupts */
+ azx_int_clear(bus);
+- azx_int_enable(bus);
+
+ /* initialize the codec command I/O */
+ snd_hdac_bus_init_cmd_io(bus);
+
++ /* enable interrupts after CORB/RIRB buffers are initialized above */
++ azx_int_enable(bus);
++
+ /* program the position buffer */
+ if (bus->use_posbuf && bus->posbuf.addr) {
+ snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Jongsung Kim <neidhard.kim@lge.com>
+Date: Thu, 13 Sep 2018 18:32:21 +0900
+Subject: stmmac: fix valid numbers of unicast filter entries
+
+From: Jongsung Kim <neidhard.kim@lge.com>
+
+[ Upstream commit edf2ef7242805e53ec2e0841db26e06d8bc7da70 ]
+
+Synopsys DWC Ethernet MAC can be configured to have 1..32, 64, or
+128 unicast filter entries. (Table 7-8 MAC Address Registers from
+databook) Fix dwmac1000_validate_ucast_entries() to accept values
+between 1 and 32 in addition.
+
+Signed-off-by: Jongsung Kim <neidhard.kim@lge.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+@@ -71,7 +71,7 @@ static int dwmac1000_validate_mcast_bins
+ * Description:
+ * This function validates the number of Unicast address entries supported
+ * by a particular Synopsys 10/100/1000 controller. The Synopsys controller
+- * supports 1, 32, 64, or 128 Unicast filter entries for it's Unicast filter
++ * supports 1..32, 64, or 128 Unicast filter entries for it's Unicast filter
+ * logic. This function validates a valid, supported configuration is
+ * selected, and defaults to 1 Unicast address if an unsupported
+ * configuration is selected.
+@@ -81,8 +81,7 @@ static int dwmac1000_validate_ucast_entr
+ int x = ucast_entries;
+
+ switch (x) {
+- case 1:
+- case 32:
++ case 1 ... 32:
+ case 64:
+ case 128:
+ break;
--- /dev/null
+From foo@baz Tue Oct 16 12:18:53 CEST 2018
+From: Vitaly Kuznetsov <vkuznets@redhat.com>
+Date: Thu, 2 Aug 2018 17:08:16 +0200
+Subject: x86/kvm/lapic: always disable MMIO interface in x2APIC mode
+
+From: Vitaly Kuznetsov <vkuznets@redhat.com>
+
+[ Upstream commit d1766202779e81d0f2a94c4650a6ba31497d369d ]
+
+When VMX is used with flexpriority disabled (because of no support or
+if disabled with module parameter) MMIO interface to lAPIC is still
+available in x2APIC mode while it shouldn't be (kvm-unit-tests):
+
+PASS: apic_disable: Local apic enabled in x2APIC mode
+PASS: apic_disable: CPUID.1H:EDX.APIC[bit 9] is set
+FAIL: apic_disable: *0xfee00030: 50014
+
+The issue appears because we basically do nothing while switching to
+x2APIC mode when APIC access page is not used. apic_mmio_{read,write}
+only check if lAPIC is disabled before proceeding to actual write.
+
+When APIC access is virtualized we correctly manipulate with VMX controls
+in vmx_set_virtual_apic_mode() and we don't get vmexits from memory writes
+in x2APIC mode so there's no issue.
+
+Disabling MMIO interface seems to be easy. The question is: what do we
+do with these reads and writes? If we add apic_x2apic_mode() check to
+apic_mmio_in_range() and return -EOPNOTSUPP these reads and writes will
+go to userspace. When lAPIC is in kernel, Qemu uses this interface to
+inject MSIs only (see kvm_apic_mem_write() in hw/i386/kvm/apic.c). This
+somehow works with disabled lAPIC but when we're in xAPIC mode we will
+get a real injected MSI from every write to lAPIC. Not good.
+
+The simplest solution seems to be to just ignore writes to the region
+and return ~0 for all reads when we're in x2APIC mode. This is what this
+patch does. However, this approach is inconsistent with what currently
+happens when flexpriority is enabled: we allocate APIC access page and
+create KVM memory region so in x2APIC modes all reads and writes go to
+this pre-allocated page which is, btw, the same for all vCPUs.
+
+Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/include/uapi/asm/kvm.h | 1 +
+ arch/x86/kvm/lapic.c | 22 +++++++++++++++++++---
+ 2 files changed, 20 insertions(+), 3 deletions(-)
+
+--- a/arch/x86/include/uapi/asm/kvm.h
++++ b/arch/x86/include/uapi/asm/kvm.h
+@@ -356,5 +356,6 @@ struct kvm_sync_regs {
+
+ #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
+ #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
++#define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+
+ #endif /* _ASM_X86_KVM_H */
+--- a/arch/x86/kvm/lapic.c
++++ b/arch/x86/kvm/lapic.c
+@@ -1220,9 +1220,8 @@ EXPORT_SYMBOL_GPL(kvm_lapic_reg_read);
+
+ static int apic_mmio_in_range(struct kvm_lapic *apic, gpa_t addr)
+ {
+- return kvm_apic_hw_enabled(apic) &&
+- addr >= apic->base_address &&
+- addr < apic->base_address + LAPIC_MMIO_LENGTH;
++ return addr >= apic->base_address &&
++ addr < apic->base_address + LAPIC_MMIO_LENGTH;
+ }
+
+ static int apic_mmio_read(struct kvm_vcpu *vcpu, struct kvm_io_device *this,
+@@ -1234,6 +1233,15 @@ static int apic_mmio_read(struct kvm_vcp
+ if (!apic_mmio_in_range(apic, address))
+ return -EOPNOTSUPP;
+
++ if (!kvm_apic_hw_enabled(apic) || apic_x2apic_mode(apic)) {
++ if (!kvm_check_has_quirk(vcpu->kvm,
++ KVM_X86_QUIRK_LAPIC_MMIO_HOLE))
++ return -EOPNOTSUPP;
++
++ memset(data, 0xff, len);
++ return 0;
++ }
++
+ kvm_lapic_reg_read(apic, offset, len, data);
+
+ return 0;
+@@ -1646,6 +1654,14 @@ static int apic_mmio_write(struct kvm_vc
+ if (!apic_mmio_in_range(apic, address))
+ return -EOPNOTSUPP;
+
++ if (!kvm_apic_hw_enabled(apic) || apic_x2apic_mode(apic)) {
++ if (!kvm_check_has_quirk(vcpu->kvm,
++ KVM_X86_QUIRK_LAPIC_MMIO_HOLE))
++ return -EOPNOTSUPP;
++
++ return 0;
++ }
++
+ /*
+ * APIC register must be aligned on 128-bits boundary.
+ * 32/64/128 bits registers must be accessed thru 32 bits.