Richard, On 9 December 2013 10:25, Richard Zhu <richard.zhuhongxing@xxxxxxxxx> wrote: > [...] > + if (pp->quirks & DW_PCIE_QUIRK_NO_MSI_VEC) { > + irq = assign_irq(1, desc, &pos); > + set_irq_flags(irq, IRQF_VALID); > + } else { > [...] Thanks, the above quirk fixes the problem with the MSIX interrupts > [...] > + if (pp->quirks & DW_PCIE_QUIRK_MSI_SELF_EN) { > + if ((type == PCI_CAP_ID_MSI) || (type == PCI_CAP_ID_MSIX)) { > + /* Set MSI enable of RC here */ > + val = readl(pp->dbi_base + 0x50); > + if ((val & (PCI_MSI_FLAGS_ENABLE << 16)) == 0) { > + val |= PCI_MSI_FLAGS_ENABLE << 16; > + writel(val, pp->dbi_base + 0x50); > + } > + } > + } > [...] Why is it actually needed to change the value from 0x1807005 to 0x1817005? On the SabreSD the MSI interrupts also work without this change. Best regards, Harro -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html