On Wed, Apr 5, 2017 at 5:16 AM, Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote: > Am Mittwoch, den 05.04.2017, 13:07 +0100 schrieb Joao Pinto: > [...] >> >>> Lucas, >> >>> >> >>> I feel a bit dumb here for forgetting about this issue and letting it >> >>> drop, but I've just spent a day debugging an issue with the ath9k >> >>> wireless driver only to realize it was that the ath9k card and/or >> >>> driver doesn't support MSI interrupts and thus no longer work on >> >>> mainline kernels that have MSI enabled. To be honest I'm not sure how >> >>> many PCIe devices out there can't support MSI because of hardware >> >>> limitations vs drivers that simply have not implemented it. >> >>> >> >>> To make matters worse 3ee803641e76bea76ec730c80dcc64739a9919ff makes >> >>> it such that you can't disable MSI on the IMX6. >> >>> >> >>> Is there some fix you can think of to make the IMX6 PCIe host >> >>> controller raise an interrupt for cards/drivers that use legacy irq's? >> >>> If not, then we need to allow MSI to be disabled for IMX6 and default >> >>> it to disabled for compatibility. >> >>> >> >> >> >> Joao / Jingoo, >> >> >> >> (Adding linux-pci to the list to pick up maintainers of other DWC PCIe >> >> core drivers) >> >> >> >> Is Luca's statement that 'legacy IRQs and MSIs can't be used together' >> >> true in general for the DW PCIe core? If any of the host controllers >> >> using this core can't support both legacy and MSI irqs together I >> >> still believe we shouldn't enable/require MSI as it breaks any >> >> card/driver that only supports legacy interrupts (such as ath9k). >> > >> > If there are 2 DW PCIe controllers, one controller can be used for legacy >> > and another controller can be used for MSI. >> > >> > But, I am not sure that one DW PCIe controller can support both MSI device >> > and legacy interrupt device at the same time. >> > >> > To Joao Pinto, >> > Will you confirm this? >> > >> >> Hi Jingoo, >> I confirm that if a RC has MSI enable, it won't support legacy interrupts. > > Okay, so the only way to solve this in a generic way, that I can see at > the moment is to defer MSI enable until the downstream device actually > requests an MSI irq. > > Also we need to disable the MSI capability if any bridge device turns up > during the bus topology scan, as we can have devices with conflicting > requirements connected to the RC in that case. > > I'll cook up some patches to implement this. > Lucas, Any thoughts yet? I'll likely want to backport this to stable although the restructuring to drivers/pci/dwc and subsequent changes since 4.10 will likely require a re-written patch. Best regards, Tim