Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jan 1999 06:00:02 -0800 (PST)
From:      Andrew Sherrod <btiags@ui.uis.doleta.gov>
To:        freebsd-bugs@FreeBSD.ORG
Subject:   Re: kern/8590: kernel incorrectly recognizing Maxtor 11.5gb IDE hd
Message-ID:  <199901151400.GAA13867@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/8590; it has been noted by GNATS.

From: Andrew Sherrod <btiags@ui.uis.doleta.gov>
To: freebsd-gnats-submit@freebsd.org, gme@caffeine.sundial.net,
        ixkatl@yahoo.com
Cc:  
Subject: Re: kern/8590: kernel incorrectly recognizing Maxtor 11.5gb IDE hd
Date: Fri, 15 Jan 1999 08:46:43 -0500

 I may be able to help with your IDE disk problem.
 I have been trying to fix misreported disk sizes on my IDE disks, and
 found that the code will use CHS, even if this doesn't match the LBA
 size, unless LBA is turned on explicitly (3.0 only). My Award BIOS kept
 misreporting CHS sizes. The following two patches seem to fix it.
 The first is for 2.2.8 (though it should work for earlier 2.2.x
 versions) the second is for 3.0.
 Let me know if they help.
 Andrew Sherrod
 (ixkatl@yahoo.com)
 
 PS. See report i386/9431 for details, and my (lame) first attempts to
 fix it.
 
 If you respond, please reply to the yahoo address, as I don't check my
 work mail often.
 
  --------------EA0D5F70CF578339B1589242
       Content-Type: text/plain; charset=us-ascii; name="diffc2a.txt"
       Content-Transfer-Encoding: 7bit
       Content-Disposition: inline; filename="diffc2a.txt"
 
       *** wd.c.2_2_8 Wed Jan 13 11:45:04 1999
       --- wd.c.original.2_2_8        Wed Jan 13 11:45:04 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 =
 
       --------------EA0D5F70CF578339B1589242
       Content-Type: text/plain; charset=us-ascii; name="diffc3a.txt"
       Content-Transfer-Encoding: 7bit
       Content-Disposition: inline; filename="diffc3a.txt"
 
       *** 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 =
 
       --------------EA0D5F70CF578339B1589242--
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901151400.GAA13867>