linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Linux/ACPI vs ACPICA audit -- ACPICA 20060623
@ 2006-06-28  5:08 Len Brown
  2006-07-08  0:57 ` Linux/ACPI vs ACPICA audit -- ACPICA 20060707 Len Brown
  0 siblings, 1 reply; 5+ messages in thread
From: Len Brown @ 2006-06-28  5:08 UTC (permalink / raw)
  To: linux-acpi

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

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(-)
acpica-unix-20060512.audit.diff:# 34 files changed, 163 insertions(+), 53 deletions(-)
acpica-unix-20060421.audit.diff:# 34 files changed, 162 insertions(+), 52 deletions(-)

# 142 ACPICA files
# drivers/acpi/dispatcher/dswstate.c |    2 
# drivers/acpi/events/evxface.c      |   83 +++++++++++++----
# drivers/acpi/events/evxfevnt.c     |    2 
# drivers/acpi/executer/excreate.c   |    2 
# drivers/acpi/hardware/hwgpe.c      |    2 
# drivers/acpi/hardware/hwsleep.c    |   24 ----
# drivers/acpi/namespace/nsdump.c    |    6 -
# drivers/acpi/namespace/nsxfeval.c  |    2 
# drivers/acpi/parser/pstree.c       |    2 
# drivers/acpi/parser/psutils.c      |    4 
# 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/tbconvrt.c     |   11 +-
# drivers/acpi/tables/tbxface.c      |    2 
# drivers/acpi/utilities/utglobal.c  |   11 --
# drivers/acpi/utilities/utmisc.c    |    3 
# drivers/acpi/utilities/utmutex.c   |    7 -
# drivers/acpi/utilities/utobject.c  |    1 
# drivers/acpi/utilities/utresrc.c   |    6 -
# drivers/acpi/utilities/utstate.c   |    1 
# drivers/acpi/utilities/utxface.c   |    2 
# include/acpi/acdebug.h             |    2 
# include/acpi/acdispat.h            |    2 
# include/acpi/acglobal.h            |    6 -
# include/acpi/achware.h             |    4 
# include/acpi/acinterp.h            |    2 
# include/acpi/acnamesp.h            |    4 
# include/acpi/acparser.h            |    4 
# include/acpi/acpiosxf.h            |   15 ++-
# include/acpi/acpixf.h              |   24 ++++
# include/acpi/acresrc.h             |    3 
# include/acpi/actbl.h               |    2 
# include/acpi/actbl1.h              |    2 
# include/acpi/acutils.h             |    8 +
# include/acpi/platform/aclinux.h    |   15 ++-
# 37 files changed, 198 insertions(+), 78 deletions(-)

diff -Nau acpica-unix-20060623/drivers/acpi/hardware/hwsleep.c linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c
--- acpica-unix-20060623/drivers/acpi/hardware/hwsleep.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c	2006-06-15 23:16:30.000000000 -0400
@@ -93,6 +93,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)
 {
@@ -119,6 +120,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_firmware_waking_vector)
+#endif
 
 /*******************************************************************************
  *
@@ -219,7 +221,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;
@@ -257,17 +259,6 @@
 		return_ACPI_STATUS(status);
 	}
 
-	if (sleep_state != ACPI_STATE_S5) {
-
-		/* Disable BM arbitration */
-
-		status = acpi_set_register(ACPI_BITREG_ARB_DISABLE,
-					   1, ACPI_MTX_DO_NOT_LOCK);
-		if (ACPI_FAILURE(status)) {
-			return_ACPI_STATUS(status);
-		}
-	}
-
 	/*
 	 * 1) Disable/Clear all GPEs
 	 * 2) Enable all wakeup GPEs
@@ -403,7 +394,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;
@@ -585,13 +576,6 @@
 			      [ACPI_EVENT_POWER_BUTTON].status_register_id, 1,
 			      ACPI_MTX_DO_NOT_LOCK);
 
-	/* Enable BM arbitration */
-
-	status = acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
-	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-20060623/drivers/acpi/hardware/hwgpe.c linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c
--- acpica-unix-20060623/drivers/acpi/hardware/hwgpe.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c	2006-06-15 23:16:30.000000000 -0400
@@ -132,6 +132,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)
@@ -188,6 +189,7 @@
       unlock_and_exit:
 	return (status);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /******************************************************************************
  *
diff -Nau acpica-unix-20060623/drivers/acpi/events/evxfevnt.c linux-acpi-2.6/drivers/acpi/events/evxfevnt.c
--- acpica-unix-20060623/drivers/acpi/events/evxfevnt.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxfevnt.c	2006-06-15 23:16:30.000000000 -0400
@@ -476,6 +476,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_clear_gpe)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_get_event_status
@@ -569,6 +570,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_gpe_status)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060623/drivers/acpi/events/evxface.c linux-acpi-2.6/drivers/acpi/events/evxface.c
--- acpica-unix-20060623/drivers/acpi/events/evxface.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxface.c	2006-06-27 20:03:43.000000000 -0400
@@ -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 */
@@ -423,7 +428,7 @@
 	node = acpi_ns_map_handle_to_node(device);
 	if (!node) {
 		status = AE_BAD_PARAMETER;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Root Object */
@@ -437,7 +442,16 @@
 		    ((handler_type & ACPI_DEVICE_NOTIFY) &&
 		     !acpi_gbl_device_notify.handler)) {
 			status = AE_NOT_EXIST;
-			goto unlock_and_exit;
+			goto unlock;
+		}
+
+		/* 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) {
@@ -460,7 +474,7 @@
 
 		if (!acpi_ev_is_notify_object(node)) {
 			status = AE_TYPE;
-			goto unlock_and_exit;
+			goto unlock;
 		}
 
 		/* Check for an existing internal object */
@@ -468,7 +482,7 @@
 		obj_desc = acpi_ns_get_attached_object(node);
 		if (!obj_desc) {
 			status = AE_NOT_EXIST;
-			goto unlock_and_exit;
+			goto unlock;
 		}
 
 		/* Object exists - make sure there's an existing handler */
@@ -478,11 +492,18 @@
 			if ((!notify_obj) ||
 			    (notify_obj->notify.handler != handler)) {
 				status = AE_BAD_PARAMETER;
-				goto unlock_and_exit;
+				goto unlock;
 			}
+			/* 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);
 		}
@@ -492,18 +513,28 @@
 			if ((!notify_obj) ||
 			    (notify_obj->notify.handler != handler)) {
 				status = AE_BAD_PARAMETER;
-				goto unlock_and_exit;
+				goto unlock;
 			}
+			/* 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);
 		}
 	}
 
-      unlock_and_exit:
+unlock:
 	(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);
 }
 
@@ -541,12 +572,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 */
@@ -554,7 +586,7 @@
 	gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device, gpe_number);
 	if (!gpe_event_info) {
 		status = AE_BAD_PARAMETER;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Make sure that there isn't a handler there already */
@@ -562,7 +594,7 @@
 	if ((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) ==
 	    ACPI_GPE_DISPATCH_HANDLER) {
 		status = AE_ALREADY_EXISTS;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Allocate and init handler object */
@@ -570,7 +602,7 @@
 	handler = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_handler_info));
 	if (!handler) {
 		status = AE_NO_MEMORY;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	handler->address = address;
@@ -581,7 +613,7 @@
 
 	status = acpi_ev_disable_gpe(gpe_event_info);
 	if (ACPI_FAILURE(status)) {
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Install the handler */
@@ -596,8 +628,12 @@
 
 	acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
 
-      unlock_and_exit:
+unlock:
 	(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);
 }
 
@@ -669,6 +705,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-20060623/drivers/acpi/parser/pstree.c linux-acpi-2.6/drivers/acpi/parser/pstree.c
--- acpica-unix-20060623/drivers/acpi/parser/pstree.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/pstree.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/parser/psutils.c linux-acpi-2.6/drivers/acpi/parser/psutils.c
--- acpica-unix-20060623/drivers/acpi/parser/psutils.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/psutils.c	2006-06-15 23:16:30.000000000 -0400
@@ -139,10 +139,12 @@
 		/* The generic op (default) is by far the most common (16 to 1) */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_common));
 	} else {
 		/* Extended parseop */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_ext_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_named));
 	}
 
 	/* Initialize the Op */
@@ -211,6 +213,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 +227,7 @@
 
 	return (op->named.name);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*
  * Set op's name
diff -Nau acpica-unix-20060623/drivers/acpi/tables/tbconvrt.c linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c
--- acpica-unix-20060623/drivers/acpi/tables/tbconvrt.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c	2006-06-15 23:16:30.000000000 -0400
@@ -61,6 +61,9 @@
 acpi_tb_convert_fadt2(struct fadt_descriptor *local_fadt,
 		      struct fadt_descriptor *original_fadt);
 
+u8 acpi_fadt_is_v1;
+ACPI_EXPORT_SYMBOL(acpi_fadt_is_v1)
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_tb_get_table_count
@@ -221,6 +224,7 @@
 
 	/* ACPI 1.0 FACS */
 	/* The BIOS stored FADT should agree with Revision 1.0 */
+	acpi_fadt_is_v1 = 1;
 
 	/*
 	 * Copy the table header and the common part of the tables.
@@ -252,9 +256,12 @@
 	/*
 	 * Processor Performance State Control. This is the value OSPM writes to
 	 * the SMI_CMD register to assume processor performance state control
-	 * responsibility. There isn't any equivalence in 1.0, leave it zeroed.
+	 * responsibility. There isn't any equivalence in 1.0, but as many 1.x
+	 * ACPI tables contain _PCT and _PSS we also keep this value, unless
+	 * acpi_strict is set.
 	 */
-	local_fadt->pstate_cnt = 0;
+	if (acpi_strict)
+		local_fadt->pstate_cnt = 0;
 
 	/*
 	 * Support for the _CST object and C States change notification.
diff -Nau acpica-unix-20060623/drivers/acpi/tables/tbxface.c linux-acpi-2.6/drivers/acpi/tables/tbxface.c
--- acpica-unix-20060623/drivers/acpi/tables/tbxface.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbxface.c	2006-06-15 23:16:30.000000000 -0400
@@ -123,6 +123,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_load_tables)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_load_table
@@ -328,6 +329,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_table_header)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060623/drivers/acpi/dispatcher/dswstate.c linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c
--- acpica-unix-20060623/drivers/acpi/dispatcher/dswstate.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/resources/rsinfo.c linux-acpi-2.6/drivers/acpi/resources/rsinfo.c
--- acpica-unix-20060623/drivers/acpi/resources/rsinfo.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsinfo.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/resources/rslist.c linux-acpi-2.6/drivers/acpi/resources/rslist.c
--- acpica-unix-20060623/drivers/acpi/resources/rslist.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rslist.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/resources/rsutils.c linux-acpi-2.6/drivers/acpi/resources/rsutils.c
--- acpica-unix-20060623/drivers/acpi/resources/rsutils.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsutils.c	2006-06-26 02:15:18.000000000 -0400
@@ -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-20060623/drivers/acpi/resources/rsxface.c linux-acpi-2.6/drivers/acpi/resources/rsxface.c
--- acpica-unix-20060623/drivers/acpi/resources/rsxface.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsxface.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/executer/excreate.c linux-acpi-2.6/drivers/acpi/executer/excreate.c
--- acpica-unix-20060623/drivers/acpi/executer/excreate.c	2006-06-27 15:11:28.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/executer/excreate.c	2006-06-28 00:46:50.000000000 -0400
@@ -63,7 +63,7 @@
  * DESCRIPTION: Create a new named alias
  *
  ******************************************************************************/
-acpi_status acpi_ex_create_alias(struct acpi_walk_state * walk_state)
+acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state)
 {
 	struct acpi_namespace_node *target_node;
 	struct acpi_namespace_node *alias_node;
diff -Nau acpica-unix-20060623/drivers/acpi/namespace/nsdump.c linux-acpi-2.6/drivers/acpi/namespace/nsdump.c
--- acpica-unix-20060623/drivers/acpi/namespace/nsdump.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsdump.c	2006-06-15 23:16:30.000000000 -0400
@@ -588,6 +588,7 @@
 	return (AE_OK);
 }
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_dump_objects
@@ -626,6 +627,7 @@
 				     acpi_ns_dump_one_object, (void *)&info,
 				     NULL);
 }
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*******************************************************************************
  *
@@ -697,5 +699,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-20060623/drivers/acpi/namespace/nsxfeval.c linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c
--- acpica-unix-20060623/drivers/acpi/namespace/nsxfeval.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c	2006-06-26 02:15:18.000000000 -0400
@@ -49,6 +49,7 @@
 #define _COMPONENT          ACPI_NAMESPACE
 ACPI_MODULE_NAME("nsxfeval")
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_evaluate_object_typed
@@ -141,6 +142,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_evaluate_object_typed)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060623/drivers/acpi/utilities/utmisc.c linux-acpi-2.6/drivers/acpi/utilities/utmisc.c
--- acpica-unix-20060623/drivers/acpi/utilities/utmisc.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmisc.c	2006-06-27 01:17:58.000000000 -0400
@@ -41,6 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
+#include <linux/module.h>
+
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
@@ -962,6 +964,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-20060623/drivers/acpi/utilities/utxface.c linux-acpi-2.6/drivers/acpi/utilities/utxface.c
--- acpica-unix-20060623/drivers/acpi/utilities/utxface.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utxface.c	2006-06-15 23:16:30.000000000 -0400
@@ -351,6 +351,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_terminate)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_subsystem_status
@@ -491,6 +492,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_install_initialization_handler)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*****************************************************************************
  *
diff -Nau acpica-unix-20060623/drivers/acpi/utilities/utresrc.c linux-acpi-2.6/drivers/acpi/utilities/utresrc.c
--- acpica-unix-20060623/drivers/acpi/utilities/utresrc.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utresrc.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/drivers/acpi/utilities/utstate.c linux-acpi-2.6/drivers/acpi/utilities/utstate.c
--- acpica-unix-20060623/drivers/acpi/utilities/utstate.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utstate.c	2006-06-15 23:16:30.000000000 -0400
@@ -161,6 +161,7 @@
 	if (state) {
 
 		/* Initialize */
+		memset(state, 0, sizeof(union acpi_generic_state));
 		state->common.descriptor_type = ACPI_DESC_TYPE_STATE;
 	}
 
diff -Nau acpica-unix-20060623/drivers/acpi/utilities/utglobal.c linux-acpi-2.6/drivers/acpi/utilities/utglobal.c
--- acpica-unix-20060623/drivers/acpi/utilities/utglobal.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utglobal.c	2006-06-28 00:46:50.000000000 -0400
@@ -142,16 +142,11 @@
  */
 
 /* 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 */
@@ -845,7 +840,5 @@
 	return_VOID;
 }
 
-/* Public globals */
-
 ACPI_EXPORT_SYMBOL(acpi_dbg_level)
-    ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
+ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
diff -Nau acpica-unix-20060623/drivers/acpi/utilities/utmutex.c linux-acpi-2.6/drivers/acpi/utilities/utmutex.c
--- acpica-unix-20060623/drivers/acpi/utilities/utmutex.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmutex.c	2006-06-28 00:46:50.000000000 -0400
@@ -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);
 }
 
diff -Nau acpica-unix-20060623/drivers/acpi/utilities/utobject.c linux-acpi-2.6/drivers/acpi/utilities/utobject.c
--- acpica-unix-20060623/drivers/acpi/utilities/utobject.c	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utobject.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060623/include/acpi/acutils.h linux-acpi-2.6/include/acpi/acutils.h
--- acpica-unix-20060623/include/acpi/acutils.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acutils.h	2006-06-26 02:15:19.000000000 -0400
@@ -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,
@@ -425,11 +425,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-20060623/include/acpi/achware.h linux-acpi-2.6/include/acpi/achware.h
--- acpica-unix-20060623/include/acpi/achware.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/achware.h	2006-03-31 00:46:34.000000000 -0500
@@ -102,9 +102,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);
 
@@ -116,6 +118,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
  */
@@ -125,5 +128,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-20060623/include/acpi/acinterp.h linux-acpi-2.6/include/acpi/acinterp.h
--- acpica-unix-20060623/include/acpi/acinterp.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acinterp.h	2006-06-28 00:46:50.000000000 -0400
@@ -368,10 +368,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-20060623/include/acpi/acnamesp.h linux-acpi-2.6/include/acpi/acnamesp.h
--- acpica-unix-20060623/include/acpi/acnamesp.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acnamesp.h	2006-06-15 23:16:34.000000000 -0400
@@ -147,7 +147,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);
 
@@ -160,11 +162,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
diff -Nau acpica-unix-20060623/include/acpi/acdebug.h linux-acpi-2.6/include/acpi/acdebug.h
--- acpica-unix-20060623/include/acpi/acdebug.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdebug.h	2006-03-31 00:46:34.000000000 -0500
@@ -196,8 +196,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-20060623/include/acpi/acresrc.h linux-acpi-2.6/include/acpi/acresrc.h
--- acpica-unix-20060623/include/acpi/acresrc.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acresrc.h	2006-06-15 23:16:34.000000000 -0400
@@ -164,6 +164,7 @@
 /*
  * rsutils
  */
+
 acpi_status
 acpi_rs_get_prt_method_data(struct acpi_namespace_node *node,
 			    struct acpi_buffer *ret_buffer);
@@ -202,7 +203,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-20060623/include/acpi/acpixf.h linux-acpi-2.6/include/acpi/acpixf.h
--- acpica-unix-20060623/include/acpi/acpixf.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpixf.h	2006-06-15 23:16:34.000000000 -0400
@@ -59,20 +59,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
@@ -91,6 +97,7 @@
 
 acpi_status acpi_load_tables(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_load_table(struct acpi_table_header *table_ptr);
 
 acpi_status acpi_unload_table(acpi_table_type table_type);
@@ -98,6 +105,7 @@
 acpi_status
 acpi_get_table_header(acpi_table_type table_type,
 		      u32 instance, struct acpi_table_header *out_table_header);
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 acpi_status
 acpi_get_table(acpi_table_type table_type,
@@ -153,12 +161,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);
@@ -207,7 +217,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
@@ -226,7 +238,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);
 
@@ -236,10 +250,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,
@@ -265,9 +281,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,
@@ -296,17 +314,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-20060623/include/acpi/actbl.h linux-acpi-2.6/include/acpi/actbl.h
--- acpica-unix-20060623/include/acpi/actbl.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl.h	2006-06-15 23:16:34.000000000 -0400
@@ -354,6 +354,8 @@
 	u8 flags;
 };
 
+extern u8 acpi_fadt_is_v1;	/* is set to 1 if FADT is revision 1,
+				 * needed for certain workarounds */
 /* Macros used to generate offsets to specific table fields */
 
 #define ACPI_FACS_OFFSET(f)             (u8) ACPI_OFFSET (struct facs_descriptor,f)
diff -Nau acpica-unix-20060623/include/acpi/actbl1.h linux-acpi-2.6/include/acpi/actbl1.h
--- acpica-unix-20060623/include/acpi/actbl1.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl1.h	2006-06-15 23:16:34.000000000 -0400
@@ -398,6 +398,7 @@
 	u32 flags;		/* Interrupt Source Flags */
 };
 
+#ifdef DUPLICATE_DEFINITION_WITH_LINUX_ACPI_H
 /*******************************************************************************
  *
  * MCFG - PCI Memory Mapped Configuration table and sub-table
@@ -415,6 +416,7 @@
 	u8 end_bus_number;	/* Final PCI Bus number */
 	u32 reserved;
 };
+#endif
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060623/include/acpi/acdispat.h linux-acpi-2.6/include/acpi/acdispat.h
--- acpica-unix-20060623/include/acpi/acdispat.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdispat.h	2006-06-28 00:46:50.000000000 -0400
@@ -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-20060623/include/acpi/platform/aclinux.h linux-acpi-2.6/include/acpi/platform/aclinux.h
--- acpica-unix-20060623/include/acpi/platform/aclinux.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/platform/aclinux.h	2006-06-28 00:46:50.000000000 -0400
@@ -49,23 +49,28 @@
 
 #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>
 
 /* 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_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 +98,10 @@
 
 #include "acgcc.h"
 
+#define acpi_cpu_flags unsigned long
+
+#define acpi_thread_id u32
+
+static inline acpi_thread_id acpi_os_get_thread_id(void) { return 0; }
+
 #endif				/* __ACLINUX_H__ */
diff -Nau acpica-unix-20060623/include/acpi/acparser.h linux-acpi-2.6/include/acpi/acparser.h
--- acpica-unix-20060623/include/acpi/acparser.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acparser.h	2006-06-15 23:16:34.000000000 -0400
@@ -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-20060623/include/acpi/acglobal.h linux-acpi-2.6/include/acpi/acglobal.h
--- acpica-unix-20060623/include/acpi/acglobal.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acglobal.h	2006-06-28 00:46:50.000000000 -0400
@@ -203,8 +203,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-20060623/include/acpi/acpiosxf.h linux-acpi-2.6/include/acpi/acpiosxf.h
--- acpica-unix-20060623/include/acpi/acpiosxf.h	2006-06-27 15:11:29.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpiosxf.h	2006-06-28 00:46:50.000000000 -0400
@@ -147,13 +147,15 @@
 
 acpi_status
 acpi_os_map_memory(acpi_physical_address physical_address,
-		   acpi_size size, void **logical_address);
+		   acpi_size size, void __iomem ** logical_address);
 
-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
@@ -175,13 +177,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
@@ -245,7 +246,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);
 
@@ -260,10 +263,12 @@
 
 void acpi_os_redirect_output(void *destination);
 
+#ifdef ACPI_FUTURE_USAGE
 /*
  * Debug input
  */
 u32 acpi_os_get_line(char *buffer);
+#endif
 
 /*
  * Directory manipulation

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Linux/ACPI vs ACPICA audit -- ACPICA 20060707
  2006-06-28  5:08 Linux/ACPI vs ACPICA audit -- ACPICA 20060623 Len Brown
@ 2006-07-08  0:57 ` Len Brown
  2006-07-09 17:56   ` Randy.Dunlap
  2006-07-09 20:57   ` Len Brown
  0 siblings, 2 replies; 5+ messages in thread
