Did PCI/IRQ allocation change significantly after 4.2 kernel?
Rob Groner
rgroner at rtd.com
Tue Mar 29 14:27:01 EDT 2016
On Tue, 2016-03-29 at 08:43 -0700, Greg KH wrote:
> On Tue, Mar 29, 2016 at 11:27:49AM -0400, Rob Groner wrote:
> > x86 only (we don't support other platforms). An example of the code
> > (this problem appears to be affecting all of our drivers so far) is on
> > our website.
> >
> > http://www.rtd.com/software/DM/DM35x18/DM35418_Linux_v03.00.00.tar.gz
> >
> > If you end up looking at the driver code, I apologize in advance for all
> > of the obvious errors you might find. It's a little intimidating having
> > one of the authors of LDD look at your code... I feel like I didn't
> > study hard enough for this.
>
> Heh, no worries. One question, why are you saving off the pci irq
> before you call request_irq()? You shouldn't care what the number is,
> and with MSI and other fun, you might get a "different" irq number than
> the main PCI device was because nothing was really assigned to it just
> yet.
>
Can I invoke my 5th amendment rights here?
Actually, I don't really know. Most of that driver is inherited from
other drivers we had before it so a lot of code is "legacy" for lack of
a better term.
The driver appears to care about what the IRQ number because it uses it
in several other places in the driver: to compare to the incoming IRQ in
the interrupt handler, and to use when the "free_irq" call is required.
If we shouldn't care what the IRQ is then that means we don't need it
for those things? Or are you saying we should just keep a pointer to
the pci_dev and reference that IRQ value instead of saving our own?
> Also, why not submit this for inclusion in the main kernel tree? That
> will make your ongoing maintenance of the code much easier.
I had considered that since this driver currently supports 5 of our
boards (that's better than most of our drivers). It would be a nice
thing to say it is supported in the kernel. But I'm not sure how that
will make maintenance easier. I had a small view into the patch
submitting process earlier this year, and it didn't seem easy...Is it
different if I'm patching my own driver?
> > > Also, can you use 'git bisect' to find the problem commit? That might
> > > be the easiest way forward.
> >
> > Umm...yes! As soon as I figure out what that means. I'm a git newbie
> > (we use svn), but I shall learn as quickly as I can. I take it that it
> > basically means "start with a kernel that worked and then start moving
> > forward through commits until I find the one that broke", right?
>
> Yes, but it uses a tree search, making it faster than just "one commit
> after each other" Read 'man git-bisect' for all of the details.
>
Gotcha! I'll get to work on that. Thanks.
Rob
More information about the Kernelnewbies
mailing list