Help needed with PCI MSI-X


We are developing a product based on MT7621. The current kernel used is LEDE 4.4.92. We also tested on OpenWRT 4.14.95.

We have an Intel I210 Ethernet chipset. The Intel igb driver works in general. But PCI MSI-X or MSI interrupt can't be activated. The system can only use legacy interrupt. The data throughput suffers.

After some research, we added CONFIG_PCI_MSI=y in configuration. It made some difference at source code level. We can trace that some of the MSI functions get called at run-time. But MSI-X or MSI is still not activated. The failure happens at initialization stage. It seems that at a point, igb driver asks for a msi_controller object but the kernel returns a NULL instead.

Any suggestions?

Thanks in advance.

you need to add several other kernel CONFIG_ options that CONFIG_PCI_MSI depends on. don't remember which ones, but short google search should get you these.

Thanks for your input.
I had some extended google search. It didn't come out much other CONFIG_s.
From MSI-HOWTO driver guide, it does mention CONFIG_X86_LOCAL_APIC=y. MT7621 has a mips arch. I thought it shouldn't apply here. But I tried anyway. It didn't help. As expected.
I also tried CONFIG_PCI_MSI_IRQ_DOMAIN=y. It made no difference.

Maybe I didn't do google right. Do those (CONFIG_s) fit what in your mind? Or you can offer other ideas?


yes these, and few others, when tried it on ar71xx (archer c7) there was also no luck with msi/msi-x. didn't look any further than that.

Thank you very much for putting extra efforts to help us out.

Has anyone out there successfully made your board working with MSI or MSI-X? We want to hear your story!

1 Like