From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: bugzilla-daemon@bugzilla.kernel.org
Cc: linux-ide@vger.kernel.org
Subject: Re: [Bug 13399] kernel crash SONY DVD-ROM with cd
Date: Sat, 13 Jun 2009 18:59:53 +0200 [thread overview]
Message-ID: <200906131859.54080.bzolnier@gmail.com> (raw)
In-Reply-To: <200906131629.n5DGT7LL020589@demeter.kernel.org>
On Saturday 13 June 2009 18:29:07 bugzilla-daemon@bugzilla.kernel.org wrote:
> http://bugzilla.kernel.org/show_bug.cgi?id=13399
>
>
>
>
>
> --- Comment #20 from Borislav Petkov <bbpetkov@yahoo.de> 2009-06-13 16:29:05 ---
> Hi Bart,
>
> thanks for analyzing this.
>
> I'm staring at the ATA_DRQ == 0 part in cdrom_newpc_intr:
>
> } else if (!blk_pc_request(rq)) {
> ide_cd_request_sense_fixup(drive, cmd);
> /* complain if we still have data left to transfer */
> uptodate = cmd->nleft ? 0 : 1;
> if (uptodate == 0)
> rq->cmd_flags |= REQ_FAILED;
> }
> goto out_end;
> }
>
> so, in our case ide_cd_error_cmd() kills the rq prematurely and that's
> why ide_complete_rq() oopses later. And this is caused by uptodate ==
Nope, it is block layer that kills it prematurely.
There are two issues here:
* OOPS (*the*regression* which should be taken care of first)
(cause: unexpected interaction between ide/block)
* handling of non-fully completed requests with "good" status
(cause: stupid hardware)
> 0. Now, here's how the ATA spec (d1532v1r4b-ATA-ATAPI-7) describes the
> semantics of clearing of the DRQ bit by the drive:
>
> "
> 5.14.5.5 DRQ (Data request)
>
> ...
>
> The DRQ bit shall be cleared to zero by the device:
> 1) when the last word of the data transfer occurs;
> 2) when the last word of the command packet transfer occurs for a
> PACKET command.
> "
>
> now there's a subtlety here wrt to what am I to do as an IRQ handler
> when my drive clears the DRQ bit: do I _drain_ the last bytes remaining
> (in our case 2) or do I fail the rq straightaway. I'm pretty sure
> cmd->nleft is 2 in our case so I think that it might be only right to
> drain the device first, i.e. do
>
> uptodate = (cmd->nleft - thislen) ? 0 : 1;
>
> and then later ide_pio_bytes() before completing the rq properly. Hmm?
We should drain only if the device really wants to transfer more data...
cmd->nleft is our concept, thislen reflects the hardware state.
> And yes, this is against spec since the following sentence states that
> the data can be drained only "... via DMA mode if DMARQ and DMACK- are
> asserted and BSY is set to one." but we should give it a try...
>
> Ideas? Opinions?
Yes. Please stop reading this stupid ATAPI spec, it is near to worthless
when it comes to the real hardware implementations/bugs..
next prev parent reply other threads:[~2009-06-13 16:54 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-28 16:54 [Bug 13399] New: kernel crash SONY DVD-ROM with cd bugzilla-daemon
2009-05-28 17:07 ` [Bug 13399] " bugzilla-daemon
2009-05-29 7:25 ` bugzilla-daemon
2009-06-04 17:23 ` bugzilla-daemon
2009-06-05 7:05 ` bugzilla-daemon
2009-06-05 13:51 ` bugzilla-daemon
2009-06-05 13:52 ` bugzilla-daemon
2009-06-05 13:52 ` bugzilla-daemon
2009-06-05 13:54 ` bugzilla-daemon
2009-06-05 13:55 ` bugzilla-daemon
2009-06-05 13:57 ` bugzilla-daemon
2009-06-06 19:35 ` bugzilla-daemon
2009-06-06 19:37 ` bugzilla-daemon
2009-06-08 16:05 ` bugzilla-daemon
2009-06-08 16:05 ` bugzilla-daemon
2009-06-08 16:06 ` bugzilla-daemon
2009-06-08 16:06 ` bugzilla-daemon
2009-06-08 16:07 ` bugzilla-daemon
2009-06-08 16:07 ` bugzilla-daemon
2009-06-09 5:31 ` bugzilla-daemon
2009-06-09 14:22 ` bugzilla-daemon
2009-06-09 15:57 ` bugzilla-daemon
2009-06-09 17:11 ` bugzilla-daemon
2009-06-09 17:12 ` bugzilla-daemon
2009-06-10 11:18 ` Bartlomiej Zolnierkiewicz
2009-06-10 11:14 ` bugzilla-daemon
2009-06-13 16:29 ` bugzilla-daemon
2009-06-13 16:59 ` Bartlomiej Zolnierkiewicz [this message]
2009-06-14 10:06 ` Borislav Petkov
2009-06-14 12:32 ` Bartlomiej Zolnierkiewicz
2009-06-14 13:02 ` Borislav Petkov
2009-06-15 6:27 ` Borislav Petkov
2009-06-13 16:54 ` bugzilla-daemon
2009-06-14 10:06 ` bugzilla-daemon
2009-06-14 12:27 ` bugzilla-daemon
2009-06-14 13:02 ` bugzilla-daemon
2009-06-15 6:28 ` bugzilla-daemon
2009-06-15 16:20 ` bugzilla-daemon
2009-06-15 16:23 ` bugzilla-daemon
2009-06-15 17:47 ` bugzilla-daemon
2009-06-16 6:28 ` bugzilla-daemon
2009-06-16 6:29 ` bugzilla-daemon
2009-06-16 15:45 ` bugzilla-daemon
2009-06-18 8:19 ` bugzilla-daemon
2009-06-18 12:12 ` bugzilla-daemon
2009-06-18 13:36 ` bugzilla-daemon
2009-06-18 16:22 ` bugzilla-daemon
2009-06-19 4:31 ` bugzilla-daemon
2009-06-19 4:35 ` bugzilla-daemon
2009-06-19 4:37 ` bugzilla-daemon
2009-06-22 6:37 ` bugzilla-daemon
2009-06-22 8:03 ` bugzilla-daemon
2009-06-22 8:04 ` bugzilla-daemon
2009-06-22 15:23 ` bugzilla-daemon
2009-06-22 15:25 ` bugzilla-daemon
2009-06-22 15:49 ` bugzilla-daemon
2009-06-23 4:07 ` bugzilla-daemon
2009-06-23 5:37 ` bugzilla-daemon
2009-06-23 5:37 ` bugzilla-daemon
2009-06-24 20:47 ` bugzilla-daemon
2009-06-25 10:02 ` bugzilla-daemon
2009-07-03 12:09 ` bugzilla-daemon
2009-09-10 12:03 ` bugzilla-daemon
2009-09-10 12:24 ` bugzilla-daemon
2009-09-10 13:20 ` bugzilla-daemon
2009-09-10 13:23 ` bugzilla-daemon
2009-09-11 5:45 ` bugzilla-daemon
2009-09-11 5:49 ` bugzilla-daemon
2009-09-11 15:04 ` bugzilla-daemon
2009-09-17 6:39 ` bugzilla-daemon
2009-09-17 6:47 ` bugzilla-daemon
2009-09-17 6:57 ` bugzilla-daemon
2009-09-26 6:10 ` bugzilla-daemon
2009-09-27 16:19 ` bugzilla-daemon
2009-09-27 16:52 ` bugzilla-daemon
2010-01-19 21:50 ` bugzilla-daemon
2010-01-19 22:52 ` bugzilla-daemon
[not found] <bug-13399-11633@https.bugzilla.kernel.org/>
2010-11-30 8:54 ` bugzilla-daemon
2011-02-06 15:45 ` bugzilla-daemon
2011-02-06 15:46 ` bugzilla-daemon
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=200906131859.54080.bzolnier@gmail.com \
--to=bzolnier@gmail.com \
--cc=bugzilla-daemon@bugzilla.kernel.org \
--cc=linux-ide@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).