#
# 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_INIT_IN_MONITOR
	bool "PCI Initialized in bootrom"
	depends on PCI
	help
	  This flag indicates that the PCI bus was initialized in the bootrom
	  monitor, and that further hardware initialization should not be
	  performed.  Examples are when u-boot's PCI functions are used to
	  pre-initialize hardware at bootup time.
	  
	  Note that bus scan should still be performed to configure the PCI
	  devices as required for the Linux system.

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.
