Home | History | Annotate | Line # | Download | only in acpi
acpi_debug.c revision 1.4.22.1
      1  1.4.22.1   rmind /* $NetBSD: acpi_debug.c,v 1.4.22.1 2014/05/18 17:45:35 rmind Exp $ */
      2       1.1  jruoho 
      3       1.1  jruoho /*-
      4       1.1  jruoho  * Copyright (c) 2010 Jukka Ruohonen <jruohonen (at) iki.fi>
      5       1.1  jruoho  * All rights reserved.
      6       1.1  jruoho  *
      7       1.1  jruoho  * Redistribution and use in source and binary forms, with or without
      8       1.1  jruoho  * modification, are permitted provided that the following conditions
      9       1.1  jruoho  * are met:
     10       1.1  jruoho  *
     11       1.1  jruoho  * 1. Redistributions of source code must retain the above copyright
     12       1.1  jruoho  *    notice, this list of conditions and the following disclaimer.
     13       1.1  jruoho  * 2. Redistributions in binary form must reproduce the above copyright
     14       1.1  jruoho  *    notice, this list of conditions and the following disclaimer in the
     15       1.1  jruoho  *    documentation and/or other materials provided with the distribution.
     16       1.1  jruoho  *
     17       1.1  jruoho  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     18       1.1  jruoho  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     19       1.1  jruoho  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     20       1.1  jruoho  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     21       1.1  jruoho  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     22       1.1  jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     23       1.1  jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     24       1.1  jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     25       1.1  jruoho  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     26       1.1  jruoho  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     27       1.1  jruoho  * SUCH DAMAGE.
     28       1.1  jruoho  */
     29       1.1  jruoho #include <sys/cdefs.h>
     30  1.4.22.1   rmind __KERNEL_RCSID(0, "$NetBSD: acpi_debug.c,v 1.4.22.1 2014/05/18 17:45:35 rmind Exp $");
     31       1.1  jruoho 
     32       1.1  jruoho #include <sys/param.h>
     33       1.1  jruoho #include <sys/sysctl.h>
     34       1.1  jruoho 
     35       1.1  jruoho #include <dev/acpi/acpireg.h>
     36       1.1  jruoho #include <dev/acpi/acpivar.h>
     37       1.1  jruoho 
     38       1.1  jruoho #include <prop/proplib.h>
     39       1.1  jruoho 
     40       1.1  jruoho #ifdef ACPI_DEBUG
     41       1.1  jruoho 
     42       1.1  jruoho #define _COMPONENT          ACPI_UTILITIES
     43       1.1  jruoho ACPI_MODULE_NAME            ("acpi_debug")
     44       1.1  jruoho 
     45       1.1  jruoho #define ACPI_DEBUG_MAX  64
     46       1.1  jruoho #define ACPI_DEBUG_NONE  0
     47       1.1  jruoho 
     48       1.1  jruoho #define ACPI_DEBUG_ADD(d, x)						      \
     49       1.1  jruoho 	do {								      \
     50       1.1  jruoho 		(void)prop_dictionary_set_uint32(d, #x, x);		      \
     51       1.1  jruoho 									      \
     52       1.1  jruoho 	} while (/* CONSTCOND */ 0)
     53       1.1  jruoho 
     54       1.1  jruoho 
     55       1.1  jruoho static prop_dictionary_t acpi_debug_layer_d;
     56       1.1  jruoho static prop_dictionary_t acpi_debug_level_d;
     57       1.1  jruoho static char              acpi_debug_layer_s[ACPI_DEBUG_MAX];
     58       1.1  jruoho static char              acpi_debug_level_s[ACPI_DEBUG_MAX];
     59       1.1  jruoho 
     60       1.1  jruoho static int               acpi_debug_create(void);
     61       1.1  jruoho static const char       *acpi_debug_getkey(prop_dictionary_t, uint32_t);
     62       1.1  jruoho static int               acpi_debug_sysctl_layer(SYSCTLFN_PROTO);
     63       1.1  jruoho static int               acpi_debug_sysctl_level(SYSCTLFN_PROTO);
     64       1.1  jruoho 
     65       1.1  jruoho void
     66       1.1  jruoho acpi_debug_init(void)
     67       1.1  jruoho {
     68       1.2  jruoho 	const struct sysctlnode *rnode;
     69       1.2  jruoho 	const char *layer, *level;
     70       1.1  jruoho 	int rv;
     71       1.1  jruoho 
     72       1.1  jruoho 	KASSERT(acpi_debug_layer_d == NULL);
     73       1.1  jruoho 	KASSERT(acpi_debug_level_d == NULL);
     74       1.1  jruoho 
     75       1.1  jruoho 	rv = acpi_debug_create();
     76       1.1  jruoho 
     77       1.1  jruoho 	if (rv != 0)
     78       1.1  jruoho 		goto fail;
     79       1.1  jruoho 
     80       1.2  jruoho 	rv = sysctl_createv(NULL, 0, NULL, &rnode,
     81       1.1  jruoho 	    CTLFLAG_PERMANENT, CTLTYPE_NODE, "acpi",
     82       1.2  jruoho 	    NULL, NULL, 0, NULL, 0,
     83  1.4.22.1   rmind 	    CTL_HW, CTL_CREATE, CTL_EOL);
     84       1.1  jruoho 
     85       1.1  jruoho 	if (rv != 0)
     86       1.1  jruoho 		goto fail;
     87       1.1  jruoho 
     88       1.2  jruoho 	rv = sysctl_createv(NULL, 0, &rnode, &rnode,
     89       1.2  jruoho 	    0, CTLTYPE_NODE, "debug",
     90       1.2  jruoho 	    SYSCTL_DESCR("ACPI debug subtree"),
     91       1.2  jruoho 	    NULL, 0, NULL, 0,
     92       1.2  jruoho 	    CTL_CREATE, CTL_EOL);
     93       1.2  jruoho 
     94       1.2  jruoho 	if (rv != 0)
     95       1.2  jruoho 		goto fail;
     96       1.2  jruoho 
     97       1.2  jruoho 	rv = sysctl_createv(NULL, 0, &rnode, NULL,
     98       1.2  jruoho 	    CTLFLAG_READWRITE, CTLTYPE_STRING, "layer",
     99       1.1  jruoho 	    SYSCTL_DESCR("ACPI debug layer"),
    100       1.1  jruoho 	    acpi_debug_sysctl_layer, 0, acpi_debug_layer_s, ACPI_DEBUG_MAX,
    101       1.2  jruoho 	    CTL_CREATE, CTL_EOL);
    102       1.1  jruoho 
    103       1.1  jruoho 	if (rv != 0)
    104       1.1  jruoho 		goto fail;
    105       1.1  jruoho 
    106       1.2  jruoho 	rv = sysctl_createv(NULL, 0, &rnode, NULL,
    107       1.2  jruoho 	    CTLFLAG_READWRITE, CTLTYPE_STRING, "level",
    108       1.1  jruoho 	    SYSCTL_DESCR("ACPI debug level"),
    109       1.1  jruoho 	    acpi_debug_sysctl_level, 0, acpi_debug_level_s, ACPI_DEBUG_MAX,
    110       1.2  jruoho 	    CTL_CREATE, CTL_EOL);
    111       1.1  jruoho 
    112       1.1  jruoho 	if (rv != 0)
    113       1.1  jruoho 		goto fail;
    114       1.1  jruoho 
    115       1.3  jruoho 	rv = sysctl_createv(NULL, 0, &rnode, NULL,
    116       1.3  jruoho 	    CTLFLAG_READWRITE, CTLTYPE_BOOL, "object",
    117       1.3  jruoho 	    SYSCTL_DESCR("ACPI debug object"),
    118       1.3  jruoho 	    NULL, 0, &AcpiGbl_EnableAmlDebugObject, 0,
    119       1.3  jruoho 	    CTL_CREATE, CTL_EOL);
    120       1.3  jruoho 
    121       1.3  jruoho 	if (rv != 0)
    122       1.3  jruoho 		goto fail;
    123       1.3  jruoho 
    124       1.1  jruoho 	layer = acpi_debug_getkey(acpi_debug_layer_d, AcpiDbgLayer);
    125       1.1  jruoho 	level = acpi_debug_getkey(acpi_debug_level_d, AcpiDbgLevel);
    126       1.1  jruoho 
    127       1.1  jruoho 	(void)memcpy(acpi_debug_layer_s, layer, ACPI_DEBUG_MAX);
    128       1.1  jruoho 	(void)memcpy(acpi_debug_level_s, level, ACPI_DEBUG_MAX);
    129       1.1  jruoho 
    130       1.1  jruoho 	return;
    131       1.1  jruoho 
    132       1.1  jruoho fail:
    133       1.1  jruoho 	aprint_error("acpi0: failed to initialize ACPI debug\n");
    134       1.1  jruoho }
    135       1.1  jruoho 
    136       1.1  jruoho static int
    137       1.1  jruoho acpi_debug_create(void)
    138       1.1  jruoho {
    139       1.1  jruoho 
    140       1.1  jruoho 	acpi_debug_layer_d = prop_dictionary_create();
    141       1.1  jruoho 	acpi_debug_level_d = prop_dictionary_create();
    142       1.1  jruoho 
    143       1.1  jruoho 	KASSERT(acpi_debug_layer_d != NULL);
    144       1.1  jruoho 	KASSERT(acpi_debug_level_d != NULL);
    145       1.1  jruoho 
    146       1.1  jruoho 	/*
    147       1.1  jruoho 	 * General components.
    148       1.1  jruoho 	 */
    149       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_UTILITIES);
    150       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_HARDWARE);
    151       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_EVENTS);
    152       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_TABLES);
    153       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_NAMESPACE);
    154       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_PARSER);
    155       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_DISPATCHER);
    156       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_EXECUTER);
    157       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_RESOURCES);
    158       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_CA_DEBUGGER);
    159       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_OS_SERVICES);
    160       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_CA_DISASSEMBLER);
    161       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_COMPILER);
    162       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_TOOLS);
    163       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_EXAMPLE);
    164       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_DRIVER);
    165       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_ALL_COMPONENTS);
    166       1.1  jruoho 
    167       1.1  jruoho 	/*
    168       1.1  jruoho 	 * NetBSD specific components.
    169       1.1  jruoho 	 */
    170       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_BUS_COMPONENT);
    171       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_ACAD_COMPONENT);
    172       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_BAT_COMPONENT);
    173       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_BUTTON_COMPONENT);
    174       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_EC_COMPONENT);
    175       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_LID_COMPONENT);
    176       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_RESOURCE_COMPONENT);
    177       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_TZ_COMPONENT);
    178       1.4  gsutre 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_DISPLAY_COMPONENT);
    179       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_ALL_DRIVERS);
    180       1.1  jruoho 
    181       1.1  jruoho 	/*
    182       1.1  jruoho 	 * Debug levels.
    183       1.1  jruoho 	 */
    184       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_INIT);
    185       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_DEBUG_OBJECT);
    186       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_INFO);
    187       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_ALL_EXCEPTIONS);
    188       1.1  jruoho 
    189       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_INIT_NAMES);
    190       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_PARSE);
    191       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_LOAD);
    192       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_DISPATCH);
    193       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_EXEC);
    194       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_NAMES);
    195       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_OPREGION);
    196       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_BFIELD);
    197       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_TABLES);
    198       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VALUES);
    199       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_OBJECTS);
    200       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_RESOURCES);
    201       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_USER_REQUESTS);
    202       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_PACKAGE);
    203       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VERBOSITY1);
    204       1.1  jruoho 
    205       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_ALLOCATIONS);
    206       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_FUNCTIONS);
    207       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_OPTIMIZATIONS);
    208       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VERBOSITY2);
    209       1.1  jruoho 
    210       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_MUTEX);
    211       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_THREADS);
    212       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_IO);
    213       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_INTERRUPTS);
    214       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VERBOSITY3);
    215       1.1  jruoho 
    216       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_AML_DISASSEMBLE);
    217       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VERBOSE_INFO);
    218       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_FULL_TABLES);
    219       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_EVENTS);
    220       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_LV_VERBOSE);
    221       1.1  jruoho 
    222       1.1  jruoho 	/*
    223       1.1  jruoho 	 * The default debug level.
    224       1.1  jruoho 	 */
    225       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_DEBUG_DEFAULT);
    226       1.1  jruoho 
    227       1.1  jruoho 	/*
    228       1.1  jruoho 	 * A custom ACPI_DEBUG_NONE disables debugging.
    229       1.1  jruoho 	 */
    230       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_layer_d, ACPI_DEBUG_NONE);
    231       1.1  jruoho 	ACPI_DEBUG_ADD(acpi_debug_level_d, ACPI_DEBUG_NONE);
    232       1.1  jruoho 
    233       1.1  jruoho 	prop_dictionary_make_immutable(acpi_debug_layer_d);
    234       1.1  jruoho 	prop_dictionary_make_immutable(acpi_debug_level_d);
    235       1.1  jruoho 
    236       1.1  jruoho 	return 0;
    237       1.1  jruoho }
    238       1.1  jruoho 
    239       1.1  jruoho static const char *
    240       1.1  jruoho acpi_debug_getkey(prop_dictionary_t dict, uint32_t arg)
    241       1.1  jruoho {
    242       1.1  jruoho 	prop_object_iterator_t i;
    243       1.1  jruoho 	prop_object_t obj, val;
    244       1.1  jruoho 	const char *key;
    245       1.1  jruoho 	uint32_t num;
    246       1.1  jruoho 
    247       1.1  jruoho 	i = prop_dictionary_iterator(dict);
    248       1.1  jruoho 
    249       1.1  jruoho 	while ((obj = prop_object_iterator_next(i)) != NULL) {
    250       1.1  jruoho 
    251       1.1  jruoho 		key = prop_dictionary_keysym_cstring_nocopy(obj);
    252       1.1  jruoho 		val = prop_dictionary_get(dict, key);
    253       1.1  jruoho 		num = prop_number_unsigned_integer_value(val);
    254       1.1  jruoho 
    255       1.1  jruoho 		if (arg == num)
    256       1.1  jruoho 			return key;
    257       1.1  jruoho 	}
    258       1.1  jruoho 
    259       1.1  jruoho 	return "UNKNOWN";
    260       1.1  jruoho }
    261       1.1  jruoho 
    262       1.1  jruoho static int
    263       1.1  jruoho acpi_debug_sysctl_layer(SYSCTLFN_ARGS)
    264       1.1  jruoho {
    265       1.1  jruoho 	char buf[ACPI_DEBUG_MAX];
    266       1.1  jruoho 	struct sysctlnode node;
    267       1.1  jruoho 	prop_object_t obj;
    268       1.1  jruoho 	int error;
    269       1.1  jruoho 
    270       1.1  jruoho 	node = *rnode;
    271       1.1  jruoho 	node.sysctl_data = buf;
    272       1.1  jruoho 
    273       1.1  jruoho 	(void)memcpy(node.sysctl_data, rnode->sysctl_data, ACPI_DEBUG_MAX);
    274       1.1  jruoho 
    275       1.1  jruoho 	error = sysctl_lookup(SYSCTLFN_CALL(&node));
    276       1.1  jruoho 
    277       1.1  jruoho 	if (error || newp == NULL)
    278       1.1  jruoho 		return error;
    279       1.1  jruoho 
    280       1.1  jruoho 	obj = prop_dictionary_get(acpi_debug_layer_d, node.sysctl_data);
    281       1.1  jruoho 
    282       1.1  jruoho 	if (obj == NULL)
    283       1.1  jruoho 		return EINVAL;
    284       1.1  jruoho 
    285       1.1  jruoho 	AcpiDbgLayer = prop_number_unsigned_integer_value(obj);
    286       1.1  jruoho 
    287       1.1  jruoho 	(void)memcpy(rnode->sysctl_data, node.sysctl_data, ACPI_DEBUG_MAX);
    288       1.1  jruoho 
    289       1.1  jruoho 	return 0;
    290       1.1  jruoho }
    291       1.1  jruoho 
    292       1.1  jruoho static int
    293       1.1  jruoho acpi_debug_sysctl_level(SYSCTLFN_ARGS)
    294       1.1  jruoho {
    295       1.1  jruoho 	char buf[ACPI_DEBUG_MAX];
    296       1.1  jruoho 	struct sysctlnode node;
    297       1.1  jruoho 	prop_object_t obj;
    298       1.1  jruoho 	int error;
    299       1.1  jruoho 
    300       1.1  jruoho 	node = *rnode;
    301       1.1  jruoho 	node.sysctl_data = buf;
    302       1.1  jruoho 
    303       1.1  jruoho 	(void)memcpy(node.sysctl_data, rnode->sysctl_data, ACPI_DEBUG_MAX);
    304       1.1  jruoho 
    305       1.1  jruoho 	error = sysctl_lookup(SYSCTLFN_CALL(&node));
    306       1.1  jruoho 
    307       1.1  jruoho 	if (error || newp == NULL)
    308       1.1  jruoho 		return error;
    309       1.1  jruoho 
    310       1.1  jruoho 	obj = prop_dictionary_get(acpi_debug_level_d, node.sysctl_data);
    311       1.1  jruoho 
    312       1.1  jruoho 	if (obj == NULL)
    313       1.1  jruoho 		return EINVAL;
    314       1.1  jruoho 
    315       1.1  jruoho 	AcpiDbgLevel = prop_number_unsigned_integer_value(obj);
    316       1.1  jruoho 
    317       1.1  jruoho 	(void)memcpy(rnode->sysctl_data, node.sysctl_data, ACPI_DEBUG_MAX);
    318       1.1  jruoho 
    319       1.1  jruoho 	return 0;
    320       1.1  jruoho }
    321       1.1  jruoho 
    322       1.1  jruoho #endif	/* ACPI_DEBUG */
    323