Re: PATA DMA problem leading to kernel panic on reading movie DVDs

From: Bartlomiej Zolnierkiewicz
Date: Tue May 19 2009 - 15:26:36 EST


On Tuesday 19 May 2009 20:29:28 Martin Lottermoser wrote:
> Hello,
>
> On Tue, May 19, 2009 at 05:19:35PM +0200, Bartlomiej Zolnierkiewicz wrote:
> > Subject: [PATCH] ide: fix 40-wire cable detection for TSST SH-S202* ATAPI devices
>
> I'm sorry, but that also generated a panic, looking identical to the
> behaviour as for the unpatched 2.6.30-rc6.
>
> After booting the patched kernel, the syslog file showed:
>
> hdc: UDMA/66 mode selected
>
> "hdparm -I" reported that the drive was set to "udma4". On accessing the DVD,
> the kernel panicked. Here's the main output from netconsole:
>
> hdc: cdrom_decode_status: error=0x40 <3>{ LastFailedSense=0x04 }
> ide: failed opcode was: unknown
> hdc: DMA disabled
> ------------[ cut here ]------------
> kernel BUG at drivers/ide/ide-io.c:872!
> invalid opcode: 0000 [#1]
> last sysfs file: /sys/devices/pci0000:00/0000:00:1f.1/ide1/1.0/block/hdc/size
>
> After booting the kernel and before doing the test I had checked with
> "uname -a" that this really was the newly compiled kernel. After reboot I
> checked that ide-iops.o existed and had a modification time later than the
> moment I applied your patch. Also, the new vmlinuz is 64 bytes shorter than
> the unpatched one. Therefore I don't think I made some silly mistake which
> led to the patch being ignored.

You didn't. I did.

Incremental patch fixing it:

diff -u b/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
--- b/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -255,7 +255,7 @@
if (ivb) {
const char *model = (char *)&id[ATA_ID_PROD];

- if (strcmp("TSSTcorp CDDVDW SH-S202", model) == 0) {
+ if (strstr("TSSTcorp CDDVDW SH-S202", model)) {
/*
* These ATAPI devices always report 80c cable
* so we have to depend on the host in this case.


> The offer for testing patches remains open :-).

We will get there. ;-)

I've reproduced the problem and I'm testing the fix currently...

Thanks,
Bart
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/