Bug 8036

Summary: hdc: lost interrupt using some compact flash as ide disk
Product: IO/Storage Reporter: Marco Lazzarotto (m.lazzarotto)
Component: IDEAssignee: io_ide (io_ide)
Status: REJECTED INSUFFICIENT_DATA    
Severity: normal CC: alan, protasnb
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.20 Subsystem:
Regression: --- Bisected commit-id:
Attachments: Partial output of dmesg
Output of lspci -vvvxxx
Output of hdparm --Istdout
Kernel config file
Output of dmesg on Gene-4312 board

Description Marco Lazzarotto 2007-02-19 01:22:12 UTC
Most recent kernel where this bug did *NOT* occur:

none, already seen in 2.4.* kernel

Distribution:

Debian sarge *and* bootdisk made with uclibc

Hardware Environment:

VIA SOM-ETX (4475)
and
Gene-4312

Software Environment:

shell

Problem Description:

Accessing the compact flash as /dev/hdc gives the message:

hdc: status error: status=0x58 { DriveReady SeekComplete DataRequest }
ide: failed opcode was: unknown
hdc: drive not ready for command
[ the 'bad bit' is DataRequest ]

and then, several
hdc: lost interrupt

Steps to reproduce:

 - Use a compact flash SanDisk SDCFB-128 Firmware revision HDX 2.15
   (we used other compact flashes with the same hw ad sw for years with no trouble)

 - sfdisk -l /dev/hdc

Other information:

 - sfdisk -R /dev/hdc does't block (no hdc: lost interrupt)

 - mounting an already existent vfat partition seems to be ok, no error
messages, and copying a big file goes ok)

 - mounting an already existent ext2/ext3 partition does'nt function

 - enabling dma gives the message
hdc: dma_timer_expiry: dma status == 0x21
hdc: DMA timeout error
hdc: dma timeout error: status=0x58 { DriveReady SeekComplete DataRequest }
ide: failed opcode was: unknown

 - booting with the irqpoll parameter does'nt stop the system, but the data on
the compact flash are corrupted (after making and formatting a ext3 partition
get message "allocating block in system zone" writing files on it }
[ in the function 
irqreturn_t ide_intr (int irq, void *dev_id)
in file drivers/ide/ide-io.c
if (!drive_is_ready(drive)) -> is true ]
Comment 1 Marco Lazzarotto 2007-03-12 04:01:49 UTC
Created attachment 10709 [details]
Partial output of dmesg

I dump IDE_STATUS_REG with e.g. 'printk("%s : recal_intr()
IDE_STATUS_REG=%02x\n",drive->name,stat)'
where stat was assigned as 'u8 stat=hwif->INB(IDE_STATUS_REG)'

It seems to me that the status is good until it tries to read the
partition table...

In fact, every time I do

sfdisk -R /dev/hdc

the next reading from compact flash (if ever does not get 'lost
interrupt) generates the message
 hdc: status error: status=0x58 {...}
Comment 2 Marco Lazzarotto 2007-03-12 04:20:10 UTC
Created attachment 10710 [details]
Output of lspci -vvvxxx
Comment 3 Marco Lazzarotto 2007-03-12 04:21:25 UTC
Created attachment 10711 [details]
Output of hdparm --Istdout
Comment 4 Marco Lazzarotto 2007-03-12 09:35:52 UTC
Created attachment 10722 [details]
Kernel config file
Comment 5 Marco Lazzarotto 2007-03-13 02:39:24 UTC
Created attachment 10741 [details]
Output of dmesg on Gene-4312 board

On this board too, if dma is enabled it gets interrupts lost.
After initial trouble (maybe dma get automatically disabled?) all goes ok.

Disabling dma with the boot option ide=nodma all goes ok.
Disabling dma on the bios has no effect.
Comment 6 Natalie Protasevich 2007-07-08 16:22:00 UTC
Marco, anything changed with the latest kernel, is the problem still there (2.6.22-rc7 or so)?
Thanks.
Comment 7 Marco Lazzarotto 2007-07-27 05:17:20 UTC
The problem is still there.
On a SOM-4475 board (Bios versione 1.14), the Sandisk SDCFB-128 still doesn't go.
(even with no dma support in the kernel, and with ide=nodma option)
I cannot check now, if it is an hardware problem, bound to this specific board.
Comment 8 Bartlomiej Zolnierkiewicz 2008-02-16 10:38:05 UTC
Is this still a problem with 2.6.25-rc2?
Comment 9 Alan 2008-09-24 10:01:40 UTC
No response