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);
}
}
}