All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Sverdlin <asv@sysgo.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	David Daney <ddaney@caviumnetworks.com>,
	Venkat Subbiah <venkat.subbiah@cavium.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Possible race in request_irq() (__setup_irq())
Date: Fri, 25 May 2012 16:01:29 +0200	[thread overview]
Message-ID: <4FBF90B9.7010902@sysgo.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1205161512270.3231@ionos>

Hello Thomas, David, Venkat,

On 05/16/2012 03:44 PM, Thomas Gleixner wrote:
> Your irq is using handle_percpu_irq() as the flow handler.
> 
> handle_percpu_irq() is a special flow handler which does not take the
> irq descriptor lock for performance reasons. It's a single interrupt
> number which has a percpu dev_id and can be handled on all cores in
> parallel.
> 
> The interrupts need to be marked as such and requested with
> request_percpu_irq(). Those interrupts are either marked as
> NOAUTOENABLE or set up by the low level setup code, which runs on the
> boot cpu with interrupt enabled.
> 
> Those interrupts are marked as percpu and can only be requested with
> request_percpu_irq().
> 

Could someone comment please, why exactly this happens in current linux-next for Octeon:

In arch/mips/cavium-octeon/octeon-irq.c MBOX IRQs are set up to be handled by handle_percpu_irq():

static void __init octeon_irq_init_ciu(void)
{
...
	octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX0, 0, 32, chip_mbox, handle_percpu_irq);
	octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX1, 0, 33, chip_mbox, handle_percpu_irq);

But in arch/mips/cavium-octeon/smp.c it's requested as normal IRQ:

void octeon_prepare_cpus(unsigned int max_cpus)
{
...
	if (request_irq(OCTEON_IRQ_MBOX0, mailbox_interrupt,
			IRQF_PERCPU | IRQF_NO_THREAD, "SMP-IPI",
			mailbox_interrupt)) {
		panic("Cannot request_irq(OCTEON_IRQ_MBOX0)");
	}

Is it a bug, or some kind of special case?

-- 
Best regards,
Alexander Sverdlin.

  parent reply	other threads:[~2012-05-25 14:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-16 12:34 Possible race in request_irq() (__setup_irq()) Alexander Sverdlin
2012-05-16 13:44 ` Thomas Gleixner
2012-05-21  7:47   ` Alexander Sverdlin
2012-05-25 14:01   ` Alexander Sverdlin [this message]
2012-05-25 14:22     ` Thomas Gleixner
2012-05-25 16:24     ` David Daney

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=4FBF90B9.7010902@sysgo.com \
    --to=asv@sysgo.com \
    --cc=ddaney@caviumnetworks.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=venkat.subbiah@cavium.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.