Dave Anderson wrote:
I can reproduce it on a bare-metal RHEL5 kernel, so let me
figure out what's going on...
Hello Yang,
The problem is that the functions that implement the search
command were originally written to be processor-neutral on
machines with a relatively small, contiguous, unity-mapped
kernel/static-data region and a vmalloc region. With the
advent of machines with sparse memory regions, architectures
with separately-mapped kernel regions that are no longer part
of their unity-mapped regions, the command does not scale well
because too much time is spent dealing with inter-region
non-existent memory. It's due for a proper re-write with
a machine-dependent next_kpage() assist function.
I was mistaken in stating that your patch would skip the vmalloc
section, but it could only compile on an ia64. Attached is an
ugly patch that does does the same thing as yours did, compiles
on all architectures, and would still work on 2.4-era ia64 kernels
whose kernel text/static-data were still located in the unity-mapped
region 7.
Some day I'll get around to a real fix...
Thanks,
Dave