[2.6,2.4] HPT366 (on Abit BP6) + Seagate 7000.7 + DMA = kernel halted
Hi,
I have problem with HPT366 and Seagate and trying to switch on DMA.
My configuration
- my hardware: Abit BP6 with HPT366 IDE controller, Seagate Barracuda
7000.7 HDD (80 GB)
- kernels tried: 2.4.22, 2.4.23, 2.6.0-test9, 2.6.0, 2.6.1-rc3
My problem is that HPT366 linux driver doesn't like DMA. When I try to set DMA by hdparm, after several seconds the HDD led gets on and remains on for another amount of seconds, then I got
hde: dma_timer_expiry (.. = 0x21)
and after a while
hde: DMA timeout error
then kernel is halted and I need to reset my PC.
This error is clearly reproducible (with or without SMP, various kernel versions, overclocking or not, ACPI on and off) but I don't get any oops (probably because of disk problem).
DMA can't be set during kernel boot, HPT366 driver refuses to set DMA on. It must be done using hdparm.
After some investigations I realized that the problem could be in the combination of HPT366 and Seagate disk. In the source code of HighPoint's driver
(http://www.highpoint-tech.com/hpt3xx-opensource-v131.tgz - link is in kernel's drivers/ide/pci/hpt366.c) I can see some procedure used to fix some seagate disk initialization problem which is not present (after a quick look) in hpt366.c in kernel. I think that's the problem because I haven't found any reported problem and I think that BP6 is still widely used.
Windows are working well and I haven't time to try HighPoint's own driver.
I can provide you with my exact configuration and logs later, I'm not near affected computer now.
Does anyone else has the same problem?
Any other ideas?
Regards,
Jan "Pogo" Mynarik
Signature · 1 line
Jan Mynarik <[email protected]>
Must be a problem with the harddisk; I do also have a Abit BP6 board with two WD800JB which work fine on the HPT366 controller. Maybe you should try to connect them to one of the PIIX4 IDE channels. Btw: I do have CONFIG_IDEDMA_PCI_AUTO enabled so I do not even need to use hdparm to enable DMA.
However I am myself not so sure if I should use the HPT366 or the PIIX4 controller as I got better cache read throughput (hdparm -T) with the PIIX4 controller and could avoid sharing an interrupt. Maybe someone here is willing to share some piece of advice?
Tom
Signature · 6 lines
T h o m a s Z e h e t b a u e r ( TZ251 )
PGP encrypted mail preferred - KeyID 96FFCB89
mail [email protected]
We are tied to the ocean. And we go back to the sea, whether it is to sail or
to watch it we are going back from whence we came. - John F. KennedyQuoted 6 lines · Thomas Zehetbauer
Must be a problem with the harddisk; I do also have a Abit BP6 board with two WD800JB which work fine on the HPT366 controller. Maybe you should try to connect them to one of the PIIX4 IDE channels. Btw: I do have
CONFIG_IDEDMA_PCI_AUTOenabled so I do not even need to use hdparm to enable DMA.
It supports my idea that linux kernel driver miss some 'special' initialization for Seagate disk. But I need to try HighPoint's own driver first, hopefully during weekend.
I also know that's not problem of AUTO DMA, I tried it and it didn't change anything. During boot driver reports that my disk can do only PIO.
However I am myself not so sure if I should use the HPT366 or the PIIX4
Quoted 4 lines
controller as I got better cache read throughput (hdparm -T) with the PIIX4 controller and could avoid sharing an interrupt. Maybe someone here is willing to share some piece of advice?
The problem with faster controller is a bit funny. I suppose that the HPT366 controller is there because of its ability to run UDMA66, so that it should be faster.
Anyway, thanks for your comments.
Pogo
Signature · 1 line
Jan Mynarik <[email protected]>