All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: Frans Pop <elendil@planet.nl>
Cc: David Miller <davem@davemloft.net>,
	sparclinux@vger.kernel.org, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: cmd64x: irq 14: nobody cared - system is dreadfully slow
Date: Mon, 22 Jun 2009 13:21:37 +0200	[thread overview]
Message-ID: <200906221321.44672.bzolnier@gmail.com> (raw)
In-Reply-To: <200906220843.14337.elendil@planet.nl>

On Monday 22 June 2009 08:43:13 Frans Pop wrote:
> On Monday 22 June 2009, David Miller wrote:
> > Some things other than the commit in question have changed in the area
> > of interrupt and chip initialization and I'll try to go through
> > the commits to get some clues.
> 
> Great.
> 
> JFTR, here's the full output of your debug print. All 32 prints are
> identical and the "nobody cared" is printed immediately after.
> No really new info I guess...

Frans, here is a draft fix (sorry for not being able to finish it yesterday
so we could potentially close the issue within 24h of the initial report).

From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH] ide: fix handling of unexpected IRQs vs request_irq()

Add ide_host_enable_irqs() helper and use it in ide_host_register()
before registering ports.  Then remove no longer needed IRQ unmasking
from in init_irq().

This should fix the problem with "screaming" shared IRQ on the first
port (after request_irq() call while we have the unexpected IRQ pending
on the second port) which was uncovered by my rework of the serialized
interfaces support.

Cc: David Miller <davem@davemloft.net>
Reported-by: Frans Pop <elendil@planet.nl>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
David, if it doesn't work I think that the next thing to look into is
the change of nIEN setting itself (some devices are just buggy and may
generate spurious IRQs on such operation).

Alternatively you can fix the issue quickly be extending the coverage of
the recently added IDE_PFLAG_PROBING port flag and testing for the flag
inside ide_intr().

 drivers/ide/ide-probe.c |   23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

Index: b/drivers/ide/ide-probe.c
===================================================================
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -818,6 +818,24 @@ static int ide_port_setup_devices(ide_hw
 	return j;
 }
 
+static void ide_host_enable_irqs(struct ide_host *host)
+{
+	ide_hwif_t *hwif;
+	int i;
+
+	ide_host_for_each_port(i, hwif, host) {
+		if (hwif == NULL)
+			continue;
+
+		/* clear any pending IRQs */
+		hwif->tp_ops->read_status(hwif);
+
+		/* unmask IRQs */
+		if (hwif->io_ports.ctl_addr)
+			hwif->tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
+	}
+}
+
 /*
  * This routine sets up the IRQ for an IDE interface.
  */
@@ -831,9 +849,6 @@ static int init_irq (ide_hwif_t *hwif)
 	if (irq_handler == NULL)
 		irq_handler = ide_intr;
 
-	if (io_ports->ctl_addr)
-		hwif->tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS);
-
 	if (request_irq(hwif->irq, irq_handler, sa, hwif->name, hwif))
 		goto out_up;
 
@@ -1404,6 +1419,8 @@ int ide_host_register(struct ide_host *h
 			ide_port_tune_devices(hwif);
 	}
 
+	ide_host_enable_irqs(host);
+
 	ide_host_for_each_port(i, hwif, host) {
 		if (hwif == NULL)
 			continue;

  parent reply	other threads:[~2009-06-22 11:21 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-20 21:52 cmd64x: irq 14: nobody cared - system is dreadfully slow Frans Pop
2009-06-21  0:19 ` David Miller
2009-06-21  4:47   ` Frans Pop
2009-06-21 12:46   ` Frans Pop
2009-06-21 13:33     ` Bartlomiej Zolnierkiewicz
2009-06-21 20:14       ` Frans Pop
2009-06-22  1:56     ` David Miller
2009-06-22  4:28       ` Frans Pop
2009-06-22  5:45         ` David Miller
2009-06-22  6:43           ` Frans Pop
2009-06-22  6:44             ` David Miller
2009-06-22 11:21             ` Bartlomiej Zolnierkiewicz [this message]
2009-06-22 14:04               ` Frans Pop
2009-06-22 14:39                 ` Bartlomiej Zolnierkiewicz
2009-06-22 15:16                   ` Frans Pop
2009-06-22 17:38                     ` Bartlomiej Zolnierkiewicz
2009-06-22 19:01                       ` Frans Pop
2009-06-22 21:35                         ` Bartlomiej Zolnierkiewicz
2009-06-23  7:51                           ` [PATCH] ide-cd: Improve "weird block size" error message Frans Pop
2009-06-23  7:57                             ` Borislav Petkov
2009-06-23  8:02                               ` Borislav Petkov
2009-06-23 23:03                                 ` David Miller
2009-06-23  8:20                               ` Frans Pop
2009-06-23 10:59                             ` David Miller
2009-06-23 11:13                               ` Frans Pop
2009-06-23 11:18                                 ` David Miller
2009-06-23 21:30                               ` Frans Pop
2009-06-23 23:01                                 ` David Miller
2009-06-29 11:19                               ` Jan Engelhardt
2009-06-23 10:15                           ` cmd64x: irq 14: nobody cared - system is dreadfully slow David Miller
2009-06-23 14:58                             ` Frans Pop
2009-06-23 16:13                               ` Bartlomiej Zolnierkiewicz
2009-06-23 23:04                                 ` David Miller
2009-06-23 10:47                         ` David Miller
2009-06-23 10:43                 ` David Miller
2009-07-31 14:08                   ` Frans Pop
2009-07-31 14:08                     ` Frans Pop
2009-08-01  5:46                     ` David Miller
2009-08-01  5:46                       ` David Miller
2009-08-05 20:43                     ` [stable] " Greg KH
2009-08-05 20:43                       ` [stable] cmd64x: irq 14: nobody cared - system is dreadfully Greg KH
2009-06-21 13:15   ` cmd64x: irq 14: nobody cared - system is dreadfully slow Bartlomiej Zolnierkiewicz
2009-06-21 21:19     ` David Miller
2009-06-21 22:34       ` Bartlomiej Zolnierkiewicz
2009-06-21 22:57         ` David Miller
2009-06-21 23:13           ` New IDE maintainer (was Re: cmd64x: irq 14: nobody cared - system is dreadfully slow) David Miller
2009-06-21 23:45             ` Bartlomiej Zolnierkiewicz
2009-06-21 23:52               ` New IDE maintainer David Miller
2009-06-22  0:53               ` New IDE maintainer (was Re: cmd64x: irq 14: nobody cared - system is dreadfully slow) Matthew Wilcox
2009-06-22  0:00             ` Stephen Rothwell
2009-06-22  0:20               ` New IDE maintainer David Miller
2009-06-22  3:39             ` New IDE maintainer (was Re: cmd64x: irq 14: nobody cared - system is dreadfully slow) Greg Freemyer
2009-06-22  3:39               ` Greg Freemyer
2009-06-22 17:03               ` Jeff Garzik
2009-06-22 17:11                 ` Alan Cox
2009-06-22 17:21                   ` Arnd Bergmann
2009-06-22 17:21                     ` Arnd Bergmann
2009-06-22 17:32                     ` Alan Cox
2009-06-22  3:47         ` cmd64x: irq 14: nobody cared - system is dreadfully slow Frans Pop
2009-06-21 15:43   ` Bartlomiej Zolnierkiewicz
2009-06-21 21:21     ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2009-06-20 21:39 Frans Pop

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=200906221321.44672.bzolnier@gmail.com \
    --to=bzolnier@gmail.com \
    --cc=davem@davemloft.net \
    --cc=elendil@planet.nl \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sparclinux@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 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.