--- /dev/null
+From f723fa4e69920f6a5dd5fa0d10ce90e2f14d189c Mon Sep 17 00:00:00 2001
+From: Christoph Hellwig <hch@lst.de>
+Date: Tue, 5 Sep 2017 18:46:47 +0200
+Subject: ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme
+
+From: Christoph Hellwig <hch@lst.de>
+
+commit f723fa4e69920f6a5dd5fa0d10ce90e2f14d189c upstream.
+
+Intel AHCI controllers that also hide NVMe devices in their bar
+can't use MSI interrupts, so disable them.
+
+Reported-by: John Loy <john.robert.loy@gmail.com>
+Tested-by: John Loy <john.robert.loy@gmail.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Fixes: d684a90d38e2 ("ahci: per-port msix support")
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/ata/ahci.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -1467,7 +1467,14 @@ static void ahci_remap_check(struct pci_
+ return;
+
+ dev_warn(&pdev->dev, "Found %d remapped NVMe devices.\n", count);
+- dev_warn(&pdev->dev, "Switch your BIOS from RAID to AHCI mode to use them.\n");
++ dev_warn(&pdev->dev,
++ "Switch your BIOS from RAID to AHCI mode to use them.\n");
++
++ /*
++ * Don't rely on the msi-x capability in the remap case,
++ * share the legacy interrupt across ahci and remapped devices.
++ */
++ hpriv->flags |= AHCI_HFLAG_NO_MSI;
+ }
+
+ static int ahci_get_irq_vector(struct ata_host *host, int port)
--- /dev/null
+From 591b6bb605785c12a21e8b07a08a277065b655a5 Mon Sep 17 00:00:00 2001
+From: Andrey Korolyov <andrey@xdel.ru>
+Date: Thu, 10 Aug 2017 13:21:14 +0300
+Subject: cs5536: add support for IDE controller variant
+
+From: Andrey Korolyov <andrey@xdel.ru>
+
+commit 591b6bb605785c12a21e8b07a08a277065b655a5 upstream.
+
+Several legacy devices such as Geode-based Cisco ASA appliances
+and DB800 development board do possess CS5536 IDE controller
+with different PCI id than existing one. Using pata_generic is
+not always feasible as at least DB800 requires MSR quirk from
+pata_cs5536 to be used with vendor firmware.
+
+Signed-off-by: Andrey Korolyov <andrey@xdel.ru>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/ata/pata_amd.c | 1 +
+ drivers/ata/pata_cs5536.c | 1 +
+ include/linux/pci_ids.h | 1 +
+ 3 files changed, 3 insertions(+)
+
+--- a/drivers/ata/pata_amd.c
++++ b/drivers/ata/pata_amd.c
+@@ -616,6 +616,7 @@ static const struct pci_device_id amd[]
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE), 8 },
+ { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE), 8 },
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_IDE), 9 },
++ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_DEV_IDE), 9 },
+
+ { },
+ };
+--- a/drivers/ata/pata_cs5536.c
++++ b/drivers/ata/pata_cs5536.c
+@@ -289,6 +289,7 @@ static int cs5536_init_one(struct pci_de
+
+ static const struct pci_device_id cs5536[] = {
+ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_IDE), },
++ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_DEV_IDE), },
+ { },
+ };
+
+--- a/include/linux/pci_ids.h
++++ b/include/linux/pci_ids.h
+@@ -576,6 +576,7 @@
+ #define PCI_DEVICE_ID_AMD_CS5536_EHC 0x2095
+ #define PCI_DEVICE_ID_AMD_CS5536_UDC 0x2096
+ #define PCI_DEVICE_ID_AMD_CS5536_UOC 0x2097
++#define PCI_DEVICE_ID_AMD_CS5536_DEV_IDE 0x2092
+ #define PCI_DEVICE_ID_AMD_CS5536_IDE 0x209A
+ #define PCI_DEVICE_ID_AMD_LX_VIDEO 0x2081
+ #define PCI_DEVICE_ID_AMD_LX_AES 0x2082