From: Jens Axboe <axboe@suse.de>
To: Martin Dalecki <dalecki@evision-ventures.com>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: hda: error: DMA in progress..
Date: Fri, 21 Jun 2002 12:12:02 +0200 [thread overview]
Message-ID: <20020621101202.GF27090@suse.de> (raw)
In-Reply-To: <3D12FA4D.6060500@evision-ventures.com>
On Fri, Jun 21 2002, Martin Dalecki wrote:
> U?ytkownik Jens Axboe napisa?:
> >Martin,
> >
> >I gave 2.5.24 a spin, and it quickly dies with the error in subject,
> >under moderate disk load. It's an IBM travel star on a PIIX4.
> >
>
>
> if (test_bit(IDE_DMA, ch->active)) {
> printk(KERN_ERR "%s: error: DMA in progress...\n",
> drive->name);
> break;
> }
>
> Well I did the change we where talking about .waiting_for_dma ->
> xxx_bit(IDE_DMA.
Yeah I noticed.
> And I was asking about it's possible interactions with TCQ.
Haven't even tried TCQ yet, the above is just plain dma (no travelstarts
can do tcq).
> And now we see that it is indeed apparently really interacting with
> the TCQ code in bad ways. But if I look down from the above code (Just
> below in ide.c)
>
> if (blk_queue_plugged(&drive->queue)) {
> BUG_ON(!drive->using_tcq);
> break;
> }
>
> It seems like the check which is catching reality right now
> is bogous in itself. Becouse having DMA running would be
> only problematic if the queue was still plugged. (Right?)
> So please just disable the check.
Not exactly, let me see if I remember the race here... The queue can
become plugged when we queue one request with the drive (the only on the
queue at that time), and then try to queue another right after (hence
only a tcq issue). In that time period, we drop the queue lock, so it's
indeed possible for the block layer to plug the queue before we reach
the above code again. The drive can be in two states here, 1) IDE_DMA is
set because the drive didn't release the bus (or it did, and it already
reconnected), or 2) drive is disconnected from the bus.
For non-tcq, hitting IDE_DMA set queue_commands() is a bug. The old
IDE_BUSY/IDE_DMA worked because IDE_DMA must not be set if IDE_BUSY is
not set.
> This time it's no new damage - just detecting weak code
> from the past...
Smells like new breakage to me :-)
--
Jens Axboe
next prev parent reply other threads:[~2002-06-21 10:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-06-21 9:24 hda: error: DMA in progress Jens Axboe
2002-06-21 10:05 ` Martin Dalecki
2002-06-21 10:12 ` Jens Axboe [this message]
2002-06-21 10:28 ` Jens Axboe
2002-06-21 10:31 ` Martin Dalecki
2002-06-21 10:35 ` Jens Axboe
2002-06-21 11:10 ` Martin Dalecki
2002-06-21 14:57 ` Stelian Pop
2002-06-24 8:54 ` Stelian 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=20020621101202.GF27090@suse.de \
--to=axboe@suse.de \
--cc=dalecki@evision-ventures.com \
--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