Skip to contentSkip to conversation

2.5.69, IDE problems

DISCUSSION David Ford 4 participants 5 messages May 8, 2003

lore
Share & tools
lore

David Ford

author
#0 lore raw

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

#1 lore raw

Hello,

Quoted 8 lines · David Ford

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 }

Quoted 7 lines

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.

Signature · 2 lines
have fun,
alex
#2 lore raw
Quoted 20 lines · Alexander Atanasov

Hello,

Quoted 8 lines · David Ford

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 }

Quoted 7 lines

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 }

Quoted 6 lines

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.

Quoted 5 lines

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

Signature · 2 lines
have fun,
alex
#3 lore raw
In reply to Alexander Atanasov

Hi Alex!

Quoted 20 lines · Alexander Atanasov

Hello,

Quoted 8 lines · David Ford

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 }

Quoted 7 lines

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 }

Quoted 2 lines

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

Quoted 11 lines

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

#4 lore raw
In reply to David Ford
Quoted 4 lines · David Ford

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