On Sat, Aug 30, 2008 at 10:38 PM, Peter Teoh <[EMAIL PROTECTED]>wrote:
>
> On Sat, Aug 30, 2008 at 1:13 PM, amit regmi <[EMAIL PROTECTED]> wrote:
>
> > I have a Kernel Mode Linux running(KML). I can access kernel
> > virtual addresses using User Programs. I wanted to get hold of upper
> Kernel
> > memory (beyond 0xff800000 till 0xffffffff) and experiment a bit. To
> achieve
> > the
> > same I requested for a memory hole in "start_kernel" of /init/main.c as
> > follows:
> >
> > .....
> > printk(linux_banner);
> > setup_arch(&command_line);
> >
> > //ask for 8 MB topmost
> > reserve_top_address(8388608ul);
> >
>
Probably this was too early to have called "reserve_top_address" .
I tried shifting this call to the place right before the mem_init() in the
same function.
vfs_caches_init_early();
cpuset_init_early();
//ask for 8 MB topmost
reserve_top_address(8388608ul);
mem_init();
enable_debug_pagealloc();
This time I got a kernel panic instead and the error said
"unknown_bootoption+0x0/0x1f0".
according to:
>
> http://www.ussg.iu.edu/hypermail/linux/kernel/0806.2/2629.html
>
> it seemed to indicate that the minimum size for reservation (for
> purpose of hypervisor implementation) is 128M. So could that be the
> reason why 8MB is not possible?
I think it says that the default 128 MB size allocated for "vmalloc" can be
altered with the "size" parameter.
Again, reserve_top_address also has an impact on the amount of memory given
to vmalloc as it resizes the
__VMALLOC_RESERVE parameter. I am sure it 128M could be a thing to try out.
>
> > mm_init_owner(&init_mm, &init_task);
> > setup_command_line(command_line);
> > .....
> >
> > The kernel image din't boot up. I might be reserving at the wrong place
> in
> > code
> > or I might be carelessly doing something impossible. On a black screen I
> > got
> > the following error:
> >
> > BUG: Int 6: CR2 00000000
> > EDI C03f5000 ESI 00800000 ......
> > EBX .....
> > err 00000000 ...
> > Stack: 00010800 ....
> > ......
> > ......
> >
> > Is there anywhere else I can plug in the "reserve_top_address" and play
> with
> > the
> > kernel space memory ? Certain hypervisors would be doing similar trick
> but I
> > am
> > not so sure how.
>
Google says Xen makes use of "reserve_top_address". May be they can help.
-Regmee