diff -urpN linux-2.6.18.new.1/drivers/scsi/ipr.c linux-2.6.18.new.2/drivers/scsi/ipr.c --- linux-2.6.18.new.1/drivers/scsi/ipr.c 2006-09-20 05:42:06.000000000 +0200 +++ linux-2.6.18.new.2/drivers/scsi/ipr.c 2006-09-22 00:00:48.000000000 +0200 @@ -1596,11 +1596,7 @@ static int ipr_wait_iodbg_ack(struct ipr if (pcii_reg & IPR_PCII_IO_DEBUG_ACKNOWLEDGE) return 0; - /* udelay cannot be used if delay is more than a few milliseconds */ - if ((delay / 1000) > MAX_UDELAY_MS) - mdelay(delay / 1000); - else - udelay(delay); + udelay(delay); delay += delay; } diff -urpN linux-2.6.18.new.1/drivers/spi/spi_bitbang.c linux-2.6.18.new.2/drivers/spi/spi_bitbang.c --- linux-2.6.18.new.1/drivers/spi/spi_bitbang.c 2006-09-20 05:42:06.000000000 +0200 +++ linux-2.6.18.new.2/drivers/spi/spi_bitbang.c 2006-09-22 00:00:48.000000000 +0200 @@ -168,7 +168,7 @@ int spi_bitbang_setup_transfer(struct sp hz = spi->max_speed_hz; if (hz) { cs->nsecs = (1000000000/2) / hz; - if (cs->nsecs > (MAX_UDELAY_MS * 1000 * 1000)) + if (cs->nsecs > (1000 * 1000)) return -EINVAL; } diff -urpN linux-2.6.18.new.1/drivers/spi/spi_mpc83xx.c linux-2.6.18.new.2/drivers/spi/spi_mpc83xx.c --- linux-2.6.18.new.1/drivers/spi/spi_mpc83xx.c 2006-09-20 05:42:06.000000000 +0200 +++ linux-2.6.18.new.2/drivers/spi/spi_mpc83xx.c 2006-09-22 00:00:48.000000000 +0200 @@ -211,7 +211,7 @@ int mpc83xx_spi_setup_transfer(struct sp if (!hz) hz = spi->max_speed_hz; mpc83xx_spi->nsecs = (1000000000 / 2) / hz; - if (mpc83xx_spi->nsecs > MAX_UDELAY_MS * 1000) + if (mpc83xx_spi->nsecs > (1000 * 1000)) return -EINVAL; if (bits_per_word == 32) diff -urpN linux-2.6.18.new.1/include/asm-parisc/delay.h linux-2.6.18.new.2/include/asm-parisc/delay.h --- linux-2.6.18.new.1/include/asm-parisc/delay.h 2006-09-20 05:42:06.000000000 +0200 +++ linux-2.6.18.new.2/include/asm-parisc/delay.h 2006-09-22 00:00:48.000000000 +0200 @@ -24,9 +24,8 @@ static __inline__ void __cr16_delay(unsi /* * Note: Due to unsigned math, cr16 rollovers shouldn't be - * a problem here. However, on 32 bit, we need to make sure - * we don't pass in too big a value. The current default - * value of MAX_UDELAY_MS should help prevent this. + * a problem here. On 32 bit, we are protected in udelay() + * from passing in too big a value. */ start = mfctl(16);