Hi, Sorry for the delay I was in parental leave and I'm still trying not to drown in the mailing list emails... 😊 On Mon, Sep 2, 2019 at 13:1:47, Andrew Murray <andrew.murray@xxxxxxx> wrote: > On Mon, Sep 02, 2019 at 11:17:13AM +0800, Xiaowei Bao wrote: > > dw_pcie_ep_raise_msix_irq was never called in the exisitng driver > > before, because the ls1046a platform don't support the MSIX feature > > and msix_capable was always set to false. > > Now that add the ls1088a platform with MSIX support, but the existing > > dw_pcie_ep_raise_msix_irq doesn't work, so use the doorbell method to > > support the MSIX feature. Hum... the implementation of msix implementation did work on my use case, however, at the time the setup used for developing and testing the implementation only had one PF (by default 0). Perhaps this could was is causing the different behavior between our setups. You have more than one PF, right? If I remember correctly, msix feature support entered on kernel 4.19 version and it worked quite well at the time, but I didn't test since there (I've to manage time to be able to retest it again), I'm didn't seen any patch that could interfere with this. Regards, Gustavo > > > > Signed-off-by: Xiaowei Bao <xiaowei.bao@xxxxxxx> > > Reviewed-by: Andrew Murray <andrew.murray@xxxxxxx> > > > --- > > v2: > > - No change > > v3: > > - Modify the commit message make it clearly. > > > > drivers/pci/controller/dwc/pci-layerscape-ep.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/pci/controller/dwc/pci-layerscape-ep.c b/drivers/pci/controller/dwc/pci-layerscape-ep.c > > index 1e07287..5f0cb99 100644 > > --- a/drivers/pci/controller/dwc/pci-layerscape-ep.c > > +++ b/drivers/pci/controller/dwc/pci-layerscape-ep.c > > @@ -79,7 +79,8 @@ static int ls_pcie_ep_raise_irq(struct dw_pcie_ep *ep, u8 func_no, > > case PCI_EPC_IRQ_MSI: > > return dw_pcie_ep_raise_msi_irq(ep, func_no, interrupt_num); > > case PCI_EPC_IRQ_MSIX: > > - return dw_pcie_ep_raise_msix_irq(ep, func_no, interrupt_num); > > + return dw_pcie_ep_raise_msix_irq_doorbell(ep, func_no, > > + interrupt_num); > > default: > > dev_err(pci->dev, "UNKNOWN IRQ type\n"); > > return -EINVAL; > > -- > > 2.9.5 > >