Linux/ACPI vs ACPICA audit -- 20070126

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bob, Alexey,

For the files that Linux gets from ACPICA, this diff shows how Linux
has diverged from upstream.

There are a couple of nits that ACPICA should pick up -- as gcc
knows the difference between a void* and a void**; and gcc knows
the difference between %zX and %X.  There are a couple things
Linux should clean up too, and then there are some places
where we are known to diverge.

acpica-unix-20070126.audit.diff:# 52 files changed, 379 insertions(+), 191 deletions(-)
acpica-unix-20060707.audit.diff:# 42 files changed, 221 insertions(+), 76 deletions(-)
acpica-unix-20060623.audit.diff:# 37 files changed, 198 insertions(+), 78 deletions(-)
acpica-unix-20060608.audit.diff:# 35 files changed, 190 insertions(+), 70 deletions(-)
acpica-unix-20060526.audit.diff:# 34 files changed, 162 insertions(+), 53 deletions(-)

# 140 ACPICA files
# drivers/acpi/dispatcher/dswload.c  |    3 
# drivers/acpi/dispatcher/dswstate.c |    2 
# drivers/acpi/events/evmisc.c       |    9 -
# drivers/acpi/events/evxface.c      |   59 +++++++++-
# drivers/acpi/events/evxfevnt.c     |    2 
# drivers/acpi/executer/exconfig.c   |    1 
# drivers/acpi/executer/exmutex.c    |    6 -
# drivers/acpi/hardware/hwgpe.c      |    2 
# drivers/acpi/hardware/hwregs.c     |    2 
# drivers/acpi/hardware/hwsleep.c    |   23 ---
# drivers/acpi/namespace/nsdump.c    |    6 -
# drivers/acpi/namespace/nsparse.c   |    2 
# drivers/acpi/namespace/nsxfeval.c  |    8 -
# drivers/acpi/namespace/nsxfobj.c   |   44 +++++++
# drivers/acpi/parser/pstree.c       |    2 
# drivers/acpi/parser/psutils.c      |    2 
# drivers/acpi/resources/rsinfo.c    |    2 
# drivers/acpi/resources/rslist.c    |    2 
# drivers/acpi/resources/rsutils.c   |    2 
# drivers/acpi/resources/rsxface.c   |    4 
# drivers/acpi/tables/tbfadt.c       |    4 
# drivers/acpi/tables/tbinstal.c     |   11 -
# drivers/acpi/tables/tbutils.c      |    3 
# drivers/acpi/tables/tbxface.c      |   98 ++++++++++++++---
# drivers/acpi/utilities/utalloc.c   |    6 -
# drivers/acpi/utilities/utcache.c   |    2 
# drivers/acpi/utilities/utdebug.c   |    8 -
# drivers/acpi/utilities/utglobal.c  |   14 --
# drivers/acpi/utilities/utmisc.c    |    3 
# drivers/acpi/utilities/utmutex.c   |   23 +--
# drivers/acpi/utilities/utobject.c  |    1 
# drivers/acpi/utilities/utresrc.c   |    6 -
# drivers/acpi/utilities/utstate.c   |    5 
# drivers/acpi/utilities/utxface.c   |    2 
# include/acpi/acconfig.h            |    2 
# include/acpi/acdebug.h             |    2 
# include/acpi/acdispat.h            |    2 
# include/acpi/acglobal.h            |    7 -
# include/acpi/achware.h             |    4 
# include/acpi/acinterp.h            |    2 
# include/acpi/aclocal.h             |    4 
# include/acpi/acmacros.h            |    8 +
# include/acpi/acnamesp.h            |    4 
# include/acpi/acparser.h            |    4 
# include/acpi/acpiosxf.h            |   17 +-
# include/acpi/acpixf.h              |   28 ++++
# include/acpi/acresrc.h             |    3 
# include/acpi/actbl.h               |    7 -
# include/acpi/actbl1.h              |   10 -
# include/acpi/actbl2.h              |   49 --------
# include/acpi/acutils.h             |    8 +
# include/acpi/platform/aclinux.h    |   40 ++++++
# 52 files changed, 379 insertions(+), 191 deletions(-)

diff -Nau acpica-unix-20070126/drivers/acpi/dispatcher/dswload.c acpi/drivers/acpi/dispatcher/dswload.c
--- acpica-unix-20070126/drivers/acpi/dispatcher/dswload.c	2007-01-29 23:35:53.000000000 -0500
+++ acpi/drivers/acpi/dispatcher/dswload.c	2007-01-29 10:57:53.000000000 -0500
@@ -1062,9 +1062,6 @@
 			/*
 			 * If we have a valid region, initialize it
 			 * Namespace is NOT locked at this point.
-			 *
-			 * TBD: need to unlock interpreter if it is locked, in order
-			 * to allow _REG methods to be run.
 			 */
 			status =
 			    acpi_ev_initialize_region
diff -Nau acpica-unix-20070126/drivers/acpi/dispatcher/dswstate.c acpi/drivers/acpi/dispatcher/dswstate.c
--- acpica-unix-20070126/drivers/acpi/dispatcher/dswstate.c	2007-01-29 23:35:53.000000000 -0500
+++ acpi/drivers/acpi/dispatcher/dswstate.c	2007-01-29 10:57:53.000000000 -0500
@@ -65,6 +65,7 @@
 				  struct acpi_walk_state *walk_state);
 #endif
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ds_result_remove
@@ -126,6 +127,7 @@
 
 	return (AE_OK);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20070126/drivers/acpi/executer/exmutex.c acpi/drivers/acpi/executer/exmutex.c
--- acpica-unix-20070126/drivers/acpi/executer/exmutex.c	2007-01-29 23:35:53.000000000 -0500
+++ acpi/drivers/acpi/executer/exmutex.c	2007-01-29 10:57:53.000000000 -0500
@@ -270,10 +270,10 @@
 	     walk_state->thread->thread_id)
 	    && (obj_desc->mutex.os_mutex != acpi_gbl_global_lock_mutex)) {
 		ACPI_ERROR((AE_INFO,
-			    "Thread %X cannot release Mutex [%4.4s] acquired by thread %X",
-			    walk_state->thread->thread_id,
+			    "Thread %lX cannot release Mutex [%4.4s] acquired by thread %lX",
+			    (unsigned long)walk_state->thread->thread_id,
 			    acpi_ut_get_node_name(obj_desc->mutex.node),
-			    obj_desc->mutex.owner_thread->thread_id));
+			    (unsigned long)obj_desc->mutex.owner_thread->thread_id));
 		return_ACPI_STATUS(AE_AML_NOT_OWNER);
 	}
 
diff -Nau acpica-unix-20070126/drivers/acpi/executer/exconfig.c acpi/drivers/acpi/executer/exconfig.c
--- acpica-unix-20070126/drivers/acpi/executer/exconfig.c	2007-01-29 23:35:53.000000000 -0500
+++ acpi/drivers/acpi/executer/exconfig.c	2007-01-29 10:57:53.000000000 -0500
@@ -272,7 +272,6 @@
 	ACPI_FUNCTION_TRACE(ex_load_op);
 
 	ACPI_MEMSET(&table_desc, 0, sizeof(struct acpi_table_desc));
-	table_desc.flags = ACPI_TABLE_ORIGIN_ALLOCATED;
 
 	/* Source Object can be either an op_region or a Buffer/Field */
 
diff -Nau acpica-unix-20070126/drivers/acpi/resources/rsinfo.c acpi/drivers/acpi/resources/rsinfo.c
--- acpica-unix-20070126/drivers/acpi/resources/rsinfo.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/resources/rsinfo.c	2007-01-29 10:57:53.000000000 -0500
@@ -116,6 +116,7 @@
 	acpi_rs_convert_ext_address64	/* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
 };
 
+#ifdef ACPI_FUTURE_USAGE
 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
 
 /* Dispatch table for resource dump functions */
@@ -141,6 +142,7 @@
 };
 #endif
 
