#
# PCI configuration
#
config ARCH_SUPPORTS_MSI
	bool
	default n

config PCI_MSI
	bool "Message Signaled Interrupts (MSI and MSI-X)"
	depends on PCI
	depends on ARCH_SUPPORTS_MSI
	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 N.

config PCI_LEGACY
	bool "Enable deprecated pci_find_* API"
	depends on PCI
	default y
	help
	  Say Y here if you want to include support for the deprecated
	  pci_find_slot() and pci_find_device() APIs.  Most drivers have
	  been converted over to using the proper hotplug APIs, so this
	  option serves to include/exclude only a few drivers that are
	  still using this API.

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_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 HT_IRQ
	bool "Interrupts on hypertransport devices"
	default y
	depends on PCI && X86_LOCAL_APIC && X86_IO_APIC
	help
	   This allows native hypertransport devices to use interrupts.

	   If unsure say Y.

config PCI_IOV
	bool "PCI IOV support"
	depends on PCI
	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.
