diff -urN linux-2.4.25-wt2-lowlat/drivers/char/mem.c linux-2.4.25-wt2-lowlat-fix/drivers/char/mem.c --- linux-2.4.25-wt2-lowlat/drivers/char/mem.c Thu Mar 4 17:06:52 2004 +++ linux-2.4.25-wt2-lowlat-fix/drivers/char/mem.c Thu Mar 4 17:04:21 2004 @@ -401,7 +401,7 @@ if (count > size) count = size; - zap_page_range(mm, addr, count); + zap_page_range(mm, addr, count, 0); zeromap_page_range(addr, count, vma->vm_page_prot); #if defined(CONFIG_PAX_SEGMEXEC) || defined(CONFIG_PAX_RANDEXEC) diff -urN linux-2.4.25-wt2-lowlat/kernel/sysctl.c linux-2.4.25-wt2-lowlat-fix/kernel/sysctl.c --- linux-2.4.25-wt2-lowlat/kernel/sysctl.c Thu Mar 4 17:06:52 2004 +++ linux-2.4.25-wt2-lowlat-fix/kernel/sysctl.c Thu Mar 4 17:05:11 2004 @@ -291,6 +291,11 @@ {KERN_PAX,"pax",NULL,0,0500,pax_table}, #endif +#ifdef CONFIG_LOLAT_SYSCTL + {KERN_LOWLATENCY, "lowlatency", &enable_lowlatency, sizeof (int), + 0644, NULL, &proc_dointvec}, +#endif + {0} }; diff -urN linux-2.4.25-wt2-lowlat/mm/mmap.c linux-2.4.25-wt2-lowlat-fix/mm/mmap.c --- linux-2.4.25-wt2-lowlat/mm/mmap.c Thu Mar 4 17:06:52 2004 +++ linux-2.4.25-wt2-lowlat-fix/mm/mmap.c Thu Mar 4 17:06:19 2004 @@ -1035,7 +1035,7 @@ atomic_dec(&file->f_dentry->d_inode->i_writecount); } remove_shared_vm_struct(mpnt); - zap_page_range(mm, st, size); + zap_page_range(mm, st, size, ZPR_COND_RESCHED); /* sys_munmap() */ /* * Fix the mapping, and free the old area if it wasn't reused. --- ./drivers/char/mem.c.orig Sat Mar 6 12:51:26 2004 +++ ./drivers/char/mem.c Sat Mar 6 12:51:40 2004 @@ -413,7 +413,7 @@ vma_m = find_vma(mm, addr_m); if (vma_m && vma_m->vm_start == addr_m && (vma_m->vm_flags & VM_MIRROR)) { addr_m = addr + (unsigned long)vma->vm_private_data; - zap_page_range(mm, addr_m, count); + zap_page_range(mm, addr_m, count, 0); } else printk(KERN_ERR "PAX: VMMIRROR: read_zero bug, %08lx, %08lx\n", addr, vma->vm_start);