kernel: ide-cd: cmd 0x1e timed out -- Linux

tolywang發表於2008-07-09

Jul 7 21:00:25 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 7 21:00:25 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 7 21:00:25 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 03:43:24 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 03:43:24 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 03:43:24 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 03:43:24 gnd-rac02 kernel: hda: ATAPI reset complete

今天早上發現Linux系統反覆報這個錯誤資訊。

[@more@]


Jul 8 08:09:01 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 08:09:01 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 08:09:01 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 08:09:01 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 11:18:49 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 11:18:49 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 11:18:49 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 11:18:49 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 12:51:38 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 12:51:38 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 12:51:38 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 12:51:38 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 15:59:30 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 15:59:30 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 15:59:30 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 15:59:31 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 18:18:31 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 18:18:31 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }
Jul 8 18:18:31 gnd-rac02 kernel: hda: irq timeout: error=0x00
Jul 8 18:18:31 gnd-rac02 kernel: hda: ATAPI reset complete
Jul 8 19:00:35 gnd-rac02 kernel: ide-cd: cmd 0x1e timed out
Jul 8 19:00:35 gnd-rac02 kernel: hda: irq timeout: status=0xd0 { Busy }

--------------------------------------------------------------------------------------------------------

解決方式見下面轉載的blog 內容:

關閉 DMA

如果有玩OS系統的朋友,會知道DMA的作用,是在減少傳輸資料時,耗用到CPU的資源。像是硬碟和光碟機都有這樣的設計,因為大部分的資料傳輸,可能是不需要用到CPU咚恪V皇前奄Y料區塊搬來搬去而已!(個人理解,有誤請告知補正!)

目前的LINUX系統,預設應該是支援DMA enable的。
當我看到我的OS螢幕出現了:
ide-cd: cmd 0x1e timed out
hda: irq timeout: status=0xd0 { Busy }
hda: irq timeout: error=0x00
hda: ATAPI reset complete
ide-cd: cmd 0x1e timed out
hda: irq timeout: status=0xd0 { Busy }
hda: irq timeout: error=0x00
hda: ATAPI reset complete
ide-cd: cmd 0x1e timed out
hda: irq timeout: status=0xd0 { Busy }
hda: irq timeout: error=0x00
hda: ATAPI reset complete
ide-cd: cmd 0x1e timed out
hda: irq timeout: status=0xd0 { Busy }
hda: irq timeout: error=0x00
hda: ATAPI reset complete

那個hda裝置一直出現 irq 錯誤和 ATAPI reset !
我查了一下可能原因,好判斷這個錯誤對我的SERVER有沒有嚴重的影響。
原來就是hda光碟機,它的DMA開啟了,但OS卻不支援!才有這樣的錯誤發生。

機器:HP ProLiant DL580 G5
作業系統:Oracle Enterprise Linux 4.0 Update 6
光碟機hda是8X的DVD。

HP的官網有這類問題的Q&A。


不過官網給的solution只是在開機設定中把DMA關閉。
我要的是能夠把DMA即時開關的指令和KNOW-HOW。

OK,往下看吧!

一、檢查系統中的DMA選項是否已被啟動
Linux中的hdparm命令是用來進行操控硬碟、光碟機之類裝置的,
hdparm -i /dev/hda可以列出IDE可能支援的DMA模式,如:

DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4

二、啟動DMA支援
方法1:
在lilo.conf中加入:idex=dma,其中x代表硬碟序號,其取值範圍0-3,
分別代表系統中的四個IDE硬碟裝置。

方法2:
使用hdparm命令,hdparm d1 /dev/hda 其中d1表示開啟DMA模式,
可以利用加到rc.locl中以便每次啟動OS時能使用DMA模式傳輸資料。


三、關閉DMA
命令格式:
hdparm d0 /dev/hda
就把DMA傳輸模式關閉了,但能用DMA,為什麼要關閉呢?

還有,對於支援UDMA傳輸模式硬碟,也可以參考以述方法進行配置,
但要確保硬碟控制器及硬碟都支援UDMA,最後你必須要有一根能支援UDMA傳輸的線路,
不然即使你啟動了UDMA,它也不會咦韉摹

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1007020/,如需轉載,請註明出處,否則將追究法律責任。

相關文章