Date: Tue, 13 Feb 1996 21:22:33 -0800 From: "Justin T. Gibbs" <gibbs@freefall.freebsd.org> To: Richard J Kuhns <rjk@sparcmill.grauel.com> Cc: freebsd-stable@freebsd.org Subject: Re: One problem && one question Message-ID: <199602140522.VAA08632@freefall.freebsd.org> In-Reply-To: Your message of "Tue, 13 Feb 1996 14:27:19 %2B0500." <9602131927.AA23929@sparcmill.grauel.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>Justin T. Gibbs writes: > > >Justin T. Gibbs writes: > > ><Buslogic id info> int a irq 10 pci 0:13 > > > mapreg[10] type 1 addr 0x00006000 size ffff0004 > > >bt0: Invalid base address > > > > boot -v with the old kernel and then use dmesg to retrieve the info. > > > >That works fine for any ``working'' kernel; apparently none of the boot >messages from a non-working kernel end up in the circular buffer dmesg >uses. IE, if I boot-working then boot-nonworking then boot-working and run >dmesg, I get the messages from the 2 boot-working kernels only. How would you expect the dmesg buffer to be written to disk if the probe for your disk controller isn't successful? 8-) > > When you get a chance, try this one. Now that I'm not editing over a link > > with 50% packet loss, its much easier to check my work. :) > > > >I tried it; I'm afraid it made no difference. By the way, here's one more >line from the (failing) pci-probe: > >bt0: uses 4 bytes of I/O space from 6000 upto 6003 Ahh. It did make a difference. Unfortunately, when I was cleaning up the bt driver, I assumed that the PCI probe would always return one of the ISA compatibility addresses. As Rod pointed out, this is not always the case. This patch should do the trick >-- >Rich Kuhns rjk@grauel.com >PO Box 6249 >100 Sawmill Road >Lafayette, IN 47903 >(317)477-6000 x319 -- Justin T. Gibbs =========================================== FreeBSD: Turning PCs into workstations =========================================== Index: i386/scsi/bt.c =================================================================== RCS file: /usr/cvs/src/sys/i386/scsi/bt.c,v retrieving revision 1.5 diff -c -r1.5 bt.c *** bt.c 1996/01/25 23:03:07 1.5 --- bt.c 1996/02/14 05:03:01 *************** *** 462,471 **** } } } - if (i >= sizeof(found)/sizeof(struct bt_found)) { - printf("bt%d: Invalid base address\n", unit); - return NULL; - } bt = malloc(sizeof(struct bt_data), M_DEVBUF, M_NOWAIT); if (!bt) { --- 462,467 ---- Index: i386/pci/bt9xx.c =================================================================== RCS file: /usr/cvs/src/sys/pci/bt9xx.c,v retrieving revision 1.4 diff -c -r1.4 bt9xx.c *** bt9xx.c 1996/01/23 21:46:57 1.4 --- bt9xx.c 1996/02/13 15:46:23 *************** *** 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,41 ---- #include <i386/scsi/btreg.h> /* XXX Need more device IDs */ ! #define PCI_DEVICE_ID_BUSLOGIC_946 0x1040104Bul static char* bt_pci_probe __P((pcici_t tag, pcidi_t type)); static void bt_pci_attach __P((pcici_t config_id, int unit)); *************** *** 70,86 **** pcici_t config_id; int unit; { u_long io_port; unsigned opri = 0; struct bt_data *bt; ! if(!(io_port = pci_conf_read(config_id, PCI_BASEADR0))) return; - /* - * The first bit of PCI_BASEADR0 is always - * set hence we mask it off. - */ - io_port &= 0xfffffffe; if(!(bt = bt_alloc(unit, io_port))) return; /* XXX PCI code should take return status */ --- 69,89 ---- pcici_t config_id; int unit; { + u_char reg; u_long io_port; unsigned opri = 0; struct bt_data *bt; ! for(reg = PCI_MAP_REG_START; reg < PCI_MAP_REG_END; reg+=4) { ! io_port = pci_conf_read(config_id, reg); ! if ((io_port&~7)==0) continue; ! if(io_port & PCI_MAP_IO) { ! io_port &= ~PCI_MAP_IO; ! break; ! } ! } ! if(reg == PCI_MAP_REG_END) return; if(!(bt = bt_alloc(unit, io_port))) return; /* XXX PCI code should take return status */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602140522.VAA08632>