Module Name:    src
Committed By:   dyoung
Date:           Fri Oct 21 21:35:29 UTC 2011

Modified Files:
        src/sys/arch/i386/i386: mainbus.c
        src/sys/dev/pci: pcivar.h ppb.c

Log Message:
Tell a pci(4) instance its subordinate PCI buses using a new member
in the pcibus_attach_args, pba_sub. pciN attaches to pba_bus itself.
If pba_bus < pba_sub, then [pba_bus + 1, pba_sub] are subordinate to
pba_bus.

On i386, make mainbus0 attach pci0 with pba_sub = 255 because all buses
1 and up must be subordinate to pci0.

XXX Deal with other architectures.


To generate a diff of this commit:
cvs rdiff -u -r1.91 -r1.92 src/sys/arch/i386/i386/mainbus.c
cvs rdiff -u -r1.95 -r1.96 src/sys/dev/pci/pcivar.h
cvs rdiff -u -r1.46 -r1.47 src/sys/dev/pci/ppb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/i386/i386/mainbus.c
diff -u src/sys/arch/i386/i386/mainbus.c:1.91 src/sys/arch/i386/i386/mainbus.c:1.92
--- src/sys/arch/i386/i386/mainbus.c:1.91	Tue May 17 17:34:50 2011
+++ src/sys/arch/i386/i386/mainbus.c	Fri Oct 21 21:35:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mainbus.c,v 1.91 2011/05/17 17:34:50 dyoung Exp $	*/
+/*	$NetBSD: mainbus.c,v 1.92 2011/10/21 21:35:28 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.91 2011/05/17 17:34:50 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.92 2011/10/21 21:35:28 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -406,6 +406,7 @@ mainbus_rescan(device_t self, const char
 		mba.mba_pba.pba_pc = NULL;
 		mba.mba_pba.pba_flags = pci_bus_flags();
 		mba.mba_pba.pba_bus = 0;
+		mba.mba_pba.pba_sub = 255;
 		mba.mba_pba.pba_bridgetag = NULL;
 #if NACPICA > 0 && defined(ACPI_SCANPCI)
 		if (npcibus == 0 && sc->sc_mpacpi_active)

Index: src/sys/dev/pci/pcivar.h
diff -u src/sys/dev/pci/pcivar.h:1.95 src/sys/dev/pci/pcivar.h:1.96
--- src/sys/dev/pci/pcivar.h:1.95	Wed Aug 24 20:27:36 2011
+++ src/sys/dev/pci/pcivar.h	Fri Oct 21 21:35:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcivar.h,v 1.95 2011/08/24 20:27:36 dyoung Exp $	*/
+/*	$NetBSD: pcivar.h,v 1.96 2011/10/21 21:35:28 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1996, 1997 Christopher G. Demetriou.  All rights reserved.
@@ -104,6 +104,14 @@ struct pcibus_attach_args {
 	int		pba_flags;	/* flags; see below */
 
 	int		pba_bus;	/* PCI bus number */
+	int		pba_sub;	/* pba_bus >= pba_sub: no
+					 * buses are subordinate to
+					 * pba_bus.
+					 *
+					 * pba_bus < pba_sub: buses
+					 * [pba_bus + 1, pba_sub] are
+					 * subordinate to pba_bus.
+					 */
 
 	/*
 	 * Pointer to the pcitag of our parent bridge.  If there is no

Index: src/sys/dev/pci/ppb.c
diff -u src/sys/dev/pci/ppb.c:1.46 src/sys/dev/pci/ppb.c:1.47
--- src/sys/dev/pci/ppb.c:1.46	Wed Aug 17 00:59:47 2011
+++ src/sys/dev/pci/ppb.c	Fri Oct 21 21:35:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: ppb.c,v 1.46 2011/08/17 00:59:47 dyoung Exp $	*/
+/*	$NetBSD: ppb.c,v 1.47 2011/10/21 21:35:28 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1996, 1998 Christopher G. Demetriou.  All rights reserved.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ppb.c,v 1.46 2011/08/17 00:59:47 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ppb.c,v 1.47 2011/10/21 21:35:28 dyoung Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -206,6 +206,7 @@ ppbattach(device_t parent, device_t self
 	pba.pba_pc = pc;
 	pba.pba_flags = pa->pa_flags & ~PCI_FLAGS_MRM_OKAY;
 	pba.pba_bus = PPB_BUSINFO_SECONDARY(busdata);
+	pba.pba_sub = PPB_BUSINFO_SUBORDINATE(busdata);
 	pba.pba_bridgetag = &sc->sc_tag;
 	pba.pba_intrswiz = pa->pa_intrswiz;
 	pba.pba_intrtag = pa->pa_intrtag;

Reply via email to