--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Pali Rohár <pali.rohar@gmail.com>
+Date: Wed, 14 Dec 2016 22:29:44 +0100
+Subject: ARM: dts: n900: Mark eMMC slot with no-sdio and no-sd flags
+
+From: Pali Rohár <pali.rohar@gmail.com>
+
+
+[ Upstream commit 4cf48f1d7520a4d325af58eded4d8090e1b40be7 ]
+
+Trying to initialize eMMC slot as SDIO or SD cause failure in n900 port of
+qemu. eMMC itself is not detected and is not working.
+
+Real Nokia N900 harware does not have this problem. As eMMC is really not
+SDIO or SD based such change is harmless and will fix support for qemu.
+
+Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
+Acked-by: Pavel Machek <pavel@ucw.cz>
+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/boot/dts/omap3-n900.dts | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/arm/boot/dts/omap3-n900.dts
++++ b/arch/arm/boot/dts/omap3-n900.dts
+@@ -697,6 +697,8 @@
+ vmmc_aux-supply = <&vsim>;
+ bus-width = <8>;
+ non-removable;
++ no-sdio;
++ no-sd;
+ };
+
+ &mmc3 {
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Date: Fri, 23 Dec 2016 11:21:10 +0200
+Subject: ASoC: tlv320aic3x: Mark the RESET register as volatile
+
+From: Peter Ujfalusi <peter.ujfalusi@ti.com>
+
+
+[ Upstream commit 63c3194b82530bd71fd49db84eb7ab656b8d404a ]
+
+The RESET register only have one self clearing bit and it should not be
+cached. If it is cached, when we sync the registers back to the chip we
+will initiate a software reset as well, which is not desirable.
+
+Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
+Reviewed-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/soc/codecs/tlv320aic3x.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/sound/soc/codecs/tlv320aic3x.c
++++ b/sound/soc/codecs/tlv320aic3x.c
+@@ -126,6 +126,16 @@ static const struct reg_default aic3x_re
+ { 108, 0x00 }, { 109, 0x00 },
+ };
+
++static bool aic3x_volatile_reg(struct device *dev, unsigned int reg)
++{
++ switch (reg) {
++ case AIC3X_RESET:
++ return true;
++ default:
++ return false;
++ }
++}
++
+ static const struct regmap_config aic3x_regmap = {
+ .reg_bits = 8,
+ .val_bits = 8,
+@@ -133,6 +143,9 @@ static const struct regmap_config aic3x_
+ .max_register = DAC_ICC_ADJ,
+ .reg_defaults = aic3x_reg,
+ .num_reg_defaults = ARRAY_SIZE(aic3x_reg),
++
++ .volatile_reg = aic3x_volatile_reg,
++
+ .cache_type = REGCACHE_RBTREE,
+ };
+
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Jordan Crouse <jcrouse@codeaurora.org>
+Date: Tue, 20 Dec 2016 08:54:29 -0700
+Subject: drm/msm: Ensure that the hardware write pointer is valid
+
+From: Jordan Crouse <jcrouse@codeaurora.org>
+
+
+[ Upstream commit 88b333b0ed790f9433ff542b163bf972953b74d3 ]
+
+Currently the value written to CP_RB_WPTR is calculated on the fly as
+(rb->next - rb->start). But as the code is designed rb->next is wrapped
+before writing the commands so if a series of commands happened to
+fit perfectly in the ringbuffer, rb->next would end up being equal to
+rb->size / 4 and thus result in an out of bounds address to CP_RB_WPTR.
+
+The easiest way to fix this is to mask WPTR when writing it to the
+hardware; it makes the hardware happy and the rest of the ringbuffer
+math appears to work and there isn't any point in upsetting anything.
+
+Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
+[squash in is_power_of_2() check]
+Signed-off-by: Rob Clark <robdclark@gmail.com>
+
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/msm/adreno/adreno_gpu.c | 9 ++++++++-
+ drivers/gpu/drm/msm/msm_ringbuffer.c | 3 ++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
++++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+@@ -204,7 +204,14 @@ int adreno_submit(struct msm_gpu *gpu, s
+ void adreno_flush(struct msm_gpu *gpu)
+ {
+ struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
+- uint32_t wptr = get_wptr(gpu->rb);
++ uint32_t wptr;
++
++ /*
++ * Mask wptr value that we calculate to fit in the HW range. This is
++ * to account for the possibility that the last command fit exactly into
++ * the ringbuffer and rb->next hasn't wrapped to zero yet
++ */
++ wptr = get_wptr(gpu->rb) & ((gpu->rb->size / 4) - 1);
+
+ /* ensure writes to ringbuffer have hit system memory: */
+ mb();
+--- a/drivers/gpu/drm/msm/msm_ringbuffer.c
++++ b/drivers/gpu/drm/msm/msm_ringbuffer.c
+@@ -23,7 +23,8 @@ struct msm_ringbuffer *msm_ringbuffer_ne
+ struct msm_ringbuffer *ring;
+ int ret;
+
+- size = ALIGN(size, 4); /* size should be dword aligned */
++ if (WARN_ON(!is_power_of_2(size)))
++ return ERR_PTR(-EINVAL);
+
+ ring = kzalloc(sizeof(*ring), GFP_KERNEL);
+ if (!ring) {
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Jordan Crouse <jcrouse@codeaurora.org>
+Date: Tue, 20 Dec 2016 08:54:31 -0700
+Subject: drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set
+
+From: Jordan Crouse <jcrouse@codeaurora.org>
+
+
+[ Upstream commit a6cb3b864b21b7345f824a4faa12b723c8aaf099 ]
+
+For every submission buffer object one of MSM_SUBMIT_BO_WRITE
+and MSM_SUBMIT_BO_READ must be set (and nothing else). If we
+allowed zero then the buffer object would never get queued to
+be unreferenced.
+
+Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
+Signed-off-by: Rob Clark <robdclark@gmail.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/msm/msm_gem_submit.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/msm/msm_gem_submit.c
++++ b/drivers/gpu/drm/msm/msm_gem_submit.c
+@@ -90,7 +90,8 @@ static int submit_lookup_objects(struct
+ pagefault_disable();
+ }
+
+- if (submit_bo.flags & ~MSM_SUBMIT_BO_FLAGS) {
++ if ((submit_bo.flags & ~MSM_SUBMIT_BO_FLAGS) ||
++ !(submit_bo.flags & MSM_SUBMIT_BO_FLAGS)) {
+ DRM_ERROR("invalid flags: %x\n", submit_bo.flags);
+ ret = -EINVAL;
+ goto out_unlock;
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Zheng Li <james.z.li@ericsson.com>
+Date: Wed, 28 Dec 2016 23:23:46 +0800
+Subject: ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output
+
+From: Zheng Li <james.z.li@ericsson.com>
+
+
+[ Upstream commit e4c5e13aa45c23692e4acf56f0b3533f328199b2 ]
+
+There is an inconsistent conditional judgement between __ip6_append_data
+and ip6_finish_output functions, the variable length in __ip6_append_data
+just include the length of application's payload and udp6 header, don't
+include the length of ipv6 header, but in ip6_finish_output use
+(skb->len > ip6_skb_dst_mtu(skb)) as judgement, and skb->len include the
+length of ipv6 header.
+
+That causes some particular application's udp6 payloads whose length are
+between (MTU - IPv6 Header) and MTU were fragmented by ip6_fragment even
+though the rst->dev support UFO feature.
+
+Add the length of ipv6 header to length in __ip6_append_data to keep
+consistent conditional judgement as ip6_finish_output for ip6 fragment.
+
+Signed-off-by: Zheng Li <james.z.li@ericsson.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>
+---
+ net/ipv6/ip6_output.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/ipv6/ip6_output.c
++++ b/net/ipv6/ip6_output.c
+@@ -1361,7 +1361,7 @@ emsgsize:
+ */
+
+ cork->length += length;
+- if (((length > mtu) ||
++ if ((((length + fragheaderlen) > mtu) ||
+ (skb && skb_is_gso(skb))) &&
+ (sk->sk_protocol == IPPROTO_UDP) &&
+ (rt->dst.dev->features & NETIF_F_UFO) &&
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: "Strashko, Grygorii" <grygorii.strashko@ti.com>
+Date: Thu, 8 Dec 2016 17:33:10 -0600
+Subject: irqchip/keystone: Fix "scheduling while atomic" on rt
+
+From: "Strashko, Grygorii" <grygorii.strashko@ti.com>
+
+
+[ Upstream commit 2f884e6e688a0deb69e6c9552e51aef8b7e3f5f1 ]
+
+The below call chain generates "scheduling while atomic" backtrace and
+causes system crash when Keystone 2 IRQ chip driver is used with RT-kernel:
+
+gic_handle_irq()
+ |-__handle_domain_irq()
+ |-generic_handle_irq()
+ |-keystone_irq_handler()
+ |-regmap_read()
+ |-regmap_lock_spinlock()
+ |-rt_spin_lock()
+
+The reason is that Keystone driver dispatches IRQ using chained IRQ handler
+and accesses I/O memory through syscon->regmap(mmio) which is implemented
+as fast_io regmap and uses regular spinlocks for synchronization, but
+spinlocks transformed to rt_mutexes on RT.
+
+Hence, convert Keystone 2 IRQ driver to use generic irq handler instead of
+chained IRQ handler. This way it will be compatible with RT kernel where it
+will be forced thread IRQ handler while in non-RT kernel it still will be
+executed in HW IRQ context.
+
+Cc: Suman Anna <s-anna@ti.com>
+Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
+Tested-by: Suman Anna <s-anna@ti.com>
+Link: https://lkml.kernel.org/r/20161208233310.10329-1-grygorii.strashko@ti.com
+Signed-off-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/irqchip/irq-keystone.c | 28 +++++++++++++++++++---------
+ 1 file changed, 19 insertions(+), 9 deletions(-)
+
+--- a/drivers/irqchip/irq-keystone.c
++++ b/drivers/irqchip/irq-keystone.c
+@@ -19,9 +19,9 @@
+ #include <linux/bitops.h>
+ #include <linux/module.h>
+ #include <linux/moduleparam.h>
++#include <linux/interrupt.h>
+ #include <linux/irqdomain.h>
+ #include <linux/irqchip.h>
+-#include <linux/irqchip/chained_irq.h>
+ #include <linux/of.h>
+ #include <linux/of_platform.h>
+ #include <linux/mfd/syscon.h>
+@@ -39,6 +39,7 @@ struct keystone_irq_device {
+ struct irq_domain *irqd;
+ struct regmap *devctrl_regs;
+ u32 devctrl_offset;
++ raw_spinlock_t wa_lock;
+ };
+
+ static inline u32 keystone_irq_readl(struct keystone_irq_device *kirq)
+@@ -83,17 +84,15 @@ static void keystone_irq_ack(struct irq_
+ /* nothing to do here */
+ }
+
+-static void keystone_irq_handler(struct irq_desc *desc)
++static irqreturn_t keystone_irq_handler(int irq, void *keystone_irq)
+ {
+- unsigned int irq = irq_desc_get_irq(desc);
+- struct keystone_irq_device *kirq = irq_desc_get_handler_data(desc);
++ struct keystone_irq_device *kirq = keystone_irq;
++ unsigned long wa_lock_flags;
+ unsigned long pending;
+ int src, virq;
+
+ dev_dbg(kirq->dev, "start irq %d\n", irq);
+
+- chained_irq_enter(irq_desc_get_chip(desc), desc);
+-
+ pending = keystone_irq_readl(kirq);
+ keystone_irq_writel(kirq, pending);
+
+@@ -111,13 +110,15 @@ static void keystone_irq_handler(struct
+ if (!virq)
+ dev_warn(kirq->dev, "sporious irq detected hwirq %d, virq %d\n",
+ src, virq);
++ raw_spin_lock_irqsave(&kirq->wa_lock, wa_lock_flags);
+ generic_handle_irq(virq);
++ raw_spin_unlock_irqrestore(&kirq->wa_lock,
++ wa_lock_flags);
+ }
+ }
+
+- chained_irq_exit(irq_desc_get_chip(desc), desc);
+-
+ dev_dbg(kirq->dev, "end irq %d\n", irq);
++ return IRQ_HANDLED;
+ }
+
+ static int keystone_irq_map(struct irq_domain *h, unsigned int virq,
+@@ -182,9 +183,16 @@ static int keystone_irq_probe(struct pla
+ return -ENODEV;
+ }
+
++ raw_spin_lock_init(&kirq->wa_lock);
++
+ platform_set_drvdata(pdev, kirq);
+
+- irq_set_chained_handler_and_data(kirq->irq, keystone_irq_handler, kirq);
++ ret = request_irq(kirq->irq, keystone_irq_handler,
++ 0, dev_name(dev), kirq);
++ if (ret) {
++ irq_domain_remove(kirq->irqd);
++ return ret;
++ }
+
+ /* clear all source bits */
+ keystone_irq_writel(kirq, ~0x0);
+@@ -199,6 +207,8 @@ static int keystone_irq_remove(struct pl
+ struct keystone_irq_device *kirq = platform_get_drvdata(pdev);
+ int hwirq;
+
++ free_irq(kirq->irq, kirq);
++
+ for (hwirq = 0; hwirq < KEYSTONE_N_IRQ; hwirq++)
+ irq_dispose_mapping(irq_find_mapping(kirq->irqd, hwirq));
+
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Leon Romanovsky <leonro@mellanox.com>
+Date: Thu, 29 Dec 2016 18:37:11 +0200
+Subject: net/mlx4: Remove BUG_ON from ICM allocation routine
+
+From: Leon Romanovsky <leonro@mellanox.com>
+
+
+[ Upstream commit c1d5f8ff80ea84768f5fae1ca9d1abfbb5e6bbaa ]
+
+This patch removes BUG_ON() macro from mlx4_alloc_icm_coherent()
+by checking DMA address alignment in advance and performing proper
+folding in case of error.
+
+Fixes: 5b0bf5e25efe ("mlx4_core: Support ICM tables in coherent memory")
+Reported-by: Ozgur Karatas <okaratas@member.fsf.org>
+Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
+Signed-off-by: Tariq Toukan <tariqt@mellanox.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/net/ethernet/mellanox/mlx4/icm.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/mellanox/mlx4/icm.c
++++ b/drivers/net/ethernet/mellanox/mlx4/icm.c
+@@ -118,8 +118,13 @@ static int mlx4_alloc_icm_coherent(struc
+ if (!buf)
+ return -ENOMEM;
+
++ if (offset_in_page(buf)) {
++ dma_free_coherent(dev, PAGE_SIZE << order,
++ buf, sg_dma_address(mem));
++ return -ENOMEM;
++ }
++
+ sg_set_buf(mem, buf, PAGE_SIZE << order);
+- BUG_ON(mem->offset);
+ sg_dma_len(mem) = PAGE_SIZE << order;
+ return 0;
+ }
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Chun-Hao Lin <hau@realtek.com>
+Date: Tue, 27 Dec 2016 16:29:43 +0800
+Subject: r8169: add support for RTL8168 series add-on card.
+
+From: Chun-Hao Lin <hau@realtek.com>
+
+
+[ Upstream commit 610c908773d30907c950ca3b2ee8ac4b2813537b ]
+
+This chip is the same as RTL8168, but its device id is 0x8161.
+
+Signed-off-by: Chun-Hao Lin <hau@realtek.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/net/ethernet/realtek/r8169.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/realtek/r8169.c
++++ b/drivers/net/ethernet/realtek/r8169.c
+@@ -326,6 +326,7 @@ enum cfg_version {
+ static const struct pci_device_id rtl8169_pci_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8129), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8136), 0, 0, RTL_CFG_2 },
++ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8161), 0, 0, RTL_CFG_1 },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },
pstore-allow-prz-to-control-need-for-locking.patch
pstore-correctly-initialize-spinlock-and-flags.patch
pstore-use-dynamic-spinlock-initializer.patch
-staging-sm750fb-avoid-conflicting-vesafb.patch
net-skb_needs_check-accepts-checksum_none-for-tx.patch
sched-cputime-fix-prev-steal-time-accouting-during-cpu-hotplug.patch
xen-blkback-don-t-free-be-structure-too-early.patch
xen-blkback-don-t-use-xen_blkif_get-in-xen-blkback-kthread.patch
tpm-fix-a-kernel-memory-leak-in-tpm-sysfs.c.patch
tpm-replace-device-number-bitmap-with-idr.patch
+x86-mce-amd-make-the-init-code-more-robust.patch
+r8169-add-support-for-rtl8168-series-add-on-card.patch
+arm-dts-n900-mark-emmc-slot-with-no-sdio-and-no-sd-flags.patch
+ipv6-should-use-consistent-conditional-judgement-for-ip6-fragment-between-__ip6_append_data-and-ip6_finish_output.patch
+net-mlx4-remove-bug_on-from-icm-allocation-routine.patch
+drm-msm-ensure-that-the-hardware-write-pointer-is-valid.patch
+drm-msm-verify-that-msm_submit_bo_flags-are-set.patch
+vfio-pci-use-32-bit-comparisons-for-register-address-for-gcc-4.5.patch
+irqchip-keystone-fix-scheduling-while-atomic-on-rt.patch
+asoc-tlv320aic3x-mark-the-reset-register-as-volatile.patch
+spi-dw-make-debugfs-name-unique-between-instances.patch
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Phil Reid <preid@electromag.com.au>
+Date: Thu, 22 Dec 2016 17:18:12 +0800
+Subject: spi: dw: Make debugfs name unique between instances
+
+From: Phil Reid <preid@electromag.com.au>
+
+
+[ Upstream commit 13288bdf4adbaa6bd1267f10044c1bc25d90ce7f ]
+
+Some system have multiple dw devices. Currently the driver uses a
+fixed name for the debugfs dir. Append dev name to the debugfs dir
+name to make it unique.
+
+Signed-off-by: Phil Reid <preid@electromag.com.au>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/spi/spi-dw.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/spi/spi-dw.c
++++ b/drivers/spi/spi-dw.c
+@@ -107,7 +107,10 @@ static const struct file_operations dw_s
+
+ static int dw_spi_debugfs_init(struct dw_spi *dws)
+ {
+- dws->debugfs = debugfs_create_dir("dw_spi", NULL);
++ char name[128];
++
++ snprintf(name, 128, "dw_spi-%s", dev_name(&dws->master->dev));
++ dws->debugfs = debugfs_create_dir(name, NULL);
+ if (!dws->debugfs)
+ return -ENOMEM;
+
+++ /dev/null
-From 740c433ec35187b45abe08bb6c45a321a791be8e Mon Sep 17 00:00:00 2001
-From: Teddy Wang <teddy.wang@siliconmotion.com>
-Date: Fri, 30 Jun 2017 21:57:43 +0100
-Subject: staging: sm750fb: avoid conflicting vesafb
-
-From: Teddy Wang <teddy.wang@siliconmotion.com>
-
-commit 740c433ec35187b45abe08bb6c45a321a791be8e upstream.
-
-If vesafb is enabled in the config then /dev/fb0 is created by vesa
-and this sm750 driver gets fb1, fb2. But we need to be fb0 and fb1 to
-effectively work with xorg.
-So if it has been alloted fb1, then try to remove the other fb0.
-
-In the previous send, why #ifdef is used was asked.
-https://lkml.org/lkml/2017/6/25/57
-
-Answered at: https://lkml.org/lkml/2017/6/25/69
-Also pasting here for reference.
-
-'Did a quick research into "why".
-The patch d8801e4df91e ("x86/PCI: Set IORESOURCE_ROM_SHADOW only for the
-default VGA device") has started setting IORESOURCE_ROM_SHADOW in flags
-for a default VGA device and that is being done only for x86.
-And so, we will need that #ifdef to check IORESOURCE_ROM_SHADOW as that
-needs to be checked only for a x86 and not for other arch.'
-
-Cc: <stable@vger.kernel.org> # v4.4+
-Signed-off-by: Teddy Wang <teddy.wang@siliconmotion.com>
-Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/staging/sm750fb/sm750.c | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
---- a/drivers/staging/sm750fb/sm750.c
-+++ b/drivers/staging/sm750fb/sm750.c
-@@ -1002,6 +1002,26 @@ NO_PARAM:
- }
- }
-
-+static int lynxfb_kick_out_firmware_fb(struct pci_dev *pdev)
-+{
-+ struct apertures_struct *ap;
-+ bool primary = false;
-+
-+ ap = alloc_apertures(1);
-+ if (!ap)
-+ return -ENOMEM;
-+
-+ ap->ranges[0].base = pci_resource_start(pdev, 0);
-+ ap->ranges[0].size = pci_resource_len(pdev, 0);
-+#ifdef CONFIG_X86
-+ primary = pdev->resource[PCI_ROM_RESOURCE].flags &
-+ IORESOURCE_ROM_SHADOW;
-+#endif
-+ remove_conflicting_framebuffers(ap, "sm750_fb1", primary);
-+ kfree(ap);
-+ return 0;
-+}
-+
- static int lynxfb_pci_probe(struct pci_dev *pdev,
- const struct pci_device_id *ent)
- {
-@@ -1009,6 +1029,10 @@ static int lynxfb_pci_probe(struct pci_d
- struct sm750_dev *sm750_dev = NULL;
- int fbidx;
-
-+ err = lynxfb_kick_out_firmware_fb(pdev);
-+ if (err)
-+ return err;
-+
- /* enable device */
- if (pci_enable_device(pdev)) {
- pr_err("can not enable device.\n");
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/char/tpm/tpm-chip.c | 84 ++++++++++++++++++++-------------------
+ drivers/char/tpm/tpm-chip.c | 85 +++++++++++++++++++++------------------
drivers/char/tpm/tpm-interface.c | 1
drivers/char/tpm/tpm.h | 5 --
- 3 files changed, 48 insertions(+), 42 deletions(-)
+ 3 files changed, 49 insertions(+), 42 deletions(-)
--- a/drivers/char/tpm/tpm-chip.c
+++ b/drivers/char/tpm/tpm-chip.c
kfree(chip);
}
-@@ -180,21 +190,18 @@ struct tpm_chip *tpmm_chip_alloc(struct
+@@ -173,6 +183,7 @@ struct tpm_chip *tpmm_chip_alloc(struct
+ const struct tpm_class_ops *ops)
+ {
+ struct tpm_chip *chip;
++ int rc;
+
+ chip = kzalloc(sizeof(*chip), GFP_KERNEL);
+ if (chip == NULL)
+@@ -180,21 +191,18 @@ struct tpm_chip *tpmm_chip_alloc(struct
mutex_init(&chip->tpm_mutex);
init_rwsem(&chip->ops_sem);
scnprintf(chip->devname, sizeof(chip->devname), "tpm%d", chip->dev_num);
-@@ -252,19 +259,28 @@ static int tpm_add_char_device(struct tp
+@@ -252,19 +260,28 @@ static int tpm_add_char_device(struct tp
return rc;
}
}
static int tpm1_chip_register(struct tpm_chip *chip)
-@@ -319,11 +335,6 @@ int tpm_chip_register(struct tpm_chip *c
+@@ -319,11 +336,6 @@ int tpm_chip_register(struct tpm_chip *c
if (rc)
goto out_err;
chip->flags |= TPM_CHIP_FLAG_REGISTERED;
if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
-@@ -360,11 +371,6 @@ void tpm_chip_unregister(struct tpm_chip
+@@ -360,11 +372,6 @@ void tpm_chip_unregister(struct tpm_chip
if (!(chip->flags & TPM_CHIP_FLAG_REGISTERED))
return;
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 30 Dec 2016 08:13:47 -0700
+Subject: vfio-pci: use 32-bit comparisons for register address for gcc-4.5
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+
+[ Upstream commit 45e869714489431625c569d21fc952428d761476 ]
+
+Using ancient compilers (gcc-4.5 or older) on ARM, we get a link
+failure with the vfio-pci driver:
+
+ERROR: "__aeabi_lcmp" [drivers/vfio/pci/vfio-pci.ko] undefined!
+
+The reason is that the compiler tries to do a comparison of
+a 64-bit range. This changes it to convert to a 32-bit number
+explicitly first, as newer compilers do for themselves.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/vfio/pci/vfio_pci_rdwr.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/vfio/pci/vfio_pci_rdwr.c
++++ b/drivers/vfio/pci/vfio_pci_rdwr.c
+@@ -190,7 +190,10 @@ ssize_t vfio_pci_vga_rw(struct vfio_pci_
+ if (!vdev->has_vga)
+ return -EINVAL;
+
+- switch (pos) {
++ if (pos > 0xbfffful)
++ return -EINVAL;
++
++ switch ((u32)pos) {
+ case 0xa0000 ... 0xbffff:
+ count = min(count, (size_t)(0xc0000 - pos));
+ iomem = ioremap_nocache(0xa0000, 0xbffff - 0xa0000 + 1);
--- /dev/null
+From foo@baz Fri Aug 4 13:34:53 PDT 2017
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Mon, 26 Dec 2016 22:58:20 +0100
+Subject: x86/mce/AMD: Make the init code more robust
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+
+[ Upstream commit 0dad3a3014a0b9e72521ff44f17e0054f43dcdea ]
+
+If mce_device_init() fails then the mce device pointer is NULL and the
+AMD mce code happily dereferences it.
+
+Add a sanity check.
+
+Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
+Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/x86/kernel/cpu/mcheck/mce_amd.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
++++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
+@@ -682,6 +682,9 @@ static int threshold_create_bank(unsigne
+ const char *name = th_names[bank];
+ int err = 0;
+
++ if (!dev)
++ return -ENODEV;
++
+ if (is_shared_bank(bank)) {
+ nb = node_to_amd_nb(amd_get_nb_id(cpu));
+