+#endif	/* ACPI_FUTURE_USAGE */
 /*
  * Base sizes for external AML resource descriptors, indexed by internal type.
  * Includes size of the descriptor header (1 byte for small descriptors,
diff -Nau acpica-unix-20070126/drivers/acpi/resources/rsxface.c acpi/drivers/acpi/resources/rsxface.c
--- acpica-unix-20070126/drivers/acpi/resources/rsxface.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/resources/rsxface.c	2007-01-29 10:57:53.000000000 -0500
@@ -218,6 +218,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_get_current_resources)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_get_possible_resources
@@ -259,6 +260,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_possible_resources)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
@@ -474,6 +476,8 @@
 	return (AE_CTRL_TERMINATE);
 }
 
+ACPI_EXPORT_SYMBOL(acpi_rs_match_vendor_resource)
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_walk_resources
diff -Nau acpica-unix-20070126/drivers/acpi/resources/rslist.c acpi/drivers/acpi/resources/rslist.c
--- acpica-unix-20070126/drivers/acpi/resources/rslist.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/resources/rslist.c	2007-01-29 10:57:53.000000000 -0500
@@ -64,7 +64,7 @@
 acpi_status
 acpi_rs_convert_aml_to_resources(u8 * aml,
 				 u32 length,
-				 u32 offset, u8 resource_index, void *context)
+				 u32 offset, u8 resource_index, void **context)
 {
 	struct acpi_resource **resource_ptr =
 	    ACPI_CAST_INDIRECT_PTR(struct acpi_resource, context);
diff -Nau acpica-unix-20070126/drivers/acpi/resources/rsutils.c acpi/drivers/acpi/resources/rsutils.c
--- acpica-unix-20070126/drivers/acpi/resources/rsutils.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/resources/rsutils.c	2007-01-29 10:57:53.000000000 -0500
@@ -555,6 +555,7 @@
  *
  ******************************************************************************/
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_rs_get_prs_method_data(struct acpi_namespace_node *node,
 			    struct acpi_buffer *ret_buffer)
@@ -586,6 +587,7 @@
 	acpi_ut_remove_reference(obj_desc);
 	return_ACPI_STATUS(status);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20070126/drivers/acpi/tables/tbfadt.c acpi/drivers/acpi/tables/tbfadt.c
--- acpica-unix-20070126/drivers/acpi/tables/tbfadt.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/tables/tbfadt.c	2007-01-29 10:57:53.000000000 -0500
@@ -222,8 +222,8 @@
 	 */
 	if (length > sizeof(struct acpi_table_fadt)) {
 		ACPI_WARNING((AE_INFO,
-			      "FADT (revision %u) is longer than ACPI 2.0 version, truncating length 0x%X to 0x%X",
-			      table->revision, length,
+			      "FADT (revision %u) is longer than ACPI 2.0 version, truncating length 0x%X to 0x%zX",
+			      table->revision, (unsigned)length,
 			      sizeof(struct acpi_table_fadt)));
 	}
 
diff -Nau acpica-unix-20070126/drivers/acpi/tables/tbutils.c acpi/drivers/acpi/tables/tbutils.c
--- acpica-unix-20070126/drivers/acpi/tables/tbutils.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/tables/tbutils.c	2007-01-29 10:57:53.000000000 -0500
@@ -158,6 +158,7 @@
 			      (u8) (table->checksum - checksum)));
 
 #if (ACPI_CHECKSUM_ABORT)
+
 		return (AE_BAD_CHECKSUM);
 #endif
 	}
@@ -331,7 +332,7 @@
  *
  ******************************************************************************/
 
-acpi_status
+acpi_status __init
 acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags)
 {
 	struct acpi_table_rsdp *rsdp;
diff -Nau acpica-unix-20070126/drivers/acpi/tables/tbinstal.c acpi/drivers/acpi/tables/tbinstal.c
--- acpica-unix-20070126/drivers/acpi/tables/tbinstal.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/tables/tbinstal.c	2007-01-29 10:57:53.000000000 -0500
@@ -74,7 +74,6 @@
 			    acpi_os_map_memory(table_desc->address,
 					       table_desc->length);
 		}
-
 		if (!table_desc->pointer) {
 			return_ACPI_STATUS(AE_NO_MEMORY);
 		}
@@ -307,24 +306,18 @@
 
 void acpi_tb_delete_table(struct acpi_table_desc *table_desc)
 {
-
 	/* Table must be mapped or allocated */
-
 	if (!table_desc->pointer) {
 		return;
 	}
-
 	switch (table_desc->flags & ACPI_TABLE_ORIGIN_MASK) {
 	case ACPI_TABLE_ORIGIN_MAPPED:
 		acpi_os_unmap_memory(table_desc->pointer, table_desc->length);
 		break;
-
 	case ACPI_TABLE_ORIGIN_ALLOCATED:
 		ACPI_FREE(table_desc->pointer);
 		break;
-
-	default:
-		break;
+	default:;
 	}
 
 	table_desc->pointer = NULL;
@@ -352,7 +345,7 @@
 
 	/* Delete the individual tables */
 
-	for (i = 0; i < acpi_gbl_root_table_list.count; i++) {
+	for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
 		acpi_tb_delete_table(&acpi_gbl_root_table_list.tables[i]);
 	}
 
diff -Nau acpica-unix-20070126/drivers/acpi/tables/tbxface.c acpi/drivers/acpi/tables/tbxface.c
--- acpica-unix-20070126/drivers/acpi/tables/tbxface.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/tables/tbxface.c	2007-01-29 10:57:53.000000000 -0500
@@ -101,7 +101,7 @@
  *
  ******************************************************************************/
 
-acpi_status
+acpi_status __init
 acpi_initialize_tables(struct acpi_table_desc * initial_table_array,
 		       u32 initial_table_count, u8 allow_resize)
 {
@@ -152,8 +152,6 @@
 	return_ACPI_STATUS(status);
 }
 
-ACPI_EXPORT_SYMBOL(acpi_initialize_tables)
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_reallocate_root_table
@@ -203,8 +201,47 @@
 
 	return_ACPI_STATUS(AE_OK);
 }
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_load_table
+ *
+ * PARAMETERS:  table_ptr       - pointer to a buffer containing the entire
+ *                                table to be loaded
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: This function is called to load a table from the caller's
+ *              buffer. The buffer must contain an entire ACPI Table including
+ *              a valid header. The header fields will be verified, and if it
+ *              is determined that the table is invalid, the call will fail.
+ *
+ ******************************************************************************/
+acpi_status acpi_load_table(struct acpi_table_header *table_ptr)
+{
+	acpi_status status;
+	acpi_native_uint table_index;
+	struct acpi_table_desc table_desc;
+
+	if (!table_ptr)
+		return AE_BAD_PARAMETER;
 
-ACPI_EXPORT_SYMBOL(acpi_reallocate_root_table)
+	ACPI_MEMSET(&table_desc, 0, sizeof(struct acpi_table_desc));
+	table_desc.pointer = table_ptr;
+	table_desc.length = table_ptr->length;
+	table_desc.flags = ACPI_TABLE_ORIGIN_UNKNOWN;
+
+	/*
+	 * Install the new table into the local data structures
+	 */
+	status = acpi_tb_add_table(&table_desc, &table_index);
+	if (ACPI_FAILURE(status)) {
+		return status;
+	}
+	status = acpi_ns_load_table(table_index, acpi_gbl_root_node);
+	return status;
+}
+
+ACPI_EXPORT_SYMBOL(acpi_load_table)
 
 /******************************************************************************
  *
@@ -263,25 +300,19 @@
 				if (!header) {
 					return AE_NO_MEMORY;
 				}
-
 				ACPI_MEMCPY(out_table_header, header,
 					    sizeof(struct acpi_table_header));
 				acpi_os_unmap_memory(header,
 						     sizeof(struct
 							    acpi_table_header));
-			}
-
-			else {
+			} else {
 				return AE_NOT_FOUND;
 			}
-		}
-
-		else {
+		} else {
 			ACPI_MEMCPY(out_table_header,
 				    acpi_gbl_root_table_list.tables[i].pointer,
 				    sizeof(struct acpi_table_header));
 		}
-
 		return (AE_OK);
 	}
 
@@ -290,8 +321,47 @@
 
 ACPI_EXPORT_SYMBOL(acpi_get_table_header)
 
+
 /******************************************************************************
  *
+ * FUNCTION:    acpi_unload_table_id
+ *
+ * PARAMETERS:  id            - Owner ID of the table to be removed.
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: This routine is used to force the unload of a table (by id)
+ *
+ ******************************************************************************/
+acpi_status acpi_unload_table_id(acpi_owner_id id)
+{
+	int i;
+	acpi_status status = AE_NOT_EXIST;
+
+	ACPI_FUNCTION_TRACE(acpi_unload_table);
+
+	/* Find table from the requested type list */
+	for (i = 0; i < acpi_gbl_root_table_list.count; ++i) {
+		if (id != acpi_gbl_root_table_list.tables[i].owner_id) {
+			continue;
+		}
+		/*
+		* Delete all namespace objects owned by this table. Note that these
+		* objects can appear anywhere in the namespace by virtue of the AML
+		* "Scope" operator. Thus, we need to track ownership by an ID, not
+		* simply a position within the hierarchy
+		*/
+		acpi_tb_delete_namespace_by_owner(i);
+		acpi_tb_release_owner_id(i);
+		acpi_tb_set_table_loaded_flag(i, FALSE);
+	}
+	return_ACPI_STATUS(status);
+}
+
+ACPI_EXPORT_SYMBOL(acpi_unload_table_id)
+
+/*******************************************************************************
+ *
  * FUNCTION:    acpi_get_table
  *
  * PARAMETERS:  Signature           - ACPI signature of needed table
@@ -337,6 +407,10 @@
 			*out_table = acpi_gbl_root_table_list.tables[i].pointer;
 		}
 
+		if (!acpi_gbl_permanent_mmap) {
+			acpi_gbl_root_table_list.tables[i].pointer = 0;
+		}
+
 		return (status);
 	}
 
diff -Nau acpica-unix-20070126/drivers/acpi/namespace/nsdump.c acpi/drivers/acpi/namespace/nsdump.c
--- acpica-unix-20070126/drivers/acpi/namespace/nsdump.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/namespace/nsdump.c	2007-01-29 10:57:53.000000000 -0500
@@ -594,6 +594,7 @@
 	return (AE_OK);
 }
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_dump_objects
@@ -633,6 +634,7 @@
 				     acpi_ns_dump_one_object, (void *)&info,
 				     NULL);
 }
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*******************************************************************************
  *
@@ -704,5 +706,5 @@
 			     ACPI_OWNER_ID_MAX, search_handle);
 	return_VOID;
 }
-#endif
-#endif
+#endif				/* _ACPI_ASL_COMPILER */
+#endif				/* defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) */
diff -Nau acpica-unix-20070126/drivers/acpi/namespace/nsxfeval.c acpi/drivers/acpi/namespace/nsxfeval.c
--- acpica-unix-20070126/drivers/acpi/namespace/nsxfeval.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/namespace/nsxfeval.c	2007-01-29 10:57:53.000000000 -0500
@@ -49,6 +49,7 @@
 #define _COMPONENT          ACPI_NAMESPACE
 ACPI_MODULE_NAME("nsxfeval")
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_evaluate_object_typed
@@ -72,8 +73,8 @@
 acpi_status
 acpi_evaluate_object_typed(acpi_handle handle,
 			   acpi_string pathname,
-			   struct acpi_object_list *external_params,
-			   struct acpi_buffer *return_buffer,
+			   struct acpi_object_list * external_params,
+			   struct acpi_buffer * return_buffer,
 			   acpi_object_type return_type)
 {
 	acpi_status status;
@@ -132,7 +133,7 @@
 
 		/* Caller used ACPI_ALLOCATE_BUFFER, free the return buffer */
 
-		acpi_os_free(return_buffer->pointer);
+		ACPI_FREE(return_buffer->pointer);
 		return_buffer->pointer = NULL;
 	}
 
