On Oct 31, 2011, at 5:06 PM, Timur Tabi wrote: > On Freescale parts with multiple MSI controllers, the controllers are > combined into one "pool" of interrupts. Whenever a device requests an MSI > interrupt, the next available interrupt from the pool is selected, > regardless of which MSI controller the interrupt is from. This works > because each PCI bus has an ATMU to all of CCSR, so any PCI device can > access any MSI interrupt register. > > The fsl,msi property is used to specify that a given PCI bus should only > use a specific MSI device. This is necessary, for example, with the > Freescale hypervisor, because the MSI devices are assigned to specific > partitions. > > Ideally, we'd like to be able to assign MSI devices to PCI busses within > the MSI or PCI layers. However, there does not appear to be a mechanism > to do that. Whenever the MSI layer wants to allocate an MSI interrupt to > a PCI device, it just calls arch_setup_msi_irqs(). It would be nice if we > could register an MSI device with a specific PCI bus. > > So instead we remember the phandles of each MSI device, and we use that to > limit our search for an available interrupt. Whenever we are asked to > allocate a new interrupt for a PCI device, we check the fsl,msi property > of the PCI bus for that device. If it exists, then as we are looping over > all MSI devices, we skip the ones that don't have a matching phandle. > > Signed-off-by: Timur Tabi <ti...@freescale.com> > --- > > v3: added check for invalid fsl,msi phandles > > arch/powerpc/sysdev/fsl_msi.c | 39 +++++++++++++++++++++++++++++++++++++++ > arch/powerpc/sysdev/fsl_msi.h | 3 +++ > 2 files changed, 42 insertions(+), 0 deletions(-)
applied to next - k _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev