]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 Oct 2018 10:17:10 +0000 (12:17 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 Oct 2018 10:17:10 +0000 (12:17 +0200)
added patches:
arm-dts-at91-add-new-compatibility-string-for-macb-on-sama5d3.patch
asoc-rsnd-adg-care-clock-frequency-size.patch
asoc-rsnd-don-t-fallback-to-pio-mode-when-eprobe_defer.patch
asoc-rt5514-fix-the-issue-of-the-delay-volume-applied-again.patch
asoc-sigmadsp-safeload-should-not-have-lower-byte-limit.patch
asoc-wm8804-add-acpi-support.patch
bluetooth-hci_ldisc-free-rw_semaphore-on-close.patch
clk-x86-add-ether_clk-alias-for-bay-trail-cherry-trail.patch
clk-x86-stop-marking-clocks-as-clk_is_critical.patch
drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch
hv_netvsc-fix-schedule-in-rcu-context.patch
mfd-omap-usb-host-fix-dts-probe-of-children.patch
net-macb-disable-scatter-gather-for-macb-on-sama5d3.patch
pci-hv-support-reporting-serial-number-as-slot-information.patch
scsi-iscsi-target-don-t-use-stack-buffer-for-scatterlist.patch
scsi-qla2xxx-fix-an-endian-bug-in-fcpcmd_is_corrupted.patch
selftests-efivarfs-add-required-kernel-configs.patch
selftests-memory-hotplug-add-required-configs.patch
sound-don-t-call-skl_init_chip-to-reset-intel-skl-soc.patch
sound-enable-interrupt-after-dma-buffer-initialization.patch
stmmac-fix-valid-numbers-of-unicast-filter-entries.patch
x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch

23 files changed:
queue-4.14/arm-dts-at91-add-new-compatibility-string-for-macb-on-sama5d3.patch [new file with mode: 0644]
queue-4.14/asoc-rsnd-adg-care-clock-frequency-size.patch [new file with mode: 0644]
queue-4.14/asoc-rsnd-don-t-fallback-to-pio-mode-when-eprobe_defer.patch [new file with mode: 0644]
queue-4.14/asoc-rt5514-fix-the-issue-of-the-delay-volume-applied-again.patch [new file with mode: 0644]
queue-4.14/asoc-sigmadsp-safeload-should-not-have-lower-byte-limit.patch [new file with mode: 0644]
queue-4.14/asoc-wm8804-add-acpi-support.patch [new file with mode: 0644]
queue-4.14/bluetooth-hci_ldisc-free-rw_semaphore-on-close.patch [new file with mode: 0644]
queue-4.14/clk-x86-add-ether_clk-alias-for-bay-trail-cherry-trail.patch [new file with mode: 0644]
queue-4.14/clk-x86-stop-marking-clocks-as-clk_is_critical.patch [new file with mode: 0644]
queue-4.14/drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch [new file with mode: 0644]
queue-4.14/hv_netvsc-fix-schedule-in-rcu-context.patch [new file with mode: 0644]
queue-4.14/mfd-omap-usb-host-fix-dts-probe-of-children.patch [new file with mode: 0644]
queue-4.14/net-macb-disable-scatter-gather-for-macb-on-sama5d3.patch [new file with mode: 0644]
queue-4.14/pci-hv-support-reporting-serial-number-as-slot-information.patch [new file with mode: 0644]
queue-4.14/scsi-iscsi-target-don-t-use-stack-buffer-for-scatterlist.patch [new file with mode: 0644]
queue-4.14/scsi-qla2xxx-fix-an-endian-bug-in-fcpcmd_is_corrupted.patch [new file with mode: 0644]
queue-4.14/selftests-efivarfs-add-required-kernel-configs.patch [new file with mode: 0644]
queue-4.14/selftests-memory-hotplug-add-required-configs.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/sound-don-t-call-skl_init_chip-to-reset-intel-skl-soc.patch [new file with mode: 0644]
queue-4.14/sound-enable-interrupt-after-dma-buffer-initialization.patch [new file with mode: 0644]
queue-4.14/stmmac-fix-valid-numbers-of-unicast-filter-entries.patch [new file with mode: 0644]
queue-4.14/x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch [new file with mode: 0644]

diff --git a/queue-4.14/arm-dts-at91-add-new-compatibility-string-for-macb-on-sama5d3.patch b/queue-4.14/arm-dts-at91-add-new-compatibility-string-for-macb-on-sama5d3.patch
new file mode 100644 (file)
index 0000000..67e9bb7
--- /dev/null
@@ -0,0 +1,43 @@
+From foo@baz Tue Oct 16 12:16:55 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";
diff --git a/queue-4.14/asoc-rsnd-adg-care-clock-frequency-size.patch b/queue-4.14/asoc-rsnd-adg-care-clock-frequency-size.patch
new file mode 100644 (file)
index 0000000..4641d6a
--- /dev/null
@@ -0,0 +1,38 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Date: Thu, 6 Sep 2018 03:21:33 +0000
+Subject: ASoC: rsnd: adg: care clock-frequency size
+
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+[ Upstream commit 69235ccf491d2e26aefd465c0d3ccd1e3b2a9a9c ]
+
+ADG has buffer over flow bug if DT has more than 3 clock-frequency.
+This patch fixup this issue, and uses first 2 values.
+
+       clock-frequency = <x y>;        /* this is OK */
+       clock-frequency = <x y z>;      /* this is NG */
+
+Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.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/sh/rcar/adg.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/sound/soc/sh/rcar/adg.c
++++ b/sound/soc/sh/rcar/adg.c
+@@ -467,6 +467,11 @@ static void rsnd_adg_get_clkout(struct r
+               goto rsnd_adg_get_clkout_end;
+       req_size = prop->length / sizeof(u32);
++      if (req_size > REQ_SIZE) {
++              dev_err(dev,
++                      "too many clock-frequency, use top %d\n", REQ_SIZE);
++              req_size = REQ_SIZE;
++      }
+       of_property_read_u32_array(np, "clock-frequency", req_rate, req_size);
+       req_48kHz_rate = 0;
diff --git a/queue-4.14/asoc-rsnd-don-t-fallback-to-pio-mode-when-eprobe_defer.patch b/queue-4.14/asoc-rsnd-don-t-fallback-to-pio-mode-when-eprobe_defer.patch
new file mode 100644 (file)
index 0000000..a859009
--- /dev/null
@@ -0,0 +1,73 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+Date: Thu, 6 Sep 2018 03:21:47 +0000
+Subject: ASoC: rsnd: don't fallback to PIO mode when -EPROBE_DEFER
+
+From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+[ Upstream commit 6c92d5a2744e27619a8fcc9d74b91ee9f1cdebd1 ]
+
+Current rsnd driver will fallback to PIO mode if it can't get DMA
+handler. But, DMA might return -EPROBE_DEFER when probe timing.
+This driver always fallback to PIO mode especially from
+commit ac6bbf0cdf4206c ("iommu: Remove IOMMU_OF_DECLARE") because
+of this reason.
+
+The DMA driver will be probed later, but sound driver might be
+probed as PIO mode in such case. This patch fixup this issue.
+Then, -EPROBE_DEFER is not error. Thus, let's don't indicate error
+message in such case.
+And it needs to call rsnd_adg_remove() individually if probe failed,
+because it registers clk which should be unregister.
+
+Maybe PIO fallback feature itself is not needed,
+but let's keep it so far.
+
+Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.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/sh/rcar/core.c |   10 +++++++++-
+ sound/soc/sh/rcar/dma.c  |    4 ++++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+--- a/sound/soc/sh/rcar/core.c
++++ b/sound/soc/sh/rcar/core.c
+@@ -486,7 +486,7 @@ static int rsnd_status_update(u32 *statu
+                       (func_call && (mod)->ops->fn) ? #fn : "");      \
+               if (func_call && (mod)->ops->fn)                        \
+                       tmp = (mod)->ops->fn(mod, io, param);           \
+-              if (tmp)                                                \
++              if (tmp && (tmp != -EPROBE_DEFER))                      \
+                       dev_err(dev, "%s[%d] : %s error %d\n",          \
+                               rsnd_mod_name(mod), rsnd_mod_id(mod),   \
+                                                    #fn, tmp);         \
+@@ -1469,6 +1469,14 @@ exit_snd_probe:
+               rsnd_dai_call(remove, &rdai->capture, priv);
+       }
++      /*
++       * adg is very special mod which can't use rsnd_dai_call(remove),
++       * and it registers ADG clock on probe.
++       * It should be unregister if probe failed.
++       * Mainly it is assuming -EPROBE_DEFER case
++       */
++      rsnd_adg_remove(priv);
++
+       return ret;
+ }
+--- a/sound/soc/sh/rcar/dma.c
++++ b/sound/soc/sh/rcar/dma.c
+@@ -330,6 +330,10 @@ static int rsnd_dmaen_attach(struct rsnd
+       /* try to get DMAEngine channel */
+       chan = rsnd_dmaen_request_channel(io, mod_from, mod_to);
+       if (IS_ERR_OR_NULL(chan)) {
++              /* Let's follow when -EPROBE_DEFER case */
++              if (PTR_ERR(chan) == -EPROBE_DEFER)
++                      return PTR_ERR(chan);
++
+               /*
+                * DMA failed. try to PIO mode
+                * see
diff --git a/queue-4.14/asoc-rt5514-fix-the-issue-of-the-delay-volume-applied-again.patch b/queue-4.14/asoc-rt5514-fix-the-issue-of-the-delay-volume-applied-again.patch
new file mode 100644 (file)
index 0000000..3e0fe61
--- /dev/null
@@ -0,0 +1,46 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Oder Chiou <oder_chiou@realtek.com>
+Date: Wed, 15 Aug 2018 14:47:49 +0800
+Subject: ASoC: rt5514: Fix the issue of the delay volume applied again
+
+From: Oder Chiou <oder_chiou@realtek.com>
+
+[ Upstream commit 6f0a256253f48095ba2e5bcdfbed41f21643c105 ]
+
+After our evaluation, we need to modify the default values to make sure
+the volume applied immediately.
+
+Signed-off-by: Oder Chiou <oder_chiou@realtek.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/rt5514.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/sound/soc/codecs/rt5514.c
++++ b/sound/soc/codecs/rt5514.c
+@@ -64,8 +64,8 @@ static const struct reg_sequence rt5514_
+       {RT5514_ANA_CTRL_LDO10,         0x00028604},
+       {RT5514_ANA_CTRL_ADCFED,        0x00000800},
+       {RT5514_ASRC_IN_CTRL1,          0x00000003},
+-      {RT5514_DOWNFILTER0_CTRL3,      0x10000352},
+-      {RT5514_DOWNFILTER1_CTRL3,      0x10000352},
++      {RT5514_DOWNFILTER0_CTRL3,      0x10000342},
++      {RT5514_DOWNFILTER1_CTRL3,      0x10000342},
+ };
+ static const struct reg_default rt5514_reg[] = {
+@@ -92,10 +92,10 @@ static const struct reg_default rt5514_r
+       {RT5514_ASRC_IN_CTRL1,          0x00000003},
+       {RT5514_DOWNFILTER0_CTRL1,      0x00020c2f},
+       {RT5514_DOWNFILTER0_CTRL2,      0x00020c2f},
+-      {RT5514_DOWNFILTER0_CTRL3,      0x10000352},
++      {RT5514_DOWNFILTER0_CTRL3,      0x10000342},
+       {RT5514_DOWNFILTER1_CTRL1,      0x00020c2f},
+       {RT5514_DOWNFILTER1_CTRL2,      0x00020c2f},
+-      {RT5514_DOWNFILTER1_CTRL3,      0x10000352},
++      {RT5514_DOWNFILTER1_CTRL3,      0x10000342},
+       {RT5514_ANA_CTRL_LDO10,         0x00028604},
+       {RT5514_ANA_CTRL_LDO18_16,      0x02000345},
+       {RT5514_ANA_CTRL_ADC12,         0x0000a2a8},
diff --git a/queue-4.14/asoc-sigmadsp-safeload-should-not-have-lower-byte-limit.patch b/queue-4.14/asoc-sigmadsp-safeload-should-not-have-lower-byte-limit.patch
new file mode 100644 (file)
index 0000000..f68ee5a
--- /dev/null
@@ -0,0 +1,33 @@
+From foo@baz Tue Oct 16 12:16:55 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
diff --git a/queue-4.14/asoc-wm8804-add-acpi-support.patch b/queue-4.14/asoc-wm8804-add-acpi-support.patch
new file mode 100644 (file)
index 0000000..553c69b
--- /dev/null
@@ -0,0 +1,66 @@
+From foo@baz Tue Oct 16 12:16:55 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,
diff --git a/queue-4.14/bluetooth-hci_ldisc-free-rw_semaphore-on-close.patch b/queue-4.14/bluetooth-hci_ldisc-free-rw_semaphore-on-close.patch
new file mode 100644 (file)
index 0000000..bf4378d
--- /dev/null
@@ -0,0 +1,56 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Hermes Zhang <chenhuiz@axis.com>
+Date: Tue, 28 Aug 2018 09:48:30 +0800
+Subject: Bluetooth: hci_ldisc: Free rw_semaphore on close
+
+From: Hermes Zhang <chenhuiz@axis.com>
+
+[ Upstream commit e6a57d22f787e73635ce0d29eef0abb77928b3e9 ]
+
+The percpu_rw_semaphore is not currently freed, and this leads to
+a crash when the stale rcu callback is invoked.  DEBUG_OBJECTS
+detects this.
+
+ ODEBUG: free active (active state 1) object type: rcu_head hint: (null)
+ ------------[ cut here ]------------
+ WARNING: CPU: 1 PID: 2024 at debug_print_object+0xac/0xc8
+ PC is at debug_print_object+0xac/0xc8
+ LR is at debug_print_object+0xac/0xc8
+ Call trace:
+ [<ffffff80082e2c2c>] debug_print_object+0xac/0xc8
+ [<ffffff80082e40b0>] debug_check_no_obj_freed+0x1e8/0x228
+ [<ffffff8008191254>] kfree+0x1cc/0x250
+ [<ffffff80083cc03c>] hci_uart_tty_close+0x54/0x108
+ [<ffffff800832e118>] tty_ldisc_close.isra.1+0x40/0x58
+ [<ffffff800832e14c>] tty_ldisc_kill+0x1c/0x40
+ [<ffffff800832e3dc>] tty_ldisc_release+0x94/0x170
+ [<ffffff8008325554>] tty_release_struct+0x1c/0x58
+ [<ffffff8008326400>] tty_release+0x3b0/0x490
+ [<ffffff80081a3fe8>] __fput+0x88/0x1d0
+ [<ffffff80081a418c>] ____fput+0xc/0x18
+ [<ffffff80080c0624>] task_work_run+0x9c/0xc0
+ [<ffffff80080a9e24>] do_exit+0x24c/0x8a0
+ [<ffffff80080aa4e0>] do_group_exit+0x38/0xa0
+ [<ffffff80080aa558>] __wake_up_parent+0x0/0x28
+ [<ffffff8008082c00>] el0_svc_naked+0x34/0x38
+ ---[ end trace bfe08cbd89098cdf ]---
+
+Signed-off-by: Hermes Zhang <chenhuiz@axis.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/bluetooth/hci_ldisc.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/bluetooth/hci_ldisc.c
++++ b/drivers/bluetooth/hci_ldisc.c
+@@ -539,6 +539,8 @@ static void hci_uart_tty_close(struct tt
+       }
+       clear_bit(HCI_UART_PROTO_SET, &hu->flags);
++      percpu_free_rwsem(&hu->proto_lock);
++
+       kfree(hu);
+ }
diff --git a/queue-4.14/clk-x86-add-ether_clk-alias-for-bay-trail-cherry-trail.patch b/queue-4.14/clk-x86-add-ether_clk-alias-for-bay-trail-cherry-trail.patch
new file mode 100644 (file)
index 0000000..b84d948
--- /dev/null
@@ -0,0 +1,77 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 12 Sep 2018 11:34:54 +0200
+Subject: clk: x86: add "ether_clk" alias for Bay Trail / Cherry Trail
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit b1e3454d39f992e5409cd19f97782185950df6e7 ]
+
+Commit d31fd43c0f9a ("clk: x86: Do not gate clocks enabled by the
+firmware") causes all unclaimed PMC clocks on Cherry Trail devices to be on
+all the time, resulting on the device not being able to reach S0i2 or S0i3
+when suspended.
+
+The reason for this commit is that on some Bay Trail / Cherry Trail devices
+the ethernet controller uses pmc_plt_clk_4. This commit adds an "ether_clk"
+alias, so that the relevant ethernet drivers can try to (optionally) use
+this, without needing X86 specific code / hacks, thus fixing ethernet on
+these devices without breaking S0i3 support.
+
+This commit uses clkdev_hw_create() to create the alias, mirroring the code
+for the already existing "mclk" alias for pmc_plt_clk_3.
+
+Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=193891#c102
+Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=196861
+Cc: Johannes Stezenbach <js@sig21.net>
+Cc: Carlo Caione <carlo@endlessm.com>
+Reported-by: Johannes Stezenbach <js@sig21.net>
+Acked-by: Stephen Boyd <sboyd@kernel.org>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.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/clk/x86/clk-pmc-atom.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/drivers/clk/x86/clk-pmc-atom.c
++++ b/drivers/clk/x86/clk-pmc-atom.c
+@@ -55,6 +55,7 @@ struct clk_plt_data {
+       u8 nparents;
+       struct clk_plt *clks[PMC_CLK_NUM];
+       struct clk_lookup *mclk_lookup;
++      struct clk_lookup *ether_clk_lookup;
+ };
+ /* Return an index in parent table */
+@@ -351,11 +352,20 @@ static int plt_clk_probe(struct platform
+               goto err_unreg_clk_plt;
+       }
++      data->ether_clk_lookup = clkdev_hw_create(&data->clks[4]->hw,
++                                                "ether_clk", NULL);
++      if (!data->ether_clk_lookup) {
++              err = -ENOMEM;
++              goto err_drop_mclk;
++      }
++
+       plt_clk_free_parent_names_loop(parent_names, data->nparents);
+       platform_set_drvdata(pdev, data);
+       return 0;
++err_drop_mclk:
++      clkdev_drop(data->mclk_lookup);
+ err_unreg_clk_plt:
+       plt_clk_unregister_loop(data, i);
+       plt_clk_unregister_parents(data);
+@@ -369,6 +379,7 @@ static int plt_clk_remove(struct platfor
+       data = platform_get_drvdata(pdev);
++      clkdev_drop(data->ether_clk_lookup);
+       clkdev_drop(data->mclk_lookup);
+       plt_clk_unregister_loop(data, PMC_CLK_NUM);
+       plt_clk_unregister_parents(data);
diff --git a/queue-4.14/clk-x86-stop-marking-clocks-as-clk_is_critical.patch b/queue-4.14/clk-x86-stop-marking-clocks-as-clk_is_critical.patch
new file mode 100644 (file)
index 0000000..a77c77a
--- /dev/null
@@ -0,0 +1,55 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 12 Sep 2018 11:34:56 +0200
+Subject: clk: x86: Stop marking clocks as CLK_IS_CRITICAL
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 648e921888ad96ea3dc922739e96716ad3225d7f ]
+
+Commit d31fd43c0f9a ("clk: x86: Do not gate clocks enabled by the
+firmware"), which added the code to mark clocks as CLK_IS_CRITICAL, causes
+all unclaimed PMC clocks on Cherry Trail devices to be on all the time,
+resulting on the device not being able to reach S0i3 when suspended.
+
+The reason for this commit is that on some Bay Trail / Cherry Trail devices
+the r8169 ethernet controller uses pmc_plt_clk_4. Now that the clk-pmc-atom
+driver exports an "ether_clk" alias for pmc_plt_clk_4 and the r8169 driver
+has been modified to get and enable this clock (if present) the marking of
+the clocks as CLK_IS_CRITICAL is no longer necessary.
+
+This commit removes the CLK_IS_CRITICAL marking, fixing Cherry Trail
+devices not being able to reach S0i3 greatly decreasing their battery
+drain when suspended.
+
+Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=193891#c102
+Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=196861
+Cc: Johannes Stezenbach <js@sig21.net>
+Cc: Carlo Caione <carlo@endlessm.com>
+Reported-by: Johannes Stezenbach <js@sig21.net>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Acked-by: Stephen Boyd <sboyd@kernel.org>
+Signed-off-by: Hans de Goede <hdegoede@redhat.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/clk/x86/clk-pmc-atom.c |    7 -------
+ 1 file changed, 7 deletions(-)
+
+--- a/drivers/clk/x86/clk-pmc-atom.c
++++ b/drivers/clk/x86/clk-pmc-atom.c
+@@ -187,13 +187,6 @@ static struct clk_plt *plt_clk_register(
+       pclk->reg = base + PMC_CLK_CTL_OFFSET + id * PMC_CLK_CTL_SIZE;
+       spin_lock_init(&pclk->lock);
+-      /*
+-       * If the clock was already enabled by the firmware mark it as critical
+-       * to avoid it being gated by the clock framework if no driver owns it.
+-       */
+-      if (plt_clk_is_enabled(&pclk->hw))
+-              init.flags |= CLK_IS_CRITICAL;
+-
+       ret = devm_clk_hw_register(&pdev->dev, &pclk->hw);
+       if (ret) {
+               pclk = ERR_PTR(ret);
diff --git a/queue-4.14/drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch b/queue-4.14/drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch
new file mode 100644 (file)
index 0000000..6a35c0b
--- /dev/null
@@ -0,0 +1,35 @@
+From foo@baz Tue Oct 16 12:16:55 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
+@@ -576,7 +576,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;
diff --git a/queue-4.14/hv_netvsc-fix-schedule-in-rcu-context.patch b/queue-4.14/hv_netvsc-fix-schedule-in-rcu-context.patch
new file mode 100644 (file)
index 0000000..741d979
--- /dev/null
@@ -0,0 +1,107 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Stephen Hemminger <stephen@networkplumber.org>
+Date: Thu, 13 Sep 2018 08:03:43 -0700
+Subject: hv_netvsc: fix schedule in RCU context
+
+From: Stephen Hemminger <stephen@networkplumber.org>
+
+[ Upstream commit 018349d70f28a78d5343b3660cb66e1667005f8a ]
+
+When netvsc device is removed it can call reschedule in RCU context.
+This happens because canceling the subchannel setup work could (in theory)
+cause a reschedule when manipulating the timer.
+
+To reproduce, run with lockdep enabled kernel and unbind
+a network device from hv_netvsc (via sysfs).
+
+[  160.682011] WARNING: suspicious RCU usage
+[  160.707466] 4.19.0-rc3-uio+ #2 Not tainted
+[  160.709937] -----------------------------
+[  160.712352] ./include/linux/rcupdate.h:302 Illegal context switch in RCU read-side critical section!
+[  160.723691]
+[  160.723691] other info that might help us debug this:
+[  160.723691]
+[  160.730955]
+[  160.730955] rcu_scheduler_active = 2, debug_locks = 1
+[  160.762813] 5 locks held by rebind-eth.sh/1812:
+[  160.766851]  #0: 000000008befa37a (sb_writers#6){.+.+}, at: vfs_write+0x184/0x1b0
+[  160.773416]  #1: 00000000b097f236 (&of->mutex){+.+.}, at: kernfs_fop_write+0xe2/0x1a0
+[  160.783766]  #2: 0000000041ee6889 (kn->count#3){++++}, at: kernfs_fop_write+0xeb/0x1a0
+[  160.787465]  #3: 0000000056d92a74 (&dev->mutex){....}, at: device_release_driver_internal+0x39/0x250
+[  160.816987]  #4: 0000000030f6031e (rcu_read_lock){....}, at: netvsc_remove+0x1e/0x250 [hv_netvsc]
+[  160.828629]
+[  160.828629] stack backtrace:
+[  160.831966] CPU: 1 PID: 1812 Comm: rebind-eth.sh Not tainted 4.19.0-rc3-uio+ #2
+[  160.832952] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v1.0 11/26/2012
+[  160.832952] Call Trace:
+[  160.832952]  dump_stack+0x85/0xcb
+[  160.832952]  ___might_sleep+0x1a3/0x240
+[  160.832952]  __flush_work+0x57/0x2e0
+[  160.832952]  ? __mutex_lock+0x83/0x990
+[  160.832952]  ? __kernfs_remove+0x24f/0x2e0
+[  160.832952]  ? __kernfs_remove+0x1b2/0x2e0
+[  160.832952]  ? mark_held_locks+0x50/0x80
+[  160.832952]  ? get_work_pool+0x90/0x90
+[  160.832952]  __cancel_work_timer+0x13c/0x1e0
+[  160.832952]  ? netvsc_remove+0x1e/0x250 [hv_netvsc]
+[  160.832952]  ? __lock_is_held+0x55/0x90
+[  160.832952]  netvsc_remove+0x9a/0x250 [hv_netvsc]
+[  160.832952]  vmbus_remove+0x26/0x30
+[  160.832952]  device_release_driver_internal+0x18a/0x250
+[  160.832952]  unbind_store+0xb4/0x180
+[  160.832952]  kernfs_fop_write+0x113/0x1a0
+[  160.832952]  __vfs_write+0x36/0x1a0
+[  160.832952]  ? rcu_read_lock_sched_held+0x6b/0x80
+[  160.832952]  ? rcu_sync_lockdep_assert+0x2e/0x60
+[  160.832952]  ? __sb_start_write+0x141/0x1a0
+[  160.832952]  ? vfs_write+0x184/0x1b0
+[  160.832952]  vfs_write+0xbe/0x1b0
+[  160.832952]  ksys_write+0x55/0xc0
+[  160.832952]  do_syscall_64+0x60/0x1b0
+[  160.832952]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
+[  160.832952] RIP: 0033:0x7fe48f4c8154
+
+Resolve this by getting RTNL earlier. This is safe because the subchannel
+work queue does trylock on RTNL and will detect the race.
+
+Fixes: 7b2ee50c0cd5 ("hv_netvsc: common detach logic")
+Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
+Reviewed-by: Haiyang Zhang <haiyangz@microsoft.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/hyperv/netvsc_drv.c |    9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/hyperv/netvsc_drv.c
++++ b/drivers/net/hyperv/netvsc_drv.c
+@@ -2110,17 +2110,15 @@ static int netvsc_remove(struct hv_devic
+       cancel_delayed_work_sync(&ndev_ctx->dwork);
+-      rcu_read_lock();
+-      nvdev = rcu_dereference(ndev_ctx->nvdev);
+-
+-      if  (nvdev)
++      rtnl_lock();
++      nvdev = rtnl_dereference(ndev_ctx->nvdev);
++      if (nvdev)
+               cancel_work_sync(&nvdev->subchan_work);
+       /*
+        * Call to the vsc driver to let it know that the device is being
+        * removed. Also blocks mtu and channel changes.
+        */
+-      rtnl_lock();
+       vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev);
+       if (vf_netdev)
+               netvsc_unregister_vf(vf_netdev);
+@@ -2132,7 +2130,6 @@ static int netvsc_remove(struct hv_devic
+       list_del(&ndev_ctx->list);
+       rtnl_unlock();
+-      rcu_read_unlock();
+       hv_set_drvdata(dev, NULL);
diff --git a/queue-4.14/mfd-omap-usb-host-fix-dts-probe-of-children.patch b/queue-4.14/mfd-omap-usb-host-fix-dts-probe-of-children.patch
new file mode 100644 (file)
index 0000000..c41b61f
--- /dev/null
@@ -0,0 +1,68 @@
+From foo@baz Tue Oct 16 12:16:55 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);
+ }
diff --git a/queue-4.14/net-macb-disable-scatter-gather-for-macb-on-sama5d3.patch b/queue-4.14/net-macb-disable-scatter-gather-for-macb-on-sama5d3.patch
new file mode 100644 (file)
index 0000000..12f647e
--- /dev/null
@@ -0,0 +1,45 @@
+From foo@baz Tue Oct 16 12:16:55 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_main.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/net/ethernet/cadence/macb_main.c
++++ b/drivers/net/ethernet/cadence/macb_main.c
+@@ -3301,6 +3301,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,
+@@ -3368,6 +3375,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 },
diff --git a/queue-4.14/pci-hv-support-reporting-serial-number-as-slot-information.patch b/queue-4.14/pci-hv-support-reporting-serial-number-as-slot-information.patch
new file mode 100644 (file)
index 0000000..6aed211
--- /dev/null
@@ -0,0 +1,117 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Stephen Hemminger <stephen@networkplumber.org>
+Date: Fri, 14 Sep 2018 12:54:56 -0700
+Subject: PCI: hv: support reporting serial number as slot information
+
+From: Stephen Hemminger <stephen@networkplumber.org>
+
+[ Upstream commit a15f2c08c70811f120d99288d81f70d7f3d104f1 ]
+
+The Hyper-V host API for PCI provides a unique "serial number" which
+can be used as basis for sysfs PCI slot table. This can be useful
+for cases where userspace wants to find the PCI device based on
+serial number.
+
+When an SR-IOV NIC is added, the host sends an attach message
+with serial number. The kernel doesn't use the serial number, but
+it is useful when doing the same thing in a userspace driver such
+as the DPDK. By having /sys/bus/pci/slots/N it provides a direct
+way to find the matching PCI device.
+
+There maybe some cases where serial number is not unique such
+as when using GPU's. But the PCI slot infrastructure will handle
+that.
+
+This has a side effect which may also be useful. The common udev
+network device naming policy uses the slot information (rather
+than PCI address).
+
+Signed-off-by: Stephen Hemminger <sthemmin@microsoft.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/pci/host/pci-hyperv.c |   37 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 37 insertions(+)
+
+--- a/drivers/pci/host/pci-hyperv.c
++++ b/drivers/pci/host/pci-hyperv.c
+@@ -100,6 +100,9 @@ static enum pci_protocol_version_t pci_p
+ #define STATUS_REVISION_MISMATCH 0xC0000059
++/* space for 32bit serial number as string */
++#define SLOT_NAME_SIZE 11
++
+ /*
+  * Message Types
+  */
+@@ -516,6 +519,7 @@ struct hv_pci_dev {
+       struct list_head list_entry;
+       refcount_t refs;
+       enum hv_pcichild_state state;
++      struct pci_slot *pci_slot;
+       struct pci_function_description desc;
+       bool reported_missing;
+       struct hv_pcibus_device *hbus;
+@@ -1481,6 +1485,34 @@ static void prepopulate_bars(struct hv_p
+       spin_unlock_irqrestore(&hbus->device_list_lock, flags);
+ }
++/*
++ * Assign entries in sysfs pci slot directory.
++ *
++ * Note that this function does not need to lock the children list
++ * because it is called from pci_devices_present_work which
++ * is serialized with hv_eject_device_work because they are on the
++ * same ordered workqueue. Therefore hbus->children list will not change
++ * even when pci_create_slot sleeps.
++ */
++static void hv_pci_assign_slots(struct hv_pcibus_device *hbus)
++{
++      struct hv_pci_dev *hpdev;
++      char name[SLOT_NAME_SIZE];
++      int slot_nr;
++
++      list_for_each_entry(hpdev, &hbus->children, list_entry) {
++              if (hpdev->pci_slot)
++                      continue;
++
++              slot_nr = PCI_SLOT(wslot_to_devfn(hpdev->desc.win_slot.slot));
++              snprintf(name, SLOT_NAME_SIZE, "%u", hpdev->desc.ser);
++              hpdev->pci_slot = pci_create_slot(hbus->pci_bus, slot_nr,
++                                        name, NULL);
++              if (!hpdev->pci_slot)
++                      pr_warn("pci_create slot %s failed\n", name);
++      }
++}
++
+ /**
+  * create_root_hv_pci_bus() - Expose a new root PCI bus
+  * @hbus:     Root PCI bus, as understood by this driver
+@@ -1504,6 +1536,7 @@ static int create_root_hv_pci_bus(struct
+       pci_lock_rescan_remove();
+       pci_scan_child_bus(hbus->pci_bus);
+       pci_bus_assign_resources(hbus->pci_bus);
++      hv_pci_assign_slots(hbus);
+       pci_bus_add_devices(hbus->pci_bus);
+       pci_unlock_rescan_remove();
+       hbus->state = hv_pcibus_installed;
+@@ -1787,6 +1820,7 @@ static void pci_devices_present_work(str
+                */
+               pci_lock_rescan_remove();
+               pci_scan_child_bus(hbus->pci_bus);
++              hv_pci_assign_slots(hbus);
+               pci_unlock_rescan_remove();
+               break;
+@@ -1895,6 +1929,9 @@ static void hv_eject_device_work(struct
+       list_del(&hpdev->list_entry);
+       spin_unlock_irqrestore(&hpdev->hbus->device_list_lock, flags);
++      if (hpdev->pci_slot)
++              pci_destroy_slot(hpdev->pci_slot);
++
+       memset(&ctxt, 0, sizeof(ctxt));
+       ejct_pkt = (struct pci_eject_response *)&ctxt.pkt.message;
+       ejct_pkt->message_type.type = PCI_EJECTION_COMPLETE;
diff --git a/queue-4.14/scsi-iscsi-target-don-t-use-stack-buffer-for-scatterlist.patch b/queue-4.14/scsi-iscsi-target-don-t-use-stack-buffer-for-scatterlist.patch
new file mode 100644 (file)
index 0000000..88073f3
--- /dev/null
@@ -0,0 +1,120 @@
+From foo@baz Tue Oct 16 12:16:55 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
+@@ -1421,7 +1421,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);
+@@ -3942,10 +3943,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
+@@ -3953,7 +3958,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;
+@@ -3962,7 +3966,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) {
+@@ -3972,7 +3976,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,
+@@ -3996,7 +4000,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;
+@@ -4007,13 +4011,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)
diff --git a/queue-4.14/scsi-qla2xxx-fix-an-endian-bug-in-fcpcmd_is_corrupted.patch b/queue-4.14/scsi-qla2xxx-fix-an-endian-bug-in-fcpcmd_is_corrupted.patch
new file mode 100644 (file)
index 0000000..f7e3aa5
--- /dev/null
@@ -0,0 +1,36 @@
+From foo@baz Tue Oct 16 12:16:55 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
+@@ -374,8 +374,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;
diff --git a/queue-4.14/selftests-efivarfs-add-required-kernel-configs.patch b/queue-4.14/selftests-efivarfs-add-required-kernel-configs.patch
new file mode 100644 (file)
index 0000000..755c71a
--- /dev/null
@@ -0,0 +1,24 @@
+From foo@baz Tue Oct 16 12:16:55 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
diff --git a/queue-4.14/selftests-memory-hotplug-add-required-configs.patch b/queue-4.14/selftests-memory-hotplug-add-required-configs.patch
new file mode 100644 (file)
index 0000000..2327741
--- /dev/null
@@ -0,0 +1,28 @@
+From foo@baz Tue Oct 16 12:16:55 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
index 0d1330ac2394286b8ba967c5ec93ad414ba96247..730f52c75c2f2d8ad15cf54388fb9ecdf30d89c4 100644 (file)
@@ -36,3 +36,25 @@ bnxt_en-don-t-try-to-offload-vlan-modify-action.patch
 net-ethtool-ethtool_gufo-did-not-and-should-not-require-cap_net_admin.patch
 tcp-dccp-fix-lockdep-issue-when-syn-is-backlogged.patch
 inet-make-sure-to-grab-rcu_read_lock-before-using-ireq-ireq_opt.patch
+asoc-rt5514-fix-the-issue-of-the-delay-volume-applied-again.patch
+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
+asoc-rsnd-adg-care-clock-frequency-size.patch
+asoc-rsnd-don-t-fallback-to-pio-mode-when-eprobe_defer.patch
+bluetooth-hci_ldisc-free-rw_semaphore-on-close.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
+sound-don-t-call-skl_init_chip-to-reset-intel-skl-soc.patch
+hv_netvsc-fix-schedule-in-rcu-context.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
+pci-hv-support-reporting-serial-number-as-slot-information.patch
+clk-x86-add-ether_clk-alias-for-bay-trail-cherry-trail.patch
+clk-x86-stop-marking-clocks-as-clk_is_critical.patch
+x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch
+drm-amdgpu-fix-sdma-hqd-destroy-error-on-gfx_v7.patch
diff --git a/queue-4.14/sound-don-t-call-skl_init_chip-to-reset-intel-skl-soc.patch b/queue-4.14/sound-don-t-call-skl_init_chip-to-reset-intel-skl-soc.patch
new file mode 100644 (file)
index 0000000..99ff081
--- /dev/null
@@ -0,0 +1,91 @@
+From foo@baz Tue Oct 16 12:16:55 CEST 2018
+From: Yu Zhao <yuzhao@google.com>
+Date: Tue, 11 Sep 2018 15:15:16 -0600
+Subject: sound: don't call skl_init_chip() to reset intel skl soc
+
+From: Yu Zhao <yuzhao@google.com>
+
+[ Upstream commit 75383f8d39d4c0fb96083dd460b7b139fbdac492 ]
+
+Internally, skl_init_chip() calls snd_hdac_bus_init_chip() which
+1) sets bus->chip_init to prevent multiple entrances before device
+is stopped; 2) enables interrupt.
+
+We shouldn't use it for the purpose of resetting device only because
+1) when we really want to initialize device, we won't be able to do
+so; 2) we are ready to handle interrupt yet, and kernel crashes when
+interrupt comes in.
+
+Rename azx_reset() to snd_hdac_bus_reset_link(), and use it to reset
+device properly.
+
+Fixes: 60767abcea3d ("ASoC: Intel: Skylake: Reset the controller in probe")
+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>
+---
+ include/sound/hdaudio.h       |    1 +
+ sound/hda/hdac_controller.c   |    7 ++++---
+ sound/soc/intel/skylake/skl.c |    2 +-
+ 3 files changed, 6 insertions(+), 4 deletions(-)
+
+--- a/include/sound/hdaudio.h
++++ b/include/sound/hdaudio.h
+@@ -357,6 +357,7 @@ void snd_hdac_bus_init_cmd_io(struct hda
+ void snd_hdac_bus_stop_cmd_io(struct hdac_bus *bus);
+ void snd_hdac_bus_enter_link_reset(struct hdac_bus *bus);
+ void snd_hdac_bus_exit_link_reset(struct hdac_bus *bus);
++int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset);
+ void snd_hdac_bus_update_rirb(struct hdac_bus *bus);
+ int snd_hdac_bus_handle_stream_irq(struct hdac_bus *bus, unsigned int status,
+--- a/sound/hda/hdac_controller.c
++++ b/sound/hda/hdac_controller.c
+@@ -384,7 +384,7 @@ void snd_hdac_bus_exit_link_reset(struct
+ EXPORT_SYMBOL_GPL(snd_hdac_bus_exit_link_reset);
+ /* reset codec link */
+-static int azx_reset(struct hdac_bus *bus, bool full_reset)
++int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset)
+ {
+       if (!full_reset)
+               goto skip_reset;
+@@ -409,7 +409,7 @@ static int azx_reset(struct hdac_bus *bu
+  skip_reset:
+       /* check to see if controller is ready */
+       if (!snd_hdac_chip_readb(bus, GCTL)) {
+-              dev_dbg(bus->dev, "azx_reset: controller not ready!\n");
++              dev_dbg(bus->dev, "controller not ready!\n");
+               return -EBUSY;
+       }
+@@ -424,6 +424,7 @@ static int azx_reset(struct hdac_bus *bu
+       return 0;
+ }
++EXPORT_SYMBOL_GPL(snd_hdac_bus_reset_link);
+ /* enable interrupts */
+ static void azx_int_enable(struct hdac_bus *bus)
+@@ -478,7 +479,7 @@ bool snd_hdac_bus_init_chip(struct hdac_
+               return false;
+       /* reset controller */
+-      azx_reset(bus, full_reset);
++      snd_hdac_bus_reset_link(bus, full_reset);
+       /* clear interrupts */
+       azx_int_clear(bus);
+--- a/sound/soc/intel/skylake/skl.c
++++ b/sound/soc/intel/skylake/skl.c
+@@ -698,7 +698,7 @@ static int skl_first_init(struct hdac_ex
+               return -ENXIO;
+       }
+-      skl_init_chip(bus, true);
++      snd_hdac_bus_reset_link(bus, true);
+       snd_hdac_bus_parse_capabilities(bus);
diff --git a/queue-4.14/sound-enable-interrupt-after-dma-buffer-initialization.patch b/queue-4.14/sound-enable-interrupt-after-dma-buffer-initialization.patch
new file mode 100644 (file)
index 0000000..8069236
--- /dev/null
@@ -0,0 +1,56 @@
+From foo@baz Tue Oct 16 12:16:55 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);
diff --git a/queue-4.14/stmmac-fix-valid-numbers-of-unicast-filter-entries.patch b/queue-4.14/stmmac-fix-valid-numbers-of-unicast-filter-entries.patch
new file mode 100644 (file)
index 0000000..3ae9b4e
--- /dev/null
@@ -0,0 +1,43 @@
+From foo@baz Tue Oct 16 12:16:55 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
+@@ -67,7 +67,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.
+@@ -77,8 +77,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;
diff --git a/queue-4.14/x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch b/queue-4.14/x86-kvm-lapic-always-disable-mmio-interface-in-x2apic-mode.patch
new file mode 100644 (file)
index 0000000..5a3329a
--- /dev/null
@@ -0,0 +1,103 @@
+From foo@baz Tue Oct 16 12:16:55 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
+@@ -360,5 +360,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
+@@ -1282,9 +1282,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,
+@@ -1296,6 +1295,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;
+@@ -1806,6 +1814,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.