@@ -141,6 +142,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_evaluate_object_typed)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20070126/drivers/acpi/namespace/nsxfobj.c acpi/drivers/acpi/namespace/nsxfobj.c
--- acpica-unix-20070126/drivers/acpi/namespace/nsxfobj.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/namespace/nsxfobj.c	2007-01-29 10:57:53.000000000 -0500
@@ -50,6 +50,50 @@
 
 /*******************************************************************************
  *
+ * FUNCTION:    acpi_get_id
+ *
+ * PARAMETERS:  Handle          - Handle of object whose id is desired
+ *              ret_id          - Where the id will be placed
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: This routine returns the owner id associated with a handle
+ *
+ ******************************************************************************/
+acpi_status acpi_get_id(acpi_handle handle, acpi_owner_id * ret_id)
+{
+	struct acpi_namespace_node *node;
+	acpi_status status;
+
+	/* Parameter Validation */
+
+	if (!ret_id) {
+		return (AE_BAD_PARAMETER);
+	}
+
+	status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+	if (ACPI_FAILURE(status)) {
+		return (status);
+	}
+
+	/* Convert and validate the handle */
+
+	node = acpi_ns_map_handle_to_node(handle);
+	if (!node) {
+		(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+		return (AE_BAD_PARAMETER);
+	}
+
+	*ret_id = node->owner_id;
+
+	status = acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+	return (status);
+}
+
+ACPI_EXPORT_SYMBOL(acpi_get_id)
+
+/*******************************************************************************
+ *
  * FUNCTION:    acpi_get_type
  *
  * PARAMETERS:  Handle          - Handle of object whose type is desired
diff -Nau acpica-unix-20070126/drivers/acpi/namespace/nsparse.c acpi/drivers/acpi/namespace/nsparse.c
--- acpica-unix-20070126/drivers/acpi/namespace/nsparse.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/namespace/nsparse.c	2007-01-29 10:57:53.000000000 -0500
@@ -124,7 +124,7 @@
 	/* Parse the AML */
 
 	ACPI_DEBUG_PRINT((ACPI_DB_PARSE, "*PARSE* pass %d parse\n",
-			  pass_number));
+			  (unsigned)pass_number));
 	status = acpi_ps_parse_aml(walk_state);
 
 	acpi_ps_delete_parse_tree(parse_root);
diff -Nau acpica-unix-20070126/drivers/acpi/hardware/hwregs.c acpi/drivers/acpi/hardware/hwregs.c
--- acpica-unix-20070126/drivers/acpi/hardware/hwregs.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/hardware/hwregs.c	2007-01-29 10:57:53.000000000 -0500
@@ -660,8 +660,6 @@
 
 		/*
 		 * Perform a read first to preserve certain bits (per ACPI spec)
-		 *
-		 * Note: This includes SCI_EN, we never want to change this bit
 		 */
 		status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK,
 					       ACPI_REGISTER_PM1_CONTROL,
diff -Nau acpica-unix-20070126/drivers/acpi/hardware/hwsleep.c acpi/drivers/acpi/hardware/hwsleep.c
--- acpica-unix-20070126/drivers/acpi/hardware/hwsleep.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/hardware/hwsleep.c	2007-01-29 10:57:53.000000000 -0500
@@ -109,6 +109,7 @@
  * DESCRIPTION: Access function for the firmware_waking_vector field in FACS
  *
  ******************************************************************************/
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_get_firmware_waking_vector(acpi_physical_address * physical_address)
 {
@@ -150,6 +151,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_firmware_waking_vector)
+#endif
 
 /*******************************************************************************
  *
@@ -250,7 +252,7 @@
  *              THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
  *
  ******************************************************************************/
-acpi_status acpi_enter_sleep_state(u8 sleep_state)
+acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state)
 {
 	u32 PM1Acontrol;
 	u32 PM1Bcontrol;
@@ -287,16 +289,6 @@
 		return_ACPI_STATUS(status);
 	}
 
-	if (sleep_state != ACPI_STATE_S5) {
-
-		/* Disable BM arbitration */
-
-		status = acpi_set_register(ACPI_BITREG_ARB_DISABLE, 1);
-		if (ACPI_FAILURE(status)) {
-			return_ACPI_STATUS(status);
-		}
-	}
-
 	/*
 	 * 1) Disable/Clear all GPEs
 	 * 2) Enable all wakeup GPEs
@@ -431,7 +423,7 @@
  *              THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED
  *
  ******************************************************************************/
-acpi_status acpi_enter_sleep_state_s4bios(void)
+acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void)
 {
 	u32 in_value;
 	acpi_status status;
@@ -609,13 +601,6 @@
 	    acpi_set_register(acpi_gbl_fixed_event_info
 			      [ACPI_EVENT_POWER_BUTTON].status_register_id, 1);
 
-	/* Enable BM arbitration */
-
-	status = acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0);
-	if (ACPI_FAILURE(status)) {
-		return_ACPI_STATUS(status);
-	}
-
 	arg.integer.value = ACPI_SST_WORKING;
 	status = acpi_evaluate_object(NULL, METHOD_NAME__SST, &arg_list, NULL);
 	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
