[PATCH 2/2] ARM: imx_v6_v7_defconfig: enable PCI_MSI

Joao Pinto Joao.Pinto at synopsys.com
Wed Apr 5 05:07:21 PDT 2017


Às 9:54 PM de 4/4/2017, Jingoo Han escreveu:
> On Friday, March 31, 2017 12:05 PM, Tim Harvey wrote:
>> On Thu, Mar 30, 2017 at 4:42 PM, Tim Harvey <tharvey at gateworks.com> wrote:
>>> On Fri, Apr 15, 2016 at 1:21 AM, Lucas Stach <l.stach at pengutronix.de>
>> wrote:
>>>> Am Donnerstag, den 14.04.2016, 08:13 -0700 schrieb Tim Harvey:
>>>>> On Mon, Nov 30, 2015 at 9:00 AM, Lucas Stach <l.stach at pengutronix.de>
>> wrote:
>>>>>> This has been stable on i.MX6 for a good while now and there is no
>>>>>> reason to keep it disabled, as it allows to allocate non-shared
>>>>>> IRQs if several PCIe devices are connected to a single host.
>>>>>>
>>>>>> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
>>>>>> ---
>>>>>>  arch/arm/configs/imx_v6_v7_defconfig | 1 +
>>>>>>  1 file changed, 1 insertion(+)
>>>>>>
>>>>>> diff --git a/arch/arm/configs/imx_v6_v7_defconfig
>> b/arch/arm/configs/imx_v6_v7_defconfig
>>>>>> index 4187f69f6630..e2ce60d00e8a 100644
>>>>>> --- a/arch/arm/configs/imx_v6_v7_defconfig
>>>>>> +++ b/arch/arm/configs/imx_v6_v7_defconfig
>>>>>> @@ -45,6 +45,7 @@ CONFIG_SOC_IMX7D=y
>>>>>>  CONFIG_SOC_LS1021A=y
>>>>>>  CONFIG_SOC_VF610=y
>>>>>>  CONFIG_PCI=y
>>>>>> +CONFIG_PCI_MSI=y
>>>>>>  CONFIG_PCI_IMX6=y
>>>>>>  CONFIG_SMP=y
>>>>>>  CONFIG_PREEMPT_VOLUNTARY=y
>>>>>> --
>>>>>> 2.6.2
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> linux-arm-kernel mailing list
>>>>>> linux-arm-kernel at lists.infradead.org
>>>>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.infradead.org_mailman_listinfo_linux-2Darm-2Dkernel&d=DwICaQ&c=DPL6_X_6JkXFx7AXWqB0tg&r=s2fO0hii0OGNOv9qQy_HRXy-xAJUD1NNoEcc3io_kx0&m=yQx7ybu-JGcPPh6ZlQyxkC6_Uw62cuBKLb7o3zpK7hQ&s=o-tR0mZ5yKNTTXKX1MR7NuDLpHfvSHIjzi47YLue0aA&e= 
>>>>>
>>>>> Lucas,
>>>>>
>>>>> Any thoughts on why enabling MSI on IMX6 breaks legacy interrupts?
>>>>>
>>>>> Again, many PCI devices/drivers don't support MSI and thus enabling
>>>>> MSI as this patch does makes this config break many PCI devices on
>>>>> IMX6.
>>>>>
>>>>> I have found that MSI does indeed work on the IMX6 for cards/drivers
>>>>> that use MSI, but for those that don't the legacy interrupts never
>>>>> fire regardless of going through a bridge or directly hanging off the
>>>>> IMX6. I assume you can confirm this on your boards/devices as well?
>>>>>
>>>> No, this seems to be an errata in the DW PCIe core. The manual states
>>>> that legacy IRQs and MSIs can't be used together, but I thought this
>>>> only applies to the EP part of the core.
>>>>
>>>> We can probably fix the simple configuration by not enabling MSI
>> support
>>>> until someone actually requests to set up an MSI IRQ, so both IRQ types
>>>> work when only one EP is connected.
>>>> I don't have any idea yet how to fix setups with a PCIe switch where
>>>> some connected EPs might like to use MSIs while some others can't use
>>>> them.
>>>>
>>>> Regards,
>>>> Lucas
>>>>
>>>
>>> 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.

Regards,
Joao

> Or if there is anyone who knows this well, please share your knowledge. :-)
> Thanks.
> 
> Best regards,
> Jingoo Han
> 
>>
>> Regards,
>>
>> Tim
> 




More information about the linux-arm-kernel mailing list