On Wed, Mar 06, 2013 at 02:24:54PM +1100, Michael Ellerman wrote: >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. >
Thanks, Michael. I neve know that you've implemented bitmaps to manage MSI interrupts. It seems arch/powerpc/sysdev/msi_bitmap.c meets our requirment here except that needs device tree node. Fortunately, we can set the corresponding device tree node to NULL and functions playing with the device tree nodes (of_node_get/of_node_put) works well for NULL device tree node. I'll update powernv platform to use msi_bitmap.c to manage it MSI interrupts. Thanks, Gavin _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev