Linus, Please review the patch below, then do a bk pull http://gkernel.bkbits.net/misc-2.5 Summary: gcc's __builtin_memcpy performs the same function (and more) as the kernel's __constant_memcpy. So, let's remove __constant_memcpy, and let the compiler do it. Instead of shouldering the burden of the kernel needing to have a decently-fast memcpy routine, I would prefer to hand off that maintenance burden to the compiler. For the less common (read: non-Intel) processors, I bet this patch shows immediate asm-level benefits in instruction scheduling. The patch below is the conservative, obvious patch. It only kicks in when __builtin_constant_p() is true, and it only applies to the i386 arch. I'm currently running w/ 2.5.67+BK+patch and it's stable. With some recently-acquired (but still nascent) x86 asm skills, I diff'd the before-and-after x86 asm cases for when a constant memcpy() call was made in the kernel code; nothing interesting. The instruction sequence was usually longer once you exceeded ~32 byte memcpy, but it looked like it scheduled better on i686. The small-copy cases looked reasonably equivalent. The more radical direction, where I would eventually like to go, is to hand off all memcpy duties to the compiler, and -march=xxx selects the best memcpy strategies. This "radical" direction requires a lot more work, benching both the kernel and gcc before and after the memcpy changes. Finally, on a compiler note, __builtin_memcpy can fall back to emitting a memcpy function call. Given the conservatism of my patch, this is unlikely, but it should be mentioned. This also gives less-capable compilers the ability to simplify, by choosing the slow path of unconditionally emitting a memcpy call.