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