Index: 2.6.13/drivers/acpi/dispatcher/dsobject.c
===================================================================
--- 2.6.13.orig/drivers/acpi/dispatcher/dsobject.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/dispatcher/dsobject.c	2005-09-02 16:28:50.000000000 -0400
@@ -547,6 +547,9 @@ acpi_ds_init_object_from_op (
 		case AML_TYPE_LITERAL:
 
 			obj_desc->integer.value = op->common.value.integer;
+#ifndef ACPI_NO_METHOD_EXECUTION
+			acpi_ex_truncate_for32bit_table (obj_desc);
+#endif
 			break;
 
 
Index: 2.6.13/drivers/acpi/dispatcher/dswstate.c
===================================================================
--- 2.6.13.orig/drivers/acpi/dispatcher/dswstate.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/dispatcher/dswstate.c	2005-09-02 16:28:50.000000000 -0400
@@ -261,12 +261,12 @@ acpi_ds_result_pop_from_bottom (
 
 	if (!*object) {
 		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
-			"Null operand! State=%p #Ops=%X, Index=%X\n",
+			"Null operand! State=%p #Ops=%X Index=%X\n",
 			walk_state, state->results.num_results, (u32) index));
 		return (AE_AML_NO_RETURN_VALUE);
 	}
 
-	ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s], Results=%p State=%p\n",
+	ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Results=%p State=%p\n",
 		*object, (*object) ? acpi_ut_get_object_type_name (*object) : "NULL",
 		state, walk_state));
 
