#
# PCI configuration
#

source "drivers/pci/pcie/Kconfig"

config PCI_BUS_ADDR_T_64BIT
	def_bool y if (ARCH_DMA_ADDR_T_64BIT || 64BIT)
	depends on PCI

config PCI_MSI
	bool "Message Signaled Interrupts (MSI and MSI-X)"
	depends on PCI
	select GENERIC_MSI_IRQ
	help
	   This allows device drivers to enable MSI (Message Signaled
	   Interrupts).  Message Signaled Interrupts enable a device to
	   generate an interrupt using an inbound Memory Write on its
	   PCI bus instead of asserting a device IRQ pin.

	   Use of PCI MSI interrupts can be disabled at kernel boot time
	   by using the 'pci=nomsi' option.  This disables MSI for the
	   entire system.

	   If you don't know what to do here, say Y.

config PCI_MSI_IRQ_DOMAIN
	def_bool ARC || ARM || ARM64 || X86
	depends on PCI_MSI
	select GENERIC_MSI_IRQ_DOMAIN

config PCI_DEBUG
	bool "PCI Debugging"
	depends on PCI && DEBUG_KERNEL
	help
	  Say Y here if you want the PCI core to produce a bunch of debug
	  messages to the system log.  Select this if you are having a
	  problem with PCI support and want to see more of what is going on.

	  When in doubt, say N.

config PCI_REALLOC_ENABLE_AUTO
	bool "Enable PCI resource re-allocation detection"
	depends on PCI
	help
	  Say Y here if you want the PCI core to detect if PCI resource
	  re-allocation needs to be enabled. You can always use pci=realloc=on
          or pci=realloc=off to override it.  Note this feature is a no-op
          unless PCI_IOV support is also enabled; in that case it will
          automatically re-allocate PCI resources if SR-IOV BARs have not
          been allocated by the BIOS.

	  When in doubt, say N.

config PCI_STUB
	tristate "PCI Stub driver"
	depends on PCI
	help
	  Say Y or M here if you want be able to reserve a PCI device
	  when it is going to be assigned to a guest operating system.

	  When in doubt, say N.

config XEN_PCIDEV_FRONTEND
        tristate "Xen PCI Frontend"
        depends on PCI && X86 && XEN
        select PCI_XEN
	select XEN_XENBUS_FRONTEND
        default y
        help
          The PCI device frontend driver allows the kernel to import arbitrary
          PCI devices from a PCI backend to support PCI driver domains.

config HT_IRQ
	bool "Interrupts on hypertransport devices"
	default y
	depends on PCI && X86_LOCAL_APIC
	help
	   This allows native hypertransport devices to use interrupts.

	   If unsure say Y.

config PCI_ATS
	bool

config PCI_ECAM
	bool

config PCI_IOV
	bool "PCI IOV support"
	depends on PCI
	select PCI_ATS
	help
	  I/O Virtualization is a PCI feature supported by some devices
	  which allows them to create virtual devices which share their
	  physical resources.

	  If unsure, say N.

config PCI_PRI
	bool "PCI PRI support"
	depends on PCI
	select PCI_ATS
	help
	  PRI is the PCI Page Request Interface. It allows PCI devices that are
	  behind an IOMMU to recover from page faults.

	  If unsure, say N.

config PCI_PASID
	bool "PCI PASID support"
	depends on PCI
	select PCI_ATS
	help
	  Process Address Space Identifiers (PASIDs) can be used by PCI devices
	  to access more than one IO address space at the same time. To make
	  use of this feature an IOMMU is required which also supports PASIDs.
	  Select this option if you have such an IOMMU and want to compile the
	  driver for it into your kernel.

	  If unsure, say N.

config PCI_MSM
	bool "MSM PCIe Controller driver"
	depends on ARCH_QCOM && PCI
	select PCI_DOMAINS
	select PCI_DOMAINS_GENERIC
	select PCI_MSI
	help
	  Enables the PCIe functionality by configuring PCIe core on
	  MSM chipset and by enabling the ARM PCI framework extension.
	  The PCIe core is essential for communication between the host
	  and an endpoint.

	  If unsure, say N.

config PCI_LABEL
	def_bool y if (DMI || ACPI)
	select NLS

config PCI_HYPERV
        tristate "Hyper-V PCI Frontend"
        depends on PCI && X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
        help
          The PCI device frontend driver allows the kernel to import arbitrary
          PCI devices from a PCI backend to support PCI driver domains.

source "drivers/pci/hotplug/Kconfig"
source "drivers/pci/host/Kconfig"
