Bug 6883 - ide-probe.c attempts to use polling designed for ancient Seagate drives on some compact flash disks
Summary: ide-probe.c attempts to use polling designed for ancient Seagate drives on so...
Status: CLOSED OBSOLETE
Alias: None
Product: IO/Storage
Classification: Unclassified
Component: IDE (show other bugs)
Hardware: i386 Linux
: P2 normal
Assignee: io_ide@kernel-bugs.osdl.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-07-21 20:55 UTC by Dr David Fong
Modified: 2012-05-12 01:39 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.25
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Dr David Fong 2006-07-21 20:55:03 UTC
Most recent kernel where this bug did not occur: ? probably pre-2.6.0
Distribution: SuSE 10.1, Ubuntu 6.0.6

Hardware Environment:
Muramasa CV-50 laptop, Ricoh RL5c476, Kingston 4GB Ultimate (100x) compact flash
pccardctl ident for Kingston CF : 
product info : "M-Systems", "CF500", "", ""
manfid : 0x000a, 0x0000
function : 4 (fixed disk)

Problem Description:

(insert Kingston 4GB compact flash)
Jun 29 22:06:12 muramasa kernel: pccard: PCMCIA card inserted into slot 0 
Jun 29 22:06:12 muramasa kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean. 
Jun 29 22:06:12 muramasa kernel: pcmcia: registering new device pcmcia0.0 
Jun 29 22:06:13 muramasa kernel: Probing IDE interface ide2... 
Jun 29 22:06:13 muramasa kernel: hde: CF500, CFA DISK drive 
Jun 29 22:06:13 muramasa kernel: hdf: probing with STATUS(0x50) instead of
ALTSTATUS(0x0a) 
Jun 29 22:06:14 muramasa kernel: hdf:
......(variable number of blank lines)........
      , ATA DISK drive Jun 29 22:06:14 muramasa kernel: ide2 at
0x3e0-0x3e7,0x3ee on irq 11 
Jun 29 22:06:14 muramasa kernel: hde: max request size: 128KiB 
Jun 29 22:06:14 muramasa kernel: hde: 8060928 sectors (4127 MB) w/1KiB Cache,
CHS=15744/16/32 
Jun 29 22:06:14 muramasa kernel: hde: hde1 
Jun 29 22:06:14 muramasa kernel: hdf: max request size: 512KiB 
Jun 29 22:06:44 muramasa kernel: hdf: lost interrupt  

(continued reports of 'hdf: lost interrupt'. hdf does not exist. In the
meantime, hde1 is not available to be mounted. Ejecting the CF card and
re-inserting a different 512MB card does not help)

Steps to reproduce:

(insert 4GB Kingston compact flash into Muramasa CV-50)
problem not reproduced with Sandisk 512 MB compact flash into same laptop.

Problem can be 'fixed' as per http://lkml.org/lkml/2004/4/7/181 (Chuan-Kai Lin)
by changing a section in ide-probe.c (actual_try_to_identify) to

if ((a ^ s) & ~INDEX_STAT) {
 printk(KERN_INFO "%s: was going to probe with STATUS(0x%02x) instead of "
  "ALTSTATUS(0x%02x) - use non-intrusive probe instead\n", drive->name, s, a);
  /* was to handle ancient Seagate drives, broken interfaces. */
  /* seems to break Muramasa and Kingston 4GB CF, so next line changed */
 hd_status = IDE_ALTSTATUS_REG; /* was IDE_STATUS_REG */
} else {
 /* use non-intrusive polling */
 hd_status = IDE_ALTSTATUS_REG;
}
Comment 1 Bartlomiej Zolnierkiewicz 2008-02-16 10:46:23 UTC
Is this still a problem with recent kernels (2.6.24 or 2.6.25-rc2)?
Comment 2 Dr David Fong 2008-06-22 05:41:55 UTC
The situation appears improved with 2.6.24/2.6.25 compared to 2.6.16, but occasionally, on card insertion, I still get the error log as below (test machine is a Fujitsu P-1610)...

<6>ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
<7>Probing IDE interface ide0...
<6>cs: IO port probe 0x100-0x3af: clean.
<6>cs: IO port probe 0x3e0-0x4ff: clean.
<6>cs: IO port probe 0x820-0x8ff: clean.
<6>cs: IO port probe 0xc00-0xcf7: clean.
<6>cs: IO port probe 0xa00-0xaff: clean.
<4>hda: CF500, CFA DISK drive
<6>hdb: probing with STATUS(0x50) instead of ALTSTATUS(0x0a)
<6>hdb: probing with STATUS(0x04) instead of ALTSTATUS(0x0a)
<4>hdb: ^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L^B^L, ATA DISK drive
<4>ide0 at 0x3100-0x3107,0x310e on irq 3
<6>ide-cs: hda: Vpp = 0.0
<6>sdhci: SDHCI controller found at 0000:08:03.1 [1180:0822] (rev 13)
<6>ACPI: PCI Interrupt 0000:08:03.1[B] -> GSI 17 (level, low) -> IRQ 17
<4>sdhc0:slot0: Will use DMA mode even though HW doesn't fully claim to support it.
<6>mmc0: SDHCI at 0xf0200000 irq 17 DMA
<6>hda: max request size: 128KiB
<6>hda: 8060928 sectors (4127 MB) w/1KiB Cache, CHS=15744/16/32
<6> hda: hda1
<6>hdb: max request size: 512KiB
<4>hdb: lost interrupt
<4>hdb: lost interrupt
<4>hdb: lost interrupt
<4>hdb: lost interrupt
<4>hdb: lost interrupt


May 10 10:55:22 linux-khsr kernel: pccard: PCMCIA card inserted into slot 0
May 10 10:55:22 linux-khsr kernel: cs: memory probe 0xf0200000-0xf02fffff: excluding 0xf0200000-0xf020ffff
May 10 10:55:22 linux-khsr kernel: pcmcia: registering new device pcmcia0.0
May 10 10:55:22 linux-khsr kernel: Uniform Multi-Platform E-IDE driver
May 10 10:55:22 linux-khsr kernel: ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
May 10 10:55:22 linux-khsr kernel: Probing IDE interface ide0...
May 10 10:55:22 linux-khsr kernel: hda: CF500, CFA DISK drive
May 10 10:55:23 linux-khsr kernel: hdb: probing with STATUS(0x50) instead of ALTSTATUS(0x0a)
May 10 10:55:23 linux-khsr kernel: hdb: probing with STATUS(0x00) instead of ALTSTATUS(0x0a)
May 10 10:55:24 Vigor15 syslog-ng[1618]: last message repeated 2 times
May 10 10:55:24 linux-khsr kernel: ide0 at 0x3100-0x3107,0x310e on irq 3
May 10 10:55:24 linux-khsr kernel: ide-cs: hda: Vpp = 0.0
May 10 10:55:24 linux-khsr kernel: hda: max request size: 128KiB
May 10 10:55:24 linux-khsr kernel: hda: 8060928 sectors (4127 MB) w/1KiB Cache, CHS=15744/16/32
May 10 10:55:24 linux-khsr kernel:  hda: hda1

Note You need to log in before you can comment on or make changes to this bug.