|
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 ------------------------------------------------------------
|
Messages