[help] kernel oops in function gpio_to_irq

Mylene Josserand Mylene.Josserand at navocap.com
Wed Apr 3 11:02:37 EDT 2013


Hi everyone,


Just to update you that I have found my problem !
The problem was, in fact, the "gpio_request" function which was every 
time failing and so the "gpio_to_irq" and "request_irq" functions.

After some research and a reading of the gpio documentation (in case I 
would have missed something), I noticed a difference between my code and 
the other IMX27 boards : "imx27_soc_init();" !!!! A very very important 
function that I have forgotten !

And now, all is okay with "gpio_request" and so on ! So happy ! :D
And thank you again, Matthias, for your help / advice :)


Best regards,

-- 
Mylène JOSSERAND
Navocap


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



More information about the Kernelnewbies mailing list