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