summaryrefslogtreecommitdiff
path: root/sys/dev/acpi
diff options
context:
space:
mode:
authorJordan Hargrave <jordan@cvs.openbsd.org>2009-05-30 22:42:03 +0000
committerJordan Hargrave <jordan@cvs.openbsd.org>2009-05-30 22:42:03 +0000
commit82a137a6c0be4a3eea203b3fe3d47dff7adcbd9b (patch)
tree785244e8364e289df815da8584bc8f227c9dca10 /sys/dev/acpi
parent697a66571fe6640e3caca35b3ff8396ad17269eb (diff)
Fixed parsing rules for Scope opcode, fixes panic on some HP systems
Create default scope names ok marco@
Diffstat (limited to 'sys/dev/acpi')
-rw-r--r--sys/dev/acpi/dsdt.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/dev/acpi/dsdt.c b/sys/dev/acpi/dsdt.c
index 3c185050d74..6674084573f 100644
--- a/sys/dev/acpi/dsdt.c
+++ b/sys/dev/acpi/dsdt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dsdt.c,v 1.147 2009/04/27 23:39:14 jordan Exp $ */
+/* $OpenBSD: dsdt.c,v 1.148 2009/05/30 22:42:02 jordan Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
*
@@ -205,7 +205,7 @@ struct aml_opcode aml_table[] = {
{ AMLOP_MUTEX, "Mutex", "Nb", },
{ AMLOP_DATAREGION, "DataRegion", "Nttt", },
{ AMLOP_OPREGION, "OpRegion", "Nbii", },
- { AMLOP_SCOPE, "Scope", "pNT", },
+ { AMLOP_SCOPE, "Scope", "pnT", },
{ AMLOP_DEVICE, "Device", "pNT", },
{ AMLOP_POWERRSRC, "Power Resource", "pNbwT",},
{ AMLOP_THERMALZONE, "ThermalZone", "pNT", },
@@ -1439,6 +1439,14 @@ struct aml_defval {
{ "_REV", AML_OBJTYPE_INTEGER, 2, NULL },
{ "_GL", AML_OBJTYPE_MUTEX, 1, NULL, &aml_global_lock },
{ "_OSI", AML_OBJTYPE_METHOD, 1, aml_callosi },
+
+ /* Create default scopes */
+ { "_GPE" },
+ { "_PR_" },
+ { "_SB_" },
+ { "_TZ_" },
+ { "_SI_" },
+
{ NULL }
};
@@ -3895,6 +3903,10 @@ aml_xparse(struct aml_scope *scope, int ret_type, const char *stype)
case AMLOP_SCOPE:
/* Scope: NT */
rv = opargs[0];
+ if (rv->type == AML_OBJTYPE_NAMEREF) {
+ printf("Undefined scope: %s\n", aml_getname(rv->v_nameref));
+ break;
+ }
mscope = aml_xpushscope(scope, opargs[1], rv->node, opcode);
break;
case AMLOP_DEVICE: