UDMA33 on older acer aladdin chips

From: Andrew Gallatin <gallatin_at_cs.duke.edu>
Date: Wed, 8 Oct 2003 15:57:37 -0400 (EDT)
Hi,

I recently decided to update my alpha UP1000 to today's current from a
mid-July build.  However, UDMA33 did not work on a hard disk attached
to the built-in Acer Aladdin controller (verbose dmesg appended).

I think I have narrowed the problem down to this line of code:

	atadev->channel->flags |= ATA_ATAPI_DMA_RO;

Removing this line gets my UDMA33 back.  

Cheers,

Drew

Patch to hack around problem:

Index: ata-chipset.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.39
diff -u -r1.39 ata-chipset.c
--- ata-chipset.c	8 Sep 2003 13:55:05 -0000	1.39
+++ ata-chipset.c	8 Oct 2003 19:43:30 -0000
_at__at_ -382,7 +382,10 _at__at_
 
     if (ctlr->chip->cfg2 & ALIOLD) {
 	/* doesn't support ATAPI DMA on write */
+#if 0
+      /* XXX this breaks ATA disk DMA support */
 	atadev->channel->flags |= ATA_ATAPI_DMA_RO;
+#endif
 	if (atadev->channel->devices & ATA_ATAPI_MASTER &&
 	    atadev->channel->devices & ATA_ATAPI_SLAVE) {
 	    /* doesn't support ATAPI DMA on two ATAPI devices */


Dmesg from failure:

Copyright (c) 1992-2003 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 5.1-CURRENT #4: Wed Oct  8 14:22:44 EDT 2003
    gallatin_at_thunder:/home/gallatin/current/sys/alpha/compile/THUNDER
Preloaded elf kernel "/kernel.test" at 0xfffffc0000766000.
UP1000
API UP1000 598 MHz, 598MHz
8192 byte page size, 1 processor.
CPU: EV67 (21264A) major=11 minor=8 extensions=0x307<BWX,FIX,CIX,MVI,PRECISE>
OSF PAL rev: 0x100010002013e
real memory  = 668344320 (637 MB)
Physical memory chunk(s):
0x00788000 - 0x275dbfff, 652558336 bytes (79658 pages)
avail memory = 643145728 (613 MB)
null: <null device, zero device>
random: <entropy source>
mem: <memory & I/O>
irongate0: <AMD 751 Core Logic chipset>
pcib0: <AMD 751 PCI host bus adapter> on irongate0
pci0: <PCI bus> on pcib0
pci0: physical bus=0
	map[10]: type 3, range 32, base 00000000, size  0, enabled
	map[14]: type 3, range 32, base 423a0000, size 12, enabled
	map[18]: type 4, range 32, base 000100c0, size  2, port disabled
found->	vendor=0x1022, dev=0x7006, revid=0x25
	bus=0, slot=0, func=0
	class=06-00-00, hdrtype=0x00, mfdev=1
	cmdreg=0x0006, statreg=0x2210, cachelnsz=0 (dwords)
	lattimer=0xff (7650 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
found->	vendor=0x1022, dev=0x7007, revid=0x01
	bus=0, slot=1, func=0
	class=06-04-00, hdrtype=0x01, mfdev=1
	cmdreg=0x0007, statreg=0x0220, cachelnsz=0 (dwords)
	lattimer=0xff (7650 ns), mingnt=0x0e (3500 ns), maxlat=0x00 (0 ns)
found->	vendor=0x10b9, dev=0x1533, revid=0xc3
	bus=0, slot=7, func=0
	class=06-01-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x3200, cachelnsz=0 (dwords)
	lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	map[10]: type 3, range 32, base 423a1000, size 12, enabled
	map[14]: type 4, range 32, base 00010080, size  5, enabled
	map[18]: type 1, range 32, base 42100000, size 20, enabled
found->	vendor=0x8086, dev=0x1229, revid=0x02
	bus=0, slot=8, func=0
	class=02-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0280, cachelnsz=0 (dwords)
	lattimer=0xff (7650 ns), mingnt=0x08 (2000 ns), maxlat=0x38 (14000 ns)
	intpin=a, irq=9
	map[10]: type 3, range 32, base 40000000, size 24, enabled
found->	vendor=0x14c1, dev=0x8043, revid=0x03
	bus=0, slot=10, func=0
	class=00-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0086, statreg=0x0420, cachelnsz=16 (dwords)
	lattimer=0xff (7650 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=a, irq=9
	map[10]: type 4, range 32, base 00010000, size  7, enabled
	map[14]: type 1, range 32, base 423a2000, size  7, enabled
found->	vendor=0x10b7, dev=0x9055, revid=0x64
	bus=0, slot=11, func=0
	class=02-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0210, cachelnsz=16 (dwords)
	lattimer=0xf8 (7440 ns), mingnt=0x0a (2500 ns), maxlat=0x0a (2500 ns)
	intpin=a, irq=10
	powerspec 1  supports D0 D1 D2 D3  current D0
	map[10]: type 4, range 32, base 000001f0, size  4, enabled
	map[14]: type 4, range 32, base 000003f4, size  2, enabled
	map[18]: type 4, range 32, base 00000170, size  4, enabled
	map[1c]: type 4, range 32, base 00000374, size  2, enabled
	map[20]: type 4, range 32, base 000100b0, size  4, enabled
found->	vendor=0x10b9, dev=0x5229, revid=0xc1
	bus=0, slot=16, func=0
	class=01-01-fa, hdrtype=0x00, mfdev=0
	cmdreg=0x0005, statreg=0x0280, cachelnsz=0 (dwords)
	lattimer=0xff (7650 ns), mingnt=0x02 (500 ns), maxlat=0x04 (1000 ns)
	intpin=a, irq=15
	map[10]: type 4, range 32, base 00001000, size  6, enabled
	map[14]: type 4, range 32, base 00001040, size  5, enabled
found->	vendor=0x10b9, dev=0x7101, revid=0x00
	bus=0, slot=17, func=0
	class=00-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0001, statreg=0x0280, cachelnsz=0 (dwords)
	lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
pci0: <bridge, HOST-PCI> at device 0.0 (no driver attached)
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pcib1:   secondary bus     2
pcib1:   subordinate bus   2
pcib1:   I/O decode        0xfff000-0xfff
pcib1:   memory decode     0xfff00000-0xfffff
pcib1:   prefetched decode 0x41000000-0x420fffff
pci2: <PCI bus> on pcib1
pci2: physical bus=2
	map[10]: type 1, range 32, base 42000000, size 17, enabled
	map[14]: type 1, range 32, base 41000000, size 23, enabled
	map[18]: type 1, range 32, base 41800000, size 23, enabled
found->	vendor=0x104c, dev=0x3d07, revid=0x11
	bus=2, slot=5, func=0
	class=03-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x02b0, cachelnsz=0 (dwords)
	lattimer=0xff (7650 ns), mingnt=0xc0 (48000 ns), maxlat=0xc0 (48000 ns)
	intpin=a, irq=255
	powerspec 1  supports D0 D3  current D0
pci2: <display, VGA> at device 5.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
fxp0: <Intel 82557 Pro/100 Ethernet> port 0x10080-0x1009f mem 0x42100000-0x421fffff,0x423a1000-0x423a1fff irq 9 at device 8.0 on pci0
fxp0: using memory space register mapping
fxp0: Ethernet address 00:a0:c9:8a:ac:aa
fxp0: PCI IDs: 8086 1229 8086 0001 0002
fxp0: Dynamic Standby mode is disabled
miibus0: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> on miibus0
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: bpf attached
fxp0: interrupting at ISA irq 9
pci0: <old, non-VGA display device> at device 10.0 (no driver attached)
xl0: <3Com 3c905B-TX Fast Etherlink XL> port 0x10000-0x1007f mem 0x423a2000-0x423a207f irq 10 at device 11.0 on pci0
xl0: using memory mapped I/O
xl0: Ethernet address: 00:50:04:4b:25:01
xl0: media options word: a
xl0: found MII/AUTO
miibus1: <MII bus> on xl0
bmtphy0: <3c905B 10/100 internal PHY> on miibus1
bmtphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
xl0: bpf attached
xl0: interrupting at ISA irq 10
atapci0: <AcerLabs Aladdin UDMA33 controller> port 0x100b0-0x100bf,0x374-0x377,0x170-0x17f,0x3f4-0x3f7,0x1f0-0x1ff irq 15 at device 16.0 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata0: interrupting at ISA irq 14
ata0: [MPSAFE]
ata1: reset tp1 mask=03 ostat0=50 ostat1=51
ata1-master: stat=0x80 err=0x80 lsb=0x80 msb=0x80
ata1-slave:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ata1-master: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
ata1: at 0x170 irq 15 on atapci0
ata1: interrupting at ISA irq 15
ata1: [MPSAFE]
pci0: <old, non-VGA display device> at device 17.0 (no driver attached)
Trying Read_Port at 203
ESS0006: adding io range 0x800-0xfff, size=0x8, align=0x8
ESS1869: start dependent (0)
ESS1869: adding dma mask 0x2
ESS1869: adding dma mask 0x9
ESS1869: adding irq mask 0x20
ESS1869: adding io range 0x220-0x22f, size=0x10, align=0
ESS1869: adding io range 0x388-0x38b, size=0x4, align=0
ESS1869: adding io range 0x330-0x331, size=0x2, align=0
ESS1869: start dependent (1)
ESS1869: adding dma mask 0x2
ESS1869: adding dma mask 0x9
ESS1869: adding irq mask 0x6a0
ESS1869: adding io range 0x220-0x24f, size=0x10, align=0x20
ESS1869: adding io range 0x388-0x38b, size=0x4, align=0
ESS1869: adding io range 0x300-0x331, size=0x2, align=0x30
ESS1869: start dependent (1)
ESS1869: adding dma mask 0xb
ESS1869: adding dma mask 0xb
ESS1869: adding irq mask 0x1ea0
ESS1869: adding io range 0x220-0x28f, size=0x10, align=0x20
ESS1869: adding io range 0x388-0x38b, size=0x4, align=0
ESS1869: adding io range 0x300-0x331, size=0x2, align=0x30
ESS1869: start dependent (1)
ESS1869: adding dma mask 0xb
ESS1869: adding dma mask 0xb
ESS1869: adding irq mask 0x1ea0
ESS1869: adding io range 0x220-0x28f, size=0x10, align=0x20
ESS1869: adding io range 0x388-0x38b, size=0x4, align=0
ESS1869: adding io range 0x800-0xfff, size=0x2, align=0x2
ESS1869: start dependent (2)
ESS1869: adding dma mask 0xb
ESS1869: adding dma mask 0xb
ESS1869: adding irq mask 0x1ea0
ESS1869: adding io range 0x220-0x28f, size=0x10, align=0x20
ESS1869: adding io range 0x800-0xfff, size=0x4, align=0x4
ESS1869: adding io range 0x800-0xfff, size=0x2, align=0x2
ESS1869: end dependent
ESS0001: start dependent (0)
ESS0001: adding io range 0x201-0x201, size=0x1, align=0
ESS0001: start dependent (1)
ESS0001: adding io range 0x200-0x20f, size=0x1, align=0x1
ESS0001: end dependent
sc: sc0 already exists; skipping it
vga: vga0 already exists; skipping it
isa_probe_children: disabling PnP devices
isa_probe_children: probing non-PnP devices
atkbdc0: <Keyboard controller (i8042)> at port 0x64,0x60 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0: atkbd0, generic (0), config:0x0, flags:0x1f0000
atkbd0: interrupting at ISA irq 1
psm0: current command byte:0061
psm0: failed to reset the aux device.
fdc0: <Enhanced floppy controller (i82077, NE72065 or clone)> at port 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on isa0
fdc0: interrupting at ISA irq 6
mcclock0: <MC146818A real time clock> at port 0x70-0x71 on isa0
Calibrating clock(s) ... PCC clock: 598977344 Hz (firmware 598802395 Hz)
i8254 clock: 1191130 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
ppc0: using extended I/O port range
ppc0: EPP SPP
ppc0: <Parallel port> at port 0x3bc-0x3c3 irq 7 on isa0
ppc0: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode
ppbus0: <Parallel port bus> on ppc0
lpt0: <Printer> on ppbus0
lpt0: Polled port
ppi0: <Parallel I/O> on ppbus0
ppc0: interrupting at ISA irq 7
sc0: <System console> on isa0
sc0: VGA <16 virtual consoles, flags=0x0>
sc0: fb0, kbd0, terminal emulator: sc (syscons terminal)
sio0: irq maps: 0x21 0x31 0x21 0x21
sio0 at port 0x3f8-0x3ff irq 4 on isa0
sio0: type 16550A, console
sio0: interrupting at ISA irq 4
sio1: irq maps: 0x31 0x39 0x31 0x31
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
sio1: interrupting at ISA irq 3
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
fb0: vga0, vga, type:VGA (5), flags:0x7007f
fb0: port:0x3c0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000
fb0: init mode:24, bios mode:3, current mode:24
fb0: window:0xb8000 size:32k gran:32k, buf:0 size:32k
VGA parameters upon power-up
50 18 10 00 00 00 03 00 02 6f 5f 4f 50 82 55 81 
bf 1f 00 4f 00 0f 00 00 ff ff 9c 8e 8f 28 1f 96 
b9 a3 ff 00 04 02 14 01 05 03 07 38 3c 3a 3e 39 
3d 3b 3f 04 00 0f 08 00 00 00 00 00 10 0e 00 ff 
VGA parameters in BIOS for mode 24
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
EGA/VGA parameters to be used for mode 24
50 18 10 00 00 00 03 00 02 6f 5f 4f 50 82 55 81 
bf 1f 00 4f 00 0f 00 00 ff ff 9c 8e 8f 28 1f 96 
b9 a3 ff 00 04 02 14 01 05 03 07 38 3c 3a 3e 39 
3d 3b 3f 04 00 0f 08 00 00 00 00 00 10 0e 00 ff 
isa_probe_children: probing PnP devices
unknown: <ESS ES1869 Plug and Play AudioDrive> failed to probe at port 0x800-0x807 on isa0
unknown: <ESS ES1869 Plug and Play AudioDrive> failed to probe at port 0x330-0x331,0x388-0x38b,0x220-0x22f irq 5 drq 0,1 on isa0
unknown: <ESS ES1869 Plug and Play AudioDrive> failed to probe at port 0x201 on isa0
procfs registered
Timecounter "i8254" frequency 1193182 Hz quality 0
Timecounter "alpha" frequency 598977344 Hz quality 0
Timecounters tick every 0.976 msec
lo0: bpf attached
ata1-slave: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ata1-master: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
ad0: setting UDMA33 on AcerLabs Aladdin chip
GEOM: create disk ad0 dp=0xfffffc0000b250c0
ad0: <IC35L040AVER07-0/ER4OA41A> ATA-5 disk at ata1-master
ad0: 39266MB (80418240 sectors), 79780 C, 16 H, 63 S, 512 B
ad0: 16 secs/int, 1 depth queue, UDMA33
GEOM: new disk ad0
ad0: TIMEOUT - READ_DMA retrying (2 retries left)
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ad0: TIMEOUT - READ_DMA retrying (1 retry left)
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: setting PIO4 on AcerLabs Aladdin chip
acd0: <CD-ROM CDU4011/UY0A> CDROM drive at ata1 as slave
acd0: read 6890KB/s (6890KB/s), 120KB buffer, PIO4
acd0: Reads: CDR, CDRW, CDDA, packet
acd0: Writes:
acd0: Audio: play, 255 volume levels
acd0: Mechanism: ejectable tray, unlocked
acd0: Medium: no/blank disc
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ad0: FAILURE - READ_DMA timed out
ad0: FAILURE - READ_DMA status=1<ERROR> error=0
ad0: TIMEOUT - READ_DMA retrying (2 retries left)
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ad0: TIMEOUT - READ_DMA retrying (1 retry left)
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ata1: resetting devices ..
ata1: reset tp1 mask=03 ostat0=58 ostat1=50
ad0: stat=0x80 err=0x80 lsb=0x80 msb=0x80
acd0:  stat=0x10 err=0x01 lsb=0x14 msb=0xeb
ad0: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata1: reset tp2 mask=03 stat0=50 stat1=10 devices=0x9<ATAPI_SLAVE,ATA_MASTER>
acd0: pio=0x0c wdma=0x22 udma=0x42 cable=40pin
ad0: pio=0x0c wdma=0x22 udma=0x45 cable=40pin
done
ad0: FAILURE - READ_DMA timed out
ad0: FAILURE - READ_DMA status=1<ERROR> error=0
Mounting root from ufs:/dev/ad0a
setrootbyname failed
ffs_mountroot: can't find rootvp
Root mount failed: 6

Manual root filesystem specification:
  <fstype>:<device>  Mount <device> using filesystem <fstype>
                       eg. ufs:/dev/da0a
  ?                  List valid disk boot devices
  <empty line>       Abort manual input

mountroot> 
panic: Root mount failed, startup aborted.
Received on Wed Oct 08 2003 - 10:57:48 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:24 UTC