diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-01-08 11:27:11 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-01-08 11:27:11 +0000 |
commit | f5bf427cd3f237a5d52549431bad79c0463a688d (patch) | |
tree | a7101c499f050c33e1519c56863a9f164939312c | |
parent | f86db27518e4e61e6e49dfe5d76802ea932904ad (diff) | |
download | xen-f5bf427cd3f237a5d52549431bad79c0463a688d.tar.gz xen-f5bf427cd3f237a5d52549431bad79c0463a688d.tar.bz2 xen-f5bf427cd3f237a5d52549431bad79c0463a688d.zip |
passthough: MSI-INTx translation documentation
Signed-off-by: Qing He <qing.he@intel.com>
-rw-r--r-- | docs/misc/vtd.txt | 29 | ||||
-rw-r--r-- | tools/examples/xmexample.hvm | 33 |
2 files changed, 62 insertions, 0 deletions
diff --git a/docs/misc/vtd.txt b/docs/misc/vtd.txt index bd6fd104cc..c49d1511ca 100644 --- a/docs/misc/vtd.txt +++ b/docs/misc/vtd.txt @@ -38,6 +38,30 @@ Enable MSI/MSI-x for assigned devices Add "msi=1" option in kernel line of host grub. +MSI-INTx translation for passthrough devices in HVM +--------------------------------------------------- + +If the assigned device uses a physical IRQ that is shared by more than +one device among multiple domains, there may be significant impact on +device performance. Unfortunately, this is quite a common case if the +IO-APIC (INTx) IRQ is used. MSI can avoid this issue, but was only +available if the guest enables it. + +With MSI-INTx translation turned on, Xen enables device MSI if it's +available, regardless of whether the guest uses INTx or MSI. If the +guest uses INTx IRQ, Xen will inject a translated INTx IRQ to guest's +virtual ioapic whenever an MSI message is received. This reduces the +interrupt sharing of the system. If the guest OS enables MSI or MSI-X, +the translation is automatically turned off. + +To enable or disable MSI-INTx translation globally, add "pci_msitranslate" +in the config file: + pci_msitranslate = 1 (default is 1) + +To override for a specific device: + pci = [ '01:00.0,msitranslate=0', '03:00.0' ] + + Caveat on Conventional PCI Device Passthrough --------------------------------------------- @@ -80,6 +104,11 @@ VTd device hotplug: [root@vt-vtd ~]# xm pci-attach HVMDomainVtd 0:2:0.0 7 + To specify options for the device, use -o or --options=. Following command would disable MSI-INTx translation for the device + + [root@vt-vtd ~]# xm pci-attach -o msitranslate=0 0:2:0.0 7 + + VTd hotplug usage model: ------------------------ diff --git a/tools/examples/xmexample.hvm b/tools/examples/xmexample.hvm index aa014b529b..b4d849f72f 100644 --- a/tools/examples/xmexample.hvm +++ b/tools/examples/xmexample.hvm @@ -288,6 +288,39 @@ serial='pty' # 'x' -> we don't care (do not check) # 's' -> the bit must be the same as on the host that started this VM +#----------------------------------------------------------------------------- +# Configure passthrough PCI{,-X,e} devices: +# +# pci=[ '[SSSS:]BB:DD.F[,option1[,option2[...]]]', ... ] +# +# [SSSS]:BB:DD.F "bus segment:bus:device.function"(1) of the device to +# be assigned, bus segment is optional. All fields are +# in hexadecimal and no field should be longer than that +# as shown in the pattern. Successful assignment may need +# certain hardware support and additional configurations +# (e.g. VT-d, see docs/misc/vtd.txt for more details). +# +# (1) bus segment is sometimes also referred to as the PCI "domain", +# not to be confused with Xen domain. +# +# +# optionN per-device options in "key=val" format. Current +# available options are: +# - msitranslate=0|1 +# per-device overriden of pci_msitranslate, see below +# +#pci=[ '07:00.0', '07:00.1' ] + +# MSI-INTx translation for MSI capable devices: +# +# If it's set, Xen will enable MSI for the device that supports it even +# if the guest don't use MSI. In the case, an IO-APIC type interrupt will +# be injected to the guest every time a corresponding MSI message is +# received. +# If the guest enables MSI or MSI-X, the translation is automatically +# turned off. +# +#pci_msitranslate=1 #----------------------------------------------------------------------------- # Configure PVSCSI devices: |