diff -Nau acpica-unix-20070126/drivers/acpi/hardware/hwgpe.c acpi/drivers/acpi/hardware/hwgpe.c
--- acpica-unix-20070126/drivers/acpi/hardware/hwgpe.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/hardware/hwgpe.c	2007-01-29 10:57:53.000000000 -0500
@@ -138,6 +138,7 @@
  *
  ******************************************************************************/
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
 		       acpi_event_status * event_status)
@@ -197,6 +198,7 @@
       unlock_and_exit:
 	return (status);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /******************************************************************************
  *
diff -Nau acpica-unix-20070126/drivers/acpi/parser/psutils.c acpi/drivers/acpi/parser/psutils.c
--- acpica-unix-20070126/drivers/acpi/parser/psutils.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/parser/psutils.c	2007-01-29 10:57:53.000000000 -0500
@@ -211,6 +211,7 @@
 /*
  * Get op's name (4-byte name segment) or 0 if unnamed
  */
+#ifdef ACPI_FUTURE_USAGE
 u32 acpi_ps_get_name(union acpi_parse_object * op)
 {
 
@@ -224,6 +225,7 @@
 
 	return (op->named.name);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*
  * Set op's name
diff -Nau acpica-unix-20070126/drivers/acpi/parser/pstree.c acpi/drivers/acpi/parser/pstree.c
--- acpica-unix-20070126/drivers/acpi/parser/pstree.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/parser/pstree.c	2007-01-29 10:57:53.000000000 -0500
@@ -174,6 +174,7 @@
 	}
 }
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ps_get_depth_next
@@ -305,3 +306,4 @@
 	return (child);
 }
 #endif
+#endif				/*  ACPI_FUTURE_USAGE  */
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utmisc.c acpi/drivers/acpi/utilities/utmisc.c
--- acpica-unix-20070126/drivers/acpi/utilities/utmisc.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utmisc.c	2007-01-29 10:57:53.000000000 -0500
@@ -41,6 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
+#include <linux/module.h>
+
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
@@ -1047,6 +1049,7 @@
 	acpi_os_vprintf(format, args);
 	acpi_os_printf(" [%X]\n", ACPI_CA_VERSION);
 }
+EXPORT_SYMBOL(acpi_ut_exception);
 
 void ACPI_INTERNAL_VAR_XFACE
 acpi_ut_warning(char *module_name, u32 line_number, char *format, ...)
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utmutex.c acpi/drivers/acpi/utilities/utmutex.c
--- acpica-unix-20070126/drivers/acpi/utilities/utmutex.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utmutex.c	2007-01-29 10:57:53.000000000 -0500
@@ -82,12 +82,9 @@
 
 	/* Create the spinlocks for use at interrupt level */
 
-	status = acpi_os_create_lock(&acpi_gbl_gpe_lock);
-	if (ACPI_FAILURE(status)) {
-		return_ACPI_STATUS(status);
-	}
+	spin_lock_init(acpi_gbl_gpe_lock);
+	spin_lock_init(acpi_gbl_hardware_lock);
 
-	status = acpi_os_create_lock(&acpi_gbl_hardware_lock);
 	return_ACPI_STATUS(status);
 }
 
@@ -246,23 +243,24 @@
 #endif
 
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
-			  "Thread %X attempting to acquire Mutex [%s]\n",
-			  this_thread_id, acpi_ut_get_mutex_name(mutex_id)));
+			  "Thread %lX attempting to acquire Mutex [%s]\n",
+			  (unsigned long) this_thread_id,
+			  acpi_ut_get_mutex_name(mutex_id)));
 
 	status = acpi_os_acquire_mutex(acpi_gbl_mutex_info[mutex_id].mutex,
 				       ACPI_WAIT_FOREVER);
 	if (ACPI_SUCCESS(status)) {
 		ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
-				  "Thread %X acquired Mutex [%s]\n",
-				  this_thread_id,
+				  "Thread %lX acquired Mutex [%s]\n",
+				  (unsigned long) this_thread_id,
 				  acpi_ut_get_mutex_name(mutex_id)));
 
 		acpi_gbl_mutex_info[mutex_id].use_count++;
 		acpi_gbl_mutex_info[mutex_id].thread_id = this_thread_id;
 	} else {
 		ACPI_EXCEPTION((AE_INFO, status,
-				"Thread %X could not acquire Mutex [%X]",
-				this_thread_id, mutex_id));
+				"Thread %lX could not acquire Mutex [%X]",
+				(unsigned long) this_thread_id, mutex_id));
 	}
 
 	return (status);
@@ -288,7 +286,8 @@
 
 	this_thread_id = acpi_os_get_thread_id();
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
-			  "Thread %X releasing Mutex [%s]\n", this_thread_id,
+			  "Thread %lX releasing Mutex [%s]\n",
+			  (unsigned long) this_thread_id,
 			  acpi_ut_get_mutex_name(mutex_id)));
 
 	if (mutex_id > ACPI_MAX_MUTEX) {
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utdebug.c acpi/drivers/acpi/utilities/utdebug.c
--- acpica-unix-20070126/drivers/acpi/utilities/utdebug.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utdebug.c	2007-01-29 10:57:53.000000000 -0500
@@ -47,7 +47,7 @@
 ACPI_MODULE_NAME("utdebug")
 
 #ifdef ACPI_DEBUG_OUTPUT
-static u32 acpi_gbl_prev_thread_id = 0xFFFFFFFF;
+static acpi_thread_id acpi_gbl_prev_thread_id;
 static char *acpi_gbl_fn_entry_str = "----Entry";
 static char *acpi_gbl_fn_exit_str = "----Exit-";
 
@@ -180,8 +180,8 @@
 	if (thread_id != acpi_gbl_prev_thread_id) {
 		if (ACPI_LV_THREADS & acpi_dbg_level) {
 			acpi_os_printf
-			    ("\n**** Context Switch from TID %X to TID %X ****\n\n",
-			     acpi_gbl_prev_thread_id, thread_id);
+			    ("\n**** Context Switch from TID %lX to TID %lX ****\n\n",
+			     (unsigned long)acpi_gbl_prev_thread_id, (unsigned long)thread_id);
 		}
 
 		acpi_gbl_prev_thread_id = thread_id;
@@ -194,7 +194,7 @@
 	acpi_os_printf("%8s-%04ld ", module_name, line_number);
 
 	if (ACPI_LV_THREADS & acpi_dbg_level) {
-		acpi_os_printf("[%04lX] ", thread_id);
+		acpi_os_printf("[%04lX] ", (unsigned long)thread_id);
 	}
 
 	acpi_os_printf("[%02ld] %-22.22s: ",
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utobject.c acpi/drivers/acpi/utilities/utobject.c
--- acpica-unix-20070126/drivers/acpi/utilities/utobject.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utobject.c	2007-01-29 10:57:53.000000000 -0500
@@ -321,6 +321,7 @@
 
 	/* Mark the descriptor type */
 
+	memset(object, 0, sizeof(union acpi_operand_object));
 	ACPI_SET_DESCRIPTOR_TYPE(object, ACPI_DESC_TYPE_OPERAND);
 
 	ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS, "%p Size %X\n",
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utglobal.c acpi/drivers/acpi/utilities/utglobal.c
--- acpica-unix-20070126/drivers/acpi/utilities/utglobal.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utglobal.c	2007-01-29 10:57:53.000000000 -0500
@@ -55,20 +55,18 @@
  * Static global variable initialization.
  *
  ******************************************************************************/
+
 /*
  * We want the debug switches statically initialized so they
  * are already set when the debugger is entered.
  */
+
 /* Debug switch - level and trace mask */
-#ifdef ACPI_DEBUG_OUTPUT
 u32 acpi_dbg_level = ACPI_DEBUG_DEFAULT;
-#else
-u32 acpi_dbg_level = ACPI_NORMAL_DEFAULT;
-#endif
 
 /* Debug switch - layer (component) mask */
 
-u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT;
+u32 acpi_dbg_layer = ACPI_COMPONENT_DEFAULT | ACPI_ALL_DRIVERS;
 u32 acpi_gbl_nesting_level = 0;
 
 /* Debugger globals */
@@ -736,8 +734,6 @@
 	return_VOID;
 }
 
-/* Public globals */
-
 ACPI_EXPORT_SYMBOL(acpi_dbg_level)
-    ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
-    ACPI_EXPORT_SYMBOL(acpi_gpe_count)
+ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
+ACPI_EXPORT_SYMBOL(acpi_gpe_count)
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utcache.c acpi/drivers/acpi/utilities/utcache.c
--- acpica-unix-20070126/drivers/acpi/utilities/utcache.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utcache.c	2007-01-29 10:57:53.000000000 -0500
@@ -162,7 +162,7 @@
 
 	/* Now we can delete the cache object */
 
-	acpi_os_free(cache);
+	ACPI_FREE(cache);
 	return (AE_OK);
 }
 
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utstate.c acpi/drivers/acpi/utilities/utstate.c
--- acpica-unix-20070126/drivers/acpi/utilities/utstate.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utstate.c	2007-01-29 10:57:53.000000000 -0500
@@ -63,7 +63,7 @@
 acpi_ut_create_pkg_state_and_push(void *internal_object,
 				  void *external_object,
 				  u16 index,
-				  union acpi_generic_state ** state_list)
+				  union acpi_generic_state **state_list)
 {
 	union acpi_generic_state *state;
 
@@ -161,6 +161,7 @@
 	if (state) {
 
 		/* Initialize */
+		memset(state, 0, sizeof(union acpi_generic_state));
 		state->common.descriptor_type = ACPI_DESC_TYPE_STATE;
 	}
 
@@ -202,7 +203,7 @@
 
 	if (!state->thread.thread_id) {
 		ACPI_ERROR((AE_INFO, "Invalid zero ID from AcpiOsGetThreadId"));
-		state->thread.thread_id = 1;
+		state->thread.thread_id = (acpi_thread_id) 1;
 	}
 
 	return_PTR((struct acpi_thread_state *)state);
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utalloc.c acpi/drivers/acpi/utilities/utalloc.c
--- acpica-unix-20070126/drivers/acpi/utilities/utalloc.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utalloc.c	2007-01-29 10:57:53.000000000 -0500
@@ -175,10 +175,10 @@
 
 	/* Free memory lists */
 
-	acpi_os_free(acpi_gbl_global_list);
+	ACPI_FREE(acpi_gbl_global_list);
 	acpi_gbl_global_list = NULL;
 
-	acpi_os_free(acpi_gbl_ns_node_list);
+	ACPI_FREE(acpi_gbl_ns_node_list);
 	acpi_gbl_ns_node_list = NULL;
 #endif
 
@@ -294,6 +294,7 @@
 	return (status);
 }
 
