----- Original Message -----
 On Tue, 2011-01-25 at 21:50 +0000, Dave Anderson wrote:
 
 > >
 > > The attached patch implements the -K option that is the same as doing
 > > "-k -e <vmalloc_start_addr>".
 > >
 > > Comments?
 > > Bob Montgomery
 >
 > I like the idea...
 >
 > But it won't work on ia64 machines, where the vmalloc space is contained
 > within the region starting at a000000000000000, which is below the unity-mapped
 > region starting at e000000000000000.
 ...
 >
 > So it looks like it might need a hack for ia64 anyway, which
 > already has a few. I don't think any of the other arches have
 > their vmalloc regions below their unity-mapped regions.
 >
 > Dave
 
 So -K should really be defined as "search the identity-mapped region",
 maybe? Perhaps a mach-specific utility routine to return start and end
 for that region which become the defaults for -K search?? 
Yeah, I think so.  In fact, in looking at the ia64 anomoly, I note that
the similarly-mapped kernel text/data region in x86_64 is being skipped
entirely:
  crash>  mach
         MACHINE TYPE: x86_64
          MEMORY SIZE: 1 GB
                 CPUS: 8
      PROCESSOR SPEED: 1995 Mhz
                   HZ: 1000
            PAGE SIZE: 4096
  KERNEL VIRTUAL BASE: ffff810000000000
  KERNEL VMALLOC BASE: ffffc20000000000
     KERNEL START MAP: ffffffff80000000
  KERNEL MODULES BASE: ffffffff88000000 
    KERNEL STACK SIZE: 8192
  crash>
The x86_64 search starts at the unity-mapped region at ffff810000000000,
then jumps to the vmalloc base region at ffffc20000000000, and then when
it reaches the end of that section, it calls next_vmalloc_vaddr(), which
skips to the modules part of of the vmalloc region at ffffffff88000000.
So it leaps over the kernel text/data mapped area at ffffffff80000000.  
The kernel text/data mapped region, similar to the vmalloc region, is 
"double-mapped", so you would see any search matches in that memory, but
they would be shown by their unity-mapped reference only.  But that's not
the intent, so it's a bug.
 
 My own tools are really "search physical pages", but I
didn't see that
 mechanism in crash (though it might be there?). 
No it's not, but it probably should be.  That would be easy to shoe-horn
in there since all of the search addresses (user or kernel) are first
turned into physical addresses before being read (except for the
Xen hypervisor).  So yeah, I think a "-p" argument would be pretty
useful.
 
 It's been a while since ia64 was my main architecture :-) 
Yeah, since RHEL6 dropped it, it's beginning to leak out of my brain cells,
but I remember running into the oddity of its mapped kernel and vmalloc
region location. 
 
Anyway, I'm thinking now that "search" should be reworked to add these
new variants:
  search -K  unity-mapped kernel only
  search -V  vmalloc memory only
  search -M  kernel text/data mapped region (arch-dependent)
  search -p  physical memory
and leave the current mechanism as it is now:
  search -u  user-space of current context 
  search -k  all of kernel virtual space 
where "search -k" would be equivalent to "search -KVM".
Let me tinker around with this -- thanks for the suggestion
(and the inadvertant x86_64 bug report).
Dave