<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">I&#8217;m investigating why our drivers no longer work correctly after the 4.2 kernel.&nbsp; I have verified that in the 4.4 kernel, interrupts no longer work for us as they did before.&nbsp; Here are the symptoms:<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">The driver requests an IRQ, the one that is in the pci_dev structure that comes from pci_get_device().&nbsp; In most cases, that IRQ is 7.&nbsp; The request_irq call is successful, and the driver reports that it has IRQ 7.&nbsp; However, interrupts never
 arrive after that, and eventually an exception is thrown indicating that interrupts WERE arriving at IRQ 16 and nobody responded to them.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Doing this same test with a 4.2 kernel, I see that even though lspci initially reports that the board is on IRQ 7, after the driver is loaded it then reports that the board is on IRQ 16.&nbsp; The driver also says it is on IRQ 16, and everything
 works after that.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Here is what I&#8217;ve found so far:&nbsp; both kernels report the board is on IRQ 7 according to lspci before the driver is loaded.&nbsp; After the driver is loaded, the 4.2 kernel lspci says the board is on IRQ 16 and the 4.4 kernel says it is still
 on IRQ 7.&nbsp; In both cases, the actual interrupts appear to be coming on IRQ 16 and the 4.4 kernel fails because that is not where the interrupt handler was put.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I have also found that the IRQ associated with the pci_device changes during the pci_enable_device call (before the request_irq call).&nbsp; In the 4.2 kernel, it changes from 7 to 16, but in the 4.4 kernel it stays 7.&nbsp; This is the most obvious
 difference I&#8217;ve found so far between the two kernels.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">What I don&#8217;t understand is why the request_irq call succeeds in the 4.4 kernel, yet interrupts don&#8217;t arrive on IRQ 7&#8230;they go to IRQ 16 instead.&nbsp;
<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I looked through the LinuxVersions on kernelnewbies.org for 4.3 and 4.4 but did not see anything that looked like it related to IRQs, pci devices, or any of that (at least, for my particular problem).&nbsp; Can someone direct me to the pertinent
 documentation about the change if it exists?<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">I&#8217;m walking through the kernel code now to try and find why the 4.2 pci_enable changes the IRQ from 7 to 16, but the 4.4 does not.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Thank you for any help.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Rob Groner<o:p></o:p></p>
<p class="MsoNormal">Senior Electronics Engineer<o:p></o:p></p>
<p class="MsoNormal">Modules and Systems<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif"><br>
<b><span style="color:#A70C28">RTD Embedded Technologies, Inc.</span></b><br>
</span><b><i><span style="font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;color:black">ISO 9001 and AS9100 Certified</span></i></b><span style="font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif;color:black"><br>
</span><span style="font-size:10.0pt;font-family:&quot;Times New Roman&quot;,serif"><a href="http://www.rtd.com/"><span style="color:blue">www.rtd.com</span></a><o:p></o:p></span></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>