Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Aug 2001 05:18:57 -0700 (PDT)
From:      Rob Manchester <rmanches@vmware.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/29454: buslogic driver checks wrong bit for extended translation
Message-ID:  <200108041218.f74CIvY00585@slipper.vmware.com>

next in thread | raw e-mail | index | archive | help

>Number:         29454
>Category:       kern
>Synopsis:       buslogic driver checks wrong bit for extended translation
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Aug 04 05:20:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Rob Manchester
>Release:        FreeBSD 4.3-RELEASE i386
>Organization:
VMware, inc
>Environment:
vmware virtual machine
System: FreeBSD slipper.vmware.com 4.3-RELEASE FreeBSD 4.3-RELEASE #0: Sat Apr 21 10:54:49 GMT 2001 jkh@narf.osd.bsdi.com:/usr/src/sys/compile/GENERIC i386


	
>Description:

The  buslogic driver checks the wrong bit in the "undocumented" geometry
register.  When a disk larger than 2G is used, the geometry returned by 
the bios is inconsistent with the geometry used to install the boot
loader, so you can't boot.

To: rmanches@vmware.com (Robert Manchester)
Subject: Re: buslogic undocumented geometry register 
Date: Wed, 01 Aug 2001 14:54:38 -0600
From: "Justin T. Gibbs" <gibbs@scsiguy.com>

>How-To-Repeat:

Try an install on with on buslogic cards this driver supports with a
disk greater than 2G and watch freebsd not boot.


>Fix:

this is an exciting one.

diff -Naur dev/buslogic-4.3-RELEASE/btreg.h dev/buslogic/btreg.h
--- dev/buslogic-4.3-RELEASE/btreg.h	Sat Aug  4 04:56:29 2001
+++ dev/buslogic/btreg.h	Sat Aug  4 04:58:21 2001
@@ -112,7 +112,7 @@
 #define GEOMETRY_REG			0x03
 #define		DISK0_GEOMETRY		0x03
 #define		DISK1_GEOMETRY		0x0c
-#define		EXTENDED_TRANSLATION	0x10
+#define		EXTENDED_TRANSLATION	0x80
 #define		GEOMETRY_DISK0(g_reg) (greg & DISK0_GEOMETRY)
 #define		GEOMETRY_DISK1(g_reg) ((greg & DISK1_GEOMETRY) >> 2)
 

>Release-Note:
>Audit-Trail:
>Unformatted:
 >Dear Justin,
 >
 >I've been looking at some of the code you wrote for the buslogic scsi
 >host adapters (btreg.h & bt.c in freebsd) , specificaly the Extended
 >translation field in the geometry register.  It seems that the code
 >expects bit 4 to be set in the geometry register before you go and
 >calculate the disk geometry.  I had thought that bit 7 was used to check
 >to see if the extended translation was availible.  I was wondering if
 >you remembered why you checked bit 4 instead of 7.  If you have
 >documentation on an the "undocumented" geometry register I would be
 >grateful.
 
 Looks like a bug to me.  I used the Linux driver as a guide for
 "undocumented" behavior.  Leonard Z. had an in with the developers
 at Buslogic, so the information in his driver should be accurate.
 The Linux driver uses bit 7.
 
 --
 Justin
 
 
 

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?200108041218.f74CIvY00585>