mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
[IA64] Fix failure when Xen is booted with "nomca"
Based on patch from Kazuhiro Suzuki <kaz@jp.fujitsu.com> Signed-off-by: Alex williamson <alex.williamson@hp.com>
This commit is contained in:
1 parent
ab7d6fd115
commit
fcb3c0591c
3 files changed
+12
-9
No files matched your search
@@ -206,8 +206,8 @@ static ia64_state_log_t ia64_state_log[IA64_MAX_LOG_TYPES];
|
||||
#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);
|
||||
|
||||
@@ -214,7 +214,7 @@ sal_emulator (long index, unsigned long in1, unsigned long in2,
|
||||
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;
|
||||
|
||||
@@ -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;
|
||||
|
||||