diff -Naurp -X /home/jbarnes/dontdiff 180-tg3-hack.patch/include/asm-ia64/delay.h 200-udelay-preempt-fix.patch/include/asm-ia64/delay.h --- 180-tg3-hack.patch/include/asm-ia64/delay.h Tue Feb 17 19:57:12 2004 +++ 200-udelay-preempt-fix.patch/include/asm-ia64/delay.h Wed Feb 18 10:13:32 2004 @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -81,11 +82,14 @@ __delay (unsigned long loops) static __inline__ void udelay (unsigned long usecs) { - unsigned long start = ia64_get_itc(); - unsigned long cycles = usecs*local_cpu_data->cyc_per_usec; + unsigned long start, cycles; + preempt_disable(); + start = ia64_get_itc(); + cycles = usecs*local_cpu_data->cyc_per_usec; while (ia64_get_itc() - start < cycles) /* skip */; + preempt_enable(); } #endif /* _ASM_IA64_DELAY_H */