Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Jan 1999 17:12:13 -0500 (EST)
From:      "Andrew Atrens" <atrens@nortelnetworks.com>
To:        current@FreeBSD.ORG
Cc:        lcremean@tidalwave.net
Subject:   Re: potential ide_pci.c bugster
Message-ID:  <Pine.BSF.4.05.9901121615040.600-100000@hcarp00g.ca.nortel.com>
In-Reply-To: <19990112004945.A68879@tidalwave.net>

next in thread | previous in thread | raw e-mail | index | archive | help

Hi All,

I've been experiencing pci-ide timeouts of the showstopper variety.
Lee has postulated that this has to do with my bus speed 83Mhz .. so I
reclocked to 66Mhz and the behaviour persists.

I've appended the original mail I sent to Lee, along with (just for fun)
my kernel config and dmesg output.

Note that I haven't been able to capture the dmesg output inspired by the
below patch - the system locks up tighter than a drum. I did however
transcribe the following (hopefully relevant bits) by hand ...

wd0: interrupt timeout (status 50 <rdy, seekdone> error 0)
wd0: wdtimeout() DMA status 1 <active>

Interesting thing is this drive, wd0, is about 2 years old and doesn't
support UDMA. While wd1, a new drive, does do UDMA. 

My system is current as of yesterday.

I'm not sure why the below patch tickles this bug, any
suggestions/insights you can provide would be greatly appreciated.


Regards,

Andrew.

-- 
+----------------------------------------------------+
= Andrew Atrens - Nortel Networks (atrens@nortel.ca) =
= P.O. Box 3511, Station C Ottawa, Canada            =
=                                                    =
= All opinions expressed are mine, not Nortel's.     =
+----------------------------------------------------+


(original message follows)

Lee,

Around the middle of December you (actually Mike on behalf of you)
committed a patch to pci_ide.c which has since been hosing my system:

 # diff -c /home/cvs/sys/pci/ide_pci.c*
