Try not to pass garbage to pci_make_tag; workaround for odd ACPI DSDTs.

Fixes kern/37527.
This commit is contained in:
jmcneill 2007-12-12 23:33:22 +00:00
parent bcf893f432
commit 645fe8c342
2 changed files with 8 additions and 5 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: mpacpi.c,v 1.55 2007/12/09 20:27:50 jmcneill Exp $ */
/* $NetBSD: mpacpi.c,v 1.56 2007/12/12 23:33:22 jmcneill Exp $ */
/*
* Copyright (c) 2003 Wasabi Systems, Inc.
@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.55 2007/12/09 20:27:50 jmcneill Exp $");
__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.56 2007/12/12 23:33:22 jmcneill Exp $");
#include "acpi.h"
#include "opt_acpi.h"
@ -547,7 +547,7 @@ mpacpi_derive_bus(ACPI_HANDLE handle, struct acpi_softc *acpi)
*/
TAILQ_FOREACH(dev, &dev_list, list) {
rv = acpi_eval_integer(dev->handle, METHOD_NAME__ADR, &val);
if (ACPI_FAILURE(rv))
if (ACPI_FAILURE(rv) || val == 0xffffffff)
return -1;
tag = pci_make_tag(acpi->sc_pc, bus,

View File

@ -1,4 +1,4 @@
/* $NetBSD: OsdHardware.c,v 1.3 2007/12/09 20:27:54 jmcneill Exp $ */
/* $NetBSD: OsdHardware.c,v 1.4 2007/12/12 23:33:22 jmcneill Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@ -44,7 +44,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: OsdHardware.c,v 1.3 2007/12/09 20:27:54 jmcneill Exp $");
__KERNEL_RCSID(0, "$NetBSD: OsdHardware.c,v 1.4 2007/12/12 23:33:22 jmcneill Exp $");
#include <sys/param.h>
#include <sys/device.h>
@ -206,6 +206,9 @@ AcpiOsReadPciConfiguration(ACPI_PCI_ID *PciId, UINT32 Register, void *Value,
/* XXX Need to deal with "segment" ("hose" in Alpha terminology). */
if (PciId->Bus >= 256 || PciId->Device >= 32 || PciId->Function >= 8)
return AE_BAD_PARAMETER;
tag = pci_make_tag(acpi_softc->sc_pc, PciId->Bus, PciId->Device,
PciId->Function);
tmp = pci_conf_read(acpi_softc->sc_pc, tag, Register & ~3);