Module Name:    src
Committed By:   snj
Date:           Fri Jun 19 21:33:57 UTC 2009

Modified Files:
        src/sys/arch/amd64/amd64 [netbsd-5]: mainbus.c
        src/sys/arch/i386/i386 [netbsd-5]: mainbus.c
        src/sys/arch/x86/x86 [netbsd-5]: mpacpi.c mpbios.c

Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #819):
        sys/arch/amd64/amd64/mainbus.c: revision 1.28 via patch
        sys/arch/i386/i386/mainbus.c: revision 1.85 via patch
        sys/arch/x86/x86/mpacpi.c: patch
        sys/arch/x86/x86/mpbios.c: patch
Apply fixes from jmcneill@ for PR port-i386/38729
(ACPI kernel booted under qemu cannot detect devices):
- make MP SCANPCI function for ACPI_SCANPCI and MPBIOS_SCANPCI
  return a number of attached PCI busses
- if no valid PCI busses are attached in the MP SCANPCI function,
  try to probe and attach pci0 at mainbus as well as kernels
  with no SCANPCI options


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.24.8.1 src/sys/arch/amd64/amd64/mainbus.c
cvs rdiff -u -r1.77 -r1.77.8.1 src/sys/arch/i386/i386/mainbus.c
cvs rdiff -u -r1.69.4.1 -r1.69.4.2 src/sys/arch/x86/x86/mpacpi.c
cvs rdiff -u -r1.47 -r1.47.4.1 src/sys/arch/x86/x86/mpbios.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/amd64/amd64/mainbus.c
diff -u src/sys/arch/amd64/amd64/mainbus.c:1.24 src/sys/arch/amd64/amd64/mainbus.c:1.24.8.1
--- src/sys/arch/amd64/amd64/mainbus.c:1.24	Sun May 18 02:06:14 2008
+++ src/sys/arch/amd64/amd64/mainbus.c	Fri Jun 19 21:33:56 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: mainbus.c,v 1.24 2008/05/18 02:06:14 jmcneill Exp $	*/
+/*	$NetBSD: mainbus.c,v 1.24.8.1 2009/06/19 21:33:56 snj 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.24 2008/05/18 02:06:14 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.24.8.1 2009/06/19 21:33:56 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -254,6 +254,8 @@
 
 #if NPCI > 0
 	if (pci_mode != 0) {
+		int npcibus = 0;
+
 		mba.mba_pba.pba_iot = X86_BUS_SPACE_IO;
 		mba.mba_pba.pba_memt = X86_BUS_SPACE_MEM;
 		mba.mba_pba.pba_dmat = &pci_bus_dma_tag;
@@ -263,17 +265,18 @@
 		mba.mba_pba.pba_bus = 0;
 		mba.mba_pba.pba_bridgetag = NULL;
 #if NACPI > 0 && defined(ACPI_SCANPCI)
-		if (mpacpi_active)
-			mpacpi_scan_pci(self, &mba.mba_pba, pcibusprint);
-		else
+		if (npcibus == 0 && mpacpi_active)
+			npcibus = mpacpi_scan_pci(self, &mba.mba_pba,
+			    pcibusprint);
 #endif
 #if defined(MPBIOS) && defined(MPBIOS_SCANPCI)
-		if (mpbios_scanned != 0)
-			mpbios_scan_pci(self, &mba.mba_pba, pcibusprint);
-		else
-#endif
-		config_found_ia(self, "pcibus", &mba.mba_pba, pcibusprint);
-
+		if (npcibus == 0 && mpbios_scanned != 0)
+			npcibus = mpbios_scan_pci(self, &mba.mba_pba,
+			    pcibusprint);
+#endif
+		if (npcibus == 0)
+			config_found_ia(self, "pcibus", &mba.mba_pba,
+			    pcibusprint);
 #if NACPI > 0
 		if (mp_verbose)
 			acpi_pci_link_state();

Index: src/sys/arch/i386/i386/mainbus.c
diff -u src/sys/arch/i386/i386/mainbus.c:1.77 src/sys/arch/i386/i386/mainbus.c:1.77.8.1
--- src/sys/arch/i386/i386/mainbus.c:1.77	Sun May 18 02:06:14 2008
+++ src/sys/arch/i386/i386/mainbus.c	Fri Jun 19 21:33:57 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: mainbus.c,v 1.77 2008/05/18 02:06:14 jmcneill Exp $	*/
+/*	$NetBSD: mainbus.c,v 1.77.8.1 2009/06/19 21:33:57 snj 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.77 2008/05/18 02:06:14 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mainbus.c,v 1.77.8.1 2009/06/19 21:33:57 snj Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -319,6 +319,8 @@
 	 */
 #if NPCI > 0
 	if (pci_mode != 0) {
+		int npcibus = 0;
+
 		mba.mba_pba.pba_iot = X86_BUS_SPACE_IO;
 		mba.mba_pba.pba_memt = X86_BUS_SPACE_MEM;
 		mba.mba_pba.pba_dmat = &pci_bus_dma_tag;
@@ -328,16 +330,18 @@
 		mba.mba_pba.pba_bus = 0;
 		mba.mba_pba.pba_bridgetag = NULL;
 #if NACPI > 0 && defined(ACPI_SCANPCI)
-		if (mpacpi_active)
-			mpacpi_scan_pci(self, &mba.mba_pba, pcibusprint);
-		else
+		if (npcibus == 0 && mpacpi_active)
+			npcibus = mpacpi_scan_pci(self, &mba.mba_pba,
+			    pcibusprint);
 #endif
 #if defined(MPBIOS) && defined(MPBIOS_SCANPCI)
-		if (mpbios_scanned != 0)
-			mpbios_scan_pci(self, &mba.mba_pba, pcibusprint);
-		else
-#endif
-		config_found_ia(self, "pcibus", &mba.mba_pba, pcibusprint);
+		if (npcibus == 0 && mpbios_scanned != 0)
+			npcibus = mpbios_scan_pci(self, &mba.mba_pba,
+			    pcibusprint);
+#endif
+		if (npcibus == 0)
+			config_found_ia(self, "pcibus", &mba.mba_pba,
+			    pcibusprint);
 #if NACPI > 0
 		if (mp_verbose)
 			acpi_pci_link_state();

Index: src/sys/arch/x86/x86/mpacpi.c
diff -u src/sys/arch/x86/x86/mpacpi.c:1.69.4.1 src/sys/arch/x86/x86/mpacpi.c:1.69.4.2
--- src/sys/arch/x86/x86/mpacpi.c:1.69.4.1	Fri Jan 16 21:35:43 2009
+++ src/sys/arch/x86/x86/mpacpi.c	Fri Jun 19 21:33:57 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: mpacpi.c,v 1.69.4.1 2009/01/16 21:35:43 bouyer Exp $	*/
+/*	$NetBSD: mpacpi.c,v 1.69.4.2 2009/06/19 21:33:57 snj Exp $	*/
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.69.4.1 2009/01/16 21:35:43 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.69.4.2 2009/06/19 21:33:57 snj Exp $");
 
 #include "acpi.h"
 #include "opt_acpi.h"
@@ -1165,7 +1165,7 @@
 mpacpi_scan_pci(struct device *self, struct pcibus_attach_args *pba,
 	        cfprint_t print)
 {
-	int i;
+	int i, cnt = 0;
 	struct mp_bus *mpb;
 	struct pci_attach_args;
 
@@ -1176,9 +1176,10 @@
 		if (!strcmp(mpb->mb_name, "pci") && mpb->mb_configured == 0) {
 			pba->pba_bus = i;
 			config_found_ia(self, "pcibus", pba, print);
+			++cnt;
 		}
 	}
-	return 0;
+	return cnt;
 }
 
 #endif

