From: Karim Yaghmour <karim.yaghmour@kryptiva.com>
To: linux-kernel@vger.kernel.org
Subject: DMA issues w/ via82cxxx (OQO 02)
Date: Mon, 10 Mar 2008 18:43:42 -0400 [thread overview]
Message-ID: <47D5B99E.1010302@kryptiva.com> (raw)
----- KRYPTIVA PACKAGED MESSAGE -----
PACKAGING TYPE: SIGNED
I've been working on getting a decent Linux install working on the
OQO 02 for a few weeks. I ran into quite a few issues but have been
able to overcome most (like getting the OQO to display nice on a
DVI monitor ...); except for some DMA issues which I'd prefer
getting some advice over before I play around.
Unlike the 01, which was based on the Transmeta chip, the 02 is
based on a VIA C7M ULV (1.5GHz or 1.6Ghz depending on config) and
uses the CX700 as an all-in-one video/sound/IDE chip:
http://www.via.com.tw/en/products/chipsets/c-series/cx700/#blkdiagram
Overall it's a pretty decent device.
Getting a standard distro to work on it was a challenge. Ubuntu 7.10
won't install. For some reason the kernel doesn't like the hardware
too much (it hangs.) 7.04 does install, but it's got DMA issues. So
what I did was install 7.04 and "update" to 7.10 but use the 7.04
kernel until I got a 2.6.24.3 going. There's an unofficial patch
from OQO to solve the DMA issues with Linux which I ported to
2.6.24.3:
http://www.oqo.com/unsupported/linux/cx700-dma.patch
Full unofficial instructions here:
http://www.oqo.com/unsupported/linux/
Without this patch, the kernel continuously gets DMA timeouts. With
the patch, it works fine ... for a while. After a certain amount of
random time, some DMA timeouts will happen. Sometimes they are
relatively isolated. Other times, once they start they won't stop.
I've included samples at the bottom of this email.
Standard diagnostics on the disk show that it's fine, but somehow
the IDE controller is flaky. According to the following posts it
would seem that some hardware is slow to respond and the IDE code
gets "impatient":
http://lkml.org/lkml/2005/5/25/221
http://lkml.org/lkml/2005/5/26/176
Not sure whether the disk's slow RPM (4200) could be a factor in
the case of the OQO 02.
So I'm wondering if somebody could point me in the right direction.
Clearly the patch works for some time (i.e. no DMA timeouts) and
then timeouts start happening, possibly under heavy disk load. Is
there anything I could tweak to help or is this really a case of
unsupported hardware?
Any help would be greatly appreciated. Thanks,
Karim Yaghmour
Founder and CEO
Kryptiva inc.
Sample DMA errors (some reboots in between):
--------------------------------------------
Mar 3 09:27:22 localhost kernel: [ 3286.574721] hdc: dma_timer_expiry: dma status == 0x20
Mar 3 09:27:22 localhost kernel: [ 3286.574755] hdc: DMA timeout retry
Mar 3 09:27:22 localhost kernel: [ 3286.574770] hdc: timeout waiting for DMA
Mar 3 09:27:37 localhost kernel: [ 3292.347888] hdc: status timeout: status=0xd0 { Busy }
Mar 3 09:27:37 localhost kernel: [ 3292.347922] ide: failed opcode was: unknown
Mar 3 09:27:37 localhost kernel: [ 3292.347980] hdc: no DRQ after issuing MULTWRITE
Mar 3 09:27:38 localhost kernel: [ 3292.577621] ide1: reset: success
Mar 3 09:28:12 localhost kernel: [ 3305.208017] hdc: status timeout: status=0xd0 { Busy }
Mar 3 09:28:12 localhost kernel: [ 3305.208050] ide: failed opcode was: unknown
Mar 3 09:28:12 localhost kernel: [ 3305.208108] hdc: no DRQ after issuing MULTWRITE
Mar 3 09:28:13 localhost kernel: [ 3305.530337] ide1: reset: success
...
Mar 3 13:07:25 localhost kernel: [ 9202.335387] hdc: dma_timer_expiry: dma status == 0x20
Mar 3 13:07:25 localhost kernel: [ 9202.335419] hdc: DMA timeout retry
Mar 3 13:07:25 localhost kernel: [ 9202.335434] hdc: timeout waiting for DMA
Mar 3 13:07:25 localhost kernel: [ 9202.451339] hdc: status timeout: status=0xd0 { Busy }
Mar 3 13:07:25 localhost kernel: [ 9202.451363] ide: failed opcode was: unknown
Mar 3 13:07:25 localhost kernel: [ 9202.451420] hdc: no DRQ after issuing MULTWRITE
Mar 3 13:07:26 localhost kernel: [ 9202.707746] ide1: reset: success
Mar 3 13:07:35 localhost kernel: [ 2301.996646] hdc: status timeout: status=0xd0 { Busy }
Mar 3 13:07:35 localhost kernel: [ 2301.996658] ide: failed opcode was: unknown
Mar 3 13:07:35 localhost kernel: [ 2301.997984] hdc: no DRQ after issuing MULTWRITE
Mar 3 13:07:35 localhost kernel: [ 2302.044409] ide1: reset: success
Mar 3 13:07:36 localhost kernel: [ 2302.164272] hdc: status timeout: status=0xd0 { Busy }
Mar 3 13:07:36 localhost kernel: [ 2302.164282] ide: failed opcode was: unknown
Mar 3 13:07:36 localhost kernel: [ 2302.164317] hdc: no DRQ after issuing MULTWRITE
Mar 3 13:07:36 localhost kernel: [ 2302.691800] ide1: reset: success
...
Mar 4 01:27:41 localhost kernel: [18212.360790] hdc: dma_timer_expiry: dma status == 0x20
Mar 4 01:27:41 localhost kernel: [18212.360824] hdc: DMA timeout retry
Mar 4 01:27:41 localhost kernel: [18212.360840] hdc: timeout waiting for DMA
Mar 4 01:28:51 localhost kernel: [18300.035293] hdc: dma_timer_expiry: dma status == 0x20
Mar 4 01:28:51 localhost kernel: [18300.035327] hdc: DMA timeout retry
Mar 4 01:28:51 localhost kernel: [18300.035343] hdc: timeout waiting for DMA
Mar 4 01:50:07 localhost kernel: [20852.223010] hdc: dma_timer_expiry: dma status == 0x20
Mar 4 01:50:07 localhost kernel: [20852.223045] hdc: DMA timeout retry
Mar 4 01:50:07 localhost kernel: [20852.223061] hdc: timeout waiting for DMA
...
Mar 4 14:29:30 localhost kernel: [ 379.409774] hdc: dma_timer_expiry: dma status == 0x20
Mar 4 14:29:30 localhost kernel: [ 379.409788] hdc: DMA timeout retry
Mar 4 14:29:30 localhost kernel: [ 379.409792] hdc: timeout waiting for DMA
Mar 4 14:29:30 localhost kernel: [ 379.410047] hdc: status error: status=0x51 { DriveReady SeekComplete Error }
Mar 4 14:29:30 localhost kernel: [ 379.410056] hdc: status error: error=0x04 { DriveStatusError }
Mar 4 14:29:30 localhost kernel: [ 379.410063] ide: failed opcode was: unknown
Mar 4 14:29:30 localhost kernel: [ 379.410070] hdc: no DRQ after issuing MULTWRITE
Mar 4 14:29:30 localhost kernel: [ 379.421243] hdc: status error: status=0x51 { DriveReady SeekComplete Error }
Mar 4 14:29:30 localhost kernel: [ 379.421251] hdc: status error: error=0x04 { DriveStatusError }
Mar 4 14:29:30 localhost kernel: [ 379.421258] ide: failed opcode was: unknown
Mar 4 14:29:30 localhost kernel: [ 379.421264] hdc: no DRQ after issuing MULTWRITE
Mar 4 14:29:30 localhost kernel: [ 379.432579] hdc: status error: status=0x51 { DriveReady SeekComplete Error }
Mar 4 14:29:30 localhost kernel: [ 379.432588] hdc: status error: error=0x04 { DriveStatusError }
Mar 4 14:29:30 localhost kernel: [ 379.432594] ide: failed opcode was: unknown
Mar 4 14:29:30 localhost kernel: [ 379.432600] hdc: no DRQ after issuing MULTWRITE
Mar 4 14:29:30 localhost kernel: [ 379.446502] hdc: status error: status=0x51 { DriveReady SeekComplete Error }
Mar 4 14:29:30 localhost kernel: [ 379.446510] hdc: status error: error=0x04 { DriveStatusError }
Mar 4 14:29:30 localhost kernel: [ 379.446517] ide: failed opcode was: unknown
Mar 4 14:29:30 localhost kernel: [ 379.446546] hdc: no DRQ after issuing MULTWRITE
Mar 4 14:29:30 localhost kernel: [ 379.488369] ide1: reset: success
...
Mar 4 20:17:21 localhost kernel: [ 1229.078076] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:17:31 localhost kernel: [ 310.357908] hdc: DMA interrupt recovery
Mar 4 20:17:31 localhost kernel: [ 310.357923] hdc: lost interrupt
Mar 4 20:25:57 localhost kernel: [ 1267.055119] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:25:57 localhost kernel: [ 1279.998907] hdc: DMA interrupt recovery
Mar 4 20:25:57 localhost kernel: [ 1279.998939] hdc: lost interrupt
Mar 4 20:25:57 localhost kernel: [ 1311.894213] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:25:57 localhost kernel: [ 331.229499] hdc: DMA interrupt recovery
Mar 4 20:25:57 localhost kernel: [ 331.229514] hdc: lost interrupt
Mar 4 20:25:57 localhost kernel: [ 1351.822576] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:25:57 localhost kernel: [ 1366.689010] hdc: DMA interrupt recovery
Mar 4 20:25:57 localhost kernel: [ 1366.689039] hdc: lost interrupt
Mar 4 20:25:57 localhost kernel: [ 1391.865651] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:25:57 localhost kernel: [ 1404.198657] hdc: DMA interrupt recovery
Mar 4 20:25:57 localhost kernel: [ 1404.198689] hdc: lost interrupt
Mar 4 20:25:57 localhost kernel: [ 1428.973425] hdc: dma_timer_expiry: dma status == 0x24
Mar 4 20:25:57 localhost kernel: [ 1440.720827] hdc: DMA interrupt recovery
Mar 4 20:25:57 localhost kernel: [ 1440.720860] hdc: lost interrupt
...
Mar 5 00:22:30 localhost kernel: [ 3661.626173] hdc: dma_timer_expiry: dma status == 0x24
Mar 5 00:28:44 localhost kernel: [ 3883.197988] hdc: dma_timer_expiry: dma status == 0x20
Mar 5 00:28:44 localhost kernel: [ 3883.198000] hdc: DMA timeout retry
Mar 5 00:28:44 localhost kernel: [ 3883.198004] hdc: timeout waiting for DMA
----- KRYPTIVA SIGNED MESSAGE -----
This email claims to have been packaged by Kryptiva.
To process this email and authenticate its origin, get
the free plugin from:
http://www.kryptiva.com/downloads
----- KRYPTIVA SIGNATURE START -----
AvWVqAAAAAIAAAABAAAAAAAATiACAQAAAACgAQAIAAAABAAAAAECABQeQpzoxBhWk1N2pZBP
+oJQqNIFbQMAFNa8GHXZWJH5Dz+D76vfh6JhvWLvBAAURAL2x8oKVxDoCb3M2+az1McuJdkG
ABQufjDxg3ZpKELkwuEedzcbtj6XDgcAFGBYVRYVxGPKznDAvCV9tyFGIeZ/EQAYAAAAAAAA
TiBH1bmdAAbZigAAAAAAADroEwAEAAAAAAAAAIID/1COLIewi7oyiGGYE7/BkNOXeJslZW4i
3nafo47IsSEnR3jndEvqprAlqORStWxxWwA9WVxNFTIAHYl0cBwlqfXyM7nskT3VtvyZSJBj
JgGV82ADwv/DDuqvIA7gZ+2YjQcl48ktzm9AVYjFwZb0lgBgkSGqnwHgO2KWEOE3BmCS
----- KRYPTIVA SIGNATURE END -----
reply other threads:[~2008-03-10 23:09 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=47D5B99E.1010302@kryptiva.com \
--to=karim.yaghmour@kryptiva.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox