2003-05-08 05:04:27

by David Ford

[permalink] [raw]
Subject: 2.5.69, IDE problems

hda: dma_timer_expiry: dma status == 0x24
drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
locked by drivers/ide/ide-io.c/948
drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
hda: lost interrupt
hda: dma_intr: bad DMA status (dma_stat=30)
hda: dma_intr: status=0x50 { DriveReady SeekComplete }

hda: dma_timer_expiry: dma status == 0x24
drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
locked by drivers/ide/ide-io.c/948
drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
hda: lost interrupt
hda: dma_intr: bad DMA status (dma_stat=30)
hda: dma_intr: status=0x50 { DriveReady SeekComplete }


Got these messages while compiling XFree86.

# lspci (trimmed)
00:00.0 Host bridge: VIA Technologies, Inc. VT8375 [KM266/KL266] Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]
00:11.1 IDE interface: VIA Technologies, Inc.
VT82C586A/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE (rev 06)

# hdparm -v /dev/ide/host0/bus0/target0/lun0/disc

/dev/ide/host0/bus0/target0/lun0/disc:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 12009/16/63, sectors = 78165360, start = 0


# hdparm -I /dev/ide/host0/bus0/target0/lun0/disc

/dev/ide/host0/bus0/target0/lun0/disc:

ATA device, with non-removable media
Model Number: WDC WD400BB-00CAA1
Serial Number: WD-WMA8F2412631
Firmware Revision: 17.07W17
Standards:
Supported: 5 4 3 2
Likely used: 6
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 78165360
device size with M = 1024*1024: 38166 MBytes
device size with M = 1000*1000: 40020 MBytes (40 GB)
Capabilities:
LBA, IORDY(can be disabled)
bytes avail on r/w long: 40 Queue depth: 1
Standby timer values: spec'd by Standard, with device specific
minimum
R/W multiple sector transfer: Max = 16 Current = 16
Recommended acoustic management value: 128, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* READ BUFFER cmd
* WRITE BUFFER cmd
* Host Protected Area feature set
* Look-ahead
* Write cache
* Power Management feature set
Security Mode feature set
SMART feature set
* Device Configuration Overlay feature set
Automatic Acoustic Management feature set
SET MAX security extension
* DOWNLOAD MICROCODE cmd
* SMART self-test
* SMART error logging
Security:
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
HW reset results:
CBLID- below Vih
Device num = 0 determined by the jumper
Checksum: correct



2003-05-08 08:49:54

by Alexander Atanasov

[permalink] [raw]
Subject: Re: 2.5.69, IDE problems

Hello,

On Thu, 8 May 2003, David Ford wrote:

> hda: dma_timer_expiry: dma status == 0x24
> drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> locked by drivers/ide/ide-io.c/948
> drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> hda: lost interrupt
> hda: dma_intr: bad DMA status (dma_stat=30)
> hda: dma_intr: status=0x50 { DriveReady SeekComplete }
>
> hda: dma_timer_expiry: dma status == 0x24
> drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> locked by drivers/ide/ide-io.c/948
> drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> hda: lost interrupt
> hda: dma_intr: bad DMA status (dma_stat=30)
> hda: dma_intr: status=0x50 { DriveReady SeekComplete }

known problem, patch sent to alan some time ago(may be i should
resync/resend?) for this dma_timer_expiry have several problems:
calls DRIVER(drive)->error - the one above, it's called with lock from
ide_timer_expiry
calls ide_dma_end - the reason for called while not waiting messages,
it's called again in ide_timer_expiry

there is one more locking problem known to me - HDIO_DRIVE_RESET,
but can not find out how to fix it properly.

--
have fun,
alex

2003-05-08 09:18:12

by Alexander Atanasov

[permalink] [raw]
Subject: Re: 2.5.69, IDE problems

On Thu, 8 May 2003, Alexander Atanasov wrote:

> Hello,
>
> On Thu, 8 May 2003, David Ford wrote:
>
> > hda: dma_timer_expiry: dma status == 0x24
> > drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> > locked by drivers/ide/ide-io.c/948
> > drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> > hda: lost interrupt
> > hda: dma_intr: bad DMA status (dma_stat=30)
> > hda: dma_intr: status=0x50 { DriveReady SeekComplete }
> >
> > hda: dma_timer_expiry: dma status == 0x24
> > drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> > locked by drivers/ide/ide-io.c/948
> > drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> > hda: lost interrupt
> > hda: dma_intr: bad DMA status (dma_stat=30)
> > hda: dma_intr: status=0x50 { DriveReady SeekComplete }
>
> known problem, patch sent to alan some time ago(may be i should
> resync/resend?) for this dma_timer_expiry have several problems:
> calls DRIVER(drive)->error - the one above, it's called with lock from
> ide_timer_expiry
> calls ide_dma_end - the reason for called while not waiting messages,
> it's called again in ide_timer_expiry

+++ calls handler under the lock, thats fixed in -ac, and thats above, not
error.

>
> there is one more locking problem known to me - HDIO_DRIVE_RESET,
> but can not find out how to fix it properly.
>
>

--
have fun,
alex

2003-05-08 11:55:04

by Alan

[permalink] [raw]
Subject: Re: 2.5.69, IDE problems

On Iau, 2003-05-08 at 07:12, David Ford wrote:
> hda: dma_timer_expiry: dma status == 0x24
> drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> locked by drivers/ide/ide-io.c/948
> drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked

This was fixed in the 2.4-ac tree. I guess the 2.5 stuff hasn't picked
up the changes yet

Subject: Re: 2.5.69, IDE problems


Hi Alex!

On Thu, 8 May 2003, Alexander Atanasov wrote:

> Hello,
>
> On Thu, 8 May 2003, David Ford wrote:
>
> > hda: dma_timer_expiry: dma status == 0x24
> > drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> > locked by drivers/ide/ide-io.c/948
> > drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> > hda: lost interrupt
> > hda: dma_intr: bad DMA status (dma_stat=30)
> > hda: dma_intr: status=0x50 { DriveReady SeekComplete }
> >
> > hda: dma_timer_expiry: dma status == 0x24
> > drivers/ide/ide-io.c:108: spin_lock(drivers/ide/ide.c:c04fb648) already
> > locked by drivers/ide/ide-io.c/948
> > drivers/ide/ide-io.c:990: spin_unlock(drivers/ide/ide.c:c04fb648) not locked
> > hda: lost interrupt
> > hda: dma_intr: bad DMA status (dma_stat=30)
> > hda: dma_intr: status=0x50 { DriveReady SeekComplete }
>
> known problem, patch sent to alan some time ago(may be i should
> resync/resend?) for this dma_timer_expiry have several problems:

Please resync with 2.5, put some nice comment and resend :-).

--
Bartlomiej

> calls DRIVER(drive)->error - the one above, it's called with lock from
> ide_timer_expiry
> calls ide_dma_end - the reason for called while not waiting messages,
> it's called again in ide_timer_expiry
>
> there is one more locking problem known to me - HDIO_DRIVE_RESET,
> but can not find out how to fix it properly.
>
> --
> have fun,
> alex