select UML_IOMEM_EMULATION
        select UML_DMA_EMULATION
        select PCI_MSI
-       select PCI_MSI_IRQ_DOMAIN
        select PCI_LOCKLESS_CONFIG
 
 config UML_PCI_OVER_VIRTIO_DEVICE_ID
 
 /* Generic PCI */
 #include <asm-generic/pci.h>
 
-#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
+#ifdef CONFIG_PCI_MSI
 /*
  * This is a bit of an annoying hack, and it assumes we only have
  * the virt-pci (if anything). Which is true, but still.
 
        def_bool y
        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
        select IRQ_DOMAIN_HIERARCHY
-       select PCI_MSI_IRQ_DOMAIN if PCI_MSI
 
 config X86_IO_APIC
        def_bool y
 
 #ifdef CONFIG_X86_64
        void            *iommu;         /* IOMMU private data */
 #endif
-#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
+#ifdef CONFIG_PCI_MSI
        void            *fwnode;        /* IRQ domain for MSI assignment */
 #endif
 #if IS_ENABLED(CONFIG_VMD)
 }
 #endif
 
-#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
+#ifdef CONFIG_PCI_MSI
 static inline void *_pci_root_bus_fwnode(struct pci_bus *bus)
 {
        return to_pci_sysdata(bus)->fwnode;
 
 
 config PCI_MSI
        bool "Message Signaled Interrupts (MSI and MSI-X)"
+       select GENERIC_MSI_IRQ_DOMAIN
        select GENERIC_MSI_IRQ
        help
           This allows device drivers to enable MSI (Message Signaled
 
           If you don't know what to do here, say Y.
 
-config PCI_MSI_IRQ_DOMAIN
-       def_bool y
-       depends on PCI_MSI
-       select GENERIC_MSI_IRQ_DOMAIN
-
 config PCI_MSI_ARCH_FALLBACKS
        bool
 
 
 config PCI_HYPERV
        tristate "Hyper-V PCI Frontend"
-       depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && SYSFS
+       depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && SYSFS
        select PCI_HYPERV_INTERFACE
        help
          The PCI device frontend driver allows the kernel to import arbitrary
 
        tristate "Aardvark PCIe controller"
        depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCI_BRIDGE_EMUL
        help
         Add support for Aardvark 64bit PCIe Host Controller. This
 config PCIE_XILINX_NWL
        bool "NWL PCIe Core"
        depends on ARCH_ZYNQMP || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
         Say 'Y' here if you want kernel support for Xilinx
         NWL PCIe controller. The controller can act as Root Port
 config PCI_TEGRA
        bool "NVIDIA Tegra PCIe controller"
        depends on ARCH_TEGRA || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Say Y here if you want support for the PCIe host controller found
          on NVIDIA Tegra SoCs.
 config PCIE_RCAR_HOST
        bool "Renesas R-Car PCIe host controller"
        depends on ARCH_RENESAS || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Say Y here if you want PCIe controller support on R-Car SoCs in host
          mode.
 config PCIE_XILINX
        bool "Xilinx AXI PCIe host bridge support"
        depends on OF || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
          Host Bridge driver.
 config PCI_XGENE_MSI
        bool "X-Gene v1 PCIe MSI feature"
        depends on PCI_XGENE
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        default y
        help
          Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
 config PCIE_IPROC_MSI
        bool "Broadcom iProc PCIe MSI support"
        depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        default ARCH_BCM_IPROC
        help
          Say Y here if you want to enable MSI support for Broadcom's iProc
 config PCIE_ALTERA_MSI
        tristate "Altera PCIe MSI feature"
        depends on PCIE_ALTERA
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Say Y here if you want PCIe MSI support for the Altera FPGA.
          This MSI driver supports Altera MSI to GIC controller IP.
        tristate "Rockchip PCIe host controller"
        depends on ARCH_ROCKCHIP || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select MFD_SYSCON
        select PCIE_ROCKCHIP
        help
        tristate "MediaTek PCIe controller"
        depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Say Y here if you want to enable PCIe controller support on
          MediaTek SoCs.
 config PCIE_MEDIATEK_GEN3
        tristate "MediaTek Gen3 PCIe controller"
        depends on ARCH_MEDIATEK || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        help
          Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
          This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
        depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
                   BMIPS_GENERIC || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        default ARCH_BRCMSTB || BMIPS_GENERIC
        help
          Say Y here to enable PCIe host controller support for
 
 config PCI_HYPERV_INTERFACE
        tristate "Hyper-V PCI Interface"
-       depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN
+       depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI
        help
          The Hyper-V PCI Interface is a helper driver allows other drivers to
          have a common interface with the Hyper-V PCI frontend driver.
 config PCIE_MICROCHIP_HOST
        bool "Microchip AXI PCIe host bridge support"
        depends on PCI_MSI && OF
-       select PCI_MSI_IRQ_DOMAIN
-       select GENERIC_MSI_IRQ_DOMAIN
        select PCI_HOST_COMMON
        help
          Say Y here if you want kernel to support the Microchip AXI PCIe
        tristate "Apple PCIe controller"
        depends on ARCH_APPLE || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCI_HOST_COMMON
        help
          Say Y here if you want to enable PCIe controller support on Apple
 
        tristate "TI DRA7xx PCIe controller Host Mode"
        depends on SOC_DRA7XX || COMPILE_TEST
        depends on OF && HAS_IOMEM && TI_PIPE3
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCI_DRA7XX
        default y if SOC_DRA7XX
 
 config PCIE_DW_PLAT_HOST
        bool "Platform bus based DesignWare PCIe Controller - Host mode"
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCIE_DW_PLAT
        help
 
 config PCIE_DW_PLAT_EP
        bool "Platform bus based DesignWare PCIe Controller - Endpoint mode"
-       depends on PCI && PCI_MSI_IRQ_DOMAIN
+       depends on PCI && PCI_MSI
        depends on PCI_ENDPOINT
        select PCIE_DW_EP
        select PCIE_DW_PLAT
 config PCI_EXYNOS
        tristate "Samsung Exynos PCIe controller"
        depends on ARCH_EXYNOS || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Enables support for the PCIe controller in the Samsung Exynos SoCs
 config PCI_IMX6
        bool "Freescale i.MX6/7/8 PCIe controller"
        depends on ARCH_MXC || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
 
 config PCIE_SPEAR13XX
        bool "STMicroelectronics SPEAr PCIe controller"
        depends on ARCH_SPEAR13XX || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want PCIe support on SPEAr13XX SoCs.
 config PCI_KEYSTONE_HOST
        bool "PCI Keystone Host Mode"
        depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCI_KEYSTONE
        help
 config PCI_LAYERSCAPE
        bool "Freescale Layerscape PCIe controller - Host mode"
        depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select MFD_SYSCON
        help
 config PCI_HISI
        depends on OF && (ARM64 || COMPILE_TEST)
        bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCI_HOST_COMMON
        help
 config PCIE_QCOM
        bool "Qualcomm PCIe controller"
        depends on OF && (ARCH_QCOM || COMPILE_TEST)
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select CRC8
        help
 config PCIE_ARMADA_8K
        bool "Marvell Armada-8K PCIe controller"
        depends on ARCH_MVEBU || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want to enable PCIe controller support on
 config PCIE_ARTPEC6_HOST
        bool "Axis ARTPEC-6 PCIe controller Host Mode"
        depends on MACH_ARTPEC6 || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCIE_ARTPEC6
        help
        bool "Rockchip DesignWare PCIe controller"
        select PCIE_DW
        select PCIE_DW_HOST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        depends on ARCH_ROCKCHIP || COMPILE_TEST
        depends on OF
        help
 config PCIE_INTEL_GW
        bool "Intel Gateway PCIe host controller support"
        depends on OF && (X86 || COMPILE_TEST)
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say 'Y' here to enable PCIe Host controller support on Intel
 config PCIE_KEEMBAY_HOST
        bool "Intel Keem Bay PCIe controller - Host mode"
        depends on ARCH_KEEMBAY || COMPILE_TEST
-       depends on PCI && PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCIE_KEEMBAY
        help
 config PCIE_KEEMBAY_EP
        bool "Intel Keem Bay PCIe controller - Endpoint mode"
        depends on ARCH_KEEMBAY || COMPILE_TEST
-       depends on PCI && PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        depends on PCI_ENDPOINT
        select PCIE_DW_EP
        select PCIE_KEEMBAY
 config PCIE_KIRIN
        depends on OF && (ARM64 || COMPILE_TEST)
        tristate "HiSilicon Kirin series SoCs PCIe controllers"
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want PCIe controller support
 config PCIE_HISI_STB
        bool "HiSilicon STB SoCs PCIe controllers"
        depends on ARCH_HISI || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want PCIe controller support on HiSilicon STB SoCs
 config PCI_MESON
        tristate "MESON PCIe controller"
        default m if ARCH_MESON
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want to enable PCI controller support on Amlogic
 config PCIE_TEGRA194_HOST
        tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode"
        depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PHY_TEGRA194_P2U
        select PCIE_TEGRA194
 config PCIE_VISCONTI_HOST
        bool "Toshiba Visconti PCIe controllers"
        depends on ARCH_VISCONTI || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
        bool "Socionext UniPhier PCIe host controllers"
        depends on ARCH_UNIPHIER || COMPILE_TEST
        depends on OF && HAS_IOMEM
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        help
          Say Y here if you want PCIe host controller support on UniPhier SoCs.
 config PCIE_AL
        bool "Amazon Annapurna Labs PCIe controller"
        depends on OF && (ARM64 || COMPILE_TEST)
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_DW_HOST
        select PCI_ECAM
        help
 
 config PCIE_FU740
        bool "SiFive FU740 PCIe host controller"
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        depends on SOC_SIFIVE || COMPILE_TEST
        select PCIE_DW_HOST
        help
 
 
 config PCIE_MOBIVEIL_HOST
        bool
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_MOBIVEIL
 
 config PCIE_MOBIVEIL_PLAT
        bool "Mobiveil AXI PCIe controller"
        depends on ARCH_ZYNQMP || COMPILE_TEST
        depends on OF
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_MOBIVEIL_HOST
        help
          Say Y here if you want to enable support for the Mobiveil AXI PCIe
 config PCIE_LAYERSCAPE_GEN4
        bool "Freescale Layerscape PCIe Gen4 controller"
        depends on ARCH_LAYERSCAPE || COMPILE_TEST
-       depends on PCI_MSI_IRQ_DOMAIN
+       depends on PCI_MSI
        select PCIE_MOBIVEIL_HOST
        help
          Say Y here if you want PCIe Gen4 controller support on
 
 # Makefile for the PCI/MSI
 obj-$(CONFIG_PCI)                      += pcidev_msi.o
 obj-$(CONFIG_PCI_MSI)                  += msi.o
-obj-$(CONFIG_PCI_MSI_IRQ_DOMAIN)       += irqdomain.o
+obj-$(CONFIG_PCI_MSI)                  += irqdomain.o
 obj-$(CONFIG_PCI_MSI_ARCH_FALLBACKS)   += legacy.o
 
        if (!d)
                d = pci_host_bridge_acpi_msi_domain(bus);
 
-#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
        /*
         * If no IRQ domain was found via the OF tree, try looking it up
         * directly through the fwnode_handle.
                        d = irq_find_matching_fwnode(fwnode,
                                                     DOMAIN_BUS_PCI_MSI);
        }
-#endif
 
        return d;
 }
 
 }
 #endif
 
-#ifdef CONFIG_PCI_MSI
-struct pci_dev *msi_desc_to_pci_dev(struct msi_desc *desc);
-void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg);
-#else /* CONFIG_PCI_MSI */
-static inline void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg)
-{
-}
-#endif /* CONFIG_PCI_MSI */
-
 int msi_add_msi_desc(struct device *dev, struct msi_desc *init_desc);
 void msi_free_msi_descs_range(struct device *dev, unsigned int first_index, unsigned int last_index);
 
        msi_free_msi_descs_range(dev, 0, MSI_MAX_INDEX);
 }
 
