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>
