<p dir="ltr"><br>
El 27/03/2013 18:16, &quot;Mylene Josserand&quot; &lt;<a href="mailto:Mylene.Josserand@navocap.com">Mylene.Josserand@navocap.com</a>&gt; va escriure:<br>
&gt;<br>
&gt; Hi everyone,<br>
&gt;<br>
&gt;<br>
&gt; I have a problem with gpio functions.<br>
&gt; My kernel version is 3.8.2 and my SoC is a imX27 on a &quot;home-made&quot; board.<br>
&gt;<br>
&gt; First, when I boot, I had only the &quot;Starting kernel...&quot; message.<br>
&gt; So I rebuild my kernel with CONFIG_DEBUG_KERNEL, CONFIG_DEBUG_LL and<br>
&gt; CONFIG_EARLY_PRINTK. I have also add the line<br>
&gt; &quot;earlyprintk=console,UART0,115200&quot; on the bootargs of my Barebox.<br>
&gt;<br>
&gt; With that, I can see more messages :<br>
&gt;<br>
&gt; [...]<br>
&gt; Unable to handle kernel NULL pointer dereference at virtual address 0000002c<br>
&gt; pgd = c0004000<br>
&gt; [0000002c] *pgd=00000000<br>
&gt; Internal error: Oops: 5 [#1] PREEMPT ARM<br>
&gt; Modules linked in:<br>
&gt; CPU: 0    Not tainted  (3.8.2+ #4)<br>
&gt; PC is at __gpio_to_irq+0x1c/0x44<br>
&gt; LR is at navocap_baseboard_init+0xd8/0x2c8<br>
&gt; pc : [&lt;c01fd194&gt;]    lr : [&lt;c04fd468&gt;]    psr: 60000053<br>
&gt; sp : c7835ef0  ip : 00000079  fp : c05a5628<br>
&gt; r10: c04f817c  r9 : 00000000  r8 : c05a562c<br>
&gt; r7 : c7834000  r6 : 00000004  r5 : c05158c4  r4 : c0578844<br>
&gt; r3 : 000005ac  r2 : c05b0410  r1 : c7834000  r0 : 00000000<br>
&gt; Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel<br>
&gt; Control: 0005317f  Table: a0004000  DAC: 00000017<br>
&gt; Process swapper (pid: 1, stack limit = 0xc78341b8)<br>
&gt; Stack: (0xc7835ef0 to 0xc7836000)<br>
&gt; 5ee0:                                     c05158c4 c04fd468 00000002<br>
&gt; 10009000<br>
&gt; 5f00: 10009fff 00000000 00000200 00000000 00000000 00000000 c05158c4<br>
&gt; c04fd348<br>
&gt; 5f20: c0578844 c04f819c c04d23dc c00087f8 00000003 00000003 c04d1b2c<br>
&gt; c06bd6a0<br>
&gt; 5f40: 00000000 c0578844 c05158c4 00000004 0000008b c05a562c c0515898<br>
&gt; c04f6378<br>
&gt; 5f60: c05a5620 c04f62a0 00000003 00000003 c04f6378 c00403e0 00000000<br>
&gt; 00000000<br>
&gt; 5f80: c03cfee0 00000000 00000000 00000000 00000000 00000000 00000000<br>
&gt; c03cfeec<br>
&gt; 5fa0: 00000000 00000000 c03cfee0 c00093b0 00000000 00000000 00000000<br>
&gt; 00000000<br>
&gt; 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000<br>
&gt; 00000000<br>
&gt; 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00100000<br>
&gt; 000a1000<br>
&gt; [&lt;c01fd194&gt;] (__gpio_to_irq+0x1c/0x44) from [&lt;c04fd468&gt;]<br>
&gt; (navocap_baseboard_init+0xd8/0x2c8)<br>
&gt; [&lt;c04fd468&gt;] (navocap_baseboard_init+0xd8/0x2c8) from [&lt;c04f819c&gt;]<br>
&gt; (customize_machine+0x20/0x30)<br>
&gt; [&lt;c04f819c&gt;] (customize_machine+0x20/0x30) from [&lt;c00087f8&gt;]<br>
&gt; (do_one_initcall+0x2c/0x168)<br>
&gt; [&lt;c00087f8&gt;] (do_one_initcall+0x2c/0x168) from [&lt;c04f62a0&gt;]<br>
&gt; (kernel_init_freeable+0xf4/0x1cc)<br>
&gt; [&lt;c04f62a0&gt;] (kernel_init_freeable+0xf4/0x1cc) from [&lt;c03cfeec&gt;]<br>
&gt; (kernel_init+0xc/0x164)<br>
&gt; [&lt;c03cfeec&gt;] (kernel_init+0xc/0x164) from [&lt;c00093b0&gt;]<br>
&gt; (ret_from_fork+0x14/0x24)<br>
&gt; Code: e0433100 e1a0c000 e7920003 e24dd004 (e590302c)<br>
&gt; ---[ end trace 61bb09c25216d85b ]---<br>
&gt; Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b<br>
&gt;<br>
&gt;<br>
&gt; The problem is in the function &quot;gpio_to_irq&quot; in my board init functions<br>
&gt; (navocap_baseboard_init).<br>
&gt;<br>
&gt; To know which lines the opps appears, I have followed this tutorial :<br>
&gt; <a href="https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks">https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks</a><br>
&gt;<br>
&gt; Thanks to it, I can notice that the opps appears when I called the<br>
&gt; &quot;gpio_to_irq&quot; function in :<br>
&gt;<br>
&gt; ret = request_irq(gpio_to_irq(IMX_GPIO_NR(2,14)), detect_irq,<br>
&gt; IRQF_TRIGGER_FALLING, &quot;imx-mmc-detect&quot;, data);</p>
<p dir="ltr">Make sure your arguments are not NULL (IMX_GPIO_NR, detect_irq and data).</p>
<p dir="ltr">Some extra printk&#39;s before calling request_irq should do.</p>
<p dir="ltr">&gt;<br>
&gt;<br>
&gt; I have checked in other boards how to use this function and it is<br>
&gt; configured in the same way.<br>
&gt; I did see where I have made a mistake. Maybe in my config file where I<br>
&gt; have missed a configuration option ? How to solve this opps problem ? It<br>
&gt; would be very great if someone could give me some helps / feedbacks on<br>
&gt; this problem.<br>
&gt;<br>
&gt; Thank you in advance !<br>
&gt;<br>
&gt; Best regards,<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Mylène JOSSERAND<br>
&gt; Navocap<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Kernelnewbies mailing list<br>
&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</p>