Next-in-Thread Next Message

Question problem with IDE and Linux SMP 

Forum: PCMCIA ATA/IDE Device Issues
Date: 2000, Apr 24
From: Peter A. Castro doctor

About 6 months ago I added a second processor to my system and rebuilt a linux 2.2.14 kernel with SMP. I'd rebuild PCMCIA-CS 3.1.14 under this config. Since then, I've been experiencing hangs when I do large or continuous file copies from either a SanDisk PC Card II (ATA Flash) or a SanDisk CF in a SanDisk CF Adapter. Both appear to the system as ATA/IDE drives. At the moment I'm only reading data from these cards. I haven't tried writing to them for fear that they will be trashed. I've loaded a large file (test1.dat) onto the card from a friends machine for testing. This file is about 20Mb. I also have a bunch of smaller files (~512k) whose sum totals more that 20Mb. If I attempt to copy anything that takes more that 3-4 seconds or totals more than 8Mb in size, I get into a condition where the device no longer responds; the console keeps saying that some operation timed-out (see logs below) because the resource was busy. I also see in the process list what looks like an attempt by the system to umount the card! At this point, I must reboot to clear the condition, and because of the resource problem a clean shutdown isn't possible.

If I take the same kernel config and rebuild without SMP (and rebuild PCMCIA-CS under the non-SMP config) things work normally. Large copies complete without any problems.

Has anyone else experienced this? Any ideas as to what's going on? Below are logs of a copy of the large file. I suspect a race condition having to do with SMP, but where I couldn't really guess. I don't really want to have to go back to a single-processor config. Any help would be greatly appreciated!

The PCMCIA card reader is an Antec DataChute PCMCIA ISA reader/writer. It's based on the VIA83C469 chipset. As my config shows below, I use the i82365 module. I've tried every changing every config parameter available, in various combinations, for the i82365 without any real success.

My /etc/pcmcia.conf is pretty simple:
 ------------------------------------------------------------
 PCMCIA=yes
 PCIC=i82365
 PCIC_OPTS="irq_list=5"
 CARDMGR_OPTS="-v"
 ------------------------------------------------------------

Here's the syslog of what happened.  This card has always
reported a status=0x51 and error=0x04 apon insertion, but has
never given me any problems (under a UP kernel).  Any idea
what these errors represent??
 ------------------------------------------------------------
 Linux PCMCIA Card Services 3.1.14
   kernel build: 2.2.14 #3 SMP Sun Feb 27 19:54:47 PST 2000
   options:  [pci] [cardbus] [pnp]
 PnP: PNP BIOS installation structure at 0xc00f7430
 PnP: PNP BIOS version 1.0, entry at f0000:6d84, dseg at f0000
 Intel PCIC probe:
   VIA VT83C469 rev 00 ISA-to-PCMCIA at port 0x3e0 ofs 0x00
     host opts [0]: [ring]
     host opts [1]: [ring]
     ISA irqs (default) = 5 polling interval = 1000 ms
 cs: IO port probe 0x1000-0x17ff: clean.
 cs: IO port probe 0x0100-0x04ff: excluding 0x140-0x15f
 cs: memory probe 0x0d0000-0x0dffff: excluding 0xd0000-0xd3fff
 hde: SunDisk SDP3B-220, ATA DISK drive
 ide2 at 0x100-0x107,0x10e on irq 5
 hde: SunDisk SDP3B-220, 210MB w/1kB Cache, CHS=840/16/32
  hde: hde1
 ide_cs: hde: Vcc = 5.0, Vpp = 0.0
 VFS: Disk change detected on device ide2(33,0)
  hde: hde1
 hde: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
 hde: drive_cmd: error=0x04 { DriveStatusError }
 VFS: Disk change detected on device ide2(33,1)
  hde: hde1
 VFS: Disk change detected on device ide2(33,1)
  hde: hde1
 hde: irq timeout: status=0xff { Busy }
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 end_request: I/O error, dev 21:01 (hde), sector 68276
 hde: drive not ready for command
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 end_request: I/O error, dev 21:01 (hde), sector 68277
 hde: drive not ready for command
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ide2: reset timed-out, status=0xff
 hde: status timeout: status=0xff { Busy }
 end_request: I/O error, dev 21:01 (hde), sector 68278
 hde: drive not ready for command
 hde: status timeout: status=0xff { Busy }
 hde: drive not ready for command
 ------------------------------------------------------------

Part of a process list at the time of the first Busy message:
 ------------------------------------------------------------
  433  ?  S    0:01 /sbin/cardmgr -v
  468   1 D    0:00 cp /pcmcia/test1.dat .
  469  ?  S    0:00 sh -c ./ide stop hde 2>&1
  470  ?  S    0:00 sh ./ide stop hde
  481  ?  D    0:00 umount -v /dev/hde1
 ------------------------------------------------------------

Next-in-Thread Next Message

Messages Inline: 1 All Outline: 2 3 All

1. None I have not heard this one before by David Hinds, 2000, Apr 24
... 3 Message(s)

Add Message to: "problem with IDE and Linux SMP"

Members Subscribe Admin Mode Show Frames Help for HyperNews at pcmcia-cs.sourceforge.net 1.10