Appears the diff didn't get attached. Here it is. Sorry! ---Andrew Sherrod <ixk...@yahoo.com> wrote: > > > As I now have upgraded at last, I tested the 3.0 > version of the patch. It does appear to make the > system recognize the proper disk geometry where the > standard wd.c does not report the proper size. > Attached is the diff and 2 dmesgs, before and after. > > (Sorry for the length of the dmesg, haven't compeltely > configured the kernel yet.) > > Any thoughts on the patch? > > Andrew Sherrod > > > > ---Andrew Sherrod <ixk...@yahoo.com> wrote: > > > > I have found several people using IDE disks on newer Award BIOSes have > > trouble getting the boot-time probes and installation routines to recognize > > the correct disk geometry. > > > > If anyone is running 3.0 (or 2.2.x) on a machine with Award BIOS using IDE > > drives with LBA turned off in the kernel configuration, and if you have > > trouble getting dmesg/boot probes to recognize the proper disk size, could > > you test the attached patch for me? > > > > I would also like to find testers with ANY BIOS that reports a disk size > > too small. I think my patch will correct most problems with IDE geometry > > showing as smaller than it actually is. (I don't make any claims about > > geometries being reported as too large, or SCSI disks...) > > > > Thanks to anyone who can help. > > > > Andrew Sherrod > > > > P.S. I know this is not a really big problem, but it always seemed a bit > > insulting that FreeBSD had to rely on DOS boot sectors to get the correct > > disk geometry. I would rather that we could identify the correct geometry > > without having to rely on another OS. > > > > And, face it, for newbies and those not terribly computer literate, getting > > the right geometry during installation is a very nice feature. It is rather > > disheartening for a new-comer to find out that their new operating system > > can't even identify the correct disk geometry. > > > > > > > > > > _________________________________________________________ > > DO YOU YAHOO!? > > Get your free @yahoo.com address at http://mail.yahoo.com > > > > > ------------------------------------------------- > > PR: i386/9431 > > ------------------------------------------------- > > > > ------------------------------------------------- > > Patch for 2.2.8 (May also workfor 2.2.6/2.2.7) > > ------------------------------------------------- > > > > *** wd.c.2_2_8 Wed Jan 13 21:07:30 1999 > > --- wd.c.original.2_2_8 Wed Jan 13 21:08:24 1999 > > *************** > > *** 113,122 **** > > #define WDOPT_FORCEHD(x) (((x)&0x0f00)>>8) > > #define WDOPT_MULTIMASK 0x00ff > > > > - /* This bit mask is used to determine if the drive supports LBA > > addressing. */ > > - > > - #define WDCAP_LBA 0x02 > > - > > /* > > * This biotab field doubles as a field for the physical unit number on > > * the controller. > > --- 113,118 ---- > > *************** > > *** 1731,1745 **** > > du->dk_dd.d_nsectors = wp->wdp_sectors; > > du->dk_dd.d_secpercyl = du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; > > du->dk_dd.d_secperunit = du->dk_dd.d_secpercyl * > > du->dk_dd.d_ncylinders; > > ! > > ! /* Check for BIOS LBA flag. This should allow kernel to determine > > ! actual disk geometry for diffiuclt BIOSes. > > ! This will likely only be of use during initial installation, or > > ! perhaps when configuring a new drive. Otherwise, the disk geometry > > ! should already be known. -A. Sherrod 01/13/1999*/ > > ! > > ! if ( ( (wp->wdp_capability&WDCAP_LBA) || > > ! (wp->wdp_cylinders == 16383 ) ) && > > du->dk_dd.d_secperunit < wp->wdp_lbasize) { > > du->dk_dd.d_secperunit = wp->wdp_lbasize; > > du->dk_dd.d_ncylinders = > > --- 1727,1733 ---- > > du->dk_dd.d_nsectors = wp->wdp_sectors; > > du->dk_dd.d_secpercyl = du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; > > du->dk_dd.d_secperunit = du->dk_dd.d_secpercyl * > > du->dk_dd.d_ncylinders; > > ! if (wp->wdp_cylinders == 16383 && > > du->dk_dd.d_secperunit < wp->wdp_lbasize) { > > du->dk_dd.d_secperunit = wp->wdp_lbasize; > > du->dk_dd.d_ncylinders = > > > > ------------------------------------------------- > > Patch for 3.0 > > ------------------------------------------------- > > > > *** wd.c.3_0 Wed Jan 13 12:07:46 1999 > > --- wd.c.original.3_0 Wed Jan 13 11:17:54 1999 > > *************** > > *** 130,140 **** > > */ > > #define id_physid id_scsiid > > > > - /* This bitmask is used to determine if the BIOS flags showing LBA > > support > > - are active or inactive */ > > - > > - #define WDCAP_LBA 0x02 > > - > > /* > > * Drive states. Used to initialize drive. > > */ > > --- 130,135 ---- > > *************** > > *** 1954,1973 **** > > du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; > > du->dk_dd.d_secperunit = > > du->dk_dd.d_secpercyl * du->dk_dd.d_ncylinders; > > ! > > ! /* If BIOS specifies LBA mode is supported, but LBA > > flags > > ! are not set, check if wdp_lbasize is larger than > > ! CHS size. If so, use the lba_size. > > ! This should fix problems with certain BIOSes (e.g. > > Award) > > ! which do not report the correct size when using only > > ! CHS calculations. > > ! This will not force the use of LBA mode. It is only > > ! used to determine disk geometry. > > ! > > ! -A. Sherrod 01/13/1999 */ > > > > ! > > ! if ( ( (wp->wdp_capabilities & WDCAP_LBA) || > > ! (wp->wdp_cylinders == 16383) ) && > > du->dk_dd.d_secperunit < wp->wdp_lbasize) { > > du->dk_dd.d_secperunit = wp->wdp_lbasize; > > du->dk_dd.d_ncylinders = > > --- 1949,1955 ---- > > du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; > > du->dk_dd.d_secperunit = > > du->dk_dd.d_secpercyl * du->dk_dd.d_ncylinders; > > ! if (wp->wdp_cylinders == 16383 && > > du->dk_dd.d_secperunit < wp->wdp_lbasize) { > > du->dk_dd.d_secperunit = wp->wdp_lbasize; > > du->dk_dd.d_ncylinders = > > > > ------------------------------------------------- > > dmesg from 2.2.8 system before patch > > ------------------------------------------------- > > > > > > Copyright (c) 1992-1998 FreeBSD Inc. > > Copyright (c) 1982, 1986, 1989, 1991, 1993 > > The Regents of the University of California. All rights > > reserved. > > > > FreeBSD 2.2.8-RELEASE #6: Wed Jan 13 21:11:20 EST 1999 > > r...@hal9000.yaldabaoth.com:/usr/src/sys/compile/HAL > > CPU: AMD-K6(tm) 3D processor (350.80-MHz 586-class CPU) > > Origin = "AuthenticAMD" Id = 0x580 Stepping=0 > > Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> > > real memory = 201326592 (196608K bytes) > > avail memory = 194924544 (190356K bytes) > > Probing for devices on PCI bus 0: > > chip0 <generic PCI bridge (vendor=1106 device=0597 subclass=0)> rev 4 > > on pci0:0:0 > > chip1 <generic PCI bridge (vendor=1106 device=8598 subclass=4)> rev 0 > > on pci0:1:0 > > chip2 <generic PCI bridge (vendor=1106 device=0586 subclass=1)> rev > > 65 on pci0:7:0 > > pci0:7:1: VIA Technologies, device=0x0571, class=storage (ide) [no > > driver assigned] > > chip3 <generic PCI bridge (vendor=1106 device=3040 subclass=0)> rev > > 16 on pci0:7:3 > > xl0 <3Com 3c905B Fast Etherlink XL 10/100BaseTX> rev 48 int a irq 11 > > on pci0:10:0 > > xl0: Ethernet address: 00:10:5a:20:9b:68 > > xl0: autoneg not complete, no carrier (forcing half-duplex, 10Mbps) > > Probing for devices on PCI bus 1: > > Probing for devices on the ISA bus: > > sc0 at 0x60-0x6f irq 1 on motherboard > > sc0: VGA color <16 virtual consoles, flags=0x0> > > sio0: configured irq 4 not in bitmap of probed irqs 0 > > sio0 at 0x3f8-0x3ff irq 4 on isa > > sio0: type 8250 > > sio1 at 0x2f8-0x2ff irq 3 on isa > > sio1: type 16550A > > lpt0 at 0x378-0x37f irq 7 on isa > > lpt0: Interrupt-driven port > > lp0: TCP/IP capable interface > > psm0 at 0x60-0x64 irq 12 on motherboard > > psm0: model Generic PS/2 mouse, device ID 0 > > 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 on isa > > wdc0: unit 0 (wd0): <QUANTUM FIREBALL SE8.4A> > > wd0: 8063MB (16514064 sectors), 16383 cyls, 16 heads, 63 S/T, 512 B/S > > wdc0: unit 1 (wd1): <WDC AC33100H> > > wd1: 2014MB (4124736 sectors), 4092 cyls, 16 heads, 63 S/T, 512 B/S > > wdc1 at 0x170-0x177 irq 15 on isa > > wdc1: unit 0 (wd2): <Maxtor 84320D4> > > wd2: 1888MB (3866940 sectors), 4092 cyls, 15 heads, 63 S/T, 512 B/S > > wdc1: unit 1 (atapi): <FX322M/w03>, removable, intr, dma, iordis > > wcd0: 5512KB/sec, 256KB cache, audio play, 255 volume levels, > > ejectable tray > > wcd0: no disc inside, unlocked > > mcd0 not found at 0x300 > > npx0 flags 0x1 on motherboard > > npx0: INT 16 interface > > > > ------------------------------------------------- > > dmesg from 2.2.8 system after patch > > ------------------------------------------------- > > > > > > Copyright (c) 1992-1998 FreeBSD Inc. > > Copyright (c) 1982, 1986, 1989, 1991, 1993 > > The Regents of the University of California. All rights > > reserved. > > > > FreeBSD 2.2.8-RELEASE #7: Wed Jan 13 21:26:09 EST 1999 > > r...@hal9000.yaldabaoth.com:/usr/src/sys/compile/HAL > > CPU: AMD-K6(tm) 3D processor (350.80-MHz 586-class CPU) > > Origin = "AuthenticAMD" Id = 0x580 Stepping=0 > > Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> > > real memory = 201326592 (196608K bytes) > > avail memory = 194924544 (190356K bytes) > > Probing for devices on PCI bus 0: > > chip0 <generic PCI bridge (vendor=1106 device=0597 subclass=0)> rev 4 > > on pci0:0:0 > > chip1 <generic PCI bridge (vendor=1106 device=8598 subclass=4)> rev 0 > > on pci0:1:0 > > chip2 <generic PCI bridge (vendor=1106 device=0586 subclass=1)> rev > > 65 on pci0:7:0 > > pci0:7:1: VIA Technologies, device=0x0571, class=storage (ide) [no > > driver assigned] > > chip3 <generic PCI bridge (vendor=1106 device=3040 subclass=0)> rev > > 16 on pci0:7:3 > > xl0 <3Com 3c905B Fast Etherlink XL 10/100BaseTX> rev 48 int a irq 11 > > on pci0:10:0 > > xl0: Ethernet address: 00:10:5a:20:9b:68 > > xl0: autoneg not complete, no carrier (forcing half-duplex, 10Mbps) > > Probing for devices on PCI bus 1: > > Probing for devices on the ISA bus: > > sc0 at 0x60-0x6f irq 1 on motherboard > > sc0: VGA color <16 virtual consoles, flags=0x0> > > sio0: configured irq 4 not in bitmap of probed irqs 0 > > sio0 at 0x3f8-0x3ff irq 4 on isa > > sio0: type 8250 > > sio1 at 0x2f8-0x2ff irq 3 on isa > > sio1: type 16550A > > lpt0 at 0x378-0x37f irq 7 on isa > > lpt0: Interrupt-driven port > > lp0: TCP/IP capable interface > > psm0 at 0x60-0x64 irq 12 on motherboard > > psm0: model Generic PS/2 mouse, device ID 0 > > 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 on isa > > wdc0: unit 0 (wd0): <QUANTUM FIREBALL SE8.4A> > > wd0: 8063MB (16514064 sectors), 16383 cyls, 16 heads, 63 S/T, 512 B/S > > wdc0: unit 1 (wd1): <WDC AC33100H> > > wd1: 3020MB (6185088 sectors), 6136 cyls, 16 heads, 63 S/T, 512 B/S > > wdc1 at 0x170-0x177 irq 15 on isa > > wdc1: unit 0 (wd2): <Maxtor 84320D4> > > wd2: 4120MB (8439184 sectors), 8930 cyls, 15 heads, 63 S/T, 512 B/S > > wdc1: unit 1 (atapi): <FX322M/w03>, removable, intr, dma, iordis > > wcd0: 5512KB/sec, 256KB cache, audio play, 255 volume levels, > > ejectable tray > > wcd0: no disc inside, unlocked > > mcd0 not found at 0x300 > > npx0 flags 0x1 on motherboard > > npx0: INT 16 interface > > > > _________________________________________________________ > DO YOU YAHOO!? > Get your free @yahoo.com address at http://mail.yahoo.com > > > > > Copyright (c) 1992-1998 FreeBSD Inc. > Copyright (c) 1982, 1986, 1989, 1991, 1993 > The Regents of the University of California. All rights reserved. > FreeBSD 3.0-RELEASE #11: Mon Jan 18 19:53:18 EST 1999 > r...@hal9000.no_net.none:/usr/src/sys/compile/HAL_NEW > Timecounter "i8254" frequency 1193182 Hz cost 3863 ns > CPU: AMD-K6(tm) 3D processor (350.80-MHz 586-class CPU) > Origin = "AuthenticAMD" Id = 0x580 Stepping=0 > Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> > real memory = 201326592 (196608K bytes) > avail memory = 192839680 (188320K bytes) > Probing for devices on PCI bus 0: > chip0: <VIA 82C597 (Apollo VP3) system controller> rev 0x04 on pci0.0.0 > chip1: <PCI to PCI bridge (vendor=1106 device=8598)> rev 0x00 on pci0.1.0 > chip2: <VIA 82C586 PCI-ISA bridge> rev 0x41 on pci0.7.0 > ide_pci0: <VIA 82C586x (Apollo) Bus-master IDE controller> rev 0x06 on > pci0.7.1 > chip3: <VIA 82C586B ACPI interface> rev 0x10 on pci0.7.3 > xl0: <3Com 3c905B Fast Etherlink XL 10/100BaseTX> rev 0x30 int a irq 11 on > pci0.10.0 > xl0: Ethernet address: 00:10:5a:20:9b:68 > xl0: autoneg not complete, no carrier (forcing half-duplex, 10Mbps) > Probing for devices on PCI bus 1: > Probing for devices on the ISA bus: > sc0 at 0x60-0x6f irq 1 on motherboard > sc0: VGA color <16 virtual consoles, flags=0x0> > ed0 not found at 0x280 > fe0 not found at 0x300 > sio0: configured irq 4 not in bitmap of probed irqs 0 > sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa > sio0: type 8250 > sio1 at 0x2f8-0x2ff irq 3 on isa > sio1: type 16550A > lpt0 at 0x378-0x37f irq 7 on isa > lpt0: Interrupt-driven port > lp0: TCP/IP capable interface > psm0 at 0x60-0x64 irq 12 on motherboard > psm0: model Generic PS/2 mouse, device ID 0 > 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 on isa > wdc0: unit 0 (wd0): <QUANTUM FIREBALL SE8.4A> > wd0: 8063MB (16514064 sectors), 16383 cyls, 16 heads, 63 S/T, 512 B/S > wdc0: unit 1 (wd1): <WDC AC33100H> > wd1: 2014MB (4124736 sectors), 4092 cyls, 16 heads, 63 S/T, 512 B/S > wdc1 at 0x170-0x177 irq 15 on isa > wdc1: unit 0 (wd2): <Maxtor 84320D4> > wd2: 1888MB (3866940 sectors), 4092 cyls, 15 heads, 63 S/T, 512 B/S > wdc1: unit 1 (atapi): <FX322M/w03>, removable, intr, dma, iordis > wcd0: 5512Kb/sec, 256Kb cache, audio play, 255 volume levels, ejectable tray > wcd0: no disc inside, unlocked > wt0 not found at 0x300 > mcd0 not found at 0x300 > matcdc0 not found at 0x230 > scd0 not found at 0x230 > ie0: unknown board_id: f000 > ie0 not found at 0x300 > ep0 not found at 0x300 > ex0 not found > le0 not found at 0x300 > lnc0 not found at 0x280 > ze0 not found at 0x300 > zp0 not found at 0x300 > cs0 not found at 0x300 > adv0 not found at 0x330 > bt0 not found at 0x134 > aha0 not found at 0x134 > npx0 on motherboard > npx0: INT 16 interface > changing root device to wd0s1a > fd0c: hard error writing fsbn 1 of 1-3 (No status) > fd0c: hard error writing fsbn 761 (No status) > fd0c: hard error writing fsbn 10 of 10-12 (No status) > fd0c: hard error writing fsbn 22 (No status) > > > Copyright (c) 1992-1998 FreeBSD Inc. > Copyright (c) 1982, 1986, 1989, 1991, 1993 > The Regents of the University of California. All rights reserved. > FreeBSD 3.0-RELEASE #10: Mon Jan 18 19:47:08 EST 1999 > r...@hal9000.no_net.none:/usr/src/sys/compile/HAL_NEW > Timecounter "i8254" frequency 1193182 Hz cost 3863 ns > CPU: AMD-K6(tm) 3D processor (350.80-MHz 586-class CPU) > Origin = "AuthenticAMD" Id = 0x580 Stepping=0 > Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> > real memory = 201326592 (196608K bytes) > avail memory = 192839680 (188320K bytes) > Probing for devices on PCI bus 0: > chip0: <VIA 82C597 (Apollo VP3) system controller> rev 0x04 on pci0.0.0 > chip1: <PCI to PCI bridge (vendor=1106 device=8598)> rev 0x00 on pci0.1.0 > chip2: <VIA 82C586 PCI-ISA bridge> rev 0x41 on pci0.7.0 > ide_pci0: <VIA 82C586x (Apollo) Bus-master IDE controller> rev 0x06 on > pci0.7.1 > chip3: <VIA 82C586B ACPI interface> rev 0x10 on pci0.7.3 > xl0: <3Com 3c905B Fast Etherlink XL 10/100BaseTX> rev 0x30 int a irq 11 on > pci0.10.0 > xl0: Ethernet address: 00:10:5a:20:9b:68 > xl0: autoneg not complete, no carrier (forcing half-duplex, 10Mbps) > Probing for devices on PCI bus 1: > Probing for devices on the ISA bus: > sc0 at 0x60-0x6f irq 1 on motherboard > sc0: VGA color <16 virtual consoles, flags=0x0> > ed0 not found at 0x280 > fe0 not found at 0x300 > sio0: configured irq 4 not in bitmap of probed irqs 0 > sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa > sio0: type 8250 > sio1 at 0x2f8-0x2ff irq 3 on isa > sio1: type 16550A > lpt0 at 0x378-0x37f irq 7 on isa > lpt0: Interrupt-driven port > lp0: TCP/IP capable interface > psm0 at 0x60-0x64 irq 12 on motherboard > psm0: model Generic PS/2 mouse, device ID 0 > 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 on isa > wdc0: unit 0 (wd0): <QUANTUM FIREBALL SE8.4A> > wd0: 8063MB (16514064 sectors), 16383 cyls, 16 heads, 63 S/T, 512 B/S > Using A. Sherrod's patch of 01/18/1999. > wdc0: unit 1 (wd1): <WDC AC33100H> > wd1: 3020MB (6185088 sectors), 6136 cyls, 16 heads, 63 S/T, 512 B/S > Using A. Sherrod's patch of 01/18/1999. > wdc1 at 0x170-0x177 irq 15 on isa > wdc1: unit 0 (wd2): <Maxtor 84320D4> > wd2: 4120MB (8439184 sectors), 8930 cyls, 15 heads, 63 S/T, 512 B/S > Using A. Sherrod's patch of 01/18/1999. > wdc1: unit 1 (atapi): <FX322M/w03>, removable, intr, dma, iordis > wcd0: 5512Kb/sec, 256Kb cache, audio play, 255 volume levels, ejectable tray > wcd0: no disc inside, unlocked > wt0 not found at 0x300 > mcd0 not found at 0x300 > matcdc0 not found at 0x230 > scd0 not found at 0x230 > ie0: unknown board_id: f000 > ie0 not found at 0x300 > ep0 not found at 0x300 > ex0 not found > le0 not found at 0x300 > lnc0 not found at 0x280 > ze0 not found at 0x300 > zp0 not found at 0x300 > cs0 not found at 0x300 > adv0 not found at 0x330 > bt0 not found at 0x134 > aha0 not found at 0x134 > npx0 on motherboard > npx0: INT 16 interface > changing root device to wd0s1a > _________________________________________________________ DO YOU YAHOO!? Get your free @yahoo.com address at http://mail.yahoo.com
*** wd.c Mon Jan 18 19:39:22 1999 --- wd.c.original Mon Jan 18 18:24:14 1999 *************** *** 120,131 **** #define WDOPT_MULTIMASK 0x00ff /* - * This define is used to determine if the drive is LBA capable - */ - - #define WDCAP_LBA 0x02 - - /* * This biotab field doubles as a field for the physical unit number on * the controller. */ --- 120,125 ---- *************** *** 516,523 **** du->dk_dd.d_nsectors, du->dk_dd.d_secsize); - printf("Using A. Sherrod's patch of 01/18/1999.\n"); - if (bootverbose) { wp = &du->dk_params; printf( "wd%d: ATA INQUIRE valid = %04x, " --- 510,515 ---- *************** *** 1940,1960 **** du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; du->dk_dd.d_secperunit = du->dk_dd.d_secpercyl * du->dk_dd.d_ncylinders; ! ! /* ! * tThe following change determines if the disk ! * is LBA capable. If it is, and the lba size is ! * larger than the CHS size, use the LBA size. ! * This should allow certain difficult BIOSES ! * (eg. Award) which do not report the correct ! * CHS size to still give an accurate measure ! * of disk size,w ithout forcing the user to ! * enable LBA mode. ! * A. Sherrod (01/18/1999) ! */ ! ! if ( ( (wp->wdp_capability & WDCAP_LBA) || ! (wp->wdp_cylinders == 16383) ) && du->dk_dd.d_secperunit < wp->wdp_lbasize) { du->dk_dd.d_secperunit = wp->wdp_lbasize; du->dk_dd.d_ncylinders = --- 1932,1938 ---- du->dk_dd.d_ntracks * du->dk_dd.d_nsectors; du->dk_dd.d_secperunit = du->dk_dd.d_secpercyl * du->dk_dd.d_ncylinders; ! if (wp->wdp_cylinders == 16383 && du->dk_dd.d_secperunit < wp->wdp_lbasize) { du->dk_dd.d_secperunit = wp->wdp_lbasize; du->dk_dd.d_ncylinders =