linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Miller <davem@davemloft.net>
To: elendil@planet.nl
Cc: sparclinux@vger.kernel.org, linux-ide@vger.kernel.org,
	bzolnier@gmail.com
Subject: Re: cmd64x: irq 14: nobody cared - system is dreadfully slow
Date: Sun, 21 Jun 2009 18:56:21 -0700 (PDT)	[thread overview]
Message-ID: <20090621.185621.31766784.davem@davemloft.net> (raw)
In-Reply-To: <200906211446.38598.elendil@planet.nl>

From: Frans Pop <elendil@planet.nl>
Date: Sun, 21 Jun 2009 14:46:37 +0200

> I tried the following additional patch, but unfortunately that did not help:
> --- a/drivers/ide/cmd64x.c
> +++ b/drivers/ide/cmd64x.c
> @@ -426,6 +426,7 @@ static const struct ide_port_info cmd64x_chipsets[]
>  		.port_ops	= &cmd64x_port_ops,
>  		.dma_ops	= &cmd648_dma_ops,
>  		.host_flags	= IDE_HFLAG_ABUSE_PREFETCH,
> +		.irq_flags	= IRQF_SHARED,
>  		.pio_mask	= ATA_PIO5,
>  		.mwdma_mask	= ATA_MWDMA2,
>  		.udma_mask	= ATA_UDMA2,
> 
> I got the idea for that from 255115fb and had hoped it would compensate
> for this change from Bart's commit:

That won't help.  All PCI IDE interfaces unconditionally set the
irq_flags to IRQF_SHARED.  This occurs in drivers/ide/setup-pci.c
via ide_pci_init_one(), which calls ide_pci_init_two(), which goes:

	host->irq_flags = IRQF_SHARED;

The key to this bug seems to be the setting of host->cur_port when the
interrupts arrive.  That's really the only major case where the IDE
driver interrupt handler elides at least reading the status register
to clear the interrupt.

That's why clearing the IDE_HFLAG_SERIALIZE flag makes the initial
bulk of unclearable interrupts go away.

I suspect that whatever is causing trouble due to IDE_HFLAG_SERIALIZE
is also, down the road, causing the hdd problem you still see.

Can you apply this debugging patch and print out the output?

Thanks!

diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index 1059f80..8992fda 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -797,6 +797,25 @@ irqreturn_t ide_intr (int irq, void *dev_id)
 	int plug_device = 0;
 	struct request *uninitialized_var(rq_in_flight);
 
+#if 1
+	{
+		static int times = 0;
+		
+		if (++times <= 32)
+			goto no_log;
+
+		printk(KERN_INFO "IDE-DEBUG: host->host_flags[0x%lx] "
+		       "hwif(%p) host->cur_port(%p) "
+		       "hwif->port_ops(%pS) hwif->handler(%pS) "
+		       "hwif->polling(%d)\n",
+		       host->host_flags, hwif, host->cur_port,
+		       hwif->port_ops, hwif->handler, (int) hwif->polling);
+
+	no_log:
+		;
+	}
+#endif
+
 	if (host->host_flags & IDE_HFLAG_SERIALIZE) {
 		if (hwif != host->cur_port)
 			goto out_early;

  parent reply	other threads:[~2009-06-22  1:56 UTC|newest]

Thread overview: 57+ 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 [this message]
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
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-08-01  5:46                     ` David Miller
2009-08-05 20:43                     ` [stable] " Greg KH
2009-06-21 13:15   ` 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 17:03               ` Jeff Garzik
2009-06-22 17:11                 ` Alan Cox
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=20090621.185621.31766784.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=bzolnier@gmail.com \
    --cc=elendil@planet.nl \
    --cc=linux-ide@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 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).