Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jan 1999 23:01:29 +1100
From:      David Dawes <dawes@rf900.physics.usyd.edu.au>
To:        current@FreeBSD.ORG
Subject:   Promise FastTrack PCI IDE controller
Message-ID:  <19990121230129.D5377@rf900.physics.usyd.edu.au>

next in thread | raw e-mail | index | archive | help
I've been playing with a Promise FastTrack RAID (IDE) controller with
3.0-current as of yesterday.  Although it is recognised in the PCI bus
probe as a "Promise Ultra/33" (it has the same vendor/chip ID as the
non-RAID card), the probes in i386/isa/wd.c fail.  I added some debugging
printfs to the code, and have found that wdreset() is failing.  By
changing the code to ignore that failure, it gets further, and correctly
identifies the attached disks.  I can even access the disks sufficiently
to read the partition table with fdisk (but with timeouts).

I've included some information from a verbose boot, and the debugging
printfs I added.  I don't have any programming docs for this hardware,
and I don't know much about IDE controllers at this level.  If anyone
has any suggestions of where I might look for the problems, they'd be
most welcome.

FWIW, the IDE driver in Linux (2.0.35) handles the card OK.


FreeBSD 3.0-CURRENT #11: Thu Jan 21 17:28:17 EST 1999

  ...

ide_pci1: <Promise Ultra/33 IDE controller> rev 0x01 int a irq 11 on pci0.18.0
ide_pci1: adding drives to controller 2: 4 5	using shared irq11.
 6 7
promise_status: port0: 0xeff0, port0_alt: 0xefe4, port1: 0xefa8, port1_alt: 0xefe0
promise_status: dma control blk address: 0xef80, int: 1, irq: 11
drivebits0-1: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming0: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming1: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
drivebits2-3: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming2: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming3: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
promise_status: port0: 0xeff0, port0_alt: 0xefe4, port1: 0xefa8, port1_alt: 0xefe0
promise_status: dma control blk address: 0xef80, int: 1, irq: 11
drivebits0-1: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming0: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming1: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
drivebits2-3: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming2: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming3: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
ide_pci: busmaster 0 status: 04 from port: 0000ef82
promise_status: port0: 0xeff0, port0_alt: 0xefe4, port1: 0xefa8, port1_alt: 0xefe0
promise_status: dma control blk address: 0xef80, int: 1, irq: 11
drivebits0-1: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming0: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming1: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
drivebits2-3: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming2: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming3: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
promise_status: port0: 0xeff0, port0_alt: 0xefe4, port1: 0xefa8, port1_alt: 0xefe0
promise_status: dma control blk address: 0xef80, int: 1, irq: 11
drivebits0-1: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming0: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming1: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
drivebits2-3: 4249f4<Prefetch,Iordy,Errdy,Sync>
drivetiming2: pa: 0x4, pb: 0x9, mb: 0x2, mc: 0x2
drivetiming3: pa: 0x4, pb: 0x13, mb: 0x7, mc: 0xf
ide_pci: busmaster 1 status: 04 from port: 0000ef8a

  ...

wdc2: wdd_candma is set for ide_pci1
wdc2: I/O to 0xeff0 does work
wdc2: reset failed
wdc2: wd_cyl for master is 63397 (0xf7a5)
wdc2: wd_cyl for slave is 63397 (0xf7a5)
wdc2: second reset failed
wdc2: controller only command OK
wdc2 at 0xeff0-0xeff7 flags 0xa0ffa0ff on isa
ide_pci: generic_dmainit eff0:0: warning, IDE controller timing not set
wd4: wdsetmode() setting transfer mode to 22

wd(2,0): wdgetctlr: gc 45a cyl 16383 trk 16 sec 63 type
3 sz 924 model IBM-DTTA-351680
wdc2: unit 0 (wd4): <IBM-DTTA-351680>, DMA, 32-bit, multi-block-16
wd4: 16124MB (33022080 sectors), 32760 cyls, 16 heads, 63 S/T, 512 B/S
wd4: ATA INQUIRE valid = 0007, dmamword = 0007, apio = 0003, udma = 0207
wdc3: wdd_candma is set for ide_pci1
wdc3: I/O to 0xefa8 does work
wdc3: reset failed
wdc3: wd_cyl for master is 63397 (0xf7a5)
wdc3: wd_cyl for slave is 63397 (0xf7a5)
wdc3: second reset failed
wdc3: controller only command OK
wdc3 at 0xefa8-0xefaf flags 0xa0ffa0ff on isa
ide_pci: generic_dmainit efa8:0: warning, IDE controller timing not set
wd6: wdsetmode() setting transfer mode to 22

wd(3,0): wdgetctlr: gc 45a cyl 16383 trk 16 sec 63 type
3 sz 924 model IBM-DTTA-351680
wdc3: unit 0 (wd6): <IBM-DTTA-351680>, DMA, 32-bit, multi-block-16
wd6: 16124MB (33022080 sectors), 32760 cyls, 16 heads, 63 S/T, 512 B/S
wd6: ATA INQUIRE valid = 0007, dmamword = 0007, apio = 0003, udma = 0207

  at this point, run 'fdisk wd4'

wd(2,0): wdsetctlr: C 32760 H 16 S 63
wd4: interrupt timeout (status 50<rdy,seekdone> error 0)
wd4: wdtimeout() DMA status 1<active>
wd4: wdunwedge failed (status 50<rdy,seekdone> error 0)
wd4s1: type 0x6, start 63, end = 96389, size 96327 : OK
wd(2,0): wdsetctlr: C 32760 H 16 S 63
wd4: interrupt timeout (status 50<rdy,seekdone> error 0)
wd4: wdtimeout() DMA status 1<active>
wd4: wdunwedge failed (status 50<rdy,seekdone> error 0)
wd4: interrupt timeout (status 50<rdy,seekdone> error 0)
wd4: wdtimeout() DMA status 1<active>
wd4: wdunwedge failed (status 50<rdy,seekdone> error 0)

  at this point, run 'fdisk wd6'

wd(3,0): wdsetctlr: C 32760 H 16 S 63
wd6: DMA failure, DMA status 0
wd6s1: type 0x6, start 63, end = 96389, size 96327 : OK
wd(3,0): wdsetctlr: C 32760 H 16 S 63
wd6: DMA failure, DMA status 0
wd6: interrupt timeout (status 50<rdy,seekdone> error 0)
wd6: wdtimeout() DMA status 1<active>
wd6: wdunwedge failed (status 58<rdy,seekdone,drq> error 0)


David

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?19990121230129.D5377>