Hi all, I want to contribute to camera dri*vers in linux kernel*.Please guide me the procedure of doing that. Regards, Mayank On Tue, Feb 7, 2012 at 10:30 PM, <kernelnewbies-request@kernelnewbies.org>wrote:
Send Kernelnewbies mailing list submissions to kernelnewbies@kernelnewbies.org
To subscribe or unsubscribe via the World Wide Web, visit http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies or, via email, send a message with subject or body 'help' to kernelnewbies-request@kernelnewbies.org
You can reach the person managing the list at kernelnewbies-owner@kernelnewbies.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Kernelnewbies digest..."
Today's Topics:
1. Re: "Trying to free already-free IRQ 9", but it wasn't freed by me (mayur nande) 2. Re: request_firmware question (Greg KH) 3. Re: fork() and exec() (Bernd Petrovitsch) 4. Re: make config errors while building kernel on Fedora 16 (Kartik Singhal)
----------------------------------------------------------------------
Message: 1 Date: Tue, 7 Feb 2012 20:33:31 +0530 From: mayur nande <mayur.nan@gmail.com> Subject: Re: "Trying to free already-free IRQ 9", but it wasn't freed by me To: "nils.stec" <nils.stec@googlemail.com> Cc: kernelnewbies <Kernelnewbies@kernelnewbies.org> Message-ID: <CA+fM3Xy2QALrjbTYJxW0yKn-Q-Y99Wi8xUyyWtKEzYDTByTkjQ@mail.gmail.com
Content-Type: text/plain; charset="iso-8859-1"
Hi Nils,
void cleanup_module(void) { ... free_irq(ADC_IRQ, NULL); /* remove interrupt handler */ ... return; }
You should not pass NULL here. It should be the unique cookie that you passed in request_irq (adc_irq_handler in your case) since you have used IRQF_SHARED which means you want to share your interrupt line. Also check whether you really want to share your interrupt line and also if you want to use "(void *)(adc_irq_handler)" as the unique identification.
HTH!
Regards Mayur
On Tue, Feb 7, 2012 at 7:45 PM, nils.stec <nils.stec@googlemail.com> wrote:
Hi,
atm I'm writing a kernel module for an embedded ARM device. This module uses IRQ9.
If i remove the module, the kernel tells me that:
------------[ cut here ]------------ WARNING: at kernel/irq/manage.c:858 __free_irq+0x84/0x154() Trying to free already-free IRQ 9 Modules linked in: adc_demo_irq(P-) g_ether pegasus mii [<c0028794>] (unwind_backtrace+0x0/0xd0) from [<c003b504>] (warn_slowpath_common+0x48/0x60) [<c003b504>] (warn_slowpath_common+0x48/0x60) from [<c003b554>] (warn_slowpath_fmt+0x24/0x30) [<c003b554>] (warn_slowpath_fmt+0x24/0x30) from [<c005fa00>] (__free_irq+0x84/0x154) [<c005fa00>] (__free_irq+0x84/0x154) from [<c005fb0c>] (free_irq+0x3c/0x5c) [<c005fb0c>] (free_irq+0x3c/0x5c) from [<bf01e18c>] (cleanup_module+0x4c/0x60 [adc_demo_irq]) [<bf01e18c>] (cleanup_module+0x4c/0x60 [adc_demo_irq]) from [<c005b898>] (sys_delete_module+0x1c4/0x238) [<c005b898>] (sys_delete_module+0x1c4/0x238) from [<c0022dc0>] (ret_fast_syscall+0x0/0x28) ---[ end trace 60d7a16d878ac0b3 ]--- adc testing module removed ------------[ cut here ]------------
The message "adc testing module removed" comes from my module **after**free_irq() via printk, so the module exit routine works till the end.
This is my code (only the IRQ related part):
irqreturn_t adc_irq_handler(int irq, void *dev_id) {
... do someting ...
return IRQ_HANDLED; }
int init_module(void) { int32_t retval; ... retval = request_irq(ADC_IRQ, adc_irq_handler, IRQF_SHARED, "lpc313x adc irq", (void *)(adc_irq_handler)); ... return retval; }
void cleanup_module(void) { ... free_irq(ADC_IRQ, NULL); /* remove interrupt handler */ ... return; }
I hope anyone of you can help me with that problem. If you need more information, i'll send it
Greetings, Nils
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies