---
 Documentation/admin-guide/kernel-parameters.txt |    2 ++
 arch/x86/include/asm/pci_x86.h                  |    1 +
 arch/x86/pci/common.c                           |    3 +++
 drivers/pci/probe.c                             |    9 +++++++++
 4 files changed, 15 insertions(+)

Index: linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt
===================================================================
@ linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt:3172 @
 				for broken drivers that don't call it.
 		skip_isa_align	[X86] do not align io start addr, so can
 				handle more pci cards
+		skip_ide	Skip probing IDE controller, may be required
+				to workaround a broken BIOS.
 		noearly		[X86] Don't do any early type 1 scanning.
 				This might help on some broken boards which
 				machine check when some devices' config space
Index: linux-4.18.7-rt5-r3s5/arch/x86/include/asm/pci_x86.h
===================================================================
--- linux-4.18.7-rt5-r3s5.orig/arch/x86/include/asm/pci_x86.h
+++ linux-4.18.7-rt5-r3s5/arch/x86/include/asm/pci_x86.h
@ linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt:42 @ do {						\
 #define PCI_ROOT_NO_CRS		0x100000
 #define PCI_NOASSIGN_BARS	0x200000
 #define PCI_BIG_ROOT_WINDOW	0x400000
+#define PCI_SKIP_IDE		0x800000
 
 extern unsigned int pci_probe;
 extern unsigned long pirq_table_addr;
Index: linux-4.18.7-rt5-r3s5/arch/x86/pci/common.c
===================================================================
--- linux-4.18.7-rt5-r3s5.orig/arch/x86/pci/common.c
+++ linux-4.18.7-rt5-r3s5/arch/x86/pci/common.c
@ linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt:611 @ char *__init pcibios_setup(char *str)
 	} else if (!strcmp(str, "skip_isa_align")) {
 		pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
 		return NULL;
+	} else if (!strcmp(str, "skip_ide")) {
+		pci_probe |= PCI_SKIP_IDE;
+		return NULL;
 	} else if (!strcmp(str, "noioapicquirk")) {
 		noioapicquirk = 1;
 		return NULL;
Index: linux-4.18.7-rt5-r3s5/drivers/pci/probe.c
===================================================================
--- linux-4.18.7-rt5-r3s5.orig/drivers/pci/probe.c
+++ linux-4.18.7-rt5-r3s5/drivers/pci/probe.c
@ linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt:24 @
 #include <linux/pm_runtime.h>
 #include "pci.h"
 
+#ifdef CONFIG_X86
+#include <asm/pci_x86.h>
+extern unsigned int pci_probe;
+#endif
+
 #define CARDBUS_LATENCY_TIMER	176	/* secondary latency timer */
 #define CARDBUS_RESERVE_BUSNR	3
 
@ linux-4.18.7-rt5-r3s5/Documentation/admin-guide/kernel-parameters.txt:1648 @ int pci_setup_device(struct pci_dev *dev
 		 * addresses. These are not always echoed in BAR0-3, and
 		 * BAR0-3 in a few cases contain junk!
 		 */
+#ifdef CONFIG_X86
+		if (class == PCI_CLASS_STORAGE_IDE && !(pci_probe & PCI_SKIP_IDE)) {
+#else
 		if (class == PCI_CLASS_STORAGE_IDE) {
+#endif
 			u8 progif;
 			pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
 			if ((progif & 1) == 0) {