Index: src/sys/arch/x86/x86/mpbios.c
diff -u src/sys/arch/x86/x86/mpbios.c:1.47 src/sys/arch/x86/x86/mpbios.c:1.47.4.1
--- src/sys/arch/x86/x86/mpbios.c:1.47	Tue Aug 26 12:04:18 2008
+++ src/sys/arch/x86/x86/mpbios.c	Fri Jun 19 21:33:57 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: mpbios.c,v 1.47 2008/08/26 12:04:18 cegger Exp $	*/
+/*	$NetBSD: mpbios.c,v 1.47.4.1 2009/06/19 21:33:57 snj Exp $	*/
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.47 2008/08/26 12:04:18 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.47.4.1 2009/06/19 21:33:57 snj Exp $");
 
 #include "acpi.h"
 #include "lapic.h"
@@ -1203,7 +1203,7 @@
 mpbios_scan_pci(struct device *self, struct pcibus_attach_args *pba,
 	        cfprint_t print)
 {
-	int i;
+	int i, cnt = 0;
 	struct mp_bus *mpb;
 	struct pci_attach_args;
 
@@ -1214,9 +1214,10 @@
 		if (!strcmp(mpb->mb_name, "pci") && mpb->mb_configured == 0) {
 			pba->pba_bus = i;
 			config_found_ia(self, "pcibus", pba, print);
+			++cnt;
 		}
 	}
-	return 0;
+	return cnt;
 }
 
 #endif

Reply via email to