From: Len Brown @ 2006-07-08  0:57 UTC (permalink / raw)
  To: linux-acpi

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

acpica-unix-20060707.audit.diff:# 42 files changed, 211 insertions(+), 92 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(-)
acpica-unix-20060512.audit.diff:# 34 files changed, 163 insertions(+), 53 deletions(-)

# 142 ACPICA files
# drivers/acpi/dispatcher/dswstate.c |    2 
# drivers/acpi/events/evxface.c      |   83 +++++++++++++----
# drivers/acpi/events/evxfevnt.c     |    2 
# drivers/acpi/executer/excreate.c   |    2 
# drivers/acpi/hardware/hwgpe.c      |    2 
# drivers/acpi/hardware/hwsleep.c    |   24 ----
# drivers/acpi/namespace/nsdump.c    |    6 -
# drivers/acpi/namespace/nsxfeval.c  |    4 
# drivers/acpi/parser/pstree.c       |    2 
# drivers/acpi/parser/psutils.c      |    4 
# 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/tbconvrt.c     |   11 +-
# drivers/acpi/tables/tbxface.c      |    2 
# drivers/acpi/utilities/utalloc.c   |    4 
# drivers/acpi/utilities/utcache.c   |    2 
# drivers/acpi/utilities/utdebug.c   |    4 
# drivers/acpi/utilities/utglobal.c  |   11 --
# drivers/acpi/utilities/utmisc.c    |    3 
# drivers/acpi/utilities/utmutex.c   |   15 +--
# drivers/acpi/utilities/utobject.c  |    1 
# drivers/acpi/utilities/utresrc.c   |    6 -
# drivers/acpi/utilities/utstate.c   |    1 
# drivers/acpi/utilities/utxface.c   |    2 
# include/acpi/acdebug.h             |    2 
# include/acpi/acdispat.h            |    2 
# include/acpi/acglobal.h            |    6 -
# include/acpi/achware.h             |    4 
# include/acpi/acinterp.h            |    2 
# include/acpi/aclocal.h             |    2 
# include/acpi/acmacros.h            |    2 
# include/acpi/acnamesp.h            |    4 
# include/acpi/acparser.h            |    4 
# include/acpi/acpiosxf.h            |   17 ++-
# include/acpi/acpixf.h              |   24 ++++
# include/acpi/acresrc.h             |    3 
# include/acpi/actbl.h               |    2 
# include/acpi/actbl1.h              |    2 
# include/acpi/acutils.h             |    8 +
# include/acpi/platform/aclinux.h    |   16 ++-
# 42 files changed, 211 insertions(+), 92 deletions(-)

