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
vserver 2.0 rc7
[linux-2.6.git]
/
arch
/
x86_64
/
kernel
/
i8259.c
diff --git
a/arch/x86_64/kernel/i8259.c
b/arch/x86_64/kernel/i8259.c
index
f5d084a
..
7873d9b
100644
(file)
--- a/
arch/x86_64/kernel/i8259.c
+++ b/
arch/x86_64/kernel/i8259.c
@@
-12,6
+12,7
@@
#include <linux/init.h>
#include <linux/kernel_stat.h>
#include <linux/sysdev.h>
#include <linux/init.h>
#include <linux/kernel_stat.h>
#include <linux/sysdev.h>
+#include <linux/bitops.h>
#include <asm/acpi.h>
#include <asm/atomic.h>
#include <asm/acpi.h>
#include <asm/atomic.h>
@@
-19,7
+20,6
@@
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/hw_irq.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/hw_irq.h>
-#include <asm/bitops.h>
#include <asm/pgtable.h>
#include <asm/delay.h>
#include <asm/desc.h>
#include <asm/pgtable.h>
#include <asm/delay.h>
#include <asm/desc.h>
@@
-130,7
+130,7
@@
void (*interrupt[NR_IRQS])(void) = {
* moves to arch independent land
*/
* moves to arch independent land
*/
-
spinlock_t i8259A_lock = SPIN_LOCK_UNLOCKED
;
+
DEFINE_SPINLOCK(i8259A_lock)
;
static void end_8259A_irq (unsigned int irq)
{
static void end_8259A_irq (unsigned int irq)
{
@@
-148,7
+148,7
@@
static void end_8259A_irq (unsigned int irq)
#define shutdown_8259A_irq disable_8259A_irq
#define shutdown_8259A_irq disable_8259A_irq
-void mask_and_ack_8259A(unsigned int);
+
static
void mask_and_ack_8259A(unsigned int);
static unsigned int startup_8259A_irq(unsigned int irq)
{
static unsigned int startup_8259A_irq(unsigned int irq)
{
@@
-272,7
+272,7
@@
static inline int i8259A_irq_real(unsigned int irq)
* first, _then_ send the EOI, and the order of EOI
* to the two 8259s is important!
*/
* first, _then_ send the EOI, and the order of EOI
* to the two 8259s is important!
*/
-void mask_and_ack_8259A(unsigned int irq)
+
static
void mask_and_ack_8259A(unsigned int irq)
{
unsigned int irqmask = 1 << irq;
unsigned long flags;
{
unsigned int irqmask = 1 << irq;
unsigned long flags;
@@
-409,7
+409,7
@@
static int i8259A_resume(struct sys_device *dev)
return 0;
}
return 0;
}
-static int i8259A_suspend(struct sys_device *dev,
u32
state)
+static int i8259A_suspend(struct sys_device *dev,
pm_message_t
state)
{
save_ELCR(irq_trigger);
return 0;
{
save_ELCR(irq_trigger);
return 0;
@@
-476,6
+476,8
@@
void error_interrupt(void);
void reschedule_interrupt(void);
void call_function_interrupt(void);
void invalidate_interrupt(void);
void reschedule_interrupt(void);
void call_function_interrupt(void);
void invalidate_interrupt(void);
+void thermal_interrupt(void);
+void i8254_timer_resume(void);
static void setup_timer(void)
{
static void setup_timer(void)
{
@@
-492,6
+494,11
@@
static int timer_resume(struct sys_device *dev)
return 0;
}
return 0;
}
+void i8254_timer_resume(void)
+{
+ setup_timer();
+}
+
static struct sysdev_class timer_sysclass = {
set_kset_name("timer"),
.resume = timer_resume,
static struct sysdev_class timer_sysclass = {
set_kset_name("timer"),
.resume = timer_resume,
@@
-550,6
+557,7
@@
void __init init_IRQ(void)
/* IPI for generic function call */
set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
#endif
/* IPI for generic function call */
set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
#endif
+ set_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt);
#ifdef CONFIG_X86_LOCAL_APIC
/* self generated IPI for local APIC timer */
#ifdef CONFIG_X86_LOCAL_APIC
/* self generated IPI for local APIC timer */