Index: xen-unstable.hg/xen/arch/ia64/xen/dom_fw_dom0.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/dom_fw_dom0.c	2007-11-28 14:47:18.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/dom_fw_dom0.c	2007-11-28 14:47:37.000000000 +0900
@@ -28,7 +28,6 @@
 #include <xen/acpi.h>
 #include <xen/errno.h>
 #include <xen/sched.h>
-#include <xen/list.h>
 
 #include <asm/dom_fw.h>
 #include <asm/dom_fw_common.h>
@@ -37,15 +36,6 @@
 
 #include <linux/sort.h>
 
-struct acpi_backup_table_entry {
-	struct list_head list;
-	unsigned long pa;
-	unsigned long size;
-	unsigned char data[0];
-};
-
-static LIST_HEAD(acpi_backup_table_list);
-
 static u32 lsapic_nbr;
 
 /* Modify lsapic table.  Provides LPs.  */
@@ -110,85 +100,18 @@ acpi_update_madt_checksum(unsigned long 
 	return 0;
 }
 
-static int __init
-acpi_backup_table(unsigned long phys_addr, unsigned long size)
-{
-	struct acpi_backup_table_entry *entry;
-	void *vaddr = __va(phys_addr);
-
-	if (!phys_addr || !size)
-		return -EINVAL;
-
-	entry = xmalloc_bytes(sizeof(*entry) + size);
-	if (!entry) {
-		dprintk(XENLOG_WARNING, "Failed to allocate memory for "
-		        "%.4s table backup\n",
-			((struct acpi_table_header *)vaddr)->signature);
-		return -ENOMEM;
-	}
-
-	entry->pa = phys_addr;
-	entry->size = size;
-
-	memcpy(entry->data, vaddr, size);
-
-	list_add(&entry->list, &acpi_backup_table_list);
-
-	printk(XENLOG_INFO "Backup %.4s table stored @0x%p\n",
-	       ((struct acpi_table_header *)entry->data)->signature,
-	       entry->data);
-
-	return 0;
-}
-
-void
-acpi_restore_tables()
-{
-	struct acpi_backup_table_entry *entry;
-
-	list_for_each_entry(entry, &acpi_backup_table_list, list) {
-		printk(XENLOG_INFO "Restoring backup %.4s table @0x%p\n",
-		       ((struct acpi_table_header *)entry->data)->signature,
-		       entry->data);
-
-		memcpy(__va(entry->pa), entry->data, entry->size);
-		/* Only called from kexec path, no need to free entries */
-	}
-}
-
 /* base is physical address of acpi table */
 static void __init touch_acpi_table(void)
 {
 	int result;
 	lsapic_nbr = 0;
 
-	/*
-	 * Modify dom0 MADT:
-	 *  - Disable CPUs that would exceed max vCPUs for the domain
-	 *  - Virtualize id/eid for indexing into domain vCPU array
-	 *  - Hide CPEI interrupt source
-	 *
-	 * ACPI tables must be backed-up before modification!
-	 */
-	acpi_table_parse(ACPI_APIC, acpi_backup_table);
-
 	if (acpi_table_parse_madt(ACPI_MADT_LSAPIC, acpi_update_lsapic, 0) < 0)
 		printk("Error parsing MADT - no LAPIC entries\n");
 	if (acpi_table_parse_madt(ACPI_MADT_PLAT_INT_SRC,
 				  acpi_patch_plat_int_src, 0) < 0)
 		printk("Error parsing MADT - no PLAT_INT_SRC entries\n");
 
-	acpi_table_parse(ACPI_APIC, acpi_update_madt_checksum);
-
-	/*
-	 * SRAT & SLIT tables aren't useful for Dom0 until
-	 * we support more NUMA configuration information in Xen.
-	 *
-	 * NB - backup ACPI tables first.
-	 */
-	acpi_table_parse(ACPI_SRAT, acpi_backup_table);
-	acpi_table_parse(ACPI_SLIT, acpi_backup_table);
-
 	result = acpi_table_disable(ACPI_SRAT);
 	if ( result == 0 )
 		printk("Success Disabling SRAT\n");
@@ -201,6 +124,8 @@ static void __init touch_acpi_table(void
 	else if ( result != -ENOENT )
 		printk("ERROR: Failed Disabling SLIT\n");
 
+	acpi_table_parse(ACPI_APIC, acpi_update_madt_checksum);
+
 	return;
 }
 
@@ -208,9 +133,9 @@ void __init efi_systable_init_dom0(struc
 {
 	int i = 1;
 
+	/* Write messages to the console.  */
 	touch_acpi_table();
 
-	/* Write messages to the console.  */
 	printk("Domain0 EFI passthrough:");
 	if (efi.mps) {
 		tables->efi_tables[i].guid = MPS_TABLE_GUID;
Index: xen-unstable.hg/xen/arch/ia64/xen/machine_kexec.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/machine_kexec.c	2007-11-28 14:47:19.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/machine_kexec.c	2007-11-28 14:47:37.000000000 +0900
@@ -23,7 +23,6 @@
 #include <linux/cpu.h>
 #include <linux/cpu.h>
 #include <linux/notifier.h>
-#include <asm/dom_fw_dom0.h>
 
 typedef asmlinkage NORET_TYPE void (*relocate_new_kernel_t)(
 					unsigned long indirection_page,
@@ -150,7 +149,6 @@ static void machine_shutdown(void)
 	}
 #endif
 	kexec_disable_iosapic();
-	acpi_restore_tables();
 }
 
 void machine_kexec(xen_kexec_image_t *image)
Index: xen-unstable.hg/xen/include/asm-ia64/dom_fw_dom0.h
===================================================================
--- xen-unstable.hg.orig/xen/include/asm-ia64/dom_fw_dom0.h	2007-11-28 14:47:19.000000000 +0900
+++ xen-unstable.hg/xen/include/asm-ia64/dom_fw_dom0.h	2007-11-28 14:47:37.000000000 +0900
@@ -26,7 +26,6 @@ struct domain;
 
 void efi_systable_init_dom0(struct fw_tables *tables);
 int complete_dom0_memmap(struct domain *d, struct fw_tables *tables);
-void acpi_restore_tables(void);
 
 #endif /* __ASM_IA64_DOM_FW_DOM0_H__ */
 /*
