Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Feb 1996 14:56:04 +0900 (JST)
From:      greg@greg.rim.or.jp
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/1032: Problem about BT driver for PCI
Message-ID:  <199602180556.OAA19383@apollon.greg.rim.or.jp>
Resent-Message-ID: <199602180610.WAA27084@freefall.freebsd.org>

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

>Number:         1032
>Category:       kern
>Synopsis:       Problem about BT driver for PCI
>Confidential:   yes
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 17 22:10:01 PST 1996
>Last-Modified:
>Originator:     Kensaku Masuda
>Organization:
Private
>Release:        FreeBSD 2.2-960130-SNAP i386
>Environment:

	CPU:       Pentium-90
	MEMORY:    32MB
	DISK:      1GB * 2 + 730MB
	SCSI CARD: BT-946 & NCR810

>Description:

		BT driver can not look up BT-946 PCI card, and driver
	don't find old revision BT-946. Ex) PCI product ID 0x0140.
	And Mother-board select the shared IRQ, driver will confusing.

bt0 <Buslogic 946 SCSI host adapter> rev 0 int a irq 9 on pci0:17
	.
	.
ncr0 <ncr 53c810 scsi> rev 2 int a irq 9 on pci 0:18


>How-To-Repeat:

	Use all SCSI controller at one time, system will hung up/system down.

>Fix:

	I make a patch.

diff -rc sys/i386/scsi/bt.c /usr/src/sys/i386/scsi/bt.c
*** sys/i386/scsi/bt.c	Fri Jan 26 08:03:07 1996
--- /usr/src/sys/i386/scsi/bt.c	Sat Feb 17 23:28:57 1996
***************
*** 263,268 ****
--- 263,269 ----
  
  static struct bt_found found[] =
  {
+ 	{ 0xfffc, 0},
  	{ 0x330, 0 },
  	{ 0x334, 0 },
  	{ 0x230, 0 },
***************
*** 561,566 ****
--- 562,573 ----
  	 * just return.
  	 */
  	stat = inb(BT_INTR_PORT);
+ #define BT_STAT_MASK \
+ 	(BT_STST | BT_DIAGF | BT_INIT | BT_IDLE | BT_CDF | BT_DF | BT_INVDCMD)
+ 	if((stat & BT_STAT_MASK) == 0) {
+ 		return;
+ 	}
+ #undef BT_STAT_MASK
  
  	/* Mail Box out empty ? */
  	if (stat & BT_MBOA) {
diff -rc sys/pci/bt9xx.c /usr/src/sys/pci/bt9xx.c
*** sys/pci/bt9xx.c	Wed Jan 24 06:46:57 1996
--- /usr/src/sys/pci/bt9xx.c	Sat Feb 17 23:59:21 1996
***************
*** 35,42 ****
  #include <i386/scsi/btreg.h>
  
  /* XXX Need more device IDs */
! #define PCI_BASEADR0	PCI_MAP_REG_START
! #define PCI_DEVICE_ID_BUSLOGIC_946	0x104B1040ul
  
  static char* bt_pci_probe __P((pcici_t tag, pcidi_t type));
  static void bt_pci_attach __P((pcici_t config_id, int unit));
--- 35,43 ----
  #include <i386/scsi/btreg.h>
  
  /* XXX Need more device IDs */
! #define PCI_BASEADR0			PCI_MAP_REG_START
! #define PCI_DEVICE_ID_BUSLOGIC_946	0x1040104Bul
! #define PCI_DEVICE_ID_BUSLOGIC_946_OLD	0x0140104Bul
  
  static char* bt_pci_probe __P((pcici_t tag, pcidi_t type));
  static void bt_pci_attach __P((pcici_t config_id, int unit));
***************
*** 55,60 ****
--- 56,64 ----
  bt_pci_probe (pcici_t tag, pcidi_t type)
  {
  	switch(type) {
+ 		case PCI_DEVICE_ID_BUSLOGIC_946_OLD:
+ 			return ("Buslogic 946 SCSI host adapter(Old revision)");
+ 			break;
  		case PCI_DEVICE_ID_BUSLOGIC_946:
  			return ("Buslogic 946 SCSI host adapter");
  			break;

>Audit-Trail:
>Unformatted:



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