*** /home/cvs/sys/pci/ide_pci.c Mon Jan 11 19:29:54 1999
--- /home/cvs/sys/pci/ide_pci.c.ctm     Mon Jan 11 19:28:35 1999
***************
*** 1195,1201 ****
  
        cp = softc.cookies.lh_first;
        while(cp) {
!               if (cp->ctlr == unit &&
                        ((iobase_wd == 0) || (cp->iobase_wd ==
                          iobase_wd)))
                        break;
                cp = cp->le.le_next;
--- 1195,1201 ----
  
        cp = softc.cookies.lh_first;
        while(cp) {
!               if (cp->unit == unit &&
                        ((iobase_wd == 0) || (cp->iobase_wd ==
                          iobase_wd)))
                        break;
                cp = cp->le.le_next;


With this commit, my system freezes on boot with DMA timeout messages when
it tries to mount root on wd1. It's a total showstopper.

>>> (oops, that should have been wd0)

I disabled DMA (ala wdc0 flags) and everything worked, though of course
more slowly. :)  So, instead I chose to back out your change, and wait to
see if anyone else fell in the pit. Since the mailing list seems to be
pretty silent on the topic, maybe it's just me :) ...

I've got an ABIT motherboard with TX chipset, bussed at 83MHz, that seems
to run quick enough:

--root@churchill:/var/log--
 # dd if=/dev/rwd0  of=/dev/null bs=1024k count=50
50+0 records in
50+0 records out
52428800 bytes transferred in 10.040942 secs (5221502 bytes/sec)

--root@churchill:/var/log--
 # dd if=/dev/rwd1  of=/dev/null bs=1024k count=50
50+0 records in
50+0 records out
52428800 bytes transferred in 4.538576 secs (11551817 bytes/sec)

wd0 doesn't do udma, while wd1 does, with dma disabled both drives perform
comparably.


---


(here's my kernel config)


machine    "i386"
cpu        "I586_CPU"
ident      CHURCHILL
maxusers   32

options    USERCONFIG
options    INCLUDE_CONFIG_FILE
options    SOFTUPDATES

options    INET

options    FFS
options    FFS_ROOT

options    NFS
options    NFS_ROOT

options    MFS
options    MFS_ROOT

options    "CD9660"
options    "CD9660_ROOT"
options    "CD9660_ROOTDELAY=20"

options    MSDOSFS
options    PROCFS

options    "COMPAT_43"
options    "COMPAT_LINUX"

options    USER_LDT
options    "VM86"
options    VESA
options    UCONSOLE


options    SYSVSHM
options    SYSVSEM
options    SYSVMSG

options    ATAPI
options    ATAPI_STATIC

options    PQ_LARGECACHE
options    "CPU_WT_ALLOC"
options    "NO_MEMORY_HOLE"
options    "NO_F00F_HACK"

options    NSWAPDEV=2

options    "MD5"

config     kernel  root on wd0 dumps on wd0

controller isa0
controller pnp0

controller pci0

controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 
disk       fd0  at fdc0 drive 0

controller wdc0 at isa? port "IO_WD1" bio irq 14 flags 0xb0ffb0ff 
disk       wd0  at wdc0 drive 0
disk       wd1  at wdc0 drive 1

controller wdc1 at isa? port "IO_WD2" bio irq 15 flags 0xb0ffb0ff
device     acd0
device     acd1

controller atkbdc0 at isa? port IO_KBD tty
device     atkbd0  at isa? tty irq 1
device     psm0    at isa? tty irq 12
device     vga0    at isa? port ? conflicts

pseudo-device   splash

device     sc0     at isa? tty

options    MAXCONS=16              # number of virtual consoles
options    SC_HISTORY_SIZE=200     # number of history buffer lines

device     npx0 at isa? port "IO_NPX" iosiz 0x0 flags 0x0 irq 13 

device     pcm0 at isa? port 0x530 tty irq 10 drq 1 flags 0x0 

device     sio0 at isa? port "IO_COM1" tty irq 4 
device     sio1 at isa? port "IO_COM2" tty irq 3 
    
device     lpt0 at isa? port "IO_LPT2" tty irq 5 

device     tw0 at isa? port "IO_LPT3" tty irq 7 

device     ed0 at isa? port 0x240 net irq 9 iomem ?


pseudo-device   loop
pseudo-device   ether
pseudo-device   sl      2
pseudo-device   ppp     2
pseudo-device   tun     2
pseudo-device   pty     128
pseudo-device   gzip
pseudo-device   vn
pseudo-device   bpfilter 4




(here's dmesg and friends)

(hmm, it seems pnp doesn't see my soundcard anymore ... )


Copyright (c) 1992-1999 FreeBSD Inc.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California. All rights reserved.
FreeBSD 3.0-CURRENT #4: Mon Jan 11 22:05:55 EST 1999
    root@churchill:/home/cvs/sys/compile/CHURCHILL
Timecounter "i8254"  frequency 1193182 Hz
Timecounter "TSC"  frequency 334092111 Hz
CPU: AMD-K6(tm) 3D processor (334.09-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x58c  Stepping=12
  Features=0x8021bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,PGE,MMX>
real memory  = 67108864 (65536K bytes)
config> pnp 1 0 os enable irq0 10 drq0 1 
config> pnp 1 0 os enable port0 0x220 port1 0x530 port2 0x388
config> pnp 1 0 os enable port3 0x300 port4 0x370
config> quit
avail memory = 62390272 (60928K bytes)
Preloaded elf kernel "kernel1" at 0xf02bc000.
Preloaded userconfig_script "/boot/pnp.conf" at 0xf02bc09c.
Probing for devices on PCI bus 0:
chip0: <Intel 82439TX System Controller (MTXC)> rev 0x01 on pci0.0.0
chip1: <Intel 82371AB PCI to ISA bridge> rev 0x01 on pci0.7.0
ide_pci0: <Intel PIIX4 Bus-master IDE controller> rev 0x01 on pci0.7.1
chip2: <Intel 82371AB Power management controller> rev 0x01 on pci0.7.3
vga0: <ATI model 4750 graphics accelerator> rev 0x5c on pci0.11.0
ed1: <NE2000 PCI Ethernet (RealTek 8029)> rev 0x00 int a irq 11 on pci0.13.0
ed1: address 00:40:05:59:30:f0, type NE2000 (16 bit) 
Probing for PnP devices:
Probing for devices on the ISA bus:
sc0 on isa
sc0: VGA color <16 virtual consoles, flags=0x0>
ed0 at 0x240-0x25f irq 9 on isa
ed0: address 00:40:05:48:11:c9, type NE2000 (16 bit) 
pcm0 not found at 0x530
atkbdc0 at 0x60-0x6f on motherboard
atkbd0 irq 1 on isa
psm0 irq 12 on isa
psm0: model Generic PS/2 mouse, device ID 0
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
lpt0 at 0x278-0x27f irq 5 on isa
lpt0: Interrupt-driven port
lp0: TCP/IP capable interface
tw calibration: delay loop is 21 us.
tw0 at 0x3bc-0x3c3 irq 7 on isa
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: FIFO enabled, 8 bytes threshold
fd0: 1.44MB 3.5in
wdc0 at 0x1f0-0x1f7 irq 14 flags 0xb0ffb0ff on isa
wdc0: unit 0 (wd0): <ST52520A>, LBA, DMA, 32-bit, multi-block-16
wd0: 2446MB (5009760 sectors), 621 cyls, 128 heads, 63 S/T, 512 B/S
wdc0: unit 1 (wd1): <QUANTUM FIREBALL EL5.1A>, LBA, DMA, 32-bit, multi-block-16
wd1: 4892MB (10018890 sectors), 623 cyls, 255 heads, 63 S/T, 512 B/S
wdc1 at 0x170-0x177 irq 15 flags 0xb0ffb0ff on isa
wdc1: unit 0 (atapi): <NEC CD-ROM DRIVE:273/4.25>, removable, iordy
acd0: drive speed 689KB/sec, 256KB cache
acd0: supported read types: CD-DA
acd0: Audio: play, 256 volume levels
acd0: Mechanism: ejectable tray
acd0: Medium: no/blank disc inside, unlocked
wdc1: unit 1 (atapi): <HP CD-Writer+ 7200/V:003.01>, removable, dma, iordy
acd1: drive speed 344 - 1034KB/sec, 768KB cache
acd1: supported read types: CD-R, CD-RW, CD-DA, packet track
acd1: supported write types: CD-R, CD-RW, test write
acd1: Audio: play, 128 volume levels
acd1: Mechanism: ejectable tray
acd1: Medium: no/blank disc inside, unlocked, lock protected
vga0 at 0x3b0-0x3df maddr 0xa0000 msize 131072 on isa
npx0 on motherboard
npx0: INT 16 interface
changing root device to wd1s2e
ffs_mountfs: superblock updated for soft updates
ffs_mountfs: superblock updated for soft updates
ffs_mountfs: superblock updated for soft updates
VESA: set_mode(): 24(18) -> 204(cc)
VESA: set_mode(): 34(22) -> 204(cc)


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9901121615040.600-100000>