Print this page
PSARC 2009/104 Hot-Plug Support for ACPI-based Systems
6846955 Device tree creation and acpi virtual nexus driver for acpi based x86 systems
6849408 device match rule in ppm.conf is not flexible

*** 17,32 **** * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* ! * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - #pragma ident "%Z%%M% %I% %E% SMI" - /* * ppm driver subroutines */ #include <sys/open.h> --- 17,30 ---- * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* ! * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * ppm driver subroutines */ #include <sys/open.h>
*** 397,406 **** --- 395,407 ---- ppm_lookup_dev(dev_info_t *dip) { char path[MAXNAMELEN]; ppm_domain_t *domp; ppm_db_t *dbp; + #ifdef __x86 + char *devtype = NULL; + #endif /* __x86 */ PPM_GET_PATHNAME(dip, path); for (domp = ppm_domain_p; domp; domp = domp->next) { if (PPM_DOMAIN_UP(domp)) { for (dbp = domp->conflist; dbp; dbp = dbp->next) {
*** 409,418 **** --- 410,438 ---- * its full name */ if (dip == ddi_root_node() && strcmp(dbp->name, "/") == 0) return (domp); + + #ifdef __x86 + /* + * Special rule to catch all CPU devices on x86. + */ + if (domp->model == PPMD_CPU && + strcmp(dbp->name, "/") == 0 && + ddi_prop_lookup_string(DDI_DEV_T_ANY, dip, + DDI_PROP_DONTPASS, "device_type", + &devtype) == DDI_SUCCESS) { + if (strcmp(devtype, "cpu") == 0) { + ddi_prop_free(devtype); + return (domp); + } else { + ddi_prop_free(devtype); + } + } + #endif /* __x86 */ + if (ppm_match_devs(path, dbp) == 0) return (domp); } } }