Index: xen-unstable.hg/xen/arch/ia64/linux-xen/iosapic.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/linux-xen/iosapic.c	2007-11-28 13:47:26.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/linux-xen/iosapic.c	2007-11-28 13:49:46.000000000 +0900
@@ -273,15 +273,18 @@ kexec_disable_iosapic(void)
 {
 	struct iosapic_intr_info *info;
 	struct iosapic_rte_info *rte;
-	u8 vec = 0;
-	for (info = iosapic_intr_info; info <
-			iosapic_intr_info + IA64_NUM_VECTORS; ++info, ++vec) {
+	ia64_vector vec;
+	int irq;
+
+	for (irq = 0; irq < NR_IRQS; irq++) {
+		info = &iosapic_intr_info[irq];
+		vec = irq_to_vector(irq);
 		list_for_each_entry(rte, &info->rtes,
 				rte_list) {
-			iosapic_write(rte->addr,
+			iosapic_write(rte->iosapic,
 					IOSAPIC_RTE_LOW(rte->rte_index),
 					IOSAPIC_MASK|vec);
-			iosapic_eoi(rte->addr, vec);
+			iosapic_eoi(rte->iosapic->addr, vec);
 		}
 	}
 }