diff -Nau acpica-unix-20060707/drivers/acpi/hardware/hwsleep.c linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c
--- acpica-unix-20060707/drivers/acpi/hardware/hwsleep.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c	2006-06-15 23:16:30.000000000 -0400
@@ -93,6 +93,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)
 {
@@ -119,6 +120,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_firmware_waking_vector)
+#endif
 
 /*******************************************************************************
  *
@@ -219,7 +221,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;
@@ -257,17 +259,6 @@
 		return_ACPI_STATUS(status);
 	}
 
-	if (sleep_state != ACPI_STATE_S5) {
-
-		/* Disable BM arbitration */
-
-		status = acpi_set_register(ACPI_BITREG_ARB_DISABLE,
-					   1, ACPI_MTX_DO_NOT_LOCK);
-		if (ACPI_FAILURE(status)) {
-			return_ACPI_STATUS(status);
-		}
-	}
-
 	/*
 	 * 1) Disable/Clear all GPEs
 	 * 2) Enable all wakeup GPEs
@@ -403,7 +394,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;
@@ -585,13 +576,6 @@
 			      [ACPI_EVENT_POWER_BUTTON].status_register_id, 1,
 			      ACPI_MTX_DO_NOT_LOCK);
 
-	/* Enable BM arbitration */
-
-	status = acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
-	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-20060707/drivers/acpi/hardware/hwgpe.c linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c
--- acpica-unix-20060707/drivers/acpi/hardware/hwgpe.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c	2006-06-15 23:16:30.000000000 -0400
@@ -132,6 +132,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)
@@ -188,6 +189,7 @@
       unlock_and_exit:
 	return (status);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/events/evxfevnt.c linux-acpi-2.6/drivers/acpi/events/evxfevnt.c
--- acpica-unix-20060707/drivers/acpi/events/evxfevnt.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxfevnt.c	2006-06-15 23:16:30.000000000 -0400
@@ -476,6 +476,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_clear_gpe)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_get_event_status
@@ -569,6 +570,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_gpe_status)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/events/evxface.c linux-acpi-2.6/drivers/acpi/events/evxface.c
--- acpica-unix-20060707/drivers/acpi/events/evxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxface.c	2006-07-07 20:46:57.000000000 -0400
@@ -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 */
@@ -423,7 +428,7 @@
 	node = acpi_ns_map_handle_to_node(device);
 	if (!node) {
 		status = AE_BAD_PARAMETER;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Root Object */
@@ -437,7 +442,16 @@
 		    ((handler_type & ACPI_DEVICE_NOTIFY) &&
 		     !acpi_gbl_device_notify.handler)) {
 			status = AE_NOT_EXIST;
-			goto unlock_and_exit;
+			goto unlock;
+		}
+
+		/* 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) {
@@ -460,7 +474,7 @@
 
 		if (!acpi_ev_is_notify_object(node)) {
 			status = AE_TYPE;
-			goto unlock_and_exit;
+			goto unlock;
 		}
 
 		/* Check for an existing internal object */
@@ -468,7 +482,7 @@
 		obj_desc = acpi_ns_get_attached_object(node);
 		if (!obj_desc) {
 			status = AE_NOT_EXIST;
-			goto unlock_and_exit;
+			goto unlock;
 		}
 
 		/* Object exists - make sure there's an existing handler */
@@ -482,11 +496,18 @@
 
 			if (notify_obj->notify.handler != handler) {
 				status = AE_BAD_PARAMETER;
-				goto unlock_and_exit;
+				goto unlock;
 			}
+			/* 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);
 		}
@@ -500,18 +521,28 @@
 
 			if (notify_obj->notify.handler != handler) {
 				status = AE_BAD_PARAMETER;
-				goto unlock_and_exit;
+				goto unlock;
 			}
+			/* 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);
 		}
 	}
 
-      unlock_and_exit:
+unlock:
 	(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 */
@@ -562,7 +594,7 @@
 	gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device, gpe_number);
 	if (!gpe_event_info) {
 		status = AE_BAD_PARAMETER;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Make sure that there isn't a handler there already */
@@ -570,7 +602,7 @@
 	if ((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) ==
 	    ACPI_GPE_DISPATCH_HANDLER) {
 		status = AE_ALREADY_EXISTS;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Allocate and init handler object */
@@ -578,7 +610,7 @@
 	handler = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_handler_info));
 	if (!handler) {
 		status = AE_NO_MEMORY;
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	handler->address = address;
@@ -589,7 +621,7 @@
 
 	status = acpi_ev_disable_gpe(gpe_event_info);
 	if (ACPI_FAILURE(status)) {
-		goto unlock_and_exit;
+		goto unlock;
 	}
 
 	/* Install the handler */
@@ -604,8 +636,12 @@
 
 	acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
 
-      unlock_and_exit:
+unlock:
 	(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-20060707/drivers/acpi/parser/pstree.c linux-acpi-2.6/drivers/acpi/parser/pstree.c
--- acpica-unix-20060707/drivers/acpi/parser/pstree.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/pstree.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/parser/psutils.c linux-acpi-2.6/drivers/acpi/parser/psutils.c
--- acpica-unix-20060707/drivers/acpi/parser/psutils.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/psutils.c	2006-06-15 23:16:30.000000000 -0400
@@ -139,10 +139,12 @@
 		/* The generic op (default) is by far the most common (16 to 1) */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_common));
 	} else {
 		/* Extended parseop */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_ext_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_named));
 	}
 
 	/* Initialize the Op */
@@ -211,6 +213,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 +227,7 @@
 
 	return (op->named.name);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*
  * Set op's name
diff -Nau acpica-unix-20060707/drivers/acpi/tables/tbconvrt.c linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c
--- acpica-unix-20060707/drivers/acpi/tables/tbconvrt.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c	2006-06-15 23:16:30.000000000 -0400
@@ -61,6 +61,9 @@
 acpi_tb_convert_fadt2(struct fadt_descriptor *local_fadt,
 		      struct fadt_descriptor *original_fadt);
 
+u8 acpi_fadt_is_v1;
+ACPI_EXPORT_SYMBOL(acpi_fadt_is_v1)
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_tb_get_table_count
@@ -221,6 +224,7 @@
 
 	/* ACPI 1.0 FACS */
 	/* The BIOS stored FADT should agree with Revision 1.0 */
+	acpi_fadt_is_v1 = 1;
 
 	/*
 	 * Copy the table header and the common part of the tables.
@@ -252,9 +256,12 @@
 	/*
 	 * Processor Performance State Control. This is the value OSPM writes to
 	 * the SMI_CMD register to assume processor performance state control
-	 * responsibility. There isn't any equivalence in 1.0, leave it zeroed.
+	 * responsibility. There isn't any equivalence in 1.0, but as many 1.x
+	 * ACPI tables contain _PCT and _PSS we also keep this value, unless
+	 * acpi_strict is set.
 	 */
-	local_fadt->pstate_cnt = 0;
+	if (acpi_strict)
+		local_fadt->pstate_cnt = 0;
 
 	/*
 	 * Support for the _CST object and C States change notification.
diff -Nau acpica-unix-20060707/drivers/acpi/tables/tbxface.c linux-acpi-2.6/drivers/acpi/tables/tbxface.c
--- acpica-unix-20060707/drivers/acpi/tables/tbxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbxface.c	2006-07-07 20:46:57.000000000 -0400
@@ -123,6 +123,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_load_tables)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_load_table
@@ -332,6 +333,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_table_header)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/dispatcher/dswstate.c linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c
--- acpica-unix-20060707/drivers/acpi/dispatcher/dswstate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsinfo.c linux-acpi-2.6/drivers/acpi/resources/rsinfo.c
--- acpica-unix-20060707/drivers/acpi/resources/rsinfo.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsinfo.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rslist.c linux-acpi-2.6/drivers/acpi/resources/rslist.c
--- acpica-unix-20060707/drivers/acpi/resources/rslist.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rslist.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsutils.c linux-acpi-2.6/drivers/acpi/resources/rsutils.c
--- acpica-unix-20060707/drivers/acpi/resources/rsutils.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsutils.c	2006-06-30 02:58:48.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsxface.c linux-acpi-2.6/drivers/acpi/resources/rsxface.c
--- acpica-unix-20060707/drivers/acpi/resources/rsxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsxface.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/executer/excreate.c linux-acpi-2.6/drivers/acpi/executer/excreate.c
--- acpica-unix-20060707/drivers/acpi/executer/excreate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/executer/excreate.c	2006-06-30 14:28:00.000000000 -0400
@@ -63,7 +63,7 @@
  * DESCRIPTION: Create a new named alias
  *
  ******************************************************************************/
-acpi_status acpi_ex_create_alias(struct acpi_walk_state * walk_state)
+acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state)
 {
 	struct acpi_namespace_node *target_node;
 	struct acpi_namespace_node *alias_node;
diff -Nau acpica-unix-20060707/drivers/acpi/namespace/nsdump.c linux-acpi-2.6/drivers/acpi/namespace/nsdump.c
--- acpica-unix-20060707/drivers/acpi/namespace/nsdump.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsdump.c	2006-06-15 23:16:30.000000000 -0400
@@ -588,6 +588,7 @@
 	return (AE_OK);
 }
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_dump_objects
@@ -626,6 +627,7 @@
 				     acpi_ns_dump_one_object, (void *)&info,
 				     NULL);
 }
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*******************************************************************************
  *
@@ -697,5 +699,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-20060707/drivers/acpi/namespace/nsxfeval.c linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c
--- acpica-unix-20060707/drivers/acpi/namespace/nsxfeval.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c	2006-07-01 17:18:26.000000000 -0400
@@ -49,6 +49,7 @@
 #define _COMPONENT          ACPI_NAMESPACE
 ACPI_MODULE_NAME("nsxfeval")
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_evaluate_object_typed
@@ -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-20060707/drivers/acpi/utilities/utmisc.c linux-acpi-2.6/drivers/acpi/utilities/utmisc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utmisc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmisc.c	2006-07-07 20:46:57.000000000 -0400
@@ -41,6 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
+#include <linux/module.h>
+
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
@@ -975,6 +977,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-20060707/drivers/acpi/utilities/utxface.c linux-acpi-2.6/drivers/acpi/utilities/utxface.c
--- acpica-unix-20060707/drivers/acpi/utilities/utxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utxface.c	2006-06-30 03:04:26.000000000 -0400
@@ -351,6 +351,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_terminate)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_subsystem_status
@@ -491,6 +492,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_install_initialization_handler)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*****************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utdebug.c linux-acpi-2.6/drivers/acpi/utilities/utdebug.c
--- acpica-unix-20060707/drivers/acpi/utilities/utdebug.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utdebug.c	2006-07-07 20:46:53.000000000 -0400
@@ -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-";
 
@@ -181,7 +181,7 @@
 		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);
+			     (u32) acpi_gbl_prev_thread_id, (u32) thread_id);
 		}
 
 		acpi_gbl_prev_thread_id = thread_id;
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utresrc.c linux-acpi-2.6/drivers/acpi/utilities/utresrc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utresrc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utresrc.c	2006-06-30 03:04:26.000000000 -0400
@@ -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-20060707/drivers/acpi/utilities/utstate.c linux-acpi-2.6/drivers/acpi/utilities/utstate.c
--- acpica-unix-20060707/drivers/acpi/utilities/utstate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utstate.c	2006-07-07 20:46:57.000000000 -0400
@@ -161,6 +161,7 @@
 	if (state) {
 
 		/* Initialize */
+		memset(state, 0, sizeof(union acpi_generic_state));
 		state->common.descriptor_type = ACPI_DESC_TYPE_STATE;
 	}
 
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utglobal.c linux-acpi-2.6/drivers/acpi/utilities/utglobal.c
--- acpica-unix-20060707/drivers/acpi/utilities/utglobal.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utglobal.c	2006-06-30 14:28:00.000000000 -0400
@@ -142,16 +142,11 @@
  */
 
 /* 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 */
@@ -845,7 +840,5 @@
 	return_VOID;
 }
 
-/* Public globals */
-
 ACPI_EXPORT_SYMBOL(acpi_dbg_level)
-    ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
+ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utmutex.c linux-acpi-2.6/drivers/acpi/utilities/utmutex.c
--- acpica-unix-20060707/drivers/acpi/utilities/utmutex.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmutex.c	2006-07-07 20:46:53.000000000 -0400
@@ -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);
 }
 
@@ -247,14 +244,14 @@
 
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
 			  "Thread %X attempting to acquire Mutex [%s]\n",
-			  this_thread_id, acpi_ut_get_mutex_name(mutex_id)));
+			  (u32) 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,
+				  (u32) this_thread_id,
 				  acpi_ut_get_mutex_name(mutex_id)));
 
 		acpi_gbl_mutex_info[mutex_id].use_count++;
@@ -262,7 +259,7 @@
 	} else {
 		ACPI_EXCEPTION((AE_INFO, status,
 				"Thread %X could not acquire Mutex [%X]",
-				this_thread_id, mutex_id));
+				(u32) this_thread_id, mutex_id));
 	}
 
 	return (status);
