The memory will get mapped in if you vremap() it in, won't it?
vremap is supposed to take an offset greater than the high end
of memory and a length and return a virtual address with all
that area mapped in.
Try doing:
pointer_to_upper_25mb = vremap(1024*1024*7, 25*1024*1024);
or something like that. Look at mm/vmalloc.c for the definition
of vmalloc. Then pointer_to_upper_25mb holds a pointer to
virtual addresses in the top GB of memory which is mapped to
the addresses in question.
Naturally, for production code, you want this to be configurable,
but that's not difficult to do.
Is there something I'm missing here?
Please tell me if this works; I can put it in the KHG as a
useful workaround for things that need huge amounts of
consecutive memory.
michaelkjohnson