Index: arch/parisc/kernel/traps.c =================================================================== RCS file: /var/cvs/linux/arch/parisc/kernel/traps.c,v retrieving revision 1.70 diff -u -p -r1.70 traps.c --- arch/parisc/kernel/traps.c 17 Nov 2002 20:44:11 -0000 1.70 +++ arch/parisc/kernel/traps.c 15 Dec 2002 02:35:34 -0000 @@ -455,13 +455,6 @@ void handle_interruption(int code, struc unsigned long fault_space = 0; struct siginfo si; - /* HACK! jsm is going to fix this. - * entry.S will manage I-bit - only enable I-bit if it was - * enabled before we took the "trap". - */ - if (code != 1) - local_irq_enable(); - switch(code) { case 1: @@ -727,6 +720,7 @@ void handle_interruption(int code, struc } } + local_irq_enable(); do_page_fault(regs, code, fault_address); } Index: drivers/char/serial.c =================================================================== RCS file: /var/cvs/linux/drivers/char/serial.c,v retrieving revision 1.39 diff -u -p -r1.39 serial.c --- drivers/char/serial.c 27 Nov 2002 21:19:19 -0000 1.39 +++ drivers/char/serial.c 15 Dec 2002 02:35:37 -0000 @@ -1167,18 +1167,21 @@ static void hp_diva_check(unsigned long { static unsigned long last_strobe; struct async_struct *info; - unsigned long flags; if (time_after_eq(jiffies, last_strobe + HP_DIVA_CHECKTIME)) { info = IRQ_ports[hp_diva_irq]; if (info) { + unsigned long flags; + save_flags(flags); cli(); rs_interrupt(hp_diva_irq, NULL, NULL); restore_flags(flags); } } last_strobe = jiffies; - mod_timer(&hp_diva_timer, jiffies + HP_DIVA_CHECKTIME); + + hp_diva_timer.expires = jiffies + HP_DIVA_CHECKTIME; + add_timer(&hp_diva_timer); } @@ -4342,7 +4345,10 @@ pci_hp_diva(struct pci_dev *dev, struct init_timer(&hp_diva_timer); hp_diva_timer.function = hp_diva_check; - mod_timer(&hp_diva_timer, jiffies + HP_DIVA_CHECKTIME); + hp_diva_timer.data = hp_diva_irq; + + hp_diva_timer.expires = jiffies + HP_DIVA_CHECKTIME; + add_timer(&hp_diva_timer); return 0; } Index: include/linux/list.h =================================================================== RCS file: /var/cvs/linux/include/linux/list.h,v retrieving revision 1.7 diff -u -p -r1.7 list.h --- include/linux/list.h 13 Nov 2002 15:17:02 -0000 1.7 +++ include/linux/list.h 15 Dec 2002 02:35:46 -0000 @@ -34,7 +34,7 @@ struct list_head { * This is only for internal list manipulation where we know * the prev/next entries already! */ -static inline void __list_add(struct list_head *new, +static /* inline */ void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { Index: kernel/timer.c =================================================================== RCS file: /var/cvs/linux/kernel/timer.c,v retrieving revision 1.12 diff -u -p -r1.12 timer.c --- kernel/timer.c 13 Nov 2002 15:17:12 -0000 1.12 +++ kernel/timer.c 15 Dec 2002 02:35:50 -0000 @@ -109,6 +109,7 @@ void init_timervecs (void) { int i; +printk("init_timervecs\n"); for (i = 0; i < TVN_SIZE; i++) { INIT_LIST_HEAD(tv5.vec + i); INIT_LIST_HEAD(tv4.vec + i); @@ -160,7 +161,7 @@ static inline void internal_add_timer(st /* * Timers are FIFO! */ - list_add(&timer->list, vec->prev); + list_add_tail(&timer->list, vec); } /* Initialize both explicitly - let's try to have them in the same cache line */