On Wed, 2005-11-09 at 14:16 -0500, Dave Anderson wrote:
Badari Pulavarty wrote:
> >
> > It's kind of a chicken-and-egg situation, where the first readmem()
> > needs the virtual address range stuff to be in place, but we need
> > something out of the kernel data space to determine the virtual
> > address space range data. That being said, it looks possible, at
> > least in the case of ppc64, that perhaps we could get away with
> > doing a readmem() of a unity-mapped address, since at the
> > point where the VM-range decision is made, machdep->kvbase
> > has just been set. (Follow the readmem() path, and you'll see
> > what I mean...) But you'd have to read raw data and muck
> > your way through it because the embedded gdb hasn't been
> > invoked yet. Badari had asked the same thing earlier, about
> > using the THIS_KERNEL_VERSION macro, but again, the
> > underlying crash data to satisfy the macro doesn't get initialized
> > until after gdb is alive.
>
> Okay. It looks like we can delay deciding 4-level pagetable layout
> till POST_GDB stage. Since THIS_KERNEL_VERSION is set by then, I was
> able to use that instead :)
Ok -- sorry, I'm so far behind in my mail, I answered your last query before
I got to this one. So doing it this late should be OK -- as long as there never
becomes a requirement to access a vmalloc address data prior to that point.
One question -- if the 64k page support is put in place for 2.6.14, are you
going to run into the same kind of "qualification" issue?
64k page support is going to be tricky. Atleast 4 level pagetable stuff
is default from 2.6.14 onwards. But 64k page support is not default, its
a config option. So, we can't base it on kernel version - it should be
based on really reading *something* in the kernel to find out if it
really is 64k pages and then switch to yet another page table layout :(
Thanks,
Badari