-void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
-void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
-
-void pci_msi_mask_irq(struct irq_data *data);
-void pci_msi_unmask_irq(struct irq_data *data);
-
 /*
  * The arch hooks to setup up msi irqs. Default functions are implemented
  * as weak symbols so that they /can/ be overriden by architecture specific
 void *platform_msi_get_host_data(struct irq_domain *domain);
 #endif /* CONFIG_GENERIC_MSI_IRQ_DOMAIN */
 
-#ifdef CONFIG_PCI_MSI_IRQ_DOMAIN
+/* PCI specific interfaces */
+#ifdef CONFIG_PCI_MSI
+struct pci_dev *msi_desc_to_pci_dev(struct msi_desc *desc);
+void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg);
+void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
+void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
+void pci_msi_mask_irq(struct irq_data *data);
+void pci_msi_unmask_irq(struct irq_data *data);
 struct irq_domain *pci_msi_create_irq_domain(struct fwnode_handle *fwnode,
                                             struct msi_domain_info *info,
                                             struct irq_domain *parent);
 u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev);
 struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev);
 bool pci_dev_has_special_msi_domain(struct pci_dev *pdev);
-#else
+#else /* CONFIG_PCI_MSI */
 static inline struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev)
 {
        return NULL;
 }
-#endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */
+static inline void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg) { }
+#endif /* !CONFIG_PCI_MSI */
 
 #endif /* LINUX_MSI_H */