#
# PCI configuration
#
config PCI_MSI
	bool "Message Signaled Interrupts (MSI and MSI-X)"
	depends on PCI
	depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64
	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_MULTITHREAD_PROBE
	bool "PCI Multi-threaded probe (EXPERIMENTAL)"
	depends on PCI && EXPERIMENTAL
	help
	  Say Y here if you want the PCI core to spawn a new thread for
	  every PCI device that is probed.  This can cause a huge
	  speedup in boot times on multiprocessor machines, and even a
	  smaller speedup on single processor machines.

	  But it can also cause lots of bad things to happen.  A number
	  of PCI drivers cannot properly handle running in this way,
	  some will just not work properly at all, while others might
	  decide to blow up power supplies with a huge load all at once,
	  so use this option at your own risk.

	  It is very unwise to use this option if you are not using a
	  boot process that can handle devices being created in any
	  order.  A program that can create persistent block and network
	  device names (like udev) is a good idea if you wish to use
	  this option.

	  Again, use this option at your own risk, you have been warned!

	  When in doubt, say N.

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 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.
