diff options
Diffstat (limited to 'arch/x86/pci/xen.c')
| -rw-r--r-- | arch/x86/pci/xen.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/pci/xen.c b/arch/x86/pci/xen.c index 56ab74989cf..94e76620460 100644 --- a/arch/x86/pci/xen.c +++ b/arch/x86/pci/xen.c @@ -162,6 +162,9 @@ static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)  	struct msi_desc *msidesc;  	int *v; +	if (type == PCI_CAP_ID_MSI && nvec > 1) +		return 1; +  	v = kzalloc(sizeof(int) * max(1, nvec), GFP_KERNEL);  	if (!v)  		return -ENOMEM; @@ -220,6 +223,9 @@ static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)  	struct msi_desc *msidesc;  	struct msi_msg msg; +	if (type == PCI_CAP_ID_MSI && nvec > 1) +		return 1; +  	list_for_each_entry(msidesc, &dev->msi_list, list) {  		__read_msi_msg(msidesc, &msg);  		pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) | @@ -263,6 +269,9 @@ static int xen_initdom_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)  	int ret = 0;  	struct msi_desc *msidesc; +	if (type == PCI_CAP_ID_MSI && nvec > 1) +		return 1; +  	list_for_each_entry(msidesc, &dev->msi_list, list) {  		struct physdev_map_pirq map_irq;  		domid_t domid;  |