These patches are  modified  
version of  the 
patches I sent about one month before. These patches 
enable MSI support and limited MSI-X support in XEN.
 
The basic idea including:
1) 
Keep vector global resource owned by xen, while split 
pirq into per-domain information.
2) Domain0 kernel 
will operate msi resource for domain0/domU, while QEMU will 
operate MSI resource for HVM 
domain. 
3) MSI/MSI-X capabilities are 
setup by Xen, Dom0 sees MSI as normal 
PIRQ. 
4) MSI interrupts are handled like 
normal edge-triggered interrupts. 
 From my tests, I did not 
encounter MSI storm.
 
Per 
patch discription:
move_pci_function.patch
    move some function and 
header files to generic places that are needed by 
MSI.
pirq_per_domain.patch
    changes pirq to 
per-domain 
msi_irq_xen.patch
    add MSI/MSI-X support to Xen. 
Most code is ported from 2.6.24.4 kernel.
msix_permission.patch
    remove io_mem permission for 
MSI-X, since MSI-X facilities are allocted through and located in PCI 
BAR.
msi_passthrough.patch
    add MSI support to HVM 
domain.
msi_kernel.patch
    add MSI/MSI-X support for 
PV domains including dom0. 
 
    What is your comments on the patches, 
Keir?
    
Thanks!
Haitao Shan