Index: 2.6.13/drivers/acpi/events/evgpeblk.c
===================================================================
--- 2.6.13.orig/drivers/acpi/events/evgpeblk.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/events/evgpeblk.c	2005-09-02 16:28:50.000000000 -0400
@@ -66,7 +66,7 @@ acpi_ev_match_prw_and_gpe (
 
 static struct acpi_gpe_xrupt_info *
 acpi_ev_get_gpe_xrupt_block (
-	u32                             interrupt_level);
+	u32                             interrupt_number);
 
 static acpi_status
 acpi_ev_delete_gpe_xrupt (
@@ -75,7 +75,7 @@ acpi_ev_delete_gpe_xrupt (
 static acpi_status
 acpi_ev_install_gpe_block (
 	struct acpi_gpe_block_info      *gpe_block,
-	u32                             interrupt_level);
+	u32                             interrupt_number);
 
 static acpi_status
 acpi_ev_create_gpe_info_blocks (
@@ -482,7 +482,7 @@ cleanup:
  *
  * FUNCTION:    acpi_ev_get_gpe_xrupt_block
  *
- * PARAMETERS:  interrupt_level     - Interrupt for a GPE block
+ * PARAMETERS:  interrupt_number     - Interrupt for a GPE block
  *
  * RETURN:      A GPE interrupt block
  *
@@ -495,7 +495,7 @@ cleanup:
 
 static struct acpi_gpe_xrupt_info *
 acpi_ev_get_gpe_xrupt_block (
-	u32                             interrupt_level)
+	u32                             interrupt_number)
 {
 	struct acpi_gpe_xrupt_info      *next_gpe_xrupt;
 	struct acpi_gpe_xrupt_info      *gpe_xrupt;
@@ -509,7 +509,7 @@ acpi_ev_get_gpe_xrupt_block (
 
 	next_gpe_xrupt = acpi_gbl_gpe_xrupt_list_head;
 	while (next_gpe_xrupt) {
-		if (next_gpe_xrupt->interrupt_level == interrupt_level) {
+		if (next_gpe_xrupt->interrupt_number == interrupt_number) {
 			return_PTR (next_gpe_xrupt);
 		}
 
@@ -523,7 +523,7 @@ acpi_ev_get_gpe_xrupt_block (
 		return_PTR (NULL);
 	}
 
-	gpe_xrupt->interrupt_level = interrupt_level;
+	gpe_xrupt->interrupt_number = interrupt_number;
 
 	/* Install new interrupt descriptor with spin lock */
 
@@ -544,13 +544,13 @@ acpi_ev_get_gpe_xrupt_block (
 
 	/* Install new interrupt handler if not SCI_INT */
 
-	if (interrupt_level != acpi_gbl_FADT->sci_int) {
-		status = acpi_os_install_interrupt_handler (interrupt_level,
+	if (interrupt_number != acpi_gbl_FADT->sci_int) {
+		status = acpi_os_install_interrupt_handler (interrupt_number,
 				 acpi_ev_gpe_xrupt_handler, gpe_xrupt);
 		if (ACPI_FAILURE (status)) {
 			ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
 				"Could not install GPE interrupt handler at level 0x%X\n",
-				interrupt_level));
+				interrupt_number));
 			return_PTR (NULL);
 		}
 	}
@@ -584,14 +584,14 @@ acpi_ev_delete_gpe_xrupt (
 
 	/* We never want to remove the SCI interrupt handler */
 
-	if (gpe_xrupt->interrupt_level == acpi_gbl_FADT->sci_int) {
+	if (gpe_xrupt->interrupt_number == acpi_gbl_FADT->sci_int) {
 		gpe_xrupt->gpe_block_list_head = NULL;
 		return_ACPI_STATUS (AE_OK);
 	}
 
 	/* Disable this interrupt */
 
-	status = acpi_os_remove_interrupt_handler (gpe_xrupt->interrupt_level,
+	status = acpi_os_remove_interrupt_handler (gpe_xrupt->interrupt_number,
 			   acpi_ev_gpe_xrupt_handler);
 	if (ACPI_FAILURE (status)) {
 		return_ACPI_STATUS (status);
@@ -621,7 +621,7 @@ acpi_ev_delete_gpe_xrupt (
  * FUNCTION:    acpi_ev_install_gpe_block
  *
  * PARAMETERS:  gpe_block       - New GPE block
- *              interrupt_level - Level to be associated with this GPE block
+ *              interrupt_number - Xrupt to be associated with this GPE block
  *
  * RETURN:      Status
  *
@@ -632,7 +632,7 @@ acpi_ev_delete_gpe_xrupt (
 static acpi_status
 acpi_ev_install_gpe_block (
 	struct acpi_gpe_block_info      *gpe_block,
-	u32                             interrupt_level)
+	u32                             interrupt_number)
 {
 	struct acpi_gpe_block_info      *next_gpe_block;
 	struct acpi_gpe_xrupt_info      *gpe_xrupt_block;
@@ -647,7 +647,7 @@ acpi_ev_install_gpe_block (
 		return_ACPI_STATUS (status);
 	}
 
-	gpe_xrupt_block = acpi_ev_get_gpe_xrupt_block (interrupt_level);
+	gpe_xrupt_block = acpi_ev_get_gpe_xrupt_block (interrupt_number);
 	if (!gpe_xrupt_block) {
 		status = AE_NO_MEMORY;
 		goto unlock_and_exit;
@@ -887,7 +887,7 @@ error_exit:
  *              gpe_block_address   - Address and space_iD
  *              register_count      - Number of GPE register pairs in the block
  *              gpe_block_base_number - Starting GPE number for the block
- *              interrupt_level     - H/W interrupt for the block
+ *              interrupt_number    - H/W interrupt for the block
  *              return_gpe_block    - Where the new block descriptor is returned
  *
  * RETURN:      Status
@@ -902,7 +902,7 @@ acpi_ev_create_gpe_block (
 	struct acpi_generic_address     *gpe_block_address,
 	u32                             register_count,
 	u8                              gpe_block_base_number,
-	u32                             interrupt_level,
+	u32                             interrupt_number,
 	struct acpi_gpe_block_info      **return_gpe_block)
 {
 	struct acpi_gpe_block_info      *gpe_block;
@@ -948,7 +948,7 @@ acpi_ev_create_gpe_block (
 
 	/* Install the new block in the global list(s) */
 
-	status = acpi_ev_install_gpe_block (gpe_block, interrupt_level);
+	status = acpi_ev_install_gpe_block (gpe_block, interrupt_number);
 	if (ACPI_FAILURE (status)) {
 		ACPI_MEM_FREE (gpe_block);
 		return_ACPI_STATUS (status);
@@ -1013,7 +1013,7 @@ acpi_ev_create_gpe_block (
 				((gpe_block->register_count * ACPI_GPE_REGISTER_WIDTH) -1)),
 		gpe_device->name.ascii,
 		gpe_block->register_count,
-		interrupt_level));
+		interrupt_number));
 
 	/* Enable all valid GPEs found above */
 
Index: 2.6.13/drivers/acpi/events/evrgnini.c
===================================================================
--- 2.6.13.orig/drivers/acpi/events/evrgnini.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/events/evrgnini.c	2005-09-02 16:28:50.000000000 -0400
@@ -218,10 +218,14 @@ acpi_ev_pci_config_region_setup (
 		while (pci_root_node != acpi_gbl_root_node) {
 			status = acpi_ut_execute_HID (pci_root_node, &object_hID);
 			if (ACPI_SUCCESS (status)) {
-				/* Got a valid _HID, check if this is a PCI root */
-
+				/*
+				 * Got a valid _HID string, check if this is a PCI root.
+				 * New for ACPI 3.0: check for a PCI Express root also.
+				 */
 				if (!(ACPI_STRNCMP (object_hID.value, PCI_ROOT_HID_STRING,
-						   sizeof (PCI_ROOT_HID_STRING)))) {
+						   sizeof (PCI_ROOT_HID_STRING))           ||
+					!(ACPI_STRNCMP (object_hID.value, PCI_EXPRESS_ROOT_HID_STRING,
+							  sizeof (PCI_EXPRESS_ROOT_HID_STRING))))) {
 					/* Install a handler for this PCI root bridge */
 
 					status = acpi_install_address_space_handler ((acpi_handle) pci_root_node,
Index: 2.6.13/drivers/acpi/events/evxfevnt.c
===================================================================
--- 2.6.13.orig/drivers/acpi/events/evxfevnt.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/events/evxfevnt.c	2005-09-02 16:28:50.000000000 -0400
@@ -635,7 +635,7 @@ unlock_and_exit:
  * PARAMETERS:  gpe_device          - Handle to the parent GPE Block Device
  *              gpe_block_address   - Address and space_iD
  *              register_count      - Number of GPE register pairs in the block
- *              interrupt_level     - H/W interrupt for the block
+ *              interrupt_number    - H/W interrupt for the block
  *
  * RETURN:      Status
  *
@@ -648,7 +648,7 @@ acpi_install_gpe_block (
 	acpi_handle                     gpe_device,
 	struct acpi_generic_address     *gpe_block_address,
 	u32                             register_count,
-	u32                             interrupt_level)
+	u32                             interrupt_number)
 {
 	acpi_status                     status;
 	union acpi_operand_object       *obj_desc;
@@ -681,7 +681,7 @@ acpi_install_gpe_block (
 	 * is always zero
 	 */
 	status = acpi_ev_create_gpe_block (node, gpe_block_address, register_count,
-			  0, interrupt_level, &gpe_block);
+			  0, interrupt_number, &gpe_block);
 	if (ACPI_FAILURE (status)) {
 		goto unlock_and_exit;
 	}
Index: 2.6.13/drivers/acpi/executer/exdump.c
===================================================================
--- 2.6.13.orig/drivers/acpi/executer/exdump.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/executer/exdump.c	2005-09-02 16:28:50.000000000 -0400
@@ -51,6 +51,11 @@
 #define _COMPONENT          ACPI_EXECUTER
 	 ACPI_MODULE_NAME    ("exdump")
 
+/*
+ * The following routines are used for debug output only
+ */
+#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
+
 /* Local prototypes */
 
 #ifdef ACPI_FUTURE_USAGE
@@ -76,11 +81,6 @@ acpi_ex_out_address (
 #endif	/* ACPI_FUTURE_USAGE */
 
 
-/*
- * The following routines are used for debug output only
- */
-#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
-
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ex_dump_operand
@@ -118,7 +118,7 @@ acpi_ex_dump_operand (
 	}
 
 	if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) == ACPI_DESC_TYPE_NAMED) {
-		ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p is a NS Node: ", obj_desc));
+		ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", obj_desc));
 		ACPI_DUMP_ENTRY (obj_desc, ACPI_LV_EXEC);
 		return;
 	}
@@ -467,7 +467,7 @@ acpi_ex_dump_operands (
 	}
 
 	ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
-		"************* Stack dump from %s(%d), %s\n",
+		"************* Operand Stack dump from %s(%d), %s\n",
 		module_name, line_number, note));
 	return;
 }
Index: 2.6.13/drivers/acpi/executer/exstore.c
===================================================================
--- 2.6.13.orig/drivers/acpi/executer/exstore.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/executer/exstore.c	2005-09-02 16:28:50.000000000 -0400
@@ -574,7 +574,7 @@ acpi_ex_store_object_to_node (
 
 	/* If no implicit conversion, drop into the default case below */
 
-	if (!implicit_conversion) {
+	if ((!implicit_conversion) || (walk_state->opcode == AML_COPY_OP)) {
 		/* Force execution of default (no implicit conversion) */
 
 		target_type = ACPI_TYPE_ANY;
@@ -634,7 +634,7 @@ acpi_ex_store_object_to_node (
 	default:
 
 		ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
-			"Storing %s (%p) directly into node (%p), no implicit conversion\n",
+			"Storing %s (%p) directly into node (%p) with no implicit conversion\n",
 			acpi_ut_get_object_type_name (source_desc), source_desc, node));
 
 		/* No conversions for all other types.  Just attach the source object */
Index: 2.6.13/drivers/acpi/executer/exstoren.c
===================================================================
--- 2.6.13.orig/drivers/acpi/executer/exstoren.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/executer/exstoren.c	2005-09-02 16:28:50.000000000 -0400
@@ -265,10 +265,6 @@ acpi_ex_store_object_to_object (
 
 	case ACPI_TYPE_BUFFER:
 
-		/*
-		 * Note: There is different store behavior depending on the original
-		 * source type
-		 */
 		status = acpi_ex_store_buffer_to_buffer (actual_src_desc, dest_desc);
 		break;
 
Index: 2.6.13/drivers/acpi/namespace/nsdump.c
===================================================================
--- 2.6.13.orig/drivers/acpi/namespace/nsdump.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/namespace/nsdump.c	2005-09-02 16:28:50.000000000 -0400
@@ -475,7 +475,7 @@ acpi_ns_dump_one_object (
 
 	while (obj_desc) {
 		obj_type = ACPI_TYPE_INVALID;
-		acpi_os_printf ("      Attached Object %p: ", obj_desc);
+		acpi_os_printf ("Attached Object %p: ", obj_desc);
 
 		/* Decode the type of attached object and dump the contents */
 
@@ -484,9 +484,9 @@ acpi_ns_dump_one_object (
 
 			acpi_os_printf ("(Ptr to Node)\n");
 			bytes_to_dump = sizeof (struct acpi_namespace_node);
+			ACPI_DUMP_BUFFER (obj_desc, bytes_to_dump);
 			break;
 
-
 		case ACPI_DESC_TYPE_OPERAND:
 
 			obj_type = ACPI_GET_OBJECT_TYPE (obj_desc);
@@ -497,24 +497,19 @@ acpi_ns_dump_one_object (
 				bytes_to_dump = 32;
 			}
 			else {
-				acpi_os_printf ("(Ptr to ACPI Object type %s, %X)\n",
-					acpi_ut_get_type_name (obj_type), obj_type);
+				acpi_os_printf ("(Ptr to ACPI Object type %X [%s])\n",
+					obj_type, acpi_ut_get_type_name (obj_type));
 				bytes_to_dump = sizeof (union acpi_operand_object);
 			}
-			break;
 
+			ACPI_DUMP_BUFFER (obj_desc, bytes_to_dump);
+			break;
 
 		default:
 
-			acpi_os_printf (
-				"(String or Buffer ptr - not an object descriptor) [%s]\n",
-				acpi_ut_get_descriptor_name (obj_desc));
-			bytes_to_dump = 16;
 			break;
 		}
 
-		ACPI_DUMP_BUFFER (obj_desc, bytes_to_dump);
-
 		/* If value is NOT an internal object, we are done */
 
 		if (ACPI_GET_DESCRIPTOR_TYPE (obj_desc) != ACPI_DESC_TYPE_OPERAND) {
@@ -525,13 +520,17 @@ acpi_ns_dump_one_object (
 		 * Valid object, get the pointer to next level, if any
 		 */
 		switch (obj_type) {
+		case ACPI_TYPE_BUFFER:
 		case ACPI_TYPE_STRING:
+			/*
+			 * NOTE: takes advantage of common fields between string/buffer
+			 */
+			bytes_to_dump = obj_desc->string.length;
 			obj_desc = (void *) obj_desc->string.pointer;
-			break;
-
-		case ACPI_TYPE_BUFFER:
-			obj_desc = (void *) obj_desc->buffer.pointer;
-			break;
+			acpi_os_printf ( "(Buffer/String pointer %p length %X)\n",
+				obj_desc, bytes_to_dump);
+			ACPI_DUMP_BUFFER (obj_desc, bytes_to_dump);
+			goto cleanup;
 
 		case ACPI_TYPE_BUFFER_FIELD:
 			obj_desc = (union acpi_operand_object *) obj_desc->buffer_field.buffer_obj;
Index: 2.6.13/drivers/acpi/parser/psopcode.c
===================================================================
--- 2.6.13.orig/drivers/acpi/parser/psopcode.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/parser/psopcode.c	2005-09-02 16:28:50.000000000 -0400
@@ -311,7 +311,7 @@ const struct acpi_opcode_info     acpi_g
 /* ACPI 2.0 opcodes */
 
 /* 6E */ ACPI_OP ("QwordConst",         ARGP_QWORD_OP,             ARGI_QWORD_OP,              ACPI_TYPE_INTEGER,           AML_CLASS_ARGUMENT,        AML_TYPE_LITERAL,         AML_CONSTANT),
-/* 6F */ ACPI_OP ("Package /*Var*/",    ARGP_VAR_PACKAGE_OP,       ARGI_VAR_PACKAGE_OP,        ACPI_TYPE_PACKAGE,           AML_CLASS_CREATE,          AML_TYPE_CREATE_OBJECT,   AML_HAS_ARGS | AML_DEFER),
+/* 6F */ ACPI_OP ("Package", /* Var */  ARGP_VAR_PACKAGE_OP,       ARGI_VAR_PACKAGE_OP,        ACPI_TYPE_PACKAGE,           AML_CLASS_CREATE,          AML_TYPE_CREATE_OBJECT,   AML_HAS_ARGS | AML_DEFER),
 /* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP,    ARGI_CONCAT_RES_OP,         ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_2A_1T_1R,   AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
 /* 71 */ ACPI_OP ("Mod",                ARGP_MOD_OP,               ARGI_MOD_OP,                ACPI_TYPE_ANY,               AML_CLASS_EXECUTE,         AML_TYPE_EXEC_2A_1T_1R,   AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),
 /* 72 */ ACPI_OP ("CreateQWordField",   ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD,      AML_CLASS_CREATE,          AML_TYPE_CREATE_FIELD,    AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE),
Index: 2.6.13/drivers/acpi/resources/rsdump.c
===================================================================
--- 2.6.13.orig/drivers/acpi/resources/rsdump.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/resources/rsdump.c	2005-09-02 16:28:50.000000000 -0400
@@ -48,6 +48,9 @@
 #define _COMPONENT          ACPI_RESOURCES
 	 ACPI_MODULE_NAME    ("rsdump")
 
+
+#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
+
 /* Local prototypes */
 
 static void
@@ -103,7 +106,6 @@ acpi_rs_dump_vendor_specific (
 	union acpi_resource_data        *data);
 
 
-#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
 /*******************************************************************************
  *
  * FUNCTION:    acpi_rs_dump_irq
Index: 2.6.13/drivers/acpi/utilities/utcopy.c
===================================================================
--- 2.6.13.orig/drivers/acpi/utilities/utcopy.c	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/drivers/acpi/utilities/utcopy.c	2005-09-02 16:28:50.000000000 -0400
@@ -694,58 +694,50 @@ acpi_ut_copy_simple_object (
 	dest_desc->common.reference_count = reference_count;
 	dest_desc->common.next_object = next_object;
 
+	/* New object is not static, regardless of source */
+
+	dest_desc->common.flags &= ~AOPOBJ_STATIC_POINTER;
+
 	/* Handle the objects with extra data */
 
 	switch (ACPI_GET_OBJECT_TYPE (dest_desc)) {
 	case ACPI_TYPE_BUFFER:
-
-		dest_desc->buffer.node = NULL;
-		dest_desc->common.flags = source_desc->common.flags;
-
 		/*
 		 * Allocate and copy the actual buffer if and only if:
 		 * 1) There is a valid buffer pointer
-		 * 2) The buffer is not static (not in an ACPI table) (in this case,
-		 *    the actual pointer was already copied above)
+		 * 2) The buffer has a length > 0
 		 */
 		if ((source_desc->buffer.pointer) &&
-			(!(source_desc->common.flags & AOPOBJ_STATIC_POINTER))) {
-			dest_desc->buffer.pointer = NULL;
+			(source_desc->buffer.length)) {
+			dest_desc->buffer.pointer =
+				ACPI_MEM_ALLOCATE (source_desc->buffer.length);
+			if (!dest_desc->buffer.pointer) {
+				return (AE_NO_MEMORY);
+			}
 
-			/* Create an actual buffer only if length > 0 */
+			/* Copy the actual buffer data */
 
-			if (source_desc->buffer.length) {
-				dest_desc->buffer.pointer =
-					ACPI_MEM_ALLOCATE (source_desc->buffer.length);
-				if (!dest_desc->buffer.pointer) {
-					return (AE_NO_MEMORY);
-				}
-
-				/* Copy the actual buffer data */
-
-				ACPI_MEMCPY (dest_desc->buffer.pointer,
-						source_desc->buffer.pointer,
-						source_desc->buffer.length);
-			}
+			ACPI_MEMCPY (dest_desc->buffer.pointer,
+					source_desc->buffer.pointer,
+					source_desc->buffer.length);
 		}
 		break;
 
 	case ACPI_TYPE_STRING:
-
 		/*
 		 * Allocate and copy the actual string if and only if:
 		 * 1) There is a valid string pointer
-		 * 2) The string is not static (not in an ACPI table) (in this case,
-		 *    the actual pointer was already copied above)
+		 * (Pointer to a NULL string is allowed)
 		 */
-		if ((source_desc->string.pointer) &&
-			(!(source_desc->common.flags & AOPOBJ_STATIC_POINTER))) {
+		if (source_desc->string.pointer) {
 			dest_desc->string.pointer =
 				ACPI_MEM_ALLOCATE ((acpi_size) source_desc->string.length + 1);
 			if (!dest_desc->string.pointer) {
 				return (AE_NO_MEMORY);
 			}
 
+			/* Copy the actual string data */
+
 			ACPI_MEMCPY (dest_desc->string.pointer, source_desc->string.pointer,
 					  (acpi_size) source_desc->string.length + 1);
 		}
Index: 2.6.13/include/acpi/acconfig.h
===================================================================
--- 2.6.13.orig/include/acpi/acconfig.h	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/include/acpi/acconfig.h	2005-09-02 16:28:50.000000000 -0400
@@ -64,7 +64,7 @@
 
 /* Version string */
 
-#define ACPI_CA_VERSION                 0x20050408
+#define ACPI_CA_VERSION                 0x20050513
 
 /*
  * OS name, used for the _OS object.  The _OS object is essentially obsolete,
Index: 2.6.13/include/acpi/acevents.h
===================================================================
--- 2.6.13.orig/include/acpi/acevents.h	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/include/acpi/acevents.h	2005-09-02 16:28:50.000000000 -0400
@@ -136,7 +136,7 @@ acpi_ev_create_gpe_block (
 	struct acpi_generic_address     *gpe_block_address,
 	u32                             register_count,
 	u8                              gpe_block_base_number,
-	u32                             interrupt_level,
+	u32                             interrupt_number,
 	struct acpi_gpe_block_info      **return_gpe_block);
 
 acpi_status
Index: 2.6.13/include/acpi/aclocal.h
===================================================================
--- 2.6.13.orig/include/acpi/aclocal.h	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/include/acpi/aclocal.h	2005-09-02 16:28:50.000000000 -0400
@@ -365,7 +365,7 @@ struct acpi_gpe_xrupt_info
 	struct acpi_gpe_xrupt_info              *previous;
 	struct acpi_gpe_xrupt_info              *next;
 	struct acpi_gpe_block_info              *gpe_block_list_head; /* List of GPE blocks for this xrupt */
-	u32                                     interrupt_level;    /* System interrupt level */
+	u32                                     interrupt_number;   /* System interrupt number */
 };
 
 
@@ -737,6 +737,7 @@ struct acpi_parse_state
  ****************************************************************************/
 
 #define PCI_ROOT_HID_STRING         "PNP0A03"
+#define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08"
 
 struct acpi_bit_register_info
 {
Index: 2.6.13/include/acpi/acopcode.h
===================================================================
--- 2.6.13.orig/include/acpi/acopcode.h	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/include/acpi/acopcode.h	2005-09-02 16:28:50.000000000 -0400
@@ -246,7 +246,7 @@
 #define ARGI_FIELD_OP                   ARGI_INVALID_OPCODE
 #define ARGI_FIND_SET_LEFT_BIT_OP       ARGI_LIST2 (ARGI_INTEGER,    ARGI_TARGETREF)
 #define ARGI_FIND_SET_RIGHT_BIT_OP      ARGI_LIST2 (ARGI_INTEGER,    ARGI_TARGETREF)
-#define ARGI_FROM_BCD_OP                ARGI_LIST2 (ARGI_INTEGER,    ARGI_TARGETREF)
+#define ARGI_FROM_BCD_OP                ARGI_LIST2 (ARGI_INTEGER,    ARGI_FIXED_TARGET)
 #define ARGI_IF_OP                      ARGI_INVALID_OPCODE
 #define ARGI_INCREMENT_OP               ARGI_LIST1 (ARGI_INTEGER_REF)
 #define ARGI_INDEX_FIELD_OP             ARGI_INVALID_OPCODE
Index: 2.6.13/include/acpi/acpixf.h
===================================================================
--- 2.6.13.orig/include/acpi/acpixf.h	2005-09-02 16:25:54.000000000 -0400
+++ 2.6.13/include/acpi/acpixf.h	2005-09-02 16:28:50.000000000 -0400
@@ -387,7 +387,7 @@ acpi_install_gpe_block (
 	acpi_handle                     gpe_device,
 	struct acpi_generic_address     *gpe_block_address,
 	u32                             register_count,
-	u32                             interrupt_level);
+	u32                             interrupt_number);
 
 acpi_status
 acpi_remove_gpe_block (
