--- linux/arch/i386/kernel/apic.c 2003-10-25 11:44:59.000000000 -0700 +++ linux-jla/arch/i386/kernel/apic.c 2003-12-09 19:07:19.000000000 -0700 @@ -1089,6 +1089,16 @@ */ irq_stat[cpu].apic_timer_irqs++; +#ifdef CONFIG_MK7 && CONFIG_BLK_DEV_AMD74XX + + /* + * on 2200XP & nforce2 chipset we need at least 500ns delay here + * to stop lockups with udma100 drive. try to scale delay time + * with cpu speed. Ross Dickson. + */ + ndelay((cpu_khz >> 12)+200 ); /* don't ack too soon or hard lockup */ +#endif + /* * NOTE! We'd better ACK the irq immediately, * because timer handling can be slow.