All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Lottermoser <Martin.Lottermoser@t-online.de>
To: linux-kernel@vger.kernel.org
Subject: PATA DMA problem leading to kernel panic on reading movie DVDs
Date: Sun, 17 May 2009 11:12:24 +0200	[thread overview]
Message-ID: <20090517091224.GA8280@wanza.invalid> (raw)

Hello,

newer versions of the Linux kernel overestimate my DVD drive's
DMA capabilities, leading either to DMA being disabled or a kernel
panic.

My setup is:

  Motherboard: ASUS P4C800-E Deluxe
    South bridge: ICH5R
      IDE Interface Controller (PATA): Intel 82801EB/ER (PCI: 8086:24db)
  DVD drive: Samsung SH-S202N, attached as hdc.
    There is also an older CD writer (Lite-On LTR-52327S) attached as
    hdd.
  Operating system: Debian 5.0.0 with security updates

On upgrading from Debian 4.0 (Linux 2.6.18) to 5.0 (Linux 2.6.26) I
found that trying to play movie DVDs with vlc (VideoLAN media player)
led to DMA being disabled:

  hdc: cdrom_decode_status: status=0x51 { DriveReady SeekComplete Error }
  hdc: cdrom_decode_status: error=0x40 { LastFailedSense=0x04 }
  ide: failed opcode was: unknown
  <4 more identical groups of these messages>
  hdc: DMA disabled
  hdc: ide_intr: huh? expected NULL handler on exit
  hdc: ATAPI reset complete

The resulting configuration is too slow to play movies. I booted the
older kernel and everything was fine.

I then tested various versions of the Linux kernel where I happened to
have the original sources. The most interesting results were:

  2.6.22.9      works, no errors visible in syslog
  2.6.23.14     works, but syslog shows an error (see below)
  2.6.24.3	DMA disabled
  2.6.29.3	Kernel panic: Fatal exception in interrupt (ide_intr)
                on trying to open the DVD with vlc

The error message with 2.6.23.14 was:

  hdc: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
  hdc: drive_cmd: error=0x04 { AbortedCommand }
  ide: failed opcode was: 0xec

This kernel as well as 2.6.22.9 also showed the following on booting:

  hdc: host side 80-wire cable detection failed, limiting max speed to UDMA33

This is correct: the drive is only capable of Ultra DMA mode 2 33.3 MB/s
(see manufacturer's documentation) and is attached with a standard 40-wire
ATA cable (black connectors for master and slave).

This led me to inspect other boot messages. With 2.6.18.3 I found:

  hdc: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(33)

2.6.24.3 showed:

  hdc: UDMA/66 mode selected
  ...
  hdc: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache

In contrast, the hdd drive shows up with "UDMA/33 mode selected" up to
and including 2.6.29.3.

I now use "hdparm -d1 -X udma2 /dev/hdc" with the Debian kernel 2.6.26
and the drive works as desired. However, when querying the drive's
capabilities with "hdparm -I", although the command terminates
successfully and without any error messages (it shows

  DMA: mdma0 mdma1 mdma2 udma0 udma1 *udma2 udma3 udma4

), on inspecting the syslog I find, on each invocation, a similar
error message as above with 2.6.23.14:

  hdc: task_in_intr: status=0x51 { DriveReady SeekComplete Error }
  hdc: task_in_intr: error=0x04 { AbortedCommand }
  ide: failed opcode was: 0xec

Interestingly enough, this happens also when calling "hdparm -I" on hdd.
There are also error messages

  hdc: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }
  hdc: set_drive_speed_status: error=0x04 { AbortedCommand }
  ide: failed opcode was: unknown

from the boot phase.

Therefore there is still something wrong. Any suggestions on what that
is and how to fix it? (Answers preferably through "Cc:", but I'll also
try and follow the thread through list archives.)

Martin Lottermoser
--
Martin Lottermoser             Martin.Lottermoser at _REMOVE_t-online.de
Greifswaldstrasse 28
38124 Braunschweig             http://home.vrweb.de/martin.lottermoser
Germany

             reply	other threads:[~2009-05-17  9:30 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-17  9:12 Martin Lottermoser [this message]
2009-05-17 10:42 ` PATA DMA problem leading to kernel panic on reading movie DVDs Borislav Petkov
2009-05-17 11:15   ` Martin Lottermoser
2009-05-17 12:14     ` Martin Lottermoser
2009-05-17 19:34       ` Borislav Petkov
2009-05-17 19:45         ` Bartlomiej Zolnierkiewicz
2009-05-17 19:50           ` Borislav Petkov
2009-05-17 20:18             ` Bartlomiej Zolnierkiewicz
2009-05-17 20:30               ` Borislav Petkov
2009-05-17 22:48                 ` Bartlomiej Zolnierkiewicz
2009-05-18  6:32                   ` Borislav Petkov
2009-05-17 17:59 ` Robert Hancock
2009-05-17 19:35   ` Bartlomiej Zolnierkiewicz
2009-05-17 20:18     ` Martin Lottermoser
2009-05-18 16:40     ` Martin Lottermoser
2009-05-18 19:12     ` Martin Lottermoser
2009-05-19 15:19       ` Bartlomiej Zolnierkiewicz
2009-05-19 18:29         ` Martin Lottermoser
2009-05-19 19:30           ` Bartlomiej Zolnierkiewicz
2009-05-19 21:11             ` Bartlomiej Zolnierkiewicz
2009-05-19 21:12             ` Martin Lottermoser
2009-05-19 21:31               ` Bartlomiej Zolnierkiewicz

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=20090517091224.GA8280@wanza.invalid \
    --to=martin.lottermoser@t-online.de \
    --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 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.