From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: smitha.vanga@wipro.com
Cc: scottwood@freescale.com, linuxppc-dev@lists.ozlabs.org
Subject: RE: Request_irq fails for IRQ2
Date: Sun, 09 Oct 2011 09:11:43 +0200 [thread overview]
Message-ID: <1318144303.29415.364.camel@pasglop> (raw)
In-Reply-To: <40631E9A2581F14BA60888C87A76A1FE0147A1@HYD-MKD-MBX4.wipro.com>
On Tue, 2011-10-04 at 13:55 +0000, smitha.vanga@wipro.com wrote:
>
> Hi Scoot,
>
> When I try to use a atomic varaible in my ISR I see a kernel crash .
> with mesage BUG: scheduling while atomic:
>
>
>
> Below is the code :
> My ISR
>
> irqreturn_t cpld_irq_handler(int irq, void * dev_id, struct pt_regs
> *regs)
>
> {
>
> wake_up(&cpld_intr_wait);
>
> atomic_inc(&cpld_intr_data); /* incrementing this will indicate the
> poll() that the interrupt is occured */
>
> return 0;
>
> }
This is of course completely racy, you should do the increment -before-
you wake up. I suppose you aren't SMP at the moment but even then, if
you ever switch for example to threaded interrupts or use RT it will
potentially break.
>
> DRIVER_INIT
> static int __init gpio_init(void)
> {
> int ret = 0;
> int virq;
>
>
> atomic_set(&cpld_intr_data, 0); /* initialize
> the Interrupt indicator */
> init_waitqueue_head(&cpld_intr_wait); /* Initialize
> the wait queue */
>
> virq = irq_create_mapping(NULL, CPLD1_INTERRUPT);
See comments earlier about using the device-tree here.
>
> if ((ret = request_irq(virq,cpld_irq_handler, 0, GPIO_CHAR_PATH,
> NULL))!=0)
> {
> printk(KERN_ERR "gpio_init: Could not grab IRQ line for CPLD ret
> = %d\n",ret);
> goto err1;
> }
>
>
> if((s_nGPIOMajor = register_chrdev(MPC8247_DEVICE_MAJOR_NUM,
> GPIO_CHAR_PATH, &gpio_fops))<0)
> {
> GPIO_DBG2("GPIO_DRIVER : unable to get major %d\n",
> s_nGPIOMajor);
> return s_nGPIOMajor;
>
> }else{
> GPIO_DBG2("GPIO_DRIVER : major = %x\n", s_nGPIOMajor
> );
> }
coding style FAIL
> return 0;
>
> }
I don't see anything that does your scheduling while atomic here,
probably a bug in your poll implementation but it's not here.
Oh and stop sending that crap:
> Regards,
> Smitha
>
> Please do not print this email unless it is absolutely necessary.
>
> The information contained in this electronic message and any
> attachments to this message are intended for the exclusive use of the
> addressee(s) and may contain proprietary, confidential or privileged
> information. If you are not the intended recipient, you should not
> disseminate, distribute or copy this e-mail. Please notify the sender
> immediately and destroy all copies of this message and any
> attachments.
>
> WARNING: Computer viruses can be transmitted via email. The recipient
> should check this email and any attachments for the presence of
> viruses. The company accepts no liability for any damage caused by any
> virus transmitted by this email.
It's a complete nonsense on a public mailing list
Ben.
next prev parent reply other threads:[~2011-10-09 7:11 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-03 14:27 Request_irq fails for IRQ2 smitha.vanga
2011-10-03 17:24 ` Scott Wood
2011-10-04 6:15 ` smitha.vanga
2011-10-04 11:21 ` smitha.vanga
2011-10-04 15:30 ` Scott Wood
2011-10-09 7:07 ` Benjamin Herrenschmidt
2011-10-04 13:55 ` smitha.vanga
2011-10-09 7:11 ` Benjamin Herrenschmidt [this message]
2011-10-04 9:25 ` Vijay Nikam
-- strict thread matches above, loose matches on Subject: below --
2011-08-26 20:08 Kernel boot up Scott Wood
2011-10-03 12:31 ` Request_irq fails for IRQ2 smitha.vanga
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1318144303.29415.364.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=scottwood@freescale.com \
--cc=smitha.vanga@wipro.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).