@@ -288,7 +285,7 @@
 
 	this_thread_id = acpi_os_get_thread_id();
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
-			  "Thread %X releasing Mutex [%s]\n", this_thread_id,
+			  "Thread %X releasing Mutex [%s]\n", (u32) this_thread_id,
 			  acpi_ut_get_mutex_name(mutex_id)));
 
 	if (mutex_id > ACPI_MAX_MUTEX) {
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utalloc.c linux-acpi-2.6/drivers/acpi/utilities/utalloc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utalloc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utalloc.c	2006-07-01 17:18:26.000000000 -0400
@@ -166,10 +166,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
 
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utobject.c linux-acpi-2.6/drivers/acpi/utilities/utobject.c
--- acpica-unix-20060707/drivers/acpi/utilities/utobject.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utobject.c	2006-06-30 03:04:26.000000000 -0400
@@ -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-20060707/drivers/acpi/utilities/utcache.c linux-acpi-2.6/drivers/acpi/utilities/utcache.c
--- acpica-unix-20060707/drivers/acpi/utilities/utcache.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utcache.c	2006-07-01 17:18:26.000000000 -0400
@@ -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-20060707/include/acpi/acutils.h linux-acpi-2.6/include/acpi/acutils.h
--- acpica-unix-20060707/include/acpi/acutils.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acutils.h	2006-06-30 21:38:56.000000000 -0400
@@ -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,
@@ -425,11 +425,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-20060707/include/acpi/achware.h linux-acpi-2.6/include/acpi/achware.h
--- acpica-unix-20060707/include/acpi/achware.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/achware.h	2006-03-31 00:46:34.000000000 -0500
@@ -102,9 +102,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);
 
@@ -116,6 +118,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
  */
@@ -125,5 +128,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-20060707/include/acpi/acinterp.h linux-acpi-2.6/include/acpi/acinterp.h
--- acpica-unix-20060707/include/acpi/acinterp.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acinterp.h	2006-07-07 20:46:57.000000000 -0400
@@ -372,10 +372,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-20060707/include/acpi/acnamesp.h linux-acpi-2.6/include/acpi/acnamesp.h
--- acpica-unix-20060707/include/acpi/acnamesp.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acnamesp.h	2006-06-15 23:16:34.000000000 -0400
@@ -147,7 +147,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);
 
@@ -160,11 +162,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
diff -Nau acpica-unix-20060707/include/acpi/acdebug.h linux-acpi-2.6/include/acpi/acdebug.h
--- acpica-unix-20060707/include/acpi/acdebug.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdebug.h	2006-03-31 00:46:34.000000000 -0500
@@ -196,8 +196,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-20060707/include/acpi/acresrc.h linux-acpi-2.6/include/acpi/acresrc.h
--- acpica-unix-20060707/include/acpi/acresrc.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acresrc.h	2006-07-07 20:46:57.000000000 -0400
@@ -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-20060707/include/acpi/acpixf.h linux-acpi-2.6/include/acpi/acpixf.h
--- acpica-unix-20060707/include/acpi/acpixf.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpixf.h	2006-06-15 23:16:34.000000000 -0400
@@ -59,20 +59,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
@@ -91,6 +97,7 @@
 
 acpi_status acpi_load_tables(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_load_table(struct acpi_table_header *table_ptr);
 
 acpi_status acpi_unload_table(acpi_table_type table_type);
@@ -98,6 +105,7 @@
 acpi_status
 acpi_get_table_header(acpi_table_type table_type,
 		      u32 instance, struct acpi_table_header *out_table_header);
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 acpi_status
 acpi_get_table(acpi_table_type table_type,
@@ -153,12 +161,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);
@@ -207,7 +217,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
@@ -226,7 +238,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);
 
@@ -236,10 +250,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,
@@ -265,9 +281,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,
@@ -296,17 +314,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-20060707/include/acpi/actbl.h linux-acpi-2.6/include/acpi/actbl.h
--- acpica-unix-20060707/include/acpi/actbl.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl.h	2006-06-15 23:16:34.000000000 -0400
@@ -354,6 +354,8 @@
 	u8 flags;
 };
 
+extern u8 acpi_fadt_is_v1;	/* is set to 1 if FADT is revision 1,
+				 * needed for certain workarounds */
 /* Macros used to generate offsets to specific table fields */
 
 #define ACPI_FACS_OFFSET(f)             (u8) ACPI_OFFSET (struct facs_descriptor,f)
diff -Nau acpica-unix-20060707/include/acpi/actbl1.h linux-acpi-2.6/include/acpi/actbl1.h
--- acpica-unix-20060707/include/acpi/actbl1.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl1.h	2006-06-15 23:16:34.000000000 -0400
@@ -398,6 +398,7 @@
 	u32 flags;		/* Interrupt Source Flags */
 };
 
+#ifdef DUPLICATE_DEFINITION_WITH_LINUX_ACPI_H
 /*******************************************************************************
  *
  * MCFG - PCI Memory Mapped Configuration table and sub-table
@@ -415,6 +416,7 @@
 	u8 end_bus_number;	/* Final PCI Bus number */
 	u32 reserved;
 };
+#endif
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/include/acpi/acdispat.h linux-acpi-2.6/include/acpi/acdispat.h
--- acpica-unix-20060707/include/acpi/acdispat.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdispat.h	2006-06-30 14:28:05.000000000 -0400
@@ -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-20060707/include/acpi/acmacros.h linux-acpi-2.6/include/acpi/acmacros.h
--- acpica-unix-20060707/include/acpi/acmacros.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acmacros.h	2006-07-01 17:18:26.000000000 -0400
@@ -726,7 +726,7 @@
 
 #define ACPI_ALLOCATE(a)            acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
 #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)
+#define ACPI_FREE(a)                kfree(a)
 #define ACPI_MEM_TRACKING(a)
 
 #else
diff -Nau acpica-unix-20060707/include/acpi/aclocal.h linux-acpi-2.6/include/acpi/aclocal.h
--- acpica-unix-20060707/include/acpi/aclocal.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/aclocal.h	2006-07-07 20:46:58.000000000 -0400
@@ -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 */
 
diff -Nau acpica-unix-20060707/include/acpi/platform/aclinux.h linux-acpi-2.6/include/acpi/platform/aclinux.h
--- acpica-unix-20060707/include/acpi/platform/aclinux.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/platform/aclinux.h	2006-07-07 20:46:54.000000000 -0400
@@ -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_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,10 @@
 
 #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; }
+
 #endif				/* __ACLINUX_H__ */
diff -Nau acpica-unix-20060707/include/acpi/acparser.h linux-acpi-2.6/include/acpi/acparser.h
--- acpica-unix-20060707/include/acpi/acparser.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acparser.h	2006-06-15 23:16:34.000000000 -0400
@@ -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-20060707/include/acpi/acglobal.h linux-acpi-2.6/include/acpi/acglobal.h
--- acpica-unix-20060707/include/acpi/acglobal.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acglobal.h	2006-06-30 14:28:05.000000000 -0400
@@ -203,8 +203,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-20060707/include/acpi/acpiosxf.h linux-acpi-2.6/include/acpi/acpiosxf.h
--- acpica-unix-20060707/include/acpi/acpiosxf.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpiosxf.h	2006-07-07 19:19:30.000000000 -0400
@@ -143,17 +143,17 @@
  */
 void *acpi_os_allocate(acpi_size size);
 
-void acpi_os_free(void *memory);
-
 acpi_status
 acpi_os_map_memory(acpi_physical_address physical_address,
-		   acpi_size size, void **logical_address);
+		   acpi_size size, void __iomem ** logical_address);
 
-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
@@ -175,13 +175,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
@@ -245,7 +244,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);
 
@@ -260,10 +261,12 @@
 
 void acpi_os_redirect_output(void *destination);
 
+#ifdef ACPI_FUTURE_USAGE
 /*
  * Debug input
  */
 u32 acpi_os_get_line(char *buffer);
