ia64/linux-2.6.18-xen.hg

view drivers/pci/Kconfig @ 882:8dec4aa9b8b9

PCI pass through: PCIe IO space multiplexing

This is required for more than 16 HVM domain to boot from
PCIe pass through device.

Linux as dom0 exclusively assigns IO space to downstream PCI bridges
and the assignment unit of PCI bridge IO space is 4K. So the only up
to 16 PCIe device can be accessed via IO space within 64K IO ports.
PCI expansion ROM BIOS often uses IO port access to boot from the
device, so on virtualized environment, it means only up to 16 guest
domain can boot from pass-through device.

This patch allows PCIe IO space sharing of pass-through device.
- reassign IO space of PCIe devices specified by
"guestiomuldev=[<segment>:]<bus>:<dev>[,[<segment:><bus>:dev]][,...]"
to be shared.
This is implemented as Linux PCI quirk fixup.

The sharing unit is PCIe switch. Ie IO space of the end point
devices under the same switch will be shared. If there are more than
one switches, two areas of IO space will be used.

- And the driver which arbitrates the accesses to the multiplexed PCIe
IO space. Later qemu-dm will use this.

Limitation:
IO port of IO shared devices can't be accessed from dom0 Linux device
driver. But this wouldn't be a big issue because PCIe specification
discourages the use of IO space and recommends that IO space should be
used only for bootable device with ROM code. OS device driver should
work without IO space access.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
author Keir Fraser <keir.fraser@citrix.com>
date Thu May 28 09:57:49 2009 +0100 (2009-05-28)
parents 711e402bc141
children c7c92f868aa1
line source
1 #
2 # PCI configuration
3 #
4 config PCI_MSI
5 bool "Message Signaled Interrupts (MSI and MSI-X)"
6 depends on PCI
7 depends on (X86_LOCAL_APIC && X86_IO_APIC) || IA64
8 help
9 This allows device drivers to enable MSI (Message Signaled
10 Interrupts). Message Signaled Interrupts enable a device to
11 generate an interrupt using an inbound Memory Write on its
12 PCI bus instead of asserting a device IRQ pin.
14 Use of PCI MSI interrupts can be disabled at kernel boot time
15 by using the 'pci=nomsi' option. This disables MSI for the
16 entire system.
18 If you don't know what to do here, say N.
20 config PCI_REASSIGN
21 bool
23 config PCI_DEBUG
24 bool "PCI Debugging"
25 depends on PCI && DEBUG_KERNEL
26 help
27 Say Y here if you want the PCI core to produce a bunch of debug
28 messages to the system log. Select this if you are having a
29 problem with PCI support and want to see more of what is going on.
31 When in doubt, say N.
33 config PCI_GUESTDEV
34 bool "PCI Device Reservation for Passthrough"
35 depends on PCI && ACPI
36 default y
37 help
38 Say Y here if you want to reserve PCI device for passthrough.
40 config PCI_IOMULTI
41 bool "PCI Device IO Multiplex for Passthrough"
42 depends on PCI && ACPI
43 default y
44 help
45 Say Y here if you need io multiplexing.
46 config PCI_IOV
47 bool "PCI IOV support"
48 depends on PCI
49 help
50 I/O Virtualization is a PCI feature supported by some devices
51 which allows them to create virtual devices which share their
52 physical resources.
54 If unsure, say N.