Buggy HLT instruction in Cyrix M2 or error in ATAPI CDROM code ?

Frantisek Dufka (dufkaf@merit.cz)
Sat, 16 Oct 1999 11:17:13 +0100


Hello,

I upgraded my Intel P150 (2x75Mhz) with Cyrix MII 300+ (3x75) and since then
I have problem reading from CDROM.
The problem occurrs only when the CPU is idle.
Transfer rate drops from 600KB/s to approx. 30KB/s and there are following random
errors in syslog:

Oct 15 14:01:02 arthur kernel: hdb: command error: status=0x51 { DriveReady
Seek Complete Error }
Oct 15 14:01:02 arthur kernel: hdb: command error: error=0x54
Oct 15 14:01:02 arthur kernel: ATAPI device hdb:
Oct 15 14:01:02 arthur kernel: Error: Illegal request -- (Sense key=0x05)
Oct 15 14:01:02 arthur kernel: Illegal mode for this track or incompatible med
ium -- (asc=0x64, ascq=0x00)
Oct 15 14:01:41 arthur kernel: hdb: command error: status=0x51 { DriveReady Seek
Complete Error }
Oct 15 14:01:41 arthur kernel: hdb: command error: error=0x54
Oct 15 14:01:41 arthur kernel: end_request: I/O error, dev 03:40 (hdb), sector 1
1424
Oct 15 14:01:41 arthur kernel: ATAPI device hdb:
Oct 15 14:01:41 arthur kernel: Error: Illegal request -- (Sense key=0x05)
Oct 15 14:01:41 arthur kernel: Illegal mode for this track or incompatible med
ium -- (asc=0x64, ascq=0x00)

I tried to turn off SUSP_HLT flag in the CPU with set6x86 -p 0xC2 -s 0x08.
The transfer rate went up to cca. 100 KB/s and there were maybe less errors in syslog.

The problem does not occurr when I boot with 'no-hlt' kernel option or when the CPU
is not idle - i.e. running "nice /bin/sh -c 'while true ; do true; done &'"
immediately stops all the errors and the transfer rate goes back to 600KB/s.

The most interesting is that there are NO problems with hard drive.
Maybe the faster CDROM (say 44x) will work OK ?

I tried following kernels with the same results : 2.0.36, 2.2.12, 2.2.13pre17 (all
compiled on debian with gcc 2.7.2.3) and 2.2.5-22 from Red Hat

My system is :

P5VX-Be motherboard, 64 MB RAM
CPU: Cyrix M II 3x Core/Bus Clock stepping 04
PIIX3: IDE controller on PCI bus 00 dev 39
hdb: GCD-R540C, ATAPI CDROM drive
hdc: Maxtor 90680D4, ATA DISK drive

CPU setup is :

6x86 CCR0: 0x2 NC1 set (address region 640Kb-1Mb non-cacheable)
CCR1: 0x92 NO_LOCK set
CCR2: 0x88 SUSP_HLT set (low power suspend mode enabled)
CCR3: 0x10
CCR4: 0x87 DTE cache disabled, no I/O recovery time
CCR5: 0xa1 slow LOOP disabled, allocate cache lines on write misses

6x86 Address Region Register dump:
ARR0: address = 0xA0000 , size = 128 KB
RCR = 0x9 : not cached, write gathering
ARR1: address = 0xC0000 , size = 256 KB
RCR = 0x1 : not cached
ARR2: disabled
ARR3: address = 0xA8000 , size = 32 KB
RCR = 0x9 : not cached, write gathering
ARR4: disabled
ARR5: disabled
ARR6: address = 0xE0000000 , size = 2 MB
RCR = 0x9 : not cached, write gathering
ARR7: address = 0x0 , size = 64 MB
RCR = 0x9 : cached, write gathering

I want to be environment-friendly and keep my CPU cool, can anyone help me with this ? :-)

thanks,

Frantisek Dufka
dufkaf@prfnw.upol.cz

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/