mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: "Fernando Luis Vázquez Cao" <fernando@oss.ntt.co.jp>
Cc: linux-kernel@vger.kernel.org, kexec@lists.infradead.org
Subject: Re: [PATCH RFC] Debug handling of early spurious interrupts
Date: Wed, 18 Jul 2007 15:46:59 -0700	[thread overview]
Message-ID: <20070718154659.c8b5ffea.akpm@linux-foundation.org> (raw)
In-Reply-To: <1184666997.5271.5.camel@sebastian.kern.oss.ntt.co.jp>

On Tue, 17 Jul 2007 19:09:57 +0900
Fernando Luis V__zquez Cao <fernando@oss.ntt.co.jp> wrote:

> With the advent of kdump it is possible that device drivers receive
> interrupts generated in the context of a previous kernel. Ideally
> quiescing the underlying devices should suffice but not all drivers
> do this, either because it is not possible or because they did not
> contemplate this case. Thus drivers ought to be able to handle
> interrupts coming in as soon as the interrupt handler is registered.
> 
> Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
> ---
> 
> diff -urNp linux-2.6.22-orig/kernel/irq/manage.c linux-2.6.22/kernel/irq/manage.c
> --- linux-2.6.22-orig/kernel/irq/manage.c	2007-07-09 08:32:17.000000000 +0900
> +++ linux-2.6.22/kernel/irq/manage.c	2007-07-17 18:37:24.000000000 +0900
> @@ -537,6 +537,29 @@ int request_irq(unsigned int irq, irq_ha
>  
>  	select_smp_affinity(irq);
>  
> +#if defined(CONFIG_DEBUG_PENDING_IRQ) || defined(CONFIG_DEBUG_SHIRQ)
> +#ifndef CONFIG_DEBUG_PENDING_IRQ
> +	if (irqflags & IRQF_SHARED) {
> +		/*
> +		 * It's a shared IRQ -- the driver ought to be prepared for it
> +		 * to happen immediately, so let's make sure....
> +		 * We do this before actually registering it, to make sure that
> +		 * a 'real' IRQ doesn't run in parallel with our fake.
> +		 */
> +#endif /* !CONFIG_DEBUG_PENDING_IRQ */
> +		if (irqflags & IRQF_DISABLED) {
> +			unsigned long flags;
> +
> +			local_irq_save(flags);
> +			handler(irq, dev_id);
> +			local_irq_restore(flags);
> +		} else
> +			handler(irq, dev_id);
> +#ifndef CONFIG_DEBUG_PENDING_IRQ
> +	}
> +#endif /* !CONFIG_DEBUG_PENDING_IRQ */
> +#endif /* CONFIG_DEBUG_PENDING_IRQ || CONFIG_DEBUG_SHIRQ */

Even if we were going to merge this functionality as-is, I'd ask for some
sort of refactoring to fix up that ifdef maze.

But more substantial issues:

- This is presented as a "debug" feature, but it isn't a debug feature at
  all - it is new functionality which is unrelated to kernel development.

  Also, it is a "debug" feature which provides no debugging!  At the very
  least, one would expect to see it emit a printk to tell people that we
  have some driver which needs fixing.

  Also, this not-really-a-debug-feature is undesirably coupled with a
  real debugging feature: CONFIG_DEBUG_PENDING_IRQ.

- Does this new feature really need its own Kconfig setting?  Why not enable
  it unconditionally?  request_irq() isn't exactly performance-critical.

- If poss, we really do want to find some way of emitting a warning when
  we detect such a device driver.  Like, call the handler and if it
  returned IRQ_HANDLED, start shouting.



  reply	other threads:[~2007-07-18 22:47 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-17 10:09 Fernando Luis Vázquez Cao
2007-07-18 22:46 ` Andrew Morton [this message]
2007-07-20  1:54   ` Fernando Luis Vázquez Cao
2007-07-20  2:02     ` [PATCH 1/2] Remove Kconfig setting CONFIG_DEBUG_SHIRQ Fernando Luis Vázquez Cao
2007-07-20  2:20       ` [PATCH 2/2] Debug handling of early spurious interrupts Fernando Luis Vázquez Cao
2007-07-20 21:43         ` Andrew Morton
2007-07-30  9:58           ` Fernando Luis Vázquez Cao
2007-07-30 18:22             ` Andrew Morton
2007-07-31  2:25               ` Fernando Luis Vázquez Cao
2007-07-31  4:46                 ` Andrew Morton
2007-07-25  9:18         ` [PATCH RFC] e1000: clear ICR before requesting an IRQ line Fernando Luis Vázquez Cao
2007-07-25 15:27           ` Kok, Auke
2007-07-26  1:34             ` Fernando Luis Vázquez Cao

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=20070718154659.c8b5ffea.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=fernando@oss.ntt.co.jp \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /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

Powered by JetHome