On 23 January 2014 16:20, Bjørn Erik Nilsen <ben@xxxxxxxxxxxxxx> wrote: > Hi Pratyush, > > On Thu, 2014-01-23 at 07:51 +0100, Pratyush Anand wrote: >> On Thu, Jan 23, 2014 at 01:52:19PM +0800, Jingoo Han wrote: >> > On Thursday, January 23, 2014 5:39 AM, Jingoo Han wrote: >> > > >> > > I’m currently playing with MSI support in pci-imx6.c using Harro Haan’s patch [*]. The above patch mentioned will not become part of mainline Linux, but I expect/hope a reworked version of "[PATCH] pci: imx: enable pcie msi support" from Richard Zhu will become part of mainline, because this patch supports MSIX as well. Reference to the patch with review remarks: http://www.spinics.net/lists/linux-ide/msg47074.html @Richard Zhu: Is this a correct assumption? >> > > >> > > Are there any technical reasons why dw_pcie_msi_init cannot be called from dw_msi_setup_irq? Or rather, >> > > why it should not? >> > >> > No, there is no special reason. >> > The patch (call dw_pcie_msi_init from dw_msi_setup_irq) would be >> > good. Thank you for your effort. >> > >> > Mohit, Pratyush, >> > If you have different opinions, please let us know. :-) >> >> dw_msi_setup_irq will be called for each function which needs msi >> assignment. However, dw_pcie_msi_init should be called only once. So, >> in my opinion calling dw_pcie_msi_init from dw_msi_setup_irq would not >> be the best option. >> >> @Bjørn, can you help us with tracing calling sequence of >> dw_pcie_setup & dw_pcie_scan_bus. I think when you do "reset bridge", >> it will call dw_pcie_setup and when you do "rescan bus", it will call >> dw_pcie_scan_bus. If yes, then you can move dw_pcie_msi_init to >> dw_pcie_setup. > > > It looks like dw_pcie_setup and dw_pcie_scan_bus is only called when > booting. Resetting the bridge or scanning the bus will not trigger any > of these functions, unfortunately. > > I have looked for other hooks too, without luck. @Bjørn: have you applied the following patch? "[PATCH] pci: designware: fix missing msi irqs" Reference to the patch: http://lists.infradead.org/pipermail/linux-arm-kernel/2013-December/218629.html Best regards, Harro > >> >> Regards >> Pratyush >> >> > >> > Best regards, >> > Jingoo Han >> > >> > > >> > > I’m asking because I have a hotplug scenario where this little hack (call dw_pcie_msi_init from >> > > dw_msi_setup_irq) fixes a problem with MSI. I therefore need to understand whether it is a sensible >> > > hack or just crap, and more importantly; how it can be fixed properly. >> > > >> > > Scenario: >> > > >> > > (remove endpoints) >> > > # echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove >> > > # echo 1 > /sys/bus/pci/devices/0000:01:00.1/remove >> > > >> > > # take fpga in and out of reset (this will mess up the configuration space of the bridge) >> > > >> > > (reset bridge) >> > > # echo 1 > /sys/bus/pci/devices/0000:00:00.0/reset >> > > >> > > (rescan bus) >> > > # echo 1 > /sys/bus/pci/rescan >> > > >> > > At this point everything works fine except MSI. With above mention hack it works like a charm. >> > > >> > > I would be grateful if someone could shed light on this. I might have missed some important details. >> > > >> > > >> > > Best regards, >> > > Bjørn Erik Nilsen >> > > >> > > [*] >> > > >> > > From: Harro Haan <hrhaan@xxxxxxxxx> >> > > Date: Thu, 5 Dec 2013 14:06:37 +0100 >> > > Subject: [PATCH 2/2] PCI: imx6: add support for MSI > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html