From owner-freebsd-current@FreeBSD.ORG Wed Oct 8 12:57:48 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 14DBC16A4C0; Wed, 8 Oct 2003 12:57:48 -0700 (PDT) Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 139FE43FDD; Wed, 8 Oct 2003 12:57:43 -0700 (PDT) (envelope-from gallatin@cs.duke.edu) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.12.10/8.12.10) with ESMTP id h98Jvgn6011785 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Wed, 8 Oct 2003 15:57:42 -0400 (EDT) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.6/8.9.1) id h98Jvbw20742; Wed, 8 Oct 2003 15:57:37 -0400 (EDT) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16260.27697.175840.870364@grasshopper.cs.duke.edu> Date: Wed, 8 Oct 2003 15:57:37 -0400 (EDT) To: sos@freebsd.org X-Mailer: VM 6.75 under 21.1 (patch 12) "Channel Islands" XEmacs Lucid cc: current@freebsd.org Subject: UDMA33 on older acer aladdin chips X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Oct 2003 19:57:48 -0000 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 @@ -382,7 +382,10 @@ 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@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 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: random: mem: irongate0: pcib0: on irongate0 pci0: 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: at device 0.0 (no driver attached) pcib1: 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: 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: at device 5.0 (no driver attached) isab0: at device 7.0 on pci0 isa0: on isab0 fxp0: 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: on fxp0 inphy0: on miibus0 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto fxp0: bpf attached fxp0: interrupting at ISA irq 9 pci0: 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: 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: 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 ata1: at 0x170 irq 15 on atapci0 ata1: interrupting at ISA irq 15 ata1: [MPSAFE] pci0: 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: at port 0x64,0x60 on isa0 atkbd0: 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: at port 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on isa0 fdc0: interrupting at ISA irq 6 mcclock0: 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: at port 0x3bc-0x3c3 irq 7 on isa0 ppc0: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode ppbus0: on ppc0 lpt0: on ppbus0 lpt0: Polled port ppi0: on ppbus0 ppc0: interrupting at ISA irq 7 sc0: 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: 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: failed to probe at port 0x800-0x807 on isa0 unknown: failed to probe at port 0x330-0x331,0x388-0x38b,0x220-0x22f irq 5 drq 0,1 on isa0 unknown: 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: 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 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 acd0: setting PIO4 on AcerLabs Aladdin chip acd0: 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 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=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 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 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 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=0 Mounting root from ufs:/dev/ad0a setrootbyname failed ffs_mountroot: can't find rootvp Root mount failed: 6 Manual root filesystem specification: : Mount using filesystem eg. ufs:/dev/da0a ? List valid disk boot devices Abort manual input mountroot> panic: Root mount failed, startup aborted.