Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
d87af207
Commit
d87af207
authored
Dec 19, 2003
by
Keith Owens
Committed by
David Mosberger
Dec 19, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] ia64: Convert cmc deadlock avoidance patch from 2.4 to 2.6
parent
d1df9cdc
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
16 deletions
+8
-16
arch/ia64/kernel/mca.c
arch/ia64/kernel/mca.c
+8
-16
No files found.
arch/ia64/kernel/mca.c
View file @
d87af207
...
@@ -55,7 +55,7 @@
...
@@ -55,7 +55,7 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/smp.h>
#include <linux/smp.h>
#include <linux/
t
queue.h>
#include <linux/
work
queue.h>
#include <asm/delay.h>
#include <asm/delay.h>
#include <asm/machvec.h>
#include <asm/machvec.h>
...
@@ -158,8 +158,6 @@ static int cpe_poll_enabled = 1;
...
@@ -158,8 +158,6 @@ static int cpe_poll_enabled = 1;
extern
void
salinfo_log_wakeup
(
int
type
,
u8
*
buffer
,
u64
size
);
extern
void
salinfo_log_wakeup
(
int
type
,
u8
*
buffer
,
u64
size
);
static
struct
tq_struct
cmc_disable_tq
,
cmc_enable_tq
;
/*
/*
* ia64_mca_log_sal_error_record
* ia64_mca_log_sal_error_record
*
*
...
@@ -622,14 +620,11 @@ verify_guid (efi_guid_t *test, efi_guid_t *target)
...
@@ -622,14 +620,11 @@ verify_guid (efi_guid_t *test, efi_guid_t *target)
*
*
* Called via keventd (smp_call_function() is not safe in interrupt context) to
* Called via keventd (smp_call_function() is not safe in interrupt context) to
* disable the cmc interrupt vector.
* disable the cmc interrupt vector.
*
* Note: needs preempt_disable() if you apply the preempt patch to 2.4.
*/
*/
static
void
static
void
ia64_mca_cmc_vector_disable_keventd
(
void
*
unused
)
ia64_mca_cmc_vector_disable_keventd
(
void
*
unused
)
{
{
ia64_mca_cmc_vector_disable
(
NULL
);
on_each_cpu
(
ia64_mca_cmc_vector_disable
,
NULL
,
1
,
0
);
smp_call_function
(
ia64_mca_cmc_vector_disable
,
NULL
,
1
,
0
);
}
}
/*
/*
...
@@ -637,14 +632,11 @@ ia64_mca_cmc_vector_disable_keventd(void *unused)
...
@@ -637,14 +632,11 @@ ia64_mca_cmc_vector_disable_keventd(void *unused)
*
*
* Called via keventd (smp_call_function() is not safe in interrupt context) to
* Called via keventd (smp_call_function() is not safe in interrupt context) to
* enable the cmc interrupt vector.
* enable the cmc interrupt vector.
*
* Note: needs preempt_disable() if you apply the preempt patch to 2.4.
*/
*/
static
void
static
void
ia64_mca_cmc_vector_enable_keventd
(
void
*
unused
)
ia64_mca_cmc_vector_enable_keventd
(
void
*
unused
)
{
{
smp_call_function
(
ia64_mca_cmc_vector_enable
,
NULL
,
1
,
0
);
on_each_cpu
(
ia64_mca_cmc_vector_enable
,
NULL
,
1
,
0
);
ia64_mca_cmc_vector_enable
(
NULL
);
}
}
/*
/*
...
@@ -680,9 +672,6 @@ ia64_mca_init(void)
...
@@ -680,9 +672,6 @@ ia64_mca_init(void)
IA64_MCA_DEBUG
(
"ia64_mca_init: begin
\n
"
);
IA64_MCA_DEBUG
(
"ia64_mca_init: begin
\n
"
);
INIT_TQUEUE
(
&
cmc_disable_tq
,
ia64_mca_cmc_vector_disable_keventd
,
NULL
);
INIT_TQUEUE
(
&
cmc_enable_tq
,
ia64_mca_cmc_vector_enable_keventd
,
NULL
);
/* initialize recovery success indicator */
/* initialize recovery success indicator */
ia64_os_mca_recovery_successful
=
0
;
ia64_os_mca_recovery_successful
=
0
;
...
@@ -1055,6 +1044,9 @@ ia64_mca_ucmc_handler(void)
...
@@ -1055,6 +1044,9 @@ ia64_mca_ucmc_handler(void)
ia64_return_to_sal_check
();
ia64_return_to_sal_check
();
}
}
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
);
/*
/*
* ia64_mca_cmc_int_handler
* ia64_mca_cmc_int_handler
*
*
...
@@ -1101,7 +1093,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs)
...
@@ -1101,7 +1093,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs)
cmc_polling_enabled
=
1
;
cmc_polling_enabled
=
1
;
spin_unlock
(
&
cmc_history_lock
);
spin_unlock
(
&
cmc_history_lock
);
schedule_
task
(
&
cmc_disable_tq
);
schedule_
work
(
&
cmc_disable_work
);
/*
/*
* Corrected errors will still be corrected, but
* Corrected errors will still be corrected, but
...
@@ -1196,7 +1188,7 @@ ia64_mca_cmc_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
...
@@ -1196,7 +1188,7 @@ ia64_mca_cmc_int_caller(int cpe_irq, void *arg, struct pt_regs *ptregs)
if
(
start_count
==
IA64_LOG_COUNT
(
SAL_INFO_TYPE_CMC
))
{
if
(
start_count
==
IA64_LOG_COUNT
(
SAL_INFO_TYPE_CMC
))
{
printk
(
KERN_WARNING
"%s: Returning to interrupt driven CMC handler
\n
"
,
__FUNCTION__
);
printk
(
KERN_WARNING
"%s: Returning to interrupt driven CMC handler
\n
"
,
__FUNCTION__
);
schedule_
task
(
&
cmc_enable_tq
);
schedule_
work
(
&
cmc_enable_work
);
cmc_polling_enabled
=
0
;
cmc_polling_enabled
=
0
;
}
else
{
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment