Index: xen-unstable.hg/xen/arch/ia64/xen/xensetup.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/xen/xensetup.c	2007-11-30 13:20:35.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/xen/xensetup.c	2007-11-30 13:27:20.000000000 +0900
@@ -480,12 +480,14 @@ void __init start_kernel(void)
     init_xen_time(); /* initialise the time */
     timer_init();
 
+    printk("%s: A\n", __FUNCTION__);
     rcu_init();
 
 #ifdef CONFIG_XEN_IA64_TLBFLUSH_CLOCK
     open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period);
 #endif
 
+    printk("%s: B\n", __FUNCTION__);
 #ifdef CONFIG_SMP
     if ( opt_nosmp )
     {
@@ -494,20 +496,25 @@ void __init start_kernel(void)
         //boot_cpu_data.x86_num_cores = 1;
     }
 
+    printk("%s: C\n", __FUNCTION__);
     /* A vcpu is created for the idle domain on every physical cpu.
        Limit the number of cpus to the maximum number of vcpus.  */
     if (max_cpus > MAX_VIRT_CPUS)
         max_cpus = MAX_VIRT_CPUS;
 
+    printk("%s: D\n", __FUNCTION__);
     smp_prepare_cpus(max_cpus);
 
+    printk("%s: E\n", __FUNCTION__);
     /* We aren't hotplug-capable yet. */
     for_each_cpu ( i )
         cpu_set(i, cpu_present_map);
 
+    printk("%s: F\n", __FUNCTION__);
     /*  Enable IRQ to receive IPI (needed for ITC sync).  */
     local_irq_enable();
 
+    printk("%s: G\n", __FUNCTION__);
 printk("num_online_cpus=%d, max_cpus=%d\n",num_online_cpus(),max_cpus);
     for_each_present_cpu ( i )
     {
@@ -534,6 +541,7 @@ printk("num_online_cpus=%d, max_cpus=%d\
 
     local_irq_enable();
 
+    printk("%s: A\n", __FUNCTION__);
     if (opt_xencons) {
         initialize_keytable();
         if (ns16550_com1_gsi) {
@@ -541,20 +549,26 @@ printk("num_online_cpus=%d, max_cpus=%d\
                 iosapic_register_intr(ns16550_com1_gsi,
                                       ns16550_com1_polarity,
                                       ns16550_com1_trigger) < 0) {
+                printk("%s: B\n", __FUNCTION__);
                 ns16550_com1.irq = 0;
                 ns16550_init(0, &ns16550_com1);
             }
         }
+        printk("%s: C\n", __FUNCTION__);
         serial_init_postirq();
     }
 
+    printk("%s: D\n", __FUNCTION__);
     expose_p2m_init();
+    printk("%s: E\n", __FUNCTION__);
 
     /* Create initial domain 0. */
     dom0 = domain_create(0, 0, DOM0_SSIDREF);
+    printk("%s: F\n", __FUNCTION__);
     if (dom0 == NULL)
         panic("Error creating domain 0\n");
     dom0_vcpu0 = alloc_vcpu(dom0, 0, 0);
+    printk("%s: G\n", __FUNCTION__);
     if (dom0_vcpu0 == NULL || vcpu_late_initialise(dom0_vcpu0) != 0)
         panic("Cannot allocate dom0 vcpu 0\n");
 
Index: xen-unstable.hg/xen/arch/ia64/linux-xen/mca.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/linux-xen/mca.c	2007-11-30 13:20:35.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/linux-xen/mca.c	2007-11-30 13:27:20.000000000 +0900
@@ -87,6 +87,7 @@
 #include <linux/shutdown.h>
 #endif
 
+#define IA64_MCA_DEBUG_INFO
 #if defined(IA64_MCA_DEBUG_INFO)
 # define IA64_MCA_DEBUG(fmt...)	printk(fmt)
 #else
@@ -336,7 +337,7 @@ ia64_mca_log_sal_error_record(int sal_in
  *
  */
 static u64
-ia64_log_queue(int sal_info_type, int virq)
+__ia64_log_queue(int sal_info_type, int virq)
 {
 	sal_log_record_header_t     *log_buffer;
 	u64                         total_len = 0;
@@ -344,16 +345,20 @@ ia64_log_queue(int sal_info_type, int vi
 	sal_queue_entry_t	    *e;
 	unsigned long		    flags;
 
+	printk("%s: A\n", __FUNCTION__);
 	IA64_LOG_LOCK(sal_info_type);
 
 	/* Get the process state information */
+	printk("%s: B\n", __FUNCTION__);
 	log_buffer = IA64_LOG_NEXT_BUFFER(sal_info_type);
 
+	printk("%s: C\n", __FUNCTION__);
 	total_len = ia64_sal_get_state_info(sal_info_type, (u64 *)log_buffer);
 
 	if (total_len) {
 		int queue_type;
 
+		printk("%s: D\n", __FUNCTION__);
 		spin_lock_irqsave(&sal_queue_lock, flags);
 
 		if (sal_info_type == SAL_INFO_TYPE_MCA && virq == VIRQ_MCA_CMC)
@@ -369,6 +374,7 @@ ia64_log_queue(int sal_info_type, int vi
 		e->virq = virq;
 		e->length = total_len;
 
+		printk("%s: E\n", __FUNCTION__);
 		list_add_tail(&e->list, &sal_queue[queue_type]);
 		spin_unlock_irqrestore(&sal_queue_lock, flags);
 
@@ -386,6 +392,13 @@ ia64_log_queue(int sal_info_type, int vi
 		return 0;
 	}
 }
+
+#define ia64_log_queue(sal_info_type, virq)				\
+	do {								\
+		printk("%s: ia64_log_queue\n", __FUNCTION__);		\
+		__ia64_log_queue(sal_info_type, virq);			\
+		__ia64_log_queue(sal_info_type, virq);			\
+	} while (0)
 #endif /* !XEN */
 
 /*
@@ -1713,6 +1726,7 @@ ia64_mca_init(void)
 	struct ia64_sal_retval isrv;
 	u64 timeout = IA64_MCA_RENDEZ_TIMEOUT;	/* platform specific */
 
+	printk("%s: A\n", __FUNCTION__);
 #ifdef XEN
 	slave_init_ptr = (ia64_fptr_t *)ia64_monarch_init_handler;
 #endif
@@ -1819,17 +1833,21 @@ ia64_mca_init(void)
 	register_percpu_irq(IA64_CMC_VECTOR, &cmci_irqaction);
 	register_percpu_irq(IA64_CMCP_VECTOR, &cmcp_irqaction);
 	ia64_mca_cmc_vector_setup();       /* Setup vector on BSP */
+	printk("%s: A\n", __FUNCTION__);
 
 	/* Setup the MCA rendezvous interrupt vector */
 	register_percpu_irq(IA64_MCA_RENDEZ_VECTOR, &mca_rdzv_irqaction);
+	printk("%s: B\n", __FUNCTION__);
 
 	/* Setup the MCA wakeup interrupt vector */
 	register_percpu_irq(IA64_MCA_WAKEUP_VECTOR, &mca_wkup_irqaction);
+	printk("%s: C\n", __FUNCTION__);
 
 #ifdef CONFIG_ACPI
 	/* Setup the CPEI/P handler */
 	register_percpu_irq(IA64_CPEP_VECTOR, &mca_cpep_irqaction);
 #endif
+	printk("%s: D\n", __FUNCTION__);
 
 	/* Initialize the areas set aside by the OS to buffer the
 	 * platform/processor error states for MCA/INIT/CMC
@@ -1839,12 +1857,14 @@ ia64_mca_init(void)
 	ia64_log_init(SAL_INFO_TYPE_INIT);
 	ia64_log_init(SAL_INFO_TYPE_CMC);
 	ia64_log_init(SAL_INFO_TYPE_CPE);
+	printk("%s: E\n", __FUNCTION__);
 
 #ifdef XEN
 	INIT_LIST_HEAD(&sal_log_queues[SAL_INFO_TYPE_MCA]);
 	INIT_LIST_HEAD(&sal_log_queues[SAL_INFO_TYPE_INIT]);
 	INIT_LIST_HEAD(&sal_log_queues[SAL_INFO_TYPE_CMC]);
 	INIT_LIST_HEAD(&sal_log_queues[SAL_INFO_TYPE_CPE]);
+	printk("%s: F\n", __FUNCTION__);
 
 	/* NULL sal_queue used elsewhere to determine MCA init state */
 	sal_queue = sal_log_queues;
@@ -1853,9 +1873,11 @@ ia64_mca_init(void)
 	             (softirq_handler)ia64_mca_cmc_vector_disable);
 	open_softirq(CMC_ENABLE_SOFTIRQ,
 	             (softirq_handler)ia64_mca_cmc_vector_enable);
+	printk("%s: G\n", __FUNCTION__);
 
 	for (i = 0; i < IA64_MAX_LOG_TYPES; i++)
 		ia64_log_queue(i, 0);
+	printk("%s: H\n", __FUNCTION__);
 #endif
 
 	mca_init = 1;
Index: xen-unstable.hg/xen/arch/ia64/linux-xen/setup.c
===================================================================
--- xen-unstable.hg.orig/xen/arch/ia64/linux-xen/setup.c	2007-11-30 13:20:35.000000000 +0900
+++ xen-unstable.hg/xen/arch/ia64/linux-xen/setup.c	2007-11-30 13:27:20.000000000 +0900
@@ -595,10 +595,12 @@ late_setup_arch (char **cmdline_p)
 
 	cpu_init();	/* initialize the bootstrap CPU */
 
+	printk("%s: A\n", __FUNCTION__);
 #ifdef CONFIG_ACPI_BOOT
 	acpi_boot_init();
 #endif
 
+	printk("%s: B\n", __FUNCTION__);
 #ifdef CONFIG_VT
 	if (!conswitchp) {
 # if defined(CONFIG_DUMMY_CONSOLE)
@@ -617,12 +619,16 @@ late_setup_arch (char **cmdline_p)
 	}
 #endif
 
+	printk("%s: C\n", __FUNCTION__);
 	/* enable IA-64 Machine Check Abort Handling unless disabled */
 	if (!strstr(saved_command_line, "nomca"))
 		ia64_mca_init();
 
+	printk("%s: D\n", __FUNCTION__);
 	platform_setup(cmdline_p);
+	printk("%s: E\n", __FUNCTION__);
 	paging_init();
+	printk("%s: END\n", __FUNCTION__);
 }
 
 #ifndef XEN
