Subject: Re: Getting current install floppies
To: None <phoffman@proper.com>
From: Masanori Kanaoka <kanaoka@ann.hi-ho.ne.jp>
List: current-users
Date: 05/16/2001 07:10:36
Hi,

       From: Paul Hoffman <phoffman@proper.com>
    Subject: Re: Getting current install floppies
      Date : Tue, 15 May 2001 14:25:04 -0700
 Message-ID: <p0510035bb7274f0497f6@[165.227.249.18]>

$ If someone could make me install floppies for this and/or 
$ Kanaoka-san's previous suggestions, I'm happy to try them out. In 
$ fact, I'm more than happy...

I don't CC previous Mail to -current-users.
I rewrite it below.

       From: Paul Hoffman <phoffman@proper.com>
    Subject: Re: Getting current install floppies
      Date : Mon, 14 May 2001 17:48:16 -0700
 Message-ID: <p0510031cb7262cd89818@[165.227.249.18]>

$ PCI bus #0 is the last bus

$ mainbus0 (root)
$ pci0 at mainbus0 bus 0: configuration mode 1
$ pci0: i/o space, memory space enabled
$ pchb0 at pci0 dev 0 function 0
$ pchb0: vendor 0x1166 product 0x0008 (rev.0.23)
$ pci1 at pchb0 bus 1
$ pci1: no spaces enabled!
$ pchb1 at pci0 dev 0 function 1
$ pchb1: vendor 0x1166 product 0x0008 (rev.0.01)
$ pchb2 at pci0 dev 0 function 2
$ pchb2: vendor 0x1166 product 0x0006 (rev.0.01)
$ pci2 at pchb2 bus 1
$ pci2: memory space enabled
$ pchb3 at pci0 dev 0 function 1
$ pchb3: vendor 0x1166 product 0x0006 (rev.0.01)
$ pci3 at pchb3 bus 2
$ pci3: memory space enabled
$ ahc1 at pci3 dev 5 function 0: unable to map registers
$ ahc2 at pci3 dev 5 function 1: unable to map registers

pci_bus_fixup find PCI-PCI bridge, PCI-CARDBUS bridge and
enumerate PCI bus.But your chipset(vendor 0x1166, product 0x0006,0x0008)
is PCI-HOST bridge.Thus,pci_bus_fixup does not enumerate PCI
bus correctly.

According to "grep 1166 /sys/dev/pci/pcidevs",
	  vendor SERVERWORKS      0x1166  ServerWorks

According to pchbattach()@sys/arch/i386/pci/pchb.c,

        switch (PCI_VENDOR(pa->pa_id)) {
        case PCI_VENDOR_SERVERWORKS:
                pbnum = pci_conf_read(pa->pa_pc, pa->pa_tag, 0x44) & 0xff;

                if (pbnum == 0)
                        break;

                /*
                 * This host bridge has a second PCI bus.
                 * Configure it.
                 */
                doattach = 1;
                break;
 
I think of ad-hoc code that set maxbus=3 and call pci_addr_fixup.

If possible,How about trying with "GENERIC + PCIBIOS stuff + next-patch" 
kernel?

Regards!
---
 Masanori Kanaoka	kanaoka@ann.hi-ho.ne.jp


Index: pcibios.c
===================================================================
RCS file: /ftp/cvs/syssrc/sys/arch/i386/pci/pcibios.c,v
retrieving revision 1.5
diff -u -r1.5 pcibios.c
--- pcibios.c   2000/08/01 05:23:59     1.5
+++ pcibios.c   2001/05/15 06:09:34
@@ -208,6 +208,10 @@
 
 #ifdef PCIBIOS_BUS_FIXUP
        pcibios_max_bus = pci_bus_fixup(NULL, 0);
+
+#if 1  /* test code for ServerWorks PCI-HOST bridge. */
+       pcibios_max_bus = 3;
+#endif
 #ifdef PCIBIOSVERBOSE
        printf("PCI bus #%d is the last bus\n", pcibios_max_bus);
 #endif