Re: Help: MSI DWC connecting with a MSIx Endpoint

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

 



Hi Mark,

Às 6:16 PM de 3/20/2017, Marc Zyngier escreveu:
> Hi Joao,
> 
> On 20/03/17 17:30, Joao Pinto wrote:
>> Hi Mark,
>>
>> I am facing a challenge in a setup I must bring up that is composed by a
>> Synopsys Root Complex connected to a MSIx-only Endpoint from Mellanox.
>> The endpoint probe fails because it is not capable of enabling msix.
>>
>> In order to get more info about it, I added some debug messages to the msix
>> enable process and got the following:
>>
>> MSIX DBG[mlx5_enable_msix]: Num. EQs: 256
>> MSIX DBG[mlx5_enable_msix]: Num. Vectors: 4
>> MSIX DBG[mlx5_enable_msix]: Min. Num. Vectors: 4
>> MSIX DBG[mlx5_enable_msix]: Num. Online CPUs: 1
>> MSIX DBG[mlx5_enable_msix]: MLX5_EQ_VEC_COMP_BASE: 3
>> MSIX DBG[mlx5_enable_msix]: Filling msix array... entry = 0
>> MSIX DBG[mlx5_enable_msix]: Filling msix array... entry = 1
>> MSIX DBG[mlx5_enable_msix]: Filling msix array... entry = 2
>> MSIX DBG[mlx5_enable_msix]: Filling msix array... entry = 3
>> MSIX DBG[mlx5_enable_msix]: Enabling PCI MSIX Range
>> MSIX DBG[__pci_enable_msix_range]: Enabling MSIX [Nvec: 4, Affinity: 0]
>> MSIX DBG[__pci_enable_msix]: NVec: 4
>> MSIX DBG[__pci_enable_msix]: Num. Entries: 64
>> MSIX DBG[__pci_enable_msix]: Checking invalid entries
>> MSIX DBG[msix_capability_init]: Ensure MSI is disable
>> MSIX DBG[msix_capability_init]: Getting MSIX Capability
>> MSIX DBG[msix_capability_init]: Mapping MSIX Capability Region
>> MSIX DBG[msix_capability_init]: Setup Entries
>> MSIX DBG[msix_setup_entries]: Configuring MSIX entry 0
>> MSIX DBG[msix_setup_entries]: Configuring MSIX entry 1
>> MSIX DBG[msix_setup_entries]: Configuring MSIX entry 2
>> MSIX DBG[msix_setup_entries]: Configuring MSIX entry 3
>> MSIX DBG[msix_capability_init]: Setup IRQS
>> MSIX DBG[pci_msi_setup_msi_irqs]: Inside!
>> MSIX DBG[arch_setup_msi_irqs]: Inside!
>> MSIX DBG[msix_capability_init]: Failed pci_msi_setup_msi_irqs
>> MSIX DBG[mlx5_enable_msix]: Enabling PCI MSIX Range, result: -22
>> mlx5_core 0000:01:00.0: enable msix failed
>>
>> The conclusion I came up was that the msix setup in the endpoint fails because
>> in the pcie-designware-host.c we are rejecting msix as you can see here:
>>
>> /* MSI-X interrupts are not supported */
>> if (type == PCI_CAP_ID_MSIX)
>>         return -EINVAL;
>>
>> Did you ever came across this problem?
> 
> I don't have access to any system using this IP, unfortunately. This
> looks like an arbitrary limitation of the host controller driver, as
> there isn't much difference between MSI and MSI-X at the MSI controller
> level, other than the reduced number of interrupts.
> 
> Unfortunately, this driver seems to rely on rather old APIs, and could
> use some care and attention. I'm pretty sure that converting this driver
> to the generic MSI API would solve this problem entirely, but I'm afraid
> I don't have the bandwidth to do so.

I volunteer to do it, no problem, but I will need some guidance and examples.
Could you give me some hints to get started?

> 
> Thanks,
> 
> 	M.
> 

Thanks.




[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