From: bugzilla-daemon@bugzilla.kernel.org
To: linux-ide@vger.kernel.org
Subject: [Bug 13399] kernel crash SONY DVD-ROM with cd
Date: Mon, 15 Jun 2009 06:28:03 GMT [thread overview]
Message-ID: <200906150628.n5F6S3AT027506@demeter.kernel.org> (raw)
In-Reply-To: <bug-13399-11633@http.bugzilla.kernel.org/>
http://bugzilla.kernel.org/show_bug.cgi?id=13399
--- Comment #25 from Anonymous Emailer <anonymous@kernel-bugs.osdl.org> 2009-06-15 06:28:02 ---
Reply-To: petkovbb@googlemail.com
Hi,
here's a yet another analysis:
issue GPCMD_READ_DISC_INFO
ide-cd: ide_cd_queue_pc: cmd[0]: 0x51, write: 0x0, timeout: 1750, cmd_flags:
0x8000
ide-cd: ide_cd_do_request: cmd: 0x51, block: 18446744073709551615
ide_cd_do_request: dev hda: type=a, flags=108a640
sector 18446744073709551615, nr/cnr 0/0
bio (null), biotail (null), buffer (null), data ffff88011b849ba0, len 32
ide-cd: cdrom_do_block_pc: rq->cmd[0]: 0x51, rq->cmd_type: 0xa
ide-cd: cdrom_newpc_intr: cmd: 0x51, write: 0x0
DRQ set, read 30 bytes
ide-cd: cdrom_newpc_intr: DRQ: stat: 0x58, thislen: 30
ide-cd: ide_cd_check_ireason: ireason: 0x2, rw: 0x0
ide-cd: cdrom_newpc_intr: data transfer, rq->cmd_type: 0xa, ireason: 0x2
xfer 30 bytes and rearm IRQ handler with a timeout
ide-cd: cdrom_newpc_intr: cmd: 0x51, write: 0x0
second IRQ, DRQ is cleared, read 2 bytes
ide-cd: cdrom_newpc_intr: DRQ: stat: 0x50, thislen: 2
ide-cd: ide_cd_request_sense_fixup: rq->cmd[0]: 0x51
#3
here we do "goto out_end" instead of xferring the remaining 2 bytes
out of the drive. So how about something like the workaround below, I
haven't tested it on the real drive. Wrt to the ide_cd_error_cmd(), I
guess the proper fix is to check the rq->bio thing because the rq is
going to be ended anyways.
@Hans: can you please test applying it ontop of the debugging patch and
sending the output again, thanks.
---
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 6f728da..716a576 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -680,10 +680,19 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t
*drive)
}
} 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;
+ if (uptodate == 0) {
+ if (drive->atapi_flags & IDE_AFLAG_FRAG_CMD) {
+ ide_pio_bytes(drive, cmd, write,
+ cmd->nleft);
+ uptodate = (cmd->nleft - thislen) ? 0
+ : 1;
+ }
+ if (!uptodate)
+ rq->cmd_flags |= REQ_FAILED;
+ }
}
pr_err("#3\n");
goto out_end;
@@ -764,7 +773,7 @@ out_end:
rq->errors = -EIO;
}
- if (uptodate == 0)
+ if (uptodate == 0 && rq->bio)
ide_cd_error_cmd(drive, cmd);
/* make sure it's fully ended */
@@ -1554,6 +1563,11 @@ static const struct cd_list_entry ide_cd_quirks_list[] =
{
{ "Optiarc DVD RW AD-7200A", NULL, IDE_AFLAG_PLAY_AUDIO_OK },
{ "Optiarc DVD RW AD-7543A", NULL, IDE_AFLAG_NO_AUTOCLOSE },
{ "TEAC CD-ROM CD-224E", NULL, IDE_AFLAG_NO_AUTOCLOSE },
+ /*
+ * some drives clear the DRQ bit on the last word of a packet command
+ * and therefore need some special handling in the IRQ handler
+ */
+ { "SONY DVD-ROM DDU1615", NULL, IDE_AFLAG_FRAG_CMD },
{ NULL, NULL, 0 }
};
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 9fed365..e18b455 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -456,6 +456,9 @@ enum {
IDE_AFLAG_MEDIUM_PRESENT = (1 << 23),
IDE_AFLAG_NO_AUTOCLOSE = (1 << 24),
+
+ /* ide-cd quirk */
+ IDE_AFLAG_FRAG_CMD = (1 << 25),
};
/* device flags */
--
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
next prev parent reply other threads:[~2009-06-15 6:28 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
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 [this message]
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=200906150628.n5F6S3AT027506@demeter.kernel.org \
--to=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).