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 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.