+#ifdef NOT_USED_BY_LINUX
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ut_allocate
@@ -369,3 +370,4 @@
 
 	return (allocation);
 }
+#endif
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utxface.c acpi/drivers/acpi/utilities/utxface.c
--- acpica-unix-20070126/drivers/acpi/utilities/utxface.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utxface.c	2007-01-29 10:57:53.000000000 -0500
@@ -338,6 +338,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_terminate)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_subsystem_status
@@ -468,6 +469,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_install_initialization_handler)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*****************************************************************************
  *
diff -Nau acpica-unix-20070126/drivers/acpi/utilities/utresrc.c acpi/drivers/acpi/utilities/utresrc.c
--- acpica-unix-20070126/drivers/acpi/utilities/utresrc.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/utilities/utresrc.c	2007-01-29 10:57:53.000000000 -0500
@@ -258,7 +258,7 @@
 acpi_status
 acpi_ut_walk_aml_resources(u8 * aml,
 			   acpi_size aml_length,
-			   acpi_walk_aml_callback user_function, void *context)
+			   acpi_walk_aml_callback user_function, void **context)
 {
 	acpi_status status;
 	u8 *end_aml;
@@ -319,7 +319,7 @@
 			/* Return the pointer to the end_tag if requested */
 
 			if (!user_function) {
-				*(void **)context = aml;
+				*context = aml;
 			}
 
 			/* Normal exit */
@@ -610,7 +610,7 @@
 
 	status = acpi_ut_walk_aml_resources(obj_desc->buffer.pointer,
 					    obj_desc->buffer.length, NULL,
-					    end_tag);
+					    (void **)end_tag);
 
 	return_ACPI_STATUS(status);
 }
diff -Nau acpica-unix-20070126/drivers/acpi/events/evmisc.c acpi/drivers/acpi/events/evmisc.c
--- acpica-unix-20070126/drivers/acpi/events/evmisc.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/events/evmisc.c	2007-01-29 10:57:53.000000000 -0500
@@ -305,7 +305,6 @@
 static u32 acpi_ev_global_lock_handler(void *context)
 {
 	u8 acquired = FALSE;
-	acpi_status status;
 
 	/*
 	 * Attempt to get the lock.
@@ -316,15 +315,13 @@
 	ACPI_ACQUIRE_GLOBAL_LOCK(facs, acquired);
 	if (acquired) {
 
-		/* Got the lock, now wake the thread waiting for it */
+		/* Got the lock, now wake all threads waiting for it */
 
 		acpi_gbl_global_lock_acquired = TRUE;
-
 		/* Send a unit to the semaphore */
 
-		status =
-		    acpi_os_signal_semaphore(acpi_gbl_global_lock_semaphore, 1);
-		if (ACPI_FAILURE(status)) {
+		if (ACPI_FAILURE(acpi_os_signal_semaphore(
+			acpi_gbl_global_lock_semaphore, 1))) {
 			ACPI_ERROR((AE_INFO,
 				    "Could not signal Global Lock semaphore"));
 		}
diff -Nau acpica-unix-20070126/drivers/acpi/events/evxface.c acpi/drivers/acpi/events/evxface.c
--- acpica-unix-20070126/drivers/acpi/events/evxface.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/events/evxface.c	2007-01-29 10:57:53.000000000 -0500
@@ -61,6 +61,7 @@
  * DESCRIPTION: Saves the pointer to the handler function
  *
  ******************************************************************************/
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_install_exception_handler(acpi_exception_handler handler)
 {
 	acpi_status status;
@@ -89,6 +90,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_install_exception_handler)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
@@ -136,7 +138,9 @@
 	acpi_gbl_fixed_event_handlers[event].handler = handler;
 	acpi_gbl_fixed_event_handlers[event].context = context;
 
-	status = acpi_enable_event(event, 0);
+	status = acpi_clear_event(event);
+	if (ACPI_SUCCESS(status))
+		status = acpi_enable_event(event, 0);
 	if (ACPI_FAILURE(status)) {
 		ACPI_WARNING((AE_INFO, "Could not enable fixed event %X",
 			      event));
@@ -410,12 +414,13 @@
 
 	if ((!device) ||
 	    (!handler) || (handler_type > ACPI_MAX_NOTIFY_HANDLER_TYPE)) {
-		return_ACPI_STATUS(AE_BAD_PARAMETER);
+		status = AE_BAD_PARAMETER;
+		goto exit;
 	}
 
 	status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
 	if (ACPI_FAILURE(status)) {
-		return_ACPI_STATUS(status);
+		goto exit;
 	}
 
 	/* Convert and validate the device handle */
@@ -440,6 +445,15 @@
 			goto unlock_and_exit;
 		}
 
+		/* Make sure all deferred tasks are completed */
+
+		(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+		acpi_os_wait_events_complete(NULL);
+		status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+		if (ACPI_FAILURE(status)) {
+			goto exit;
+		}
+
 		if (handler_type & ACPI_SYSTEM_NOTIFY) {
 			acpi_gbl_system_notify.node = NULL;
 			acpi_gbl_system_notify.handler = NULL;
@@ -484,9 +498,16 @@
 				status = AE_BAD_PARAMETER;
 				goto unlock_and_exit;
 			}
+			/* Make sure all deferred tasks are completed */
 
-			/* Remove the handler */
+			(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+			acpi_os_wait_events_complete(NULL);
+			status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+			if (ACPI_FAILURE(status)) {
+				goto exit;
+			}
 
+			/* Remove the handler */
 			obj_desc->common_notify.system_notify = NULL;
 			acpi_ut_remove_reference(notify_obj);
 		}
@@ -502,9 +523,16 @@
 				status = AE_BAD_PARAMETER;
 				goto unlock_and_exit;
 			}
+			/* Make sure all deferred tasks are completed */
 
-			/* Remove the handler */
+			(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+			acpi_os_wait_events_complete(NULL);
+			status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
+			if (ACPI_FAILURE(status)) {
+				goto exit;
+			}
 
+			/* Remove the handler */
 			obj_desc->common_notify.device_notify = NULL;
 			acpi_ut_remove_reference(notify_obj);
 		}
@@ -512,6 +540,9 @@
 
       unlock_and_exit:
 	(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
+      exit:
+	if (ACPI_FAILURE(status))
+		ACPI_EXCEPTION((AE_INFO, status, "Removing notify handler"));
 	return_ACPI_STATUS(status);
 }
 
@@ -549,12 +580,13 @@
 	/* Parameter validation */
 
 	if ((!address) || (type > ACPI_GPE_XRUPT_TYPE_MASK)) {
-		return_ACPI_STATUS(AE_BAD_PARAMETER);
+		status = AE_BAD_PARAMETER;
+		goto exit;
 	}
 
 	status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS);
 	if (ACPI_FAILURE(status)) {
-		return_ACPI_STATUS(status);
+		goto exit;
 	}
 
 	/* Ensure that we have a valid GPE number */
@@ -606,6 +638,10 @@
 
       unlock_and_exit:
 	(void)acpi_ut_release_mutex(ACPI_MTX_EVENTS);
+      exit:
+	if (ACPI_FAILURE(status))
+		ACPI_EXCEPTION((AE_INFO, status,
+				"Installing notify handler failed"));
 	return_ACPI_STATUS(status);
 }
 
