[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [IA64] Fix failure when Xen is booted with "nomca"



# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID fa0f2a90059f4a10c02e56df6fa828402523a260
# Parent  9f56556f08cb161b67406ba76523dbfadb6f739c
[IA64] Fix failure when Xen is booted with "nomca"

Based on patch from Kazuhiro Suzuki <kaz@xxxxxxxxxxxxxx>

Signed-off-by: Alex williamson <alex.williamson@xxxxxx>
---
 xen/arch/ia64/linux-xen/mca.c |   17 ++++++++++-------
 xen/arch/ia64/xen/fw_emul.c   |    2 +-
 xen/include/asm-ia64/xenmca.h |    2 +-
 3 files changed, 12 insertions(+), 9 deletions(-)

diff -r 9f56556f08cb -r fa0f2a90059f xen/arch/ia64/linux-xen/mca.c
--- a/xen/arch/ia64/linux-xen/mca.c     Thu Nov 30 15:57:51 2006 -0700
+++ b/xen/arch/ia64/linux-xen/mca.c     Thu Nov 30 15:57:55 2006 -0700
@@ -206,8 +206,8 @@ static ia64_state_log_t ia64_state_log[I
 #define IA64_LOG_COUNT(it)         ia64_state_log[it].isl_count
 
 #ifdef XEN
-struct list_head sal_queue[IA64_MAX_LOG_TYPES];
-sal_log_record_header_t *sal_record = NULL;
+struct list_head *sal_queue, sal_log_queues[IA64_MAX_LOG_TYPES];
+sal_log_record_header_t *sal_record;
 DEFINE_SPINLOCK(sal_queue_lock);
 #endif
 
@@ -1606,7 +1606,7 @@ ia64_mca_cpu_init(void *cpu_data)
                }
        }
 #ifdef XEN
-       else {
+       else if (sal_queue) {
                int i;
                for (i = 0; i < IA64_MAX_LOG_TYPES; i++)
                        ia64_log_queue(i, 0);
@@ -1811,10 +1811,13 @@ ia64_mca_init(void)
        ia64_log_init(SAL_INFO_TYPE_CPE);
 
 #ifdef XEN
-       INIT_LIST_HEAD(&sal_queue[SAL_INFO_TYPE_MCA]);
-       INIT_LIST_HEAD(&sal_queue[SAL_INFO_TYPE_INIT]);
-       INIT_LIST_HEAD(&sal_queue[SAL_INFO_TYPE_CMC]);
-       INIT_LIST_HEAD(&sal_queue[SAL_INFO_TYPE_CPE]);
+       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]);
+
+       /* NULL sal_queue used elsewhere to determine MCA init state */
+       sal_queue = sal_log_queues;
 
        open_softirq(CMC_DISABLE_SOFTIRQ,
                     (softirq_handler)ia64_mca_cmc_vector_disable);
diff -r 9f56556f08cb -r fa0f2a90059f xen/arch/ia64/xen/fw_emul.c
--- a/xen/arch/ia64/xen/fw_emul.c       Thu Nov 30 15:57:51 2006 -0700
+++ b/xen/arch/ia64/xen/fw_emul.c       Thu Nov 30 15:57:55 2006 -0700
@@ -214,7 +214,7 @@ sal_emulator (long index, unsigned long 
                        struct smp_call_args_t arg;
 
                        spin_lock_irqsave(&sal_queue_lock, flags);
-                       if (list_empty(&sal_queue[in1])) {
+                       if (!sal_queue || list_empty(&sal_queue[in1])) {
                                sal_log_record_header_t header;
                                XEN_GUEST_HANDLE(void) handle =
                                        *(XEN_GUEST_HANDLE(void)*)&in3;
diff -r 9f56556f08cb -r fa0f2a90059f xen/include/asm-ia64/xenmca.h
--- a/xen/include/asm-ia64/xenmca.h     Thu Nov 30 15:57:51 2006 -0700
+++ b/xen/include/asm-ia64/xenmca.h     Thu Nov 30 15:57:55 2006 -0700
@@ -21,7 +21,7 @@ typedef struct sal_queue_entry_t {
        struct list_head list;
 } sal_queue_entry_t;
 
-extern struct list_head sal_queue[];
+extern struct list_head *sal_queue;
 
 struct ia64_mca_tlb_info {
        u64 cr_lid;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.