git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
kernel
/
irq
/
handle.c
diff --git
a/kernel/irq/handle.c
b/kernel/irq/handle.c
index
553a098
..
aff1f0f
100644
(file)
--- a/
kernel/irq/handle.c
+++ b/
kernel/irq/handle.c
@@
-15,7
+15,6
@@
#include <linux/random.h>
#include <linux/interrupt.h>
#include <linux/kernel_stat.h>
#include <linux/random.h>
#include <linux/interrupt.h>
#include <linux/kernel_stat.h>
-#include <linux/vs_context.h>
#include "internals.h"
#include "internals.h"
@@
-28,7
+27,7
@@
* Handles spurious and unhandled IRQ's. It also prints a debugmessage.
*/
void fastcall
* Handles spurious and unhandled IRQ's. It also prints a debugmessage.
*/
void fastcall
-handle_bad_irq(unsigned int irq, struct irq_desc *desc
, struct pt_regs *regs
)
+handle_bad_irq(unsigned int irq, struct irq_desc *desc)
{
print_irq_desc(irq, desc);
kstat_this_cpu.irqs[irq]++;
{
print_irq_desc(irq, desc);
kstat_this_cpu.irqs[irq]++;
@@
-55,7
+54,7
@@
struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned = {
.chip = &no_irq_chip,
.handle_irq = handle_bad_irq,
.depth = 1,
.chip = &no_irq_chip,
.handle_irq = handle_bad_irq,
.depth = 1,
- .lock =
SPIN_LOCK_UNLOCKED
,
+ .lock =
__SPIN_LOCK_UNLOCKED(irq_desc->lock)
,
#ifdef CONFIG_SMP
.affinity = CPU_MASK_ALL
#endif
#ifdef CONFIG_SMP
.affinity = CPU_MASK_ALL
#endif
@@
-116,7
+115,7
@@
struct irq_chip dummy_irq_chip = {
/*
* Special, empty irq handler:
*/
/*
* Special, empty irq handler:
*/
-irqreturn_t no_action(int cpl, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t no_action(int cpl, void *dev_id)
{
return IRQ_NONE;
}
{
return IRQ_NONE;
}
@@
-124,13
+123,11
@@
irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs)
/**
* handle_IRQ_event - irq action chain handler
* @irq: the interrupt number
/**
* handle_IRQ_event - irq action chain handler
* @irq: the interrupt number
- * @regs: pointer to a register structure
* @action: the interrupt action chain for this irq
*
* Handles the action chain of an irq event
*/
* @action: the interrupt action chain for this irq
*
* Handles the action chain of an irq event
*/
-irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
- struct irqaction *action)
+irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
{
irqreturn_t ret, retval = IRQ_NONE;
unsigned int status = 0;
{
irqreturn_t ret, retval = IRQ_NONE;
unsigned int status = 0;
@@
-141,7
+138,7
@@
irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
local_irq_enable_in_hardirq();
do {
local_irq_enable_in_hardirq();
do {
- ret = action->handler(irq, action->dev_id
, regs
);
+ ret = action->handler(irq, action->dev_id);
if (ret == IRQ_HANDLED)
status |= action->flags;
retval |= ret;
if (ret == IRQ_HANDLED)
status |= action->flags;
retval |= ret;
@@
-155,10
+152,10
@@
irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
return retval;
}
return retval;
}
+#ifndef CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ
/**
* __do_IRQ - original all in one highlevel IRQ handler
* @irq: the interrupt number
/**
* __do_IRQ - original all in one highlevel IRQ handler
* @irq: the interrupt number
- * @regs: pointer to a register structure
*
* __do_IRQ handles all normal device IRQ's (the special
* SMP cross-CPU interrupts have their own specific
*
* __do_IRQ handles all normal device IRQ's (the special
* SMP cross-CPU interrupts have their own specific
@@
-167,11
+164,10
@@
irqreturn_t handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
* This is the original x86 implementation which is used for every
* interrupt type.
*/
* This is the original x86 implementation which is used for every
* interrupt type.
*/
-fastcall unsigned int __do_IRQ(unsigned int irq
, struct pt_regs *regs
)
+fastcall unsigned int __do_IRQ(unsigned int irq)
{
struct irq_desc *desc = irq_desc + irq;
struct irqaction *action;
{
struct irq_desc *desc = irq_desc + irq;
struct irqaction *action;
- struct vx_info_save vxis;
unsigned int status;
kstat_this_cpu.irqs[irq]++;
unsigned int status;
kstat_this_cpu.irqs[irq]++;
@@
-181,17
+177,14
@@
fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
/*
* No locking required for CPU-local interrupts:
*/
/*
* No locking required for CPU-local interrupts:
*/
- __enter_vx_admin(&vxis);
if (desc->chip->ack)
desc->chip->ack(irq);
if (desc->chip->ack)
desc->chip->ack(irq);
- action_ret = handle_IRQ_event(irq,
regs,
desc->action);
+ action_ret = handle_IRQ_event(irq, desc->action);
desc->chip->end(irq);
desc->chip->end(irq);
- __leave_vx_admin(&vxis);
return 1;
}
spin_lock(&desc->lock);
return 1;
}
spin_lock(&desc->lock);
- __enter_vx_admin(&vxis);
if (desc->chip->ack)
desc->chip->ack(irq);
/*
if (desc->chip->ack)
desc->chip->ack(irq);
/*
@@
-237,11
+230,11
@@
fastcall unsigned int __do_IRQ(unsigned int irq, struct pt_regs *regs)
spin_unlock(&desc->lock);
spin_unlock(&desc->lock);
- action_ret = handle_IRQ_event(irq, regs, action);
+ action_ret = handle_IRQ_event(irq, action);
+ if (!noirqdebug)
+ note_interrupt(irq, desc, action_ret);
spin_lock(&desc->lock);
spin_lock(&desc->lock);
- if (!noirqdebug)
- note_interrupt(irq, desc, action_ret, regs);
if (likely(!(desc->status & IRQ_PENDING)))
break;
desc->status &= ~IRQ_PENDING;
if (likely(!(desc->status & IRQ_PENDING)))
break;
desc->status &= ~IRQ_PENDING;
@@
-254,11
+247,11
@@
out:
* disabled while the handler was running.
*/
desc->chip->end(irq);
* disabled while the handler was running.
*/
desc->chip->end(irq);
- __leave_vx_admin(&vxis);
spin_unlock(&desc->lock);
return 1;
}
spin_unlock(&desc->lock);
return 1;
}
+#endif
#ifdef CONFIG_TRACE_IRQFLAGS
#ifdef CONFIG_TRACE_IRQFLAGS