@@ -677,6 +713,15 @@
 		goto unlock_and_exit;
 	}
 
+	/* Make sure all deferred tasks are completed */
+
+	(void)acpi_ut_release_mutex(ACPI_MTX_EVENTS);
+	acpi_os_wait_events_complete(NULL);
+	status = acpi_ut_acquire_mutex(ACPI_MTX_EVENTS);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
+
 	/* Remove the handler */
 
 	flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
diff -Nau acpica-unix-20070126/drivers/acpi/events/evxfevnt.c acpi/drivers/acpi/events/evxfevnt.c
--- acpica-unix-20070126/drivers/acpi/events/evxfevnt.c	2007-01-29 23:35:54.000000000 -0500
+++ acpi/drivers/acpi/events/evxfevnt.c	2007-01-29 10:57:53.000000000 -0500
@@ -473,6 +473,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_clear_gpe)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_get_event_status
@@ -566,6 +567,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_gpe_status)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20070126/include/acpi/actbl1.h acpi/include/acpi/actbl1.h
--- acpica-unix-20070126/include/acpi/actbl1.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/actbl1.h	2007-01-29 10:57:53.000000000 -0500
@@ -669,16 +669,6 @@
 #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)	/* 01: Memory region is hot pluggable */
 #define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)	/* 02: Memory region is non-volatile */
 
-/* Memory types */
-
-enum acpi_address_range_id {
-	ACPI_ADDRESS_RANGE_MEMORY = 1,
-	ACPI_ADDRESS_RANGE_RESERVED = 2,
-	ACPI_ADDRESS_RANGE_ACPI = 3,
-	ACPI_ADDRESS_RANGE_NVS = 4,
-	ACPI_ADDRESS_RANGE_COUNT = 5
-};
-
 /*******************************************************************************
  *
  * TCPA - Trusted Computing Platform Alliance table
diff -Nau acpica-unix-20070126/include/acpi/acglobal.h acpi/include/acpi/acglobal.h
--- acpica-unix-20070126/include/acpi/acglobal.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acglobal.h	2007-01-29 10:57:53.000000000 -0500
@@ -144,6 +144,7 @@
  */
 ACPI_EXTERN struct acpi_internal_rsdt acpi_gbl_root_table_list;
 ACPI_EXTERN struct acpi_table_fadt acpi_gbl_FADT;
+extern acpi_native_uint acpi_gbl_permanent_mmap;
 
 /* These addresses are calculated from FADT address values */
 
@@ -182,8 +183,10 @@
  * Spinlocks are used for interfaces that can be possibly called at
  * interrupt level
  */
-ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock;	/* For GPE data structs and registers */
-ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock;	/* For ACPI H/W except GPE registers */
+ACPI_EXTERN spinlock_t _acpi_gbl_gpe_lock;	/* For GPE data structs and registers */
+ACPI_EXTERN spinlock_t _acpi_gbl_hardware_lock;	/* For ACPI H/W except GPE registers */
+#define acpi_gbl_gpe_lock	&_acpi_gbl_gpe_lock
+#define acpi_gbl_hardware_lock	&_acpi_gbl_hardware_lock
 
 /*****************************************************************************
  *
diff -Nau acpica-unix-20070126/include/acpi/acparser.h acpi/include/acpi/acparser.h
--- acpica-unix-20070126/include/acpi/acparser.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acparser.h	2007-01-29 10:57:53.000000000 -0500
@@ -167,8 +167,10 @@
 
 union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn);
 
+#ifdef	ACPI_FUTURE_USAGE
 union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,
 						union acpi_parse_object *op);
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*
  * pswalk - parse tree walk routines
@@ -208,7 +210,9 @@
 
 u8 acpi_ps_is_prefix_char(u32 c);
 
+#ifdef	ACPI_FUTURE_USAGE
 u32 acpi_ps_get_name(union acpi_parse_object *op);
+#endif				/* ACPI_FUTURE_USAGE */
 
 void acpi_ps_set_name(union acpi_parse_object *op, u32 name);
 
diff -Nau acpica-unix-20070126/include/acpi/acpixf.h acpi/include/acpi/acpixf.h
--- acpica-unix-20070126/include/acpi/acpixf.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acpixf.h	2007-01-29 10:57:53.000000000 -0500
@@ -63,20 +63,26 @@
 
 acpi_status acpi_terminate(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_subsystem_status(void);
+#endif
 
 acpi_status acpi_enable(void);
 
 acpi_status acpi_disable(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_get_system_info(struct acpi_buffer *ret_buffer);
+#endif
 
 const char *acpi_format_exception(acpi_status exception);
 
 acpi_status acpi_purge_cached_objects(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_install_initialization_handler(acpi_init_handler handler, u32 function);
+#endif
 
 /*
  * ACPI Memory managment
@@ -96,6 +102,10 @@
 
 acpi_status acpi_load_tables(void);
 
+acpi_status acpi_load_table(struct acpi_table_header *table_ptr);
+
+acpi_status acpi_unload_table_id(acpi_owner_id id);
+
 acpi_status
 acpi_get_table_header(acpi_string signature,
 		      acpi_native_uint instance,
@@ -154,12 +164,14 @@
 		     struct acpi_object_list *parameter_objects,
 		     struct acpi_buffer *return_object_buffer);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_evaluate_object_typed(acpi_handle object,
 			   acpi_string pathname,
 			   struct acpi_object_list *external_params,
 			   struct acpi_buffer *return_buffer,
 			   acpi_object_type return_type);
+#endif
 
 acpi_status
 acpi_get_object_info(acpi_handle handle, struct acpi_buffer *return_buffer);
@@ -171,6 +183,8 @@
 
 acpi_status acpi_get_type(acpi_handle object, acpi_object_type * out_type);
 
+acpi_status acpi_get_id(acpi_handle object, acpi_owner_id * out_type);
+
 acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle);
 
 /*
@@ -208,7 +222,9 @@
 			 u32 gpe_number,
 			 u32 type, acpi_event_handler address, void *context);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_install_exception_handler(acpi_exception_handler handler);
+#endif
 
 /*
  * Event interfaces
@@ -227,7 +243,9 @@
 
 acpi_status acpi_clear_event(u32 event);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status);
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 acpi_status acpi_set_gpe_type(acpi_handle gpe_device, u32 gpe_number, u8 type);
 
@@ -237,10 +255,12 @@
 
 acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number, u32 flags);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_get_gpe_status(acpi_handle gpe_device,
 		    u32 gpe_number,
 		    u32 flags, acpi_event_status * event_status);
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 acpi_status
 acpi_install_gpe_block(acpi_handle gpe_device,
@@ -266,9 +286,11 @@
 acpi_get_current_resources(acpi_handle device_handle,
 			   struct acpi_buffer *ret_buffer);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_get_possible_resources(acpi_handle device_handle,
 			    struct acpi_buffer *ret_buffer);
+#endif
 
 acpi_status
 acpi_walk_resources(acpi_handle device_handle,
@@ -297,17 +319,19 @@
 acpi_status
 acpi_set_firmware_waking_vector(acpi_physical_address physical_address);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_get_firmware_waking_vector(acpi_physical_address * physical_address);
+#endif
 
 acpi_status
 acpi_get_sleep_type_data(u8 sleep_state, u8 * slp_typ_a, u8 * slp_typ_b);
 
 acpi_status acpi_enter_sleep_state_prep(u8 sleep_state);
 
-acpi_status acpi_enter_sleep_state(u8 sleep_state);
+acpi_status asmlinkage acpi_enter_sleep_state(u8 sleep_state);
 
-acpi_status acpi_enter_sleep_state_s4bios(void);
+acpi_status asmlinkage acpi_enter_sleep_state_s4bios(void);
 
 acpi_status acpi_leave_sleep_state(u8 sleep_state);
 
diff -Nau acpica-unix-20070126/include/acpi/acdebug.h acpi/include/acpi/acdebug.h
--- acpica-unix-20070126/include/acpi/acdebug.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acdebug.h	2007-01-29 10:57:53.000000000 -0500
@@ -200,8 +200,6 @@
 
 void ACPI_SYSTEM_XFACE acpi_db_execute_thread(void *context);
 
-acpi_status acpi_db_user_commands(char prompt, union acpi_parse_object *op);
-
 /*
  * dbstats - Generation and display of ACPI table statistics
  */
diff -Nau acpica-unix-20070126/include/acpi/acutils.h acpi/include/acpi/acutils.h
--- acpica-unix-20070126/include/acpi/acutils.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acutils.h	2007-01-29 10:57:53.000000000 -0500
@@ -81,7 +81,7 @@
 acpi_status(*acpi_walk_aml_callback) (u8 * aml,
 				      u32 length,
 				      u32 offset,
-				      u8 resource_index, void *context);
+				      u8 resource_index, void **context);
 
 typedef
 acpi_status(*acpi_pkg_callback) (u8 object_type,
@@ -423,11 +423,13 @@
 				     u16 action,
 				     union acpi_generic_state **state_list);
 
+#ifdef	ACPI_FUTURE_USAGE
 acpi_status
 acpi_ut_create_pkg_state_and_push(void *internal_object,
 				  void *external_object,
 				  u16 index,
 				  union acpi_generic_state **state_list);
+#endif				/* ACPI_FUTURE_USAGE */
 
 union acpi_generic_state *acpi_ut_create_control_state(void);
 
@@ -496,7 +498,7 @@
 acpi_status
 acpi_ut_walk_aml_resources(u8 * aml,
 			   acpi_size aml_length,
-			   acpi_walk_aml_callback user_function, void *context);
+			   acpi_walk_aml_callback user_function, void **context);
 
 acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index);
 
@@ -551,7 +553,9 @@
 void
 acpi_ut_free_and_track(void *address, u32 component, char *module, u32 line);
 
+#ifdef	ACPI_FUTURE_USAGE
 void acpi_ut_dump_allocation_info(void);
+#endif				/* ACPI_FUTURE_USAGE */
 
 void acpi_ut_dump_allocations(u32 component, char *module);
 
diff -Nau acpica-unix-20070126/include/acpi/acpiosxf.h acpi/include/acpi/acpiosxf.h
--- acpica-unix-20070126/include/acpi/acpiosxf.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acpiosxf.h	2007-01-29 10:57:53.000000000 -0500
@@ -143,15 +143,15 @@
  */
 void *acpi_os_allocate(acpi_size size);
 
-void acpi_os_free(void *memory);
+void __iomem *acpi_os_map_memory(acpi_physical_address where, acpi_native_uint length);
 
-void *acpi_os_map_memory(acpi_physical_address where, acpi_native_uint length);
-
-void acpi_os_unmap_memory(void *logical_address, acpi_size size);
+void acpi_os_unmap_memory(void __iomem * logical_address, acpi_size size);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_os_get_physical_address(void *logical_address,
 			     acpi_physical_address * physical_address);
+#endif
 
 /*
  * Memory/Object Cache
@@ -173,13 +173,12 @@
  * Interrupt handlers
  */
 acpi_status
-acpi_os_install_interrupt_handler(u32 interrupt_number,
+acpi_os_install_interrupt_handler(u32 gsi,
 				  acpi_osd_handler service_routine,
 				  void *context);
 
 acpi_status
-acpi_os_remove_interrupt_handler(u32 interrupt_number,
-				 acpi_osd_handler service_routine);
+acpi_os_remove_interrupt_handler(u32 gsi, acpi_osd_handler service_routine);
 
 /*
  * Threads and Scheduling
@@ -243,7 +242,9 @@
 
 u8 acpi_os_readable(void *pointer, acpi_size length);
 
+#ifdef ACPI_FUTURE_USAGE
 u8 acpi_os_writable(void *pointer, acpi_size length);
+#endif
 
 u64 acpi_os_get_timer(void);
 
@@ -258,10 +259,12 @@
 
 void acpi_os_redirect_output(void *destination);
 
+#ifdef ACPI_FUTURE_USAGE
 /*
  * Debug input
  */
 u32 acpi_os_get_line(char *buffer);
+#endif
 
 /*
  * Directory manipulation
diff -Nau acpica-unix-20070126/include/acpi/acconfig.h acpi/include/acpi/acconfig.h
--- acpica-unix-20070126/include/acpi/acconfig.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acconfig.h	2007-01-29 10:57:53.000000000 -0500
@@ -105,7 +105,7 @@
 
 /* Maximum object reference count (detects object deletion issues) */
 
-#define ACPI_MAX_REFERENCE_COUNT        0x800
+#define ACPI_MAX_REFERENCE_COUNT        0x1000
 
 /* Size of cached memory mapping for system memory operation region */
 
diff -Nau acpica-unix-20070126/include/acpi/actbl2.h acpi/include/acpi/actbl2.h
--- acpica-unix-20070126/include/acpi/actbl2.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/actbl2.h	1969-12-31 19:00:00.000000000 -0500
@@ -1,49 +0,0 @@
-/******************************************************************************
- *
- * Name: actbl2.h - ACPI Specification Revision 2.0 Tables
- *
- *****************************************************************************/
-
-/*
- * Copyright (C) 2000 - 2007, R. Byron Moore
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions, and the following disclaimer,
- *    without modification.
- * 2. Redistributions in binary form must reproduce at minimum a disclaimer
- *    substantially similar to the "NO WARRANTY" disclaimer below
- *    ("Disclaimer") and any redistribution must be conditioned upon
- *    including a substantially similar Disclaimer requirement for further
- *    binary redistribution.
- * 3. Neither the names of the above-listed copyright holders nor the names
- *    of any contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * Alternatively, this software may be distributed under the terms of the
- * GNU General Public License ("GPL") version 2 as published by the Free
- * Software Foundation.
- *
- * NO WARRANTY
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- */
-
-#ifndef __ACTBL2_H__
-#define __ACTBL2_H__
-
-/* Code moved to both actbl.h and actbl1.h */
-
-#endif				/* __ACTBL2_H__ */
diff -Nau acpica-unix-20070126/include/acpi/actbl.h acpi/include/acpi/actbl.h
--- acpica-unix-20070126/include/acpi/actbl.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/actbl.h	2007-01-29 10:57:53.000000000 -0500
@@ -284,13 +284,12 @@
 
 #pragma pack()
 
+#define ACPI_FADT_OFFSET(f)             (u8) ACPI_OFFSET (struct acpi_table_fadt, f)
+
 /*
  * Get the remaining ACPI tables
  */
-#include "actbl1.h"
 
-/* Macros used to generate offsets to specific table fields */
-
-#define ACPI_FADT_OFFSET(f)             (u8) ACPI_OFFSET (struct acpi_table_fadt, f)
+#include <acpi/actbl1.h>
 
 #endif				/* __ACTBL_H__ */
diff -Nau acpica-unix-20070126/include/acpi/acmacros.h acpi/include/acpi/acmacros.h
--- acpica-unix-20070126/include/acpi/acmacros.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acmacros.h	2007-01-29 10:57:53.000000000 -0500
@@ -659,9 +659,15 @@
 
 /* Memory allocation */
 
+#ifndef ACPI_ALLOCATE
 #define ACPI_ALLOCATE(a)            acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
+#endif
+#ifndef ACPI_ALLOCATE_ZEROED
 #define ACPI_ALLOCATE_ZEROED(a)     acpi_ut_allocate_zeroed((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__)
-#define ACPI_FREE(a)                acpi_os_free(a)
+#endif
+#ifndef ACPI_FREE
+#define ACPI_FREE(a)                acpio_os_free(a)
+#endif
 #define ACPI_MEM_TRACKING(a)
 
 #else
diff -Nau acpica-unix-20070126/include/acpi/aclocal.h acpi/include/acpi/aclocal.h
--- acpica-unix-20070126/include/acpi/aclocal.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/aclocal.h	2007-01-29 10:57:53.000000000 -0500
@@ -127,7 +127,7 @@
 
 /* This Thread ID means that the mutex is not in use (unlocked) */
 
-#define ACPI_MUTEX_NOT_ACQUIRED         (u32) -1
+#define ACPI_MUTEX_NOT_ACQUIRED         (acpi_thread_id) 0
 
 /* Table for the global mutexes */
 
@@ -725,7 +725,7 @@
  * must be preserved.
  */
 #define ACPI_PM1_STATUS_PRESERVED_BITS          0x0800	/* Bit 11 */
-#define ACPI_PM1_CONTROL_PRESERVED_BITS         0x0201	/* Bit 9, Bit 0 (SCI_EN) */
+#define ACPI_PM1_CONTROL_PRESERVED_BITS         0x0200	/* Bit 9 (whatever) */
 
 /*
  * Register IDs
diff -Nau acpica-unix-20070126/include/acpi/achware.h acpi/include/acpi/achware.h
--- acpica-unix-20070126/include/acpi/achware.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/achware.h	2007-01-29 10:57:53.000000000 -0500
@@ -100,9 +100,11 @@
 acpi_hw_clear_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
 			struct acpi_gpe_block_info *gpe_block);
 
+#ifdef	ACPI_FUTURE_USAGE
 acpi_status
 acpi_hw_get_gpe_status(struct acpi_gpe_event_info *gpe_event_info,
 		       acpi_event_status * event_status);
+#endif				/* ACPI_FUTURE_USAGE */
 
 acpi_status acpi_hw_disable_all_gpes(void);
 
@@ -114,6 +116,7 @@
 acpi_hw_enable_runtime_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
 				 struct acpi_gpe_block_info *gpe_block);
 
