diff options
Diffstat (limited to 'arch/powerpc/platforms/powernv/pci-p5ioc2.c')
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci-p5ioc2.c | 15 | 
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/powerpc/platforms/powernv/pci-p5ioc2.c b/arch/powerpc/platforms/powernv/pci-p5ioc2.c index 7db8771a40f..92b37a0186c 100644 --- a/arch/powerpc/platforms/powernv/pci-p5ioc2.c +++ b/arch/powerpc/platforms/powernv/pci-p5ioc2.c @@ -26,6 +26,7 @@  #include <asm/prom.h>  #include <asm/pci-bridge.h>  #include <asm/machdep.h> +#include <asm/msi_bitmap.h>  #include <asm/ppc-pci.h>  #include <asm/opal.h>  #include <asm/iommu.h> @@ -41,8 +42,8 @@  #ifdef CONFIG_PCI_MSI  static int pnv_pci_p5ioc2_msi_setup(struct pnv_phb *phb, struct pci_dev *dev, -				    unsigned int hwirq, unsigned int is_64, -				    struct msi_msg *msg) +				    unsigned int hwirq, unsigned int virq, +				    unsigned int is_64, struct msi_msg *msg)  {  	if (WARN_ON(!is_64))  		return -ENXIO; @@ -55,7 +56,7 @@ static int pnv_pci_p5ioc2_msi_setup(struct pnv_phb *phb, struct pci_dev *dev,  static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb)  { -	unsigned int bmap_size; +	unsigned int count;  	const __be32 *prop = of_get_property(phb->hose->dn,  					     "ibm,opal-msi-ranges", NULL);  	if (!prop) @@ -67,10 +68,8 @@ static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb)  	if (of_device_is_compatible(phb->hose->dn, "ibm,p5ioc2-pcix"))  		return;  	phb->msi_base = be32_to_cpup(prop); -	phb->msi_count = be32_to_cpup(prop + 1); -	bmap_size = BITS_TO_LONGS(phb->msi_count) * sizeof(unsigned long); -	phb->msi_map = zalloc_maybe_bootmem(bmap_size, GFP_KERNEL); -	if (!phb->msi_map) { +	count = be32_to_cpup(prop + 1); +	if (msi_bitmap_alloc(&phb->msi_bmp, count, phb->hose->dn)) {  		pr_err("PCI %d: Failed to allocate MSI bitmap !\n",  		       phb->hose->global_number);  		return; @@ -78,7 +77,7 @@ static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb)  	phb->msi_setup = pnv_pci_p5ioc2_msi_setup;  	phb->msi32_support = 0;  	pr_info(" Allocated bitmap for %d MSIs (base IRQ 0x%x)\n", -		phb->msi_count, phb->msi_base); +		count, phb->msi_base);  }  #else  static void pnv_pci_init_p5ioc2_msis(struct pnv_phb *phb) { }  |