Re: hda: irq timeout: status=0xd0 DMA question

From: Mark Lord
Date: Sun Feb 26 2006 - 09:06:56 EST


Nick Warne wrote:
..
Feb 19 14:05:31 quake kernel: hda: irq timeout: status=0xd0 { Busy }
Feb 19 14:05:31 quake kernel:
Feb 19 14:05:31 quake smartd[405]: Device: /dev/hda, not capable of SMART self-check
Feb 19 14:05:31 quake smartd[405]: Sending warning via mail to root@localhost ...
Feb 19 14:05:31 quake kernel: hda: status timeout: status=0xd0 { Busy }
Feb 19 14:05:31 quake kernel:
Feb 19 14:05:31 quake kernel: hda: DMA disabled
Feb 19 14:05:31 quake kernel: hda: drive not ready for command
Feb 19 14:05:33 quake kernel: ide0: reset: success
..
I dunno what happened to the drive that time (this is the only logs of the incident) and I turned DMA back on with hdparm - but my question is why is DMA turned off and then left off after a reset?

When I wrote that code in the mid-1990s, the number one causes of drives
getting confused (and needing to be reset again), were improper DMA timings,
cablings, and buggy DMA firmware.

So at the time, since DMA was a newish feature for IDE, we figured that
turning it off after reset was a Good Thing(tm).

And it was. A more modern implementation might try being more clever about
such stuff, and Tejun is working on something like that for libata.

In the meanwhile, you could have a shell script just loop in the background,
turning DMA back on periodically. If you care.

Cheers

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