+#ifdef	ACPI_FUTURE_USAGE
 /*
  * hwtimer - ACPI Timer prototypes
  */
@@ -123,5 +126,6 @@
 
 acpi_status
 acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed);
+#endif				/* ACPI_FUTURE_USAGE */
 
 #endif				/* __ACHWARE_H__ */
diff -Nau acpica-unix-20070126/include/acpi/acdispat.h acpi/include/acpi/acdispat.h
--- acpica-unix-20070126/include/acpi/acdispat.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acdispat.h	2007-01-29 10:57:53.000000000 -0500
@@ -328,9 +328,11 @@
 struct acpi_walk_state *acpi_ds_get_current_walk_state(struct acpi_thread_state
 						       *thread);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status
 acpi_ds_result_remove(union acpi_operand_object **object,
 		      u32 index, struct acpi_walk_state *walk_state);
+#endif
 
 acpi_status
 acpi_ds_result_pop(union acpi_operand_object **object,
diff -Nau acpica-unix-20070126/include/acpi/platform/aclinux.h acpi/include/acpi/platform/aclinux.h
--- acpica-unix-20070126/include/acpi/platform/aclinux.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/platform/aclinux.h	2007-01-29 10:57:53.000000000 -0500
@@ -49,23 +49,29 @@
 
 #ifdef __KERNEL__
 
-#include <linux/config.h>
 #include <linux/string.h>
 #include <linux/kernel.h>
+#include <linux/module.h>
 #include <linux/ctype.h>
 #include <asm/system.h>
 #include <asm/atomic.h>
 #include <asm/div64.h>
 #include <asm/acpi.h>
+#include <linux/slab.h>
+#include <linux/spinlock_types.h>
+#include <asm/current.h>
 
 /* Host-dependent types and defines */
 
 #define ACPI_MACHINE_WIDTH          BITS_PER_LONG
-#define acpi_cache_t                        kmem_cache_t
-#define acpi_spinlock                       spinlock_t
+#define acpi_cache_t                        struct kmem_cache
+#define acpi_spinlock                   spinlock_t *
 #define ACPI_EXPORT_SYMBOL(symbol)  EXPORT_SYMBOL(symbol);
 #define strtoul                     simple_strtoul
 
+/* Full namespace pathname length limit - arbitrary */
+#define ACPI_PATHNAME_MAX              256
+
 #else				/* !__KERNEL__ */
 
 #include <stdarg.h>
@@ -93,4 +99,32 @@
 
 #include "acgcc.h"
 
+#define acpi_cpu_flags unsigned long
+
+#define acpi_thread_id struct task_struct *
+
+static inline acpi_thread_id acpi_os_get_thread_id(void) { return current; }
+
+/*
+ * The irqs_disabled() check is for resume from RAM.
+ * Interrupts are off during resume, just like they are for boot.
+ * However, boot has  (system_state != SYSTEM_RUNNING)
+ * to quiet __might_sleep() in kmalloc() and resume does not.
+ */
+#include <acpi/actypes.h>
+static inline void *acpi_os_allocate(acpi_size size) {
+	return kmalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL);
+}
+static inline void *acpi_os_allocate_zeroed(acpi_size size) {
+	return kzalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL);
+}
+
+static inline void *acpi_os_acquire_object(acpi_cache_t * cache) {
+        return kmem_cache_zalloc(cache, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL);
+}
+
+#define ACPI_ALLOCATE(a)	acpi_os_allocate(a)
+#define ACPI_ALLOCATE_ZEROED(a)	acpi_os_allocate_zeroed(a)
+#define ACPI_FREE(a)		kfree(a)
+
 #endif				/* __ACLINUX_H__ */
diff -Nau acpica-unix-20070126/include/acpi/acresrc.h acpi/include/acpi/acresrc.h
--- acpica-unix-20070126/include/acpi/acresrc.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acresrc.h	2007-01-29 10:57:53.000000000 -0500
@@ -168,6 +168,7 @@
 /*
  * rsutils
  */
+
 acpi_status
 acpi_rs_get_prt_method_data(struct acpi_namespace_node *node,
 			    struct acpi_buffer *ret_buffer);
@@ -206,7 +207,7 @@
 acpi_status
 acpi_rs_convert_aml_to_resources(u8 * aml,
 				 u32 length,
-				 u32 offset, u8 resource_index, void *context);
+				 u32 offset, u8 resource_index, void **context);
 
 acpi_status
 acpi_rs_convert_resources_to_aml(struct acpi_resource *resource,
diff -Nau acpica-unix-20070126/include/acpi/acinterp.h acpi/include/acpi/acinterp.h
--- acpica-unix-20070126/include/acpi/acinterp.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acinterp.h	2007-01-29 10:57:53.000000000 -0500
@@ -366,10 +366,12 @@
 		      u32 num_levels,
 		      char *note, char *module_name, u32 line_number);
 
+#ifdef	ACPI_FUTURE_USAGE
 void
 acpi_ex_dump_object_descriptor(union acpi_operand_object *object, u32 flags);
 
 void acpi_ex_dump_namespace_node(struct acpi_namespace_node *node, u32 flags);
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*
  * exnames - AML namestring support
diff -Nau acpica-unix-20070126/include/acpi/acnamesp.h acpi/include/acpi/acnamesp.h
--- acpica-unix-20070126/include/acpi/acnamesp.h	2007-01-29 23:35:53.000000000 -0500
+++ acpi/include/acpi/acnamesp.h	2007-01-29 10:57:53.000000000 -0500
@@ -152,7 +152,9 @@
 /*
  * nsdump - Namespace dump/print utilities
  */
+#ifdef	ACPI_FUTURE_USAGE
 void acpi_ns_dump_tables(acpi_handle search_base, u32 max_depth);
+#endif				/* ACPI_FUTURE_USAGE */
 
 void acpi_ns_dump_entry(acpi_handle handle, u32 debug_level);
 
@@ -165,11 +167,13 @@
 acpi_ns_dump_one_object(acpi_handle obj_handle,
 			u32 level, void *context, void **return_value);
 
+#ifdef	ACPI_FUTURE_USAGE
 void
 acpi_ns_dump_objects(acpi_object_type type,
 		     u8 display_type,
 		     u32 max_depth,
 		     acpi_owner_id owner_id, acpi_handle start_handle);
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*
  * nseval - Namespace evaluation functions
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux