Re: [PATCH] PCI: dwc: fall back to legacy IRQs when multiple devices are attached

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 11, 2017 at 7:08 AM, Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote:
> On Thu, May 11, 2017 at 1:16 AM, Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote:
>> Hi Tim,
>>
>> Am Mittwoch, den 10.05.2017, 14:44 -0700 schrieb Tim Harvey:
>>> On Thu, Apr 27, 2017 at 8:32 AM, Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote:
>>> > On Thu, Apr 27, 2017 at 1:43 AM, Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote:
>>> >> Am Mittwoch, den 26.04.2017, 14:11 -0700 schrieb Tim Harvey:
>>> >>> On Wed, Apr 26, 2017 at 11:15 AM, Lucas Stach <l.stach@xxxxxxxxxxxxxx> wrote:
>>> >>> > The DWC host does not support legacy PCI IRQs and MSIs at the same time,
>>> >>> > so we need to fall back to using only legacy IRQs if there is a chance
>>> >>> > that multiple devices with differing MSI capabilities are connected to
>>> >>> > the host. The only configuration where MSIs can be safely used is when
>>> >>> > the device below the host bridge is not a bridge, i.e. the only device
>>> >>> > connected to this host.
>>> >>> >
>>> >>> > By disallowing MSI allocation when multiple devices might be attached
>>> >>> > we get those configurations in a working state. The only configurations
>>> >>> > that depend on MSIs being available, that I am aware of, are some
>>> >>> > embedded devices with a PCIe attached FPGA, that is incapable of
>>> >>> > generating PCI legacy IRQs. Those are kept working by allowing MSIs
>>> >>> > when only a single device is attached to the host.
>>> >>> >
>>> >>> > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
>>> >>> > ---
>> [...]
>>> Lucas,
>>>
>>> Are you not able to repeat my findings?
>>
>> Yes, I see what's going on.
>>
>>> Since Linux 4.8 IMX PCIe is completely broken for PCIe devices that do
>>> not support MSI interrupts (and there are a whole lot of 802.11n
>>> radios that fall into this category) as you can no longer disable MSI
>>> because the IMX PCIe driver depends on it.
>>>
>>> It seems like your patch is the right approach but something must
>>> still be getting set that causes the legacy interrupts to not fire.
>>
>> The issue here are the port-services, which are using MSI when
>> available, which might conflict with the device requirements, even if
>> only a single device is attached.
>>
>> Probably we need to disable MSI on all systems, unless we know that we
>> absolutely need them (EP devices, which don't support legacy IRQs). I'll
>> send a patch to do this, but other issues have been higher priority
>> again.
>>
>> Regards,
>> Lucas
>>
>
> Lucas,
>
> Thanks, this fix is something that's beyond my experience or I would
> be glad to do it. The PCIe driver has been changing very rapidly in
> recent kernel versions and there is no single patch that can be
> reverted to 'fix' this long-standing issue. I'm really surprised
> others haven't chimed in with reports of it being broken as its been
> an issue since 4.8.
>
> Is it worth removing the 'depends on PCI_MSI_IRQ_DOMAIN' from
> PCIE_DW_HOST and PCI_IMX6 and defaulting MSI off until your proposed
> fix is ready and working? That is precisely what I have to do on 4.8+
> kernels to get them working for our IMX6 users using ath9k radios
> (making distro's like Ubuntu a problem as they run a fairly standard
> 4.8 kernel).
>
> Tim

Lucas,

Any cycles to put together another attempt to allow legacy IRQ's on IMX6?

Thanks,

Tim



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux