<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 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
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;}
/* List Definitions */
@list l0
        {mso-list-id:1466847642;
        mso-list-type:hybrid;
        mso-list-template-ids:-2129755730 -634858350 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:3;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:20.25pt;
        text-indent:-.25in;
        font-family:"Calibri","sans-serif";
        mso-fareast-font-family:Calibri;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:56.25pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:92.25pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:128.25pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:164.25pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:200.25pt;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:236.25pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:272.25pt;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:308.25pt;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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=blue vlink=purple><div class=WordSection1><p class=MsoNormal>I have a curious problem. This is on a MPC8636 based platform with 36-bit address space (that may or may not be important).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I have a very simple driver that registers for one of the external IRQs with a trivial interrupt handler. It works great when built in as part of the kernel.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>However, if I make it a loadable module I get the crash shown below (blade_irq is my IRQ handler).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-----Console capture ----------------------------------------<o:p></o:p></p><p class=MsoNormal>Unable to handle kernel paging request for instruction fetch<o:p></o:p></p><p class=MsoNormal>Faulting instruction address: 0xf31200f8<o:p></o:p></p><p class=MsoNormal>Oops: Kernel access of bad area, sig: 11 [#1]<o:p></o:p></p><p class=MsoNormal>COMPASS<o:p></o:p></p><p class=MsoNormal>Modules linked in: blade_pnic blade_irq_drv blade_cpld_mmap_drv<o:p></o:p></p><p class=MsoNormal>NIP: f31200f8 LR: c006a26c CTR: f31200f8<o:p></o:p></p><p class=MsoNormal>REGS: c057bdd0 TRAP: 0400   Not tainted  (2.6.32.12-131)<o:p></o:p></p><p class=MsoNormal>MSR: 00029000 <EE,ME,CE>  CR: 24024048  XER: 00000000<o:p></o:p></p><p class=MsoNormal>TASK = c0544318[0] 'swapper' THREAD: c057a000<o:p></o:p></p><p class=MsoNormal>GPR00: 00000000 c057be80 c0544318 00000012 00000000 08f9cac0 c058177c ef820000 <o:p></o:p></p><p class=MsoNormal>GPR08: 00000200 c04a0000 f31200f8 c058a368 2dc6c000 1012b250 3ffbd200 00000000 <o:p></o:p></p><p class=MsoNormal>GPR16: 3ff91140 3ffb22f8 00000000 00000000 00000000 00000000 00000000 00000000 <o:p></o:p></p><p class=MsoNormal>GPR24: 00000000 00000000 00001600 c049fe4c 00000000 00000000 00000012 ea7975c0 <o:p></o:p></p><p class=MsoNormal>NIP [f31200f8] blade_irq+0x0/0x110 [blade_irq_drv]<o:p></o:p></p><p class=MsoNormal>LR [c006a26c] handle_IRQ_event+0x64/0x13c<o:p></o:p></p><p class=MsoNormal>Call Trace:<o:p></o:p></p><p class=MsoNormal>[c057be80] [c0547b80] 0xc0547b80 (unreliable)<o:p></o:p></p><p class=MsoNormal>[c057bea0] [c006c41c] handle_fasteoi_irq+0x68/0xf4<o:p></o:p></p><p class=MsoNormal>[c057beb0] [c0004da0] do_IRQ+0x98/0xb4<o:p></o:p></p><p class=MsoNormal>[c057bed0] [c000fe0c] ret_from_except+0x0/0x18<o:p></o:p></p><p class=MsoNormal>[c057bf90] [c0008168] cpu_idle+0x50/0xd8<o:p></o:p></p><p class=MsoNormal>[c057bfb0] [c000237c] rest_init+0x5c/0x70<o:p></o:p></p><p class=MsoNormal>[c057bfc0] [c0516850] start_kernel+0x238/0x2c4<o:p></o:p></p><p class=MsoNormal>[c057bff0] [c000039c] skpinv+0x2b4/0x2f0<o:p></o:p></p><p class=MsoNormal>Instruction dump:<o:p></o:p></p><p class=MsoNormal>7d6903a6 4e800420 3d60c007 396bb59c 7d6903a6 4e800420 38000000 38600000 <o:p></o:p></p><p class=MsoNormal>90040068 4e800020 38600000 4e800020 <9421fff0> 7c0802a6 3d20f312 bfc10008 <o:p></o:p></p><p class=MsoNormal>Kernel panic - not syncing: Fatal exception in interrupt<o:p></o:p></p><p class=MsoNormal>Rebooting in 180 seconds..<o:p></o:p></p><p class=MsoNormal>----- End of Console capture --------------------------------<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve done a few things<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]>Verified the symbol address and the NIP match. They seem correct<o:p></o:p></p><p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]>Removed all code from the IRQ handler and just return IRQ_HANDLED. Still crashes<o:p></o:p></p><p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]>Put an infinite loop at the start of the IRQ handler – loop isn’t hit and still crashes so I assume the handler itself is never run.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]>I’m able to call my IRQ handler from the module init code and it runs successfully. The problem is only when running in an interrupt context.<o:p></o:p></p><p class=MsoListParagraph style='margin-left:20.25pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>-<span style='font:7.0pt "Times New Roman"'>          </span></span><![endif]>I also as a somewhat stupid test passed the physical address rather than the virtual address when registering the handler. Still crashes (not sure if that’s a valid thing to do to be honest, but I figured it might be a virtual memory paging issue…grasping at straws…..).<o:p></o:p></p><p class=MsoListParagraph style='margin-left:20.25pt'><o:p> </o:p></p><p class=MsoNormal>I do have a ticket in with Freescale support but they suggested I post here for quicker and wider responses and if there are any ideas out there I’d really appreciate them. Any chance anyone else has hit this and knows a workaround or solution? Are there any examples of working driver modules that use interrupts on the 8536 out there in case I’ve done something really goofy in my code? Any suggestions of things to try?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks in advance <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Mark<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div><br clear=all> Confidentiality Notice: This message and any attachments may contain  privileged and confidential information. If you have reason to believe that you are not the intended recipient or a person responsible for delivering this information to an intended recipient, you are hereby notified that any review, dissemination, distribution, or copying of this message is strictly prohibited. Please contact the sender immediately by reply mail and destroy all copies of the original message.
</body></html>