+#endif
 
 /*
  * Directory manipulation

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Linux/ACPI vs ACPICA audit -- ACPICA 20060707
  2006-07-08  0:57 ` Linux/ACPI vs ACPICA audit -- ACPICA 20060707 Len Brown
@ 2006-07-09 17:56   ` Randy.Dunlap
  2006-07-09 20:57   ` Len Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Randy.Dunlap @ 2006-07-09 17:56 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-acpi

On Fri, 7 Jul 2006 20:57:27 -0400 Len Brown wrote:

> For the files that Linux gets from ACPICA, this diff shows how Linux
> has diverged from upstream.
> 
> acpica-unix-20060707.audit.diff:# 42 files changed, 211 insertions(+), 92 deletions(-)

300+ lines in 42 files.  That doesn't look huge,
but then I'm not trying to maintain it.

Is there supposed to be some kind of value judgment (implied)
in this diff-from-upstream?  Is the Linux code worse/better
or just "fixed" to work with Linux?
Is the diff-from-upstream a maintainer headache?

What is the purpose of these audit reports?


> 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(-)
> acpica-unix-20060512.audit.diff:# 34 files changed, 163 insertions(+), 53 deletions(-)
> 
> # 142 ACPICA files
> # drivers/acpi/dispatcher/dswstate.c |    2 
> # drivers/acpi/events/evxface.c      |   83 +++++++++++++----
> # drivers/acpi/events/evxfevnt.c     |    2 
> # drivers/acpi/executer/excreate.c   |    2 
> # drivers/acpi/hardware/hwgpe.c      |    2 
> # drivers/acpi/hardware/hwsleep.c    |   24 ----
> # drivers/acpi/namespace/nsdump.c    |    6 -
> # drivers/acpi/namespace/nsxfeval.c  |    4 
> # drivers/acpi/parser/pstree.c       |    2 
> # drivers/acpi/parser/psutils.c      |    4 
> # 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/tbconvrt.c     |   11 +-
> # drivers/acpi/tables/tbxface.c      |    2 
> # drivers/acpi/utilities/utalloc.c   |    4 
> # drivers/acpi/utilities/utcache.c   |    2 
> # drivers/acpi/utilities/utdebug.c   |    4 
> # drivers/acpi/utilities/utglobal.c  |   11 --
> # drivers/acpi/utilities/utmisc.c    |    3 
> # drivers/acpi/utilities/utmutex.c   |   15 +--
> # drivers/acpi/utilities/utobject.c  |    1 
> # drivers/acpi/utilities/utresrc.c   |    6 -
> # drivers/acpi/utilities/utstate.c   |    1 
> # drivers/acpi/utilities/utxface.c   |    2 
> # include/acpi/acdebug.h             |    2 
> # include/acpi/acdispat.h            |    2 
> # include/acpi/acglobal.h            |    6 -
> # include/acpi/achware.h             |    4 
> # include/acpi/acinterp.h            |    2 
> # include/acpi/aclocal.h             |    2 
> # include/acpi/acmacros.h            |    2 
> # include/acpi/acnamesp.h            |    4 
> # include/acpi/acparser.h            |    4 
> # include/acpi/acpiosxf.h            |   17 ++-
> # include/acpi/acpixf.h              |   24 ++++
> # include/acpi/acresrc.h             |    3 
> # include/acpi/actbl.h               |    2 
> # include/acpi/actbl1.h              |    2 
> # include/acpi/acutils.h             |    8 +
> # include/acpi/platform/aclinux.h    |   16 ++-
> # 42 files changed, 211 insertions(+), 92 deletions(-)


---
~Randy

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: Linux/ACPI vs ACPICA audit -- ACPICA 20060707
@ 2006-07-09 18:10 Brown, Len
  0 siblings, 0 replies; 5+ messages in thread
From: Brown, Len @ 2006-07-09 18:10 UTC (permalink / raw)
  To: Randy.Dunlap; +Cc: linux-acpi

>> For the files that Linux gets from ACPICA, this diff shows how Linux
>> has diverged from upstream.
>> 
>> acpica-unix-20060707.audit.diff:# 42 files changed, 211 
>insertions(+), 92 deletions(-)
>
>300+ lines in 42 files.  That doesn't look huge,
>but then I'm not trying to maintain it.

It isn't huge because we continuously work to minimize it.

>Is there supposed to be some kind of value judgment (implied)
>in this diff-from-upstream?  Is the Linux code worse/better
>or just "fixed" to work with Linux?

We want to be in a place where there is 0 divergence necessary
for Linux (and other OS's) to use ACPICA.  This is a measure
of how successful we are for each snapshot on Linux.

Andy Grover didn't allow divergence in the old days.
Some other OSs use ACPICA with zero changes.
I allow divergence, but for it not to drive me insane with
patch conflicts, it needs to be managed.

>Is the diff-from-upstream a maintainer headache?

Yes, but not a large one, on the grand scale of headaches --
as long as we keep it under control.

>What is the purpose of these audit reports?

What is measured, improves.  Bob is the primary customer of these
and he looks to see if he can massage ACPICA such that we don't
need to touch it to integrate it -- or he pings me on why I
made a change, or allowed a change, when I didn't have to.

It also notifies the list that a new ACPICA version is
available in a Linux patch.  Though we're working towards
a different release process such that we'll integrate
individual patches rather than "releases".

cheers,
-Len

ps. 20060707 is up as a plain patch, but I didn't push it
to the git tree (and thus mm) b/c I didn't have time to test
it Friday, which I'm doing now.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Linux/ACPI vs ACPICA audit -- ACPICA 20060707
  2006-07-08  0:57 ` Linux/ACPI vs ACPICA audit -- ACPICA 20060707 Len Brown
  2006-07-09 17:56   ` Randy.Dunlap
@ 2006-07-09 20:57   ` Len Brown
  1 sibling, 0 replies; 5+ messages in thread
From: Len Brown @ 2006-07-09 20:57 UTC (permalink / raw)
  To: linux-acpi

ACPICA 20060707 is now in the git tree on the test branch
and in the kernel.org test patch.

A couple of tweaks since Friday related to build warnings
from acpi_os_get_thread_id() returning a pointer and not an integer.
plus some changes in evxface.c to fix a build error and delete
some needless text differences.

cheers,
-Len

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

acpica-unix-20060707.audit.diff:# 43 files changed, 202 insertions(+), 83 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(-)
acpica-unix-20060512.audit.diff:# 34 files changed, 163 insertions(+), 53 deletions(-)

# 142 ACPICA files
# drivers/acpi/dispatcher/dswstate.c |    2 
# drivers/acpi/events/evxface.c      |   59 ++++++++++++++---
# drivers/acpi/events/evxfevnt.c     |    2 
# drivers/acpi/executer/excreate.c   |    2 
# drivers/acpi/executer/exmutex.c    |    4 -
# drivers/acpi/hardware/hwgpe.c      |    2 
# drivers/acpi/hardware/hwsleep.c    |   24 +-----
# drivers/acpi/namespace/nsdump.c    |    6 +
# drivers/acpi/namespace/nsxfeval.c  |    4 -
# drivers/acpi/parser/pstree.c       |    2 
# drivers/acpi/parser/psutils.c      |    4 +
# 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/tbconvrt.c     |   11 ++-
# drivers/acpi/tables/tbxface.c      |    2 
# drivers/acpi/utilities/utalloc.c   |    4 -
# drivers/acpi/utilities/utcache.c   |    2 
# drivers/acpi/utilities/utdebug.c   |    4 -
# drivers/acpi/utilities/utglobal.c  |   11 ---
# drivers/acpi/utilities/utmisc.c    |    3 
# drivers/acpi/utilities/utmutex.c   |   15 +---
# drivers/acpi/utilities/utobject.c  |    1 
# drivers/acpi/utilities/utresrc.c   |    6 -
# drivers/acpi/utilities/utstate.c   |    3 
# drivers/acpi/utilities/utxface.c   |    2 
# include/acpi/acdebug.h             |    2 
# include/acpi/acdispat.h            |    2 
# include/acpi/acglobal.h            |    6 +
# include/acpi/achware.h             |    4 +
# include/acpi/acinterp.h            |    2 
# include/acpi/aclocal.h             |    2 
# include/acpi/acmacros.h            |    2 
# include/acpi/acnamesp.h            |    4 +
# include/acpi/acparser.h            |    4 +
# include/acpi/acpiosxf.h            |   17 ++--
# include/acpi/acpixf.h              |   24 ++++++
# include/acpi/acresrc.h             |    3 
# include/acpi/actbl.h               |    2 
# include/acpi/actbl1.h              |    2 
# include/acpi/acutils.h             |    8 +-
# include/acpi/platform/aclinux.h    |   16 ++++
# 43 files changed, 202 insertions(+), 83 deletions(-)

diff -Nau acpica-unix-20060707/drivers/acpi/hardware/hwsleep.c linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c
--- acpica-unix-20060707/drivers/acpi/hardware/hwsleep.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwsleep.c	2006-06-15 23:16:30.000000000 -0400
@@ -93,6 +93,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)
 {
@@ -119,6 +120,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_firmware_waking_vector)
+#endif
 
 /*******************************************************************************
  *
@@ -219,7 +221,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;
@@ -257,17 +259,6 @@
 		return_ACPI_STATUS(status);
 	}
 
-	if (sleep_state != ACPI_STATE_S5) {
-
-		/* Disable BM arbitration */
-
-		status = acpi_set_register(ACPI_BITREG_ARB_DISABLE,
-					   1, ACPI_MTX_DO_NOT_LOCK);
-		if (ACPI_FAILURE(status)) {
-			return_ACPI_STATUS(status);
-		}
-	}
-
 	/*
 	 * 1) Disable/Clear all GPEs
 	 * 2) Enable all wakeup GPEs
@@ -403,7 +394,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;
@@ -585,13 +576,6 @@
 			      [ACPI_EVENT_POWER_BUTTON].status_register_id, 1,
 			      ACPI_MTX_DO_NOT_LOCK);
 
-	/* Enable BM arbitration */
-
-	status = acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0, ACPI_MTX_LOCK);
-	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-20060707/drivers/acpi/hardware/hwgpe.c linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c
--- acpica-unix-20060707/drivers/acpi/hardware/hwgpe.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/hardware/hwgpe.c	2006-06-15 23:16:30.000000000 -0400
@@ -132,6 +132,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)
@@ -188,6 +189,7 @@
       unlock_and_exit:
 	return (status);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/events/evxfevnt.c linux-acpi-2.6/drivers/acpi/events/evxfevnt.c
