On Tue, Mar 05, 2013 at 02:59:16PM +0800, Gavin Shan wrote: > The allocation of MSI is implemented based on bitmap and working > like the mechanism of strict round through the traced next available > cursor. However, the next available MSI is never updated in current > implementation. The patch fixes the issue. > > Signed-off-by: Gavin Shan <sha...@linux.vnet.ibm.com> > --- > arch/powerpc/platforms/powernv/pci.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/pci.c > b/arch/powerpc/platforms/powernv/pci.c > index 6f464dc..9cf18c4 100644 > --- a/arch/powerpc/platforms/powernv/pci.c > +++ b/arch/powerpc/platforms/powernv/pci.c > @@ -66,6 +66,11 @@ static unsigned int pnv_get_one_msi(struct pnv_phb *phb) > rc = 0; > goto out; > } > + > + if (id >= phb->msi_count - 1) > + phb->msi_next = 0; > + else > + phb->msi_next = id + 1; > __set_bit(id, phb->msi_map);
There is code in arch/powerpc/sysdev/msi_bitmap.c that implements a bitmap allocator for MSI. It may not do what you need but please take a look at it if you haven't already. cheers _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev