Re: free_irq(IRQ#0) on PCIe device with MSI enabled issue...

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

 



[+cc Marc, Thomas]

Hi Stéphane,

Thanks for your email!

On Thu, Feb 22, 2018 at 08:23:52AM +0000, Stéphane Grosjean wrote:
> I've been writing some drivers for Linux-can in the past years and
> want to add support of MSI in one of them (see
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/can/peak_canfd).
> 
> This device driver works with legacy shared INTx over a CAN PCIe
> device. I'd like to switch to a full MSI usage of this device, which
> proposes up to 4 vectors (this device is proposed with 1, 2 or 4 CAN
> FD ports).
> 
> I'm running x86_64 Kernel 4.13.0-32 from Ubuntu 17.10. Everything
> looks ok as I successfully get the 4 consecutive IRQ levels. My
> problem is this one: as soon as the driver free_irq() the FISRT IRQ
> level, then it does not receive any interrupt from the device
> anymore, for all other 3 IRQs... On the contrary, when the driver
> free_irq() one of the 3 other IRQ (instead of the 1st one), then
> there is no problem and all other interrupts (including the first
> IRQ vector) are working as they should.

Can you share the actual driver code you're running?  The peak_canfd.c
in v4.16-rc1 doesn't have the MSI code in it, so I can't see exactly
what you're doing.

The fact that it does work on ARM suggests there's some difference in
the arch code.  I don't know enough about this area to figure it out
from scratch, but maybe working through the actual code would help.

It would be ideal if you could reproduce the problem on v4.16-rc1, in
case it's something fixed since v4.13.

> I contact you because this "issue" seems to be arch dependent:
> running the same driver and the same board on another arch (ARM),
> then everything works like a charm: the driver can free_irq() any
> IRQ in any order without disturbing the other ones. But running on
> x86, free_irq() on the FIRST MSI seems to (also) free all the other
> ones...
> 
> Note that the driver set up MSI as described in the last version of
> Documentation/PCI/MSI-HOWTO.txt.



[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