--- acpica-unix-20060707/drivers/acpi/events/evxfevnt.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxfevnt.c	2006-06-15 23:16:30.000000000 -0400
@@ -476,6 +476,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_clear_gpe)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_get_event_status
@@ -569,6 +570,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_gpe_status)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/events/evxface.c linux-acpi-2.6/drivers/acpi/events/evxface.c
--- acpica-unix-20060707/drivers/acpi/events/evxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/events/evxface.c	2006-07-09 16:33:55.000000000 -0400
@@ -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-20060707/drivers/acpi/parser/pstree.c linux-acpi-2.6/drivers/acpi/parser/pstree.c
--- acpica-unix-20060707/drivers/acpi/parser/pstree.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/pstree.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/parser/psutils.c linux-acpi-2.6/drivers/acpi/parser/psutils.c
--- acpica-unix-20060707/drivers/acpi/parser/psutils.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/parser/psutils.c	2006-06-15 23:16:30.000000000 -0400
@@ -139,10 +139,12 @@
 		/* The generic op (default) is by far the most common (16 to 1) */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_common));
 	} else {
 		/* Extended parseop */
 
 		op = acpi_os_acquire_object(acpi_gbl_ps_node_ext_cache);
+		memset(op, 0, sizeof(struct acpi_parse_obj_named));
 	}
 
 	/* Initialize the Op */
@@ -211,6 +213,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 +227,7 @@
 
 	return (op->named.name);
 }
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*
  * Set op's name
diff -Nau acpica-unix-20060707/drivers/acpi/tables/tbconvrt.c linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c
--- acpica-unix-20060707/drivers/acpi/tables/tbconvrt.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbconvrt.c	2006-06-15 23:16:30.000000000 -0400
@@ -61,6 +61,9 @@
 acpi_tb_convert_fadt2(struct fadt_descriptor *local_fadt,
 		      struct fadt_descriptor *original_fadt);
 
+u8 acpi_fadt_is_v1;
+ACPI_EXPORT_SYMBOL(acpi_fadt_is_v1)
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_tb_get_table_count
@@ -221,6 +224,7 @@
 
 	/* ACPI 1.0 FACS */
 	/* The BIOS stored FADT should agree with Revision 1.0 */
+	acpi_fadt_is_v1 = 1;
 
 	/*
 	 * Copy the table header and the common part of the tables.
@@ -252,9 +256,12 @@
 	/*
 	 * Processor Performance State Control. This is the value OSPM writes to
 	 * the SMI_CMD register to assume processor performance state control
-	 * responsibility. There isn't any equivalence in 1.0, leave it zeroed.
+	 * responsibility. There isn't any equivalence in 1.0, but as many 1.x
+	 * ACPI tables contain _PCT and _PSS we also keep this value, unless
+	 * acpi_strict is set.
 	 */
-	local_fadt->pstate_cnt = 0;
+	if (acpi_strict)
+		local_fadt->pstate_cnt = 0;
 
 	/*
 	 * Support for the _CST object and C States change notification.
diff -Nau acpica-unix-20060707/drivers/acpi/tables/tbxface.c linux-acpi-2.6/drivers/acpi/tables/tbxface.c
--- acpica-unix-20060707/drivers/acpi/tables/tbxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/tables/tbxface.c	2006-07-09 16:33:55.000000000 -0400
@@ -123,6 +123,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_load_tables)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_load_table
@@ -332,6 +333,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_get_table_header)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/dispatcher/dswstate.c linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c
--- acpica-unix-20060707/drivers/acpi/dispatcher/dswstate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/dispatcher/dswstate.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsinfo.c linux-acpi-2.6/drivers/acpi/resources/rsinfo.c
--- acpica-unix-20060707/drivers/acpi/resources/rsinfo.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsinfo.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rslist.c linux-acpi-2.6/drivers/acpi/resources/rslist.c
--- acpica-unix-20060707/drivers/acpi/resources/rslist.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rslist.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsutils.c linux-acpi-2.6/drivers/acpi/resources/rsutils.c
--- acpica-unix-20060707/drivers/acpi/resources/rsutils.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsutils.c	2006-06-30 02:58:48.000000000 -0400
@@ -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-20060707/drivers/acpi/resources/rsxface.c linux-acpi-2.6/drivers/acpi/resources/rsxface.c
--- acpica-unix-20060707/drivers/acpi/resources/rsxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/resources/rsxface.c	2006-06-15 23:16:30.000000000 -0400
@@ -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-20060707/drivers/acpi/executer/excreate.c linux-acpi-2.6/drivers/acpi/executer/excreate.c
--- acpica-unix-20060707/drivers/acpi/executer/excreate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/executer/excreate.c	2006-06-30 14:28:00.000000000 -0400
@@ -63,7 +63,7 @@
  * DESCRIPTION: Create a new named alias
  *
  ******************************************************************************/
-acpi_status acpi_ex_create_alias(struct acpi_walk_state * walk_state)
+acpi_status acpi_ex_create_alias(struct acpi_walk_state *walk_state)
 {
 	struct acpi_namespace_node *target_node;
 	struct acpi_namespace_node *alias_node;
diff -Nau acpica-unix-20060707/drivers/acpi/executer/exmutex.c linux-acpi-2.6/drivers/acpi/executer/exmutex.c
--- acpica-unix-20060707/drivers/acpi/executer/exmutex.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/executer/exmutex.c	2006-07-09 16:33:55.000000000 -0400
@@ -267,9 +267,9 @@
 	    && (obj_desc->mutex.os_mutex != ACPI_GLOBAL_LOCK)) {
 		ACPI_ERROR((AE_INFO,
 			    "Thread %X cannot release Mutex [%4.4s] acquired by thread %X",
-			    walk_state->thread->thread_id,
+			    (u32) walk_state->thread->thread_id,
 			    acpi_ut_get_node_name(obj_desc->mutex.node),
-			    obj_desc->mutex.owner_thread->thread_id));
+			    (u32) obj_desc->mutex.owner_thread->thread_id));
 		return_ACPI_STATUS(AE_AML_NOT_OWNER);
 	}
 
diff -Nau acpica-unix-20060707/drivers/acpi/namespace/nsdump.c linux-acpi-2.6/drivers/acpi/namespace/nsdump.c
--- acpica-unix-20060707/drivers/acpi/namespace/nsdump.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsdump.c	2006-06-15 23:16:30.000000000 -0400
@@ -588,6 +588,7 @@
 	return (AE_OK);
 }
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ns_dump_objects
@@ -626,6 +627,7 @@
 				     acpi_ns_dump_one_object, (void *)&info,
 				     NULL);
 }
+#endif				/* ACPI_FUTURE_USAGE */
 
 /*******************************************************************************
  *
@@ -697,5 +699,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-20060707/drivers/acpi/namespace/nsxfeval.c linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c
--- acpica-unix-20060707/drivers/acpi/namespace/nsxfeval.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/namespace/nsxfeval.c	2006-07-01 17:18:26.000000000 -0400
@@ -49,6 +49,7 @@
 #define _COMPONENT          ACPI_NAMESPACE
 ACPI_MODULE_NAME("nsxfeval")
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_evaluate_object_typed
@@ -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-20060707/drivers/acpi/utilities/utmisc.c linux-acpi-2.6/drivers/acpi/utilities/utmisc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utmisc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmisc.c	2006-07-09 16:33:55.000000000 -0400
@@ -41,6 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
+#include <linux/module.h>
+
 #include <acpi/acpi.h>
 #include <acpi/acnamesp.h>
 
@@ -975,6 +977,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-20060707/drivers/acpi/utilities/utxface.c linux-acpi-2.6/drivers/acpi/utilities/utxface.c
--- acpica-unix-20060707/drivers/acpi/utilities/utxface.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utxface.c	2006-06-30 03:04:26.000000000 -0400
@@ -351,6 +351,7 @@
 
 ACPI_EXPORT_SYMBOL(acpi_terminate)
 
+#ifdef ACPI_FUTURE_USAGE
 /*******************************************************************************
  *
  * FUNCTION:    acpi_subsystem_status
@@ -491,6 +492,7 @@
 }
 
 ACPI_EXPORT_SYMBOL(acpi_install_initialization_handler)
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 /*****************************************************************************
  *
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utdebug.c linux-acpi-2.6/drivers/acpi/utilities/utdebug.c
--- acpica-unix-20060707/drivers/acpi/utilities/utdebug.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utdebug.c	2006-07-09 16:33:55.000000000 -0400
@@ -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-";
 
@@ -181,7 +181,7 @@
 		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);
+			     (u32) acpi_gbl_prev_thread_id, (u32) thread_id);
 		}
 
 		acpi_gbl_prev_thread_id = thread_id;
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utresrc.c linux-acpi-2.6/drivers/acpi/utilities/utresrc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utresrc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utresrc.c	2006-06-30 03:04:26.000000000 -0400
@@ -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-20060707/drivers/acpi/utilities/utstate.c linux-acpi-2.6/drivers/acpi/utilities/utstate.c
--- acpica-unix-20060707/drivers/acpi/utilities/utstate.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utstate.c	2006-07-09 16:33:55.000000000 -0400
@@ -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-20060707/drivers/acpi/utilities/utglobal.c linux-acpi-2.6/drivers/acpi/utilities/utglobal.c
--- acpica-unix-20060707/drivers/acpi/utilities/utglobal.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utglobal.c	2006-06-30 14:28:00.000000000 -0400
@@ -142,16 +142,11 @@
  */
 
 /* 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 */
@@ -845,7 +840,5 @@
 	return_VOID;
 }
 
-/* Public globals */
-
 ACPI_EXPORT_SYMBOL(acpi_dbg_level)
-    ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
+ACPI_EXPORT_SYMBOL(acpi_dbg_layer)
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utmutex.c linux-acpi-2.6/drivers/acpi/utilities/utmutex.c
--- acpica-unix-20060707/drivers/acpi/utilities/utmutex.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utmutex.c	2006-07-09 16:33:55.000000000 -0400
@@ -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);
 }
 
@@ -247,14 +244,14 @@
 
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
 			  "Thread %X attempting to acquire Mutex [%s]\n",
-			  this_thread_id, acpi_ut_get_mutex_name(mutex_id)));
+			  (u32) 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,
+				  (u32) this_thread_id,
 				  acpi_ut_get_mutex_name(mutex_id)));
 
 		acpi_gbl_mutex_info[mutex_id].use_count++;
@@ -262,7 +259,7 @@
 	} else {
 		ACPI_EXCEPTION((AE_INFO, status,
 				"Thread %X could not acquire Mutex [%X]",
-				this_thread_id, mutex_id));
+				(u32) this_thread_id, mutex_id));
 	}
 
 	return (status);
@@ -288,7 +285,7 @@
 
 	this_thread_id = acpi_os_get_thread_id();
 	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
-			  "Thread %X releasing Mutex [%s]\n", this_thread_id,
+			  "Thread %X releasing Mutex [%s]\n", (u32) this_thread_id,
 			  acpi_ut_get_mutex_name(mutex_id)));
 
 	if (mutex_id > ACPI_MAX_MUTEX) {
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utalloc.c linux-acpi-2.6/drivers/acpi/utilities/utalloc.c
--- acpica-unix-20060707/drivers/acpi/utilities/utalloc.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utalloc.c	2006-07-01 17:18:26.000000000 -0400
@@ -166,10 +166,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
 
diff -Nau acpica-unix-20060707/drivers/acpi/utilities/utobject.c linux-acpi-2.6/drivers/acpi/utilities/utobject.c
--- acpica-unix-20060707/drivers/acpi/utilities/utobject.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utobject.c	2006-06-30 03:04:26.000000000 -0400
@@ -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-20060707/drivers/acpi/utilities/utcache.c linux-acpi-2.6/drivers/acpi/utilities/utcache.c
--- acpica-unix-20060707/drivers/acpi/utilities/utcache.c	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/drivers/acpi/utilities/utcache.c	2006-07-01 17:18:26.000000000 -0400
@@ -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-20060707/include/acpi/acutils.h linux-acpi-2.6/include/acpi/acutils.h
--- acpica-unix-20060707/include/acpi/acutils.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acutils.h	2006-06-30 21:38:56.000000000 -0400
@@ -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,
@@ -425,11 +425,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-20060707/include/acpi/achware.h linux-acpi-2.6/include/acpi/achware.h
--- acpica-unix-20060707/include/acpi/achware.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/achware.h	2006-03-31 00:46:34.000000000 -0500
@@ -102,9 +102,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);
 
@@ -116,6 +118,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
  */
@@ -125,5 +128,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-20060707/include/acpi/acinterp.h linux-acpi-2.6/include/acpi/acinterp.h
--- acpica-unix-20060707/include/acpi/acinterp.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acinterp.h	2006-07-09 16:33:55.000000000 -0400
@@ -372,10 +372,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-20060707/include/acpi/acnamesp.h linux-acpi-2.6/include/acpi/acnamesp.h
--- acpica-unix-20060707/include/acpi/acnamesp.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acnamesp.h	2006-06-15 23:16:34.000000000 -0400
@@ -147,7 +147,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);
 
@@ -160,11 +162,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
diff -Nau acpica-unix-20060707/include/acpi/acdebug.h linux-acpi-2.6/include/acpi/acdebug.h
--- acpica-unix-20060707/include/acpi/acdebug.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdebug.h	2006-03-31 00:46:34.000000000 -0500
@@ -196,8 +196,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-20060707/include/acpi/acresrc.h linux-acpi-2.6/include/acpi/acresrc.h
--- acpica-unix-20060707/include/acpi/acresrc.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acresrc.h	2006-07-09 16:33:55.000000000 -0400
@@ -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-20060707/include/acpi/acpixf.h linux-acpi-2.6/include/acpi/acpixf.h
--- acpica-unix-20060707/include/acpi/acpixf.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpixf.h	2006-06-15 23:16:34.000000000 -0400
@@ -59,20 +59,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
@@ -91,6 +97,7 @@
 
 acpi_status acpi_load_tables(void);
 
+#ifdef ACPI_FUTURE_USAGE
 acpi_status acpi_load_table(struct acpi_table_header *table_ptr);
 
 acpi_status acpi_unload_table(acpi_table_type table_type);
@@ -98,6 +105,7 @@
 acpi_status
 acpi_get_table_header(acpi_table_type table_type,
 		      u32 instance, struct acpi_table_header *out_table_header);
+#endif				/*  ACPI_FUTURE_USAGE  */
 
 acpi_status
 acpi_get_table(acpi_table_type table_type,
@@ -153,12 +161,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);
@@ -207,7 +217,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
@@ -226,7 +238,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);
 
@@ -236,10 +250,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,
@@ -265,9 +281,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,
@@ -296,17 +314,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-20060707/include/acpi/actbl.h linux-acpi-2.6/include/acpi/actbl.h
--- acpica-unix-20060707/include/acpi/actbl.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl.h	2006-06-15 23:16:34.000000000 -0400
@@ -354,6 +354,8 @@
 	u8 flags;
 };
 
+extern u8 acpi_fadt_is_v1;	/* is set to 1 if FADT is revision 1,
+				 * needed for certain workarounds */
 /* Macros used to generate offsets to specific table fields */
 
 #define ACPI_FACS_OFFSET(f)             (u8) ACPI_OFFSET (struct facs_descriptor,f)
diff -Nau acpica-unix-20060707/include/acpi/actbl1.h linux-acpi-2.6/include/acpi/actbl1.h
--- acpica-unix-20060707/include/acpi/actbl1.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/actbl1.h	2006-06-15 23:16:34.000000000 -0400
@@ -398,6 +398,7 @@
 	u32 flags;		/* Interrupt Source Flags */
 };
 
+#ifdef DUPLICATE_DEFINITION_WITH_LINUX_ACPI_H
 /*******************************************************************************
  *
  * MCFG - PCI Memory Mapped Configuration table and sub-table
@@ -415,6 +416,7 @@
 	u8 end_bus_number;	/* Final PCI Bus number */
 	u32 reserved;
 };
+#endif
 
 /*******************************************************************************
  *
diff -Nau acpica-unix-20060707/include/acpi/acdispat.h linux-acpi-2.6/include/acpi/acdispat.h
--- acpica-unix-20060707/include/acpi/acdispat.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acdispat.h	2006-06-30 14:28:05.000000000 -0400
@@ -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-20060707/include/acpi/acmacros.h linux-acpi-2.6/include/acpi/acmacros.h
--- acpica-unix-20060707/include/acpi/acmacros.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acmacros.h	2006-07-01 17:18:26.000000000 -0400
@@ -726,7 +726,7 @@
 
 #define ACPI_ALLOCATE(a)            acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__)
 #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)
+#define ACPI_FREE(a)                kfree(a)
 #define ACPI_MEM_TRACKING(a)
 
 #else
diff -Nau acpica-unix-20060707/include/acpi/aclocal.h linux-acpi-2.6/include/acpi/aclocal.h
--- acpica-unix-20060707/include/acpi/aclocal.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/aclocal.h	2006-07-09 16:33:55.000000000 -0400
@@ -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 */
 
diff -Nau acpica-unix-20060707/include/acpi/platform/aclinux.h linux-acpi-2.6/include/acpi/platform/aclinux.h
--- acpica-unix-20060707/include/acpi/platform/aclinux.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/platform/aclinux.h	2006-07-09 16:33:55.000000000 -0400
@@ -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_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,10 @@
 
 #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; }
+
 #endif				/* __ACLINUX_H__ */
diff -Nau acpica-unix-20060707/include/acpi/acparser.h linux-acpi-2.6/include/acpi/acparser.h
--- acpica-unix-20060707/include/acpi/acparser.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acparser.h	2006-06-15 23:16:34.000000000 -0400
@@ -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-20060707/include/acpi/acglobal.h linux-acpi-2.6/include/acpi/acglobal.h
--- acpica-unix-20060707/include/acpi/acglobal.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acglobal.h	2006-06-30 14:28:05.000000000 -0400
@@ -203,8 +203,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-20060707/include/acpi/acpiosxf.h linux-acpi-2.6/include/acpi/acpiosxf.h
--- acpica-unix-20060707/include/acpi/acpiosxf.h	2006-07-07 20:33:32.000000000 -0400
+++ linux-acpi-2.6/include/acpi/acpiosxf.h	2006-07-07 19:19:30.000000000 -0400
@@ -143,17 +143,17 @@
  */
 void *acpi_os_allocate(acpi_size size);
 
-void acpi_os_free(void *memory);
-
 acpi_status
 acpi_os_map_memory(acpi_physical_address physical_address,
-		   acpi_size size, void **logical_address);
+		   acpi_size size, void __iomem ** logical_address);
 
-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
@@ -175,13 +175,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
@@ -245,7 +244,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);
 
@@ -260,10 +261,12 @@
 
 void acpi_os_redirect_output(void *destination);
 
+#ifdef ACPI_FUTURE_USAGE
 /*
  * Debug input
  */
 u32 acpi_os_get_line(char *buffer);
+#endif
 
 /*
  * Directory manipulation

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-07-09 20:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-06-28  5:08 Linux/ACPI vs ACPICA audit -- ACPICA 20060623 Len Brown
2006-07-08  0:57 ` Linux/ACPI vs ACPICA audit -- ACPICA 20060707 Len Brown
2006-07-09 17:56   ` Randy.Dunlap
2006-07-09 20:57   ` Len Brown
  -- strict thread matches above, loose matches on Subject: below --
2006-07-09 18:10 Brown, Len

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).