diff -urNp x-ref/drivers/ide/ide-probe.c x/drivers/ide/ide-probe.c --- x-ref/drivers/ide/ide-probe.c 2002-12-11 02:12:21.000000000 +0100 +++ x/drivers/ide/ide-probe.c 2002-12-13 03:43:15.000000000 +0100 @@ -1008,7 +1008,10 @@ static void init_gendisk (ide_hwif_t *hw * IDE can do up to 128K per request == 256 */ *max_sect++ = ((hwif->rqsize) ? hwif->rqsize : 128); - *max_ra++ = vm_max_readahead; + *max_ra = ((128*4) >> (PAGE_SHIFT - 10)) - 1; /* sequential read with 4 requests 128k large DMA */ + if (hwif->chipset == ide_pdc4030) + *max_ra = ((127*4) >> (PAGE_SHIFT - 10)) - 1; /* sequential read with 4 requests 127k large DMA */ + max_ra++; } for (unit = 0; unit < units; ++unit) diff -urNp x-ref/mm/filemap.c x/mm/filemap.c --- x-ref/mm/filemap.c 2002-12-13 03:42:31.000000000 +0100 +++ x/mm/filemap.c 2002-12-13 03:42:34.000000000 +0100 @@ -46,7 +46,7 @@ atomic_t page_cache_size = ATOMIC_INIT(0 unsigned int page_hash_bits; struct page **page_hash_table; -int vm_max_readahead = 31; +int vm_max_readahead = (512 >> (PAGE_SHIFT - 10)) - 1; /* sequential read 512k large DMA */ int vm_min_readahead = 3; EXPORT_SYMBOL(vm_max_readahead); EXPORT_SYMBOL(vm_min_readahead);