projects
/
linux-drm-fsl-dcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pull thermal into release branch
[linux-drm-fsl-dcu.git]
/
arch
/
ia64
/
kernel
/
mca.c
diff --git
a/arch/ia64/kernel/mca.c
b/arch/ia64/kernel/mca.c
index 7cfa63a98cb36adcd48ddb18d6022f94c6cf063b..f8ae709de0b5341e48abaaf13ac1bd011dd98ee0 100644
(file)
--- a/
arch/ia64/kernel/mca.c
+++ b/
arch/ia64/kernel/mca.c
@@
-63,7
+63,6
@@
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
-#include <linux/smp_lock.h>
#include <linux/bootmem.h>
#include <linux/acpi.h>
#include <linux/timer.h>
#include <linux/bootmem.h>
#include <linux/acpi.h>
#include <linux/timer.h>
@@
-72,9
+71,9
@@
#include <linux/smp.h>
#include <linux/workqueue.h>
#include <linux/cpumask.h>
#include <linux/smp.h>
#include <linux/workqueue.h>
#include <linux/cpumask.h>
+#include <linux/kdebug.h>
#include <asm/delay.h>
#include <asm/delay.h>
-#include <asm/kdebug.h>
#include <asm/machvec.h>
#include <asm/meminit.h>
#include <asm/page.h>
#include <asm/machvec.h>
#include <asm/meminit.h>
#include <asm/page.h>
@@
-82,6
+81,7
@@
#include <asm/system.h>
#include <asm/sal.h>
#include <asm/mca.h>
#include <asm/system.h>
#include <asm/sal.h>
#include <asm/mca.h>
+#include <asm/kexec.h>
#include <asm/irq.h>
#include <asm/hw_irq.h>
#include <asm/irq.h>
#include <asm/hw_irq.h>
@@
-678,7
+678,7
@@
ia64_mca_cmc_vector_enable (void *dummy)
* disable the cmc interrupt vector.
*/
static void
* disable the cmc interrupt vector.
*/
static void
-ia64_mca_cmc_vector_disable_keventd(
void
*unused)
+ia64_mca_cmc_vector_disable_keventd(
struct work_struct
*unused)
{
on_each_cpu(ia64_mca_cmc_vector_disable, NULL, 1, 0);
}
{
on_each_cpu(ia64_mca_cmc_vector_disable, NULL, 1, 0);
}
@@
-690,7
+690,7
@@
ia64_mca_cmc_vector_disable_keventd(void *unused)
* enable the cmc interrupt vector.
*/
static void
* enable the cmc interrupt vector.
*/
static void
-ia64_mca_cmc_vector_enable_keventd(
void
*unused)
+ia64_mca_cmc_vector_enable_keventd(
struct work_struct
*unused)
{
on_each_cpu(ia64_mca_cmc_vector_enable, NULL, 1, 0);
}
{
on_each_cpu(ia64_mca_cmc_vector_enable, NULL, 1, 0);
}
@@
-1191,8
+1191,6
@@
void
ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
struct ia64_sal_os_state *sos)
{
ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
struct ia64_sal_os_state *sos)
{
- pal_processor_state_info_t *psp = (pal_processor_state_info_t *)
- &sos->proc_state_param;
int recover, cpu = smp_processor_id();
struct task_struct *previous_current;
struct ia64_mca_notify_die nd =
int recover, cpu = smp_processor_id();
struct task_struct *previous_current;
struct ia64_mca_notify_die nd =
@@
-1222,10
+1220,8
@@
ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
/* Get the MCA error record and log it */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA);
/* Get the MCA error record and log it */
ia64_mca_log_sal_error_record(SAL_INFO_TYPE_MCA);
- /* TLB error is only exist in this SAL error record */
- recover = (psp->tc && !(psp->cc || psp->bc || psp->rc || psp->uc))
- /* other error recovery */
- || (ia64_mca_ucmc_extension
+ /* MCA error recovery */
+ recover = (ia64_mca_ucmc_extension
&& ia64_mca_ucmc_extension(
IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA),
sos));
&& ia64_mca_ucmc_extension(
IA64_LOG_CURR_BUFFER(SAL_INFO_TYPE_MCA),
sos));
@@
-1238,6
+1234,10
@@
ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
} else {
/* Dump buffered message to console */
ia64_mlogbuf_finish(1);
} else {
/* Dump buffered message to console */
ia64_mlogbuf_finish(1);
+#ifdef CONFIG_KEXEC
+ atomic_set(&kdump_in_progress, 1);
+ monarch_cpu = -1;
+#endif
}
if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover)
== NOTIFY_STOP)
}
if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover)
== NOTIFY_STOP)
@@
-1247,8
+1247,8
@@
ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
monarch_cpu = -1;
}
monarch_cpu = -1;
}
-static DECLARE_WORK(cmc_disable_work, ia64_mca_cmc_vector_disable_keventd
, NULL
);
-static DECLARE_WORK(cmc_enable_work, ia64_mca_cmc_vector_enable_keventd
, NULL
);
+static DECLARE_WORK(cmc_disable_work, ia64_mca_cmc_vector_disable_keventd);
+static DECLARE_WORK(cmc_enable_work, ia64_mca_cmc_vector_enable_keventd);
/*
* ia64_mca_cmc_int_handler
/*
* ia64_mca_cmc_int_handler
@@
-1689,7
+1689,7
@@
format_mca_init_stack(void *mca_data, unsigned long offset,
ti->preempt_count = 1;
ti->task = p;
ti->cpu = cpu;
ti->preempt_count = 1;
ti->task = p;
ti->cpu = cpu;
- p->
thread_info
= ti;
+ p->
stack
= ti;
p->state = TASK_UNINTERRUPTIBLE;
cpu_set(cpu, p->cpus_allowed);
INIT_LIST_HEAD(&p->tasks);
p->state = TASK_UNINTERRUPTIBLE;
cpu_set(cpu, p->cpus_allowed);
INIT_LIST_HEAD(&p->tasks);