From owner-freebsd-stable Sun Nov 26 4:16:22 2000 Delivered-To: freebsd-stable@freebsd.org Received: from www.mmlab.cse.yzu.edu.tw (www.mmlab.cse.yzu.edu.tw [140.138.145.166]) by hub.freebsd.org (Postfix) with SMTP id 24BED37B4C5 for ; Sun, 26 Nov 2000 04:15:17 -0800 (PST) Received: (qmail 58883 invoked from network); 26 Nov 2000 12:14:38 -0000 Received: from www.mmlab.cse.yzu.edu.tw (HELO www.mmlab.cse.yzu.edu.tw.) (@140.138.145.166) by www.mmlab.cse.yzu.edu.tw with SMTP; 26 Nov 2000 12:14:38 -0000 Date: Sun, 26 Nov 2000 20:14:38 +0800 (CST) From: Tai-hwa Liang To: Cc: Subject: 4.2-RELEASE ata0-master probe failed(solved) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi, According to my injected debugging message, the first time "inb(scp->altioaddr)" was executed in ata_intr(), it returns 0xd0(busy): /* if drive is busy it didn't interrupt */ if (inb(scp->altioaddr) & ATA_S_BUSY) return; The booting message then said: "ata0-master: ata_comand: timeout waiting for intr," and stopped to interact with my hard disk attached on ata0-master anymore. However, if I forced an interrupt clear before busy return, the timeout condition can be resolved & all further disk I/O operations went normally: /* if drive is busy it didn't interrupt */ if (inb(scp->altioaddr) & ATA_S_BUSY) { /* clear interrupt */ inb(scp->ioaddr + ATA_STATUS); return; } Include the above hacks, there are two other temporary "fixes" against ata-all.c, 1.50.2.14. All of them work in my 4.2-R box. The first is to replace the status checking routine in ata_intr() with the old one (in 1.50.2.7): --- /sys/dev/ata/ata-all.c.old Fri Nov 24 11:19:59 2000 +++ /sys/dev/ata/ata-all.c Sat Nov 25 00:20:25 2000 @@ -1120,12 +1120,18 @@ } DELAY(1); +#if 0 /* if drive is busy it didn't interrupt */ if (inb(scp->altioaddr) & ATA_S_BUSY) return; /* clear interrupt and get status */ scp->status = inb(scp->ioaddr + ATA_STATUS); +#else + /* get status, if drive is busy it didn't interrupt so return */ + if ((scp->status = inb(scp->ioaddr + ATA_STATUS)) & ATA_S_BUSY) + return; +#endif if (scp->status & ATA_S_ERROR) scp->error = inb(scp->ioaddr + ATA_ERROR); @@ -1264,37 +1270,37 @@ /* wait for BUSY to go inactive */ for (timeout = 0; timeout < 310000; timeout++) { if (status0 & ATA_S_BUSY) { - outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); - DELAY(10); - status0 = inb(scp->ioaddr + ATA_STATUS); - if (!(status0 & ATA_S_BUSY)) { - /* check for ATAPI signature while its still there */ + outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); + DELAY(10); + status0 = inb(scp->ioaddr + ATA_STATUS); + if (!(status0 & ATA_S_BUSY)) { + /* check for ATAPI signature while its still there */ a = inb(scp->ioaddr + ATA_CYL_LSB); b = inb(scp->ioaddr + ATA_CYL_MSB); if (bootverbose) ata_printf(scp, ATA_MASTER, "ATAPI probe a=%02x b=%02x\n", a, b); if (a == ATAPI_MAGIC_LSB && b == ATAPI_MAGIC_MSB) - scp->devices |= ATA_ATAPI_MASTER; - } - } - if (status1 & ATA_S_BUSY) { - outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); - DELAY(10); - status1 = inb(scp->ioaddr + ATA_STATUS); - if (!(status1 & ATA_S_BUSY)) { - /* check for ATAPI signature while its still there */ + scp->devices |= ATA_ATAPI_MASTER; + } + } + if (status1 & ATA_S_BUSY) { + outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); + DELAY(10); + status1 = inb(scp->ioaddr + ATA_STATUS); + if (!(status1 & ATA_S_BUSY)) { + /* check for ATAPI signature while its still there */ a = inb(scp->ioaddr + ATA_CYL_LSB); b = inb(scp->ioaddr + ATA_CYL_MSB); if (bootverbose) ata_printf(scp, ATA_SLAVE, "ATAPI probe a=%02x b=%02x\n", a, b); if (a == ATAPI_MAGIC_LSB && b == ATAPI_MAGIC_MSB) - scp->devices |= ATA_ATAPI_SLAVE; - } - } + scp->devices |= ATA_ATAPI_SLAVE; + } + } if (*mask == 0x01) /* wait for master only */ - if (!(status0 & ATA_S_BUSY)) + if (!(status0 & ATA_S_BUSY)) break; if (*mask == 0x02) /* wait for slave only */ if (!(status1 & ATA_S_BUSY)) @@ -1319,27 +1325,27 @@ if (*mask & 0x01 && ostat0 != 0x00 && !(scp->devices & ATA_ATAPI_MASTER)) { outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); - DELAY(10); + DELAY(10); outb(scp->ioaddr + ATA_ERROR, 0x58); outb(scp->ioaddr + ATA_CYL_LSB, 0xa5); a = inb(scp->ioaddr + ATA_ERROR); b = inb(scp->ioaddr + ATA_CYL_LSB); if (bootverbose) ata_printf(scp, ATA_MASTER, "ATA probe a=%02x b=%02x\n", a, b); - if (a != 0x58 && b == 0xa5) - scp->devices |= ATA_ATA_MASTER; + if (a != 0x58 && b == 0xa5) + scp->devices |= ATA_ATA_MASTER; } if (*mask & 0x02 && ostat1 != 0x00 && !(scp->devices & ATA_ATAPI_SLAVE)) { outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); - DELAY(10); + DELAY(10); outb(scp->ioaddr + ATA_ERROR, 0x58); outb(scp->ioaddr + ATA_CYL_LSB, 0xa5); a = inb(scp->ioaddr + ATA_ERROR); b = inb(scp->ioaddr + ATA_CYL_LSB); if (bootverbose) ata_printf(scp, ATA_SLAVE, "ATA probe a=%02x b=%02x\n", a, b); - if (a != 0x58 && b == 0xa5) - scp->devices |= ATA_ATA_SLAVE; + if (a != 0x58 && b == 0xa5) + scp->devices |= ATA_ATA_SLAVE; } if (bootverbose) ata_printf(scp, -1, "devices=%02x\n", scp->devices); The second is to swap the busy detecting & interrupt clear routines in ata_intr(): --- /sys/dev/ata/ata-all.c.old Sun Nov 26 10:59:11 2000 +++ /sys/dev/ata/ata-all.c Sun Nov 26 10:59:37 2000 @@ -1120,13 +1120,13 @@ } DELAY(1); + /* clear interrupt and get status */ + scp->status = inb(scp->ioaddr + ATA_STATUS); + /* if drive is busy it didn't interrupt */ if (inb(scp->altioaddr) & ATA_S_BUSY) return; - /* clear interrupt and get status */ - scp->status = inb(scp->ioaddr + ATA_STATUS); - if (scp->status & ATA_S_ERROR) scp->error = inb(scp->ioaddr + ATA_ERROR); @@ -1264,37 +1264,37 @@ /* wait for BUSY to go inactive */ for (timeout = 0; timeout < 310000; timeout++) { if (status0 & ATA_S_BUSY) { - outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); - DELAY(10); - status0 = inb(scp->ioaddr + ATA_STATUS); - if (!(status0 & ATA_S_BUSY)) { - /* check for ATAPI signature while its still there */ + outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); + DELAY(10); + status0 = inb(scp->ioaddr + ATA_STATUS); + if (!(status0 & ATA_S_BUSY)) { + /* check for ATAPI signature while its still there */ a = inb(scp->ioaddr + ATA_CYL_LSB); b = inb(scp->ioaddr + ATA_CYL_MSB); if (bootverbose) ata_printf(scp, ATA_MASTER, "ATAPI probe a=%02x b=%02x\n", a, b); if (a == ATAPI_MAGIC_LSB && b == ATAPI_MAGIC_MSB) - scp->devices |= ATA_ATAPI_MASTER; - } - } - if (status1 & ATA_S_BUSY) { - outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); - DELAY(10); - status1 = inb(scp->ioaddr + ATA_STATUS); - if (!(status1 & ATA_S_BUSY)) { - /* check for ATAPI signature while its still there */ + scp->devices |= ATA_ATAPI_MASTER; + } + } + if (status1 & ATA_S_BUSY) { + outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); + DELAY(10); + status1 = inb(scp->ioaddr + ATA_STATUS); + if (!(status1 & ATA_S_BUSY)) { + /* check for ATAPI signature while its still there */ a = inb(scp->ioaddr + ATA_CYL_LSB); b = inb(scp->ioaddr + ATA_CYL_MSB); if (bootverbose) ata_printf(scp, ATA_SLAVE, "ATAPI probe a=%02x b=%02x\n", a, b); if (a == ATAPI_MAGIC_LSB && b == ATAPI_MAGIC_MSB) - scp->devices |= ATA_ATAPI_SLAVE; - } - } + scp->devices |= ATA_ATAPI_SLAVE; + } + } if (*mask == 0x01) /* wait for master only */ - if (!(status0 & ATA_S_BUSY)) + if (!(status0 & ATA_S_BUSY)) break; if (*mask == 0x02) /* wait for slave only */ if (!(status1 & ATA_S_BUSY)) @@ -1319,27 +1319,27 @@ if (*mask & 0x01 && ostat0 != 0x00 && !(scp->devices & ATA_ATAPI_MASTER)) { outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_MASTER); - DELAY(10); + DELAY(10); outb(scp->ioaddr + ATA_ERROR, 0x58); outb(scp->ioaddr + ATA_CYL_LSB, 0xa5); a = inb(scp->ioaddr + ATA_ERROR); b = inb(scp->ioaddr + ATA_CYL_LSB); if (bootverbose) ata_printf(scp, ATA_MASTER, "ATA probe a=%02x b=%02x\n", a, b); - if (a != 0x58 && b == 0xa5) - scp->devices |= ATA_ATA_MASTER; + if (a != 0x58 && b == 0xa5) + scp->devices |= ATA_ATA_MASTER; } if (*mask & 0x02 && ostat1 != 0x00 && !(scp->devices & ATA_ATAPI_SLAVE)) { outb(scp->ioaddr + ATA_DRIVE, ATA_D_IBM | ATA_SLAVE); - DELAY(10); + DELAY(10); outb(scp->ioaddr + ATA_ERROR, 0x58); outb(scp->ioaddr + ATA_CYL_LSB, 0xa5); a = inb(scp->ioaddr + ATA_ERROR); b = inb(scp->ioaddr + ATA_CYL_LSB); if (bootverbose) ata_printf(scp, ATA_SLAVE, "ATA probe a=%02x b=%02x\n", a, b); - if (a != 0x58 && b == 0xa5) - scp->devices |= ATA_ATA_SLAVE; + if (a != 0x58 && b == 0xa5) + scp->devices |= ATA_ATA_SLAVE; } if (bootverbose) ata_printf(scp, -1, "devices=%02x\n", scp->devices); I'm not sure whether any of the above hacks breaks anything or just doesn't make sense(just for my kludge laptop?); therefore, would someone please test/review the above patches for me? 4.2-RELEASE verbose booting message after patch applied: Copyright (c) 1992-2000 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 4.2-RELEASE #0 Calibrating clock(s) ... TSC clock: 265246309 Hz, i8254 clock: 1193105 Hz Timecounter "i8254" frequency 1193105 Hz CPU: Pentium II/Pentium II Xeon/Celeron (265.25-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x652 Stepping = 2 Features=0x183f9ff real memory = 67108864 (65536K bytes) Physical memory chunk(s): 0x00001000 - 0x0009efff, 647168 bytes (158 pages) 0x002f9000 - 0x03ff5fff, 63950848 bytes (15613 pages) avail memory = 62205952 (60748K bytes) bios32: Found BIOS32 Service Directory header at 0xc00f6460 bios32: Entry = 0xfd7e0 (c00fd7e0) Rev = 0 Len = 1 pcibios: PCI BIOS entry at 0x203 pnpbios: Found PnP BIOS data at 0xc00f6490 pnpbios: Entry = f0000:ac98 Rev = 1.0 Other BIOS signatures found: ACPI: 000f6440 VESA: information block 56 45 53 41 00 02 6b 00 00 c0 00 00 00 00 42 87 00 c0 20 00 00 00 12 29 00 c0 13 29 00 c0 14 29 00 c0 15 29 00 c0 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 VESA: 15 mode(s) found VESA: v2.0, 2048k memory, flags:0x0, mode table:0xc00c8742 (c0008742) VESA: Copyright 1994 TRIDENT MICROSYSTEMS INC. VESA: Pentium Pro MTRR support enabled pci_open(1): mode 1 addr port (0x0cf8) is 0x80001010 pci_open(1a): mode1res=0x80000000 (0x80000000) pci_cfgcheck: device 0 [class=060000] [hdr=00] is there (id=71928086) apm0: on motherboard apm: found APM BIOS v1.2, connected at v1.2 npx0: on motherboard npx0: INT 16 interface pci_open(1): mode 1 addr port (0x0cf8) is 0x00000000 pci_open(1a): mode1res=0x80000000 (0x80000000) pci_cfgcheck: device 0 [class=060000] [hdr=00] is there (id=71928086) pcib0: on motherboard found-> vendor=0x8086, dev=0x7192, revid=0x02 class=06-00-00, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 map[10]: type 1, range 32, base 00000000, size 26 found-> vendor=0x1023, dev=0x9388, revid=0xd3 class=03-00-00, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 intpin=a, irq=9 map[10]: type 1, range 32, base fe400000, size 22 map[14]: type 1, range 32, base fede0000, size 17 map[18]: type 1, range 32, base fe800000, size 22 found-> vendor=0x8086, dev=0x7110, revid=0x02 class=06-01-00, hdrtype=0x00, mfdev=1 subordinatebus=0 secondarybus=0 found-> vendor=0x8086, dev=0x7111, revid=0x01 class=01-01-80, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 map[20]: type 1, range 32, base 0000fcd0, size 4 found-> vendor=0x8086, dev=0x7112, revid=0x01 class=0c-03-00, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 intpin=d, irq=9 map[20]: type 1, range 32, base 0000fce0, size 5 found-> vendor=0x8086, dev=0x7113, revid=0x02 class=06-80-00, hdrtype=0x00, mfdev=0 subordinatebus=0 secondarybus=0 map[90]: type 1, range 32, base 0000ff80, size 4 found-> vendor=0x104c, dev=0xac19, revid=0x00 class=06-07-00, hdrtype=0x02, mfdev=1 subordinatebus=0 secondarybus=0 intpin=a, irq=255 found-> vendor=0x104c, dev=0xac19, revid=0x00 class=06-07-00, hdrtype=0x02, mfdev=1 subordinatebus=0 secondarybus=0 intpin=b, irq=255 pci0: on pcib0 pci0: (vendor=0x1023, dev=0x9388) at 2.0 irq 9 isab0: at device 3.0 on pci0 isa0: on isab0 atapci0: port 0xfcd0-0xfcdf at device 3.1 on pci0 ata0: iobase=0x01f0 altiobase=0x03f6 bmaddr=0xfcd0 ata0: mask=03 status0=50 status1=50 ata0: mask=03 ostat0=50 ostat2=50 ata0-master: ATAPI probe a=00 b=00 ata0-slave: ATAPI probe a=14 b=eb ata0: mask=03 status0=50 status1=00 ata0-master: ATA probe a=01 b=a5 ata0: devices=09 ata0: at 0x1f0 irq 14 on atapci0 ata1: iobase=0x0170 altiobase=0x0376 bmaddr=0xfcd8 ata1: mask=00 status0=ff status1=ff ata1: probe allocation failed pci0: (vendor=0x8086, dev=0x7112) at 3.2 irq 9 chip1: port 0xff80-0xff8f at device 3.3 on pci0 pcic-pci0: at device 10.0 on pci0 pcic-pci0: TI12XX PCI Config Reg: [speaker enable][FUNC pci int + CSC serial isa irq] pcic-pci0: Legacy address set to 0x3e0 PCI Config space: 00: ac19104c 02100007 06070000 00820000 10: 00000000 020000a0 00000000 00000000 20: 00000000 00000000 00000000 00000000 30: 00000000 00000000 00000000 03c001ff 40: 77887878 000003e1 00000000 00000000 50: 00000000 00000000 00000000 00000000 60: 00000000 00000000 00000000 00000000 70: 00000000 00000000 00000000 00000000 80: 00449020 00000000 00000000 010c1000 90: 616602c0 00000000 00000000 00000000 Cardbus Socket registers: 00: f000ff53: f000ff53: f000e2c3: f000ff53: 10: f000ff53: f000ff54: f0009c9f: f000ff53: ExCa registers: 00: eb 88 d5 43 30 d2 66 f7 f3 88 d7 5a 66 3d ff 03 10: 00 00 fb 77 44 86 c4 c0 c8 02 08 e8 40 91 88 fe 20: 28 e0 8a 66 02 38 e0 72 02 88 e0 bf 05 00 c4 5e 30: 04 50 b4 02 cd 13 5b 73 0a 4f 74 1c 30 e4 cd 13 pcic-pci1: at device 10.1 on pci0 pcic-pci1: TI12XX PCI Config Reg: [speaker enable][FUNC pci int + CSC serial isa irq] PCI Config space: 00: ac19104c 02100007 06070000 00820000 10: 00000000 020000a0 00000000 00000000 20: 00000000 00000000 00000000 00000000 30: 00000000 00000000 00000000 03c002ff 40: 77887878 000003e1 00000000 00000000 50: 00000000 00000000 00000000 00000000 60: 00000000 00000000 00000000 00000000 70: 00000000 00000000 00000000 00000000 80: 00449020 00000000 00000000 010c1000 90: 616602c0 00000000 00000000 00000000 Cardbus Socket registers: 00: f000ff53: f000ff53: f000e2c3: f000ff53: 10: f000ff53: f000ff54: f0009c9f: f000ff53: ExCa registers: 00: eb 88 d5 43 30 d2 66 f7 f3 88 d7 5a 66 3d ff 03 10: 00 00 fb 77 44 86 c4 c0 c8 02 08 e8 40 91 88 fe 20: 28 e0 8a 66 02 38 e0 72 02 88 e0 bf 05 00 c4 5e 30: 04 50 b4 02 cd 13 5b 73 0a 4f 74 1c 30 e4 cd 13 Trying Read_Port at 203 Trying Read_Port at 243 Trying Read_Port at 283 Trying Read_Port at 2c3 Trying Read_Port at 303 Trying Read_Port at 343 Trying Read_Port at 383 Trying Read_Port at 3c3 isa_probe_children: disabling PnP devices isa_probe_children: probing non-PnP devices atkbdc0: at port 0x60,0x64 on isa0 atkbd0: irq 1 on atkbdc0 atkbd: the current kbd controller command byte 0047 atkbd: keyboard ID 0x41ab (2) kbdc: RESET_KBD return code:00fa kbdc: RESET_KBD status:00aa kbd0: atkbd0, AT 101/102 (2), config:0x0, flags:0x3d0000 psm0: current command byte:0047 kbdc: TEST_AUX_PORT status:0000 kbdc: RESET_AUX return code:00fa kbdc: RESET_AUX status:00aa kbdc: RESET_AUX ID:0000 psm: status 00 02 64 psm: status 00 00 64 psm: status 00 03 64 psm: status 00 03 64 psm: data 08 00 00 psm: status 10 00 64 psm: status 00 02 64 psm: data 08 00 00 psm: status 00 02 64 psm0: irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0-00, 2 buttons psm0: config:00006000, flags:00000000, packet size:3 psm0: syncmask:c0, syncbits:00 vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 fb0: vga0, vga, type:VGA (5), flags:0x700ff fb0: port:0x3c0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000 fb0: init mode:24, bios mode:3, current mode:24 fb0: window:0xc00b8000 size:32k gran:32k, buf:0 size:32k VGA parameters upon power-up 50 18 10 00 00 00 03 00 02 67 5f 4f 50 82 55 81 bf 1f 00 4f 0d 0e 00 00 03 c0 9c 8e 8f 28 1f 96 b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff VGA parameters in BIOS for mode 24 50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff EGA/VGA parameters to be used for mode 24 50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff sc0: on isa0 sc0: VGA <16 virtual consoles, flags=0x200> sc0: fb0, kbd0, terminal emulator: sc (syscons terminal) fdc0: at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 sio0: irq maps: 0x41 0x51 0x41 0x41 sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1: irq maps: 0x41 0x49 0x41 0x41 sio1 at port 0x2f8-0x2ff irq 3 flags 0x10 on isa0 sio1: type 16550A sbc0: at port 0x220-0x22f irq 5 drq 3 flags 0x15 on isa0 pcm0: on sbc0 pcm0: ESS1869 detected, newspeed pcm: setmap 4000, 1000; 0xc547d000 -> 4000 pcm: setmap 5000, 1000; 0xc547e000 -> 5000 pcic0: at port 0x3e0-0x3e1 irq 10 on isa0 pcic0: management irq 10 stat is 0 stat is 0 pccard0: on pcic0 pccard1: on pcic0 ppc0: parallel port found at 0x378 ppc0: using extended I/O port range PC873xx probe at 0x398 got unknown ID 0xb1 ppc0: SPP ppc0: at port 0x378-0x37f irq 7 on isa0 ppc0: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode plip0: on ppbus0 bpf: lp0 attached lpt0: on ppbus0 lpt0: Interrupt-driven port ppi0: on ppbus0 isa_probe_children: probing PnP devices BIOS Geometries: 0:03127f3f 0..786=787 cylinders, 0..127=128 heads, 1..63=63 sectors 0 accounted for Device configuration finished. bpf: lo0 attached ata0-master: success setting UDMA2 on PIIX4 chip Creating DISK ad0 Creating DISK wd0 ad0: ATA-3 disk at ata0-master ad0: 3102MB (6354432 sectors), 6304 cyls, 16 heads, 63 S/T, 512 B/S ad0: 16 secs/int, 1 depth queue, UDMA33 ad0: piomode=4 dmamode=2 udmamode=2 cblid=0 ad0: 3102MB [6304/16/63] at ata0-master UDMA33 ata0-slave: piomode=4 dmamode=2 udmamode=-1 dmaflag=1 ata0-slave: success setting PIO4 on generic chip acd0: CDROM drive at ata0 as slave acd0: read 4134KB/s (4134KB/s), 128KB buffer, PIO4 acd0: Reads: CD-R, CD-RW, CD-DA acd0: Audio: play, 256 volume levels acd0: Mechanism: ejectable tray acd0: Medium: CD-ROM 120mm photo disc loaded, unlocked Mounting root from ufs:ad0s2a ad0s1: type 0x83, start 63, end = 2096639, size 2096577 : OK ad0s2: type 0xa5, start 2096640, end = 4193279, size 2096640 : OK ad0s3: type 0x6, start 4193280, end = 6072191, size 1878912 : OK ad0s4: type 0xa0, start 6072192, end = 6346367, size 274176 : OK start_init: trying /sbin/init splash: image decoder found: blank_saver Linux-ELF exec handler installed The original 4.2-RELEASE ata-related booting message: atapci0: port 0xfcd0-0xfcdf at device 3.1 on pci0 ata0: iobase=0x01f0 altiobase=0x03f6 bmaddr=0xfcd0 ata0: mask=03 status0=50 status1=50 ata0: mask=03 ostat0=50 ostat2=50 ata0-master: ATAPI probe a=00 b=00 ata0-slave: ATAPI probe a=14 b=eb ata0: mask=03 status0=50 status1=00 ata0-master: ATAPI probe a=01 b=a5 ata0: devices=09 ata0: at 0x1f0 irq 14 on atapci0 ata1: iobase=0x0170 altiobase=0x0376 bmaddr=0xfcd8 ata1: mask=00 status0=ff status1=ff ata1: probe allocation failed . . . ata0-master: ata_comand: timeout waiting for intr ata0-master: identify failed ata0-slave: piomode=4 dmamode=2 udmamode=-1 dmaflag=1 ata0-slave: success setting WDMA2 on PIIX4 chip acd0: CDROM drive at ata0 as slave acd0: read 4134KB/s (4134KB/s), 128KB buffer, WDMA2 acd0: Reads: CD-R, CD-RW, CD-DA acd0: Audio: play, 256 volume levels acd0: Mechanism: ejectable tray acd0: Medium: CD-ROM 120mm photo disc loaded, unlocked no devsw (majdev=30 bootdev=0xa0300001e) Mount root from ufs:ad0s2a no such device 'ad' setrootbyname failed ffs_mountroot: can't find rootvp Root mount failed: 6 . . . -- Regards, Tai-hwa Liang Multimedia Laboratory, Dept. of Computer Science & Engineering Yuan Ze University Taiwan, Republic of China To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message