Re: Kickstart issue
Felipe Astroza <[email protected]> Tue, 30 Mar 2010 17:45:50 -0400
| Newsgroups | gmane.comp.micro-kernel.l4.l4ka.general |
|---|---|
| Message-ID | <[email protected]> |
>
> Hi Felipe,
>
> Please post such questions to the l4ka mailing list.
>
> Ok
> First of all, why is the memory wasted?
To kickstart the memory region 0x00400000-0x401075c8 belongs to module 0
(kernel). I've taken a glance to kickstart's source code:
In kickstart.cc:
bool __elf_func(elf_load) (L4_Word_t file_start,
L4_Word_t file_end,
L4_Word_t *memory_start,
L4_Word_t *memory_end,
L4_Word_t *entry,
L4_MemCheck_Func_t check)
...........
// Write back the values into the caller-provided locations
*memory_start = min_addr;
*memory_end = max_addr;
............
These lines sets module "start" and "end" from module "min" and "max". In
module 0 case, min = 0x00400000 and max = 0x401075c8. Later modules (sigma0,
roottask, etc) won't use memory between 0x00400000-0x401075c8 because the
memory check function in mbi-loader.cc (check_memory) detects a memory
conflict (0x00400000-0x401075c8 is a huge region).
to summarise:
The module 0 (kernel) has 5 small regions noncontiguous. The regions's
bounds (min and max) are used for memory check. That's not good.
You should still be able to access all memory except the reserved boot
> memory regions, whether it is contiguous or not.
>
> Our linkbases are just default values, which may be adapted if required if
> needed, e.g., because of memory constraints on the destination hardware.
>
> Using the exact kernel end address as start address for sigma0 is not
> advisable, since the former may change with different builds.
>
> Cheers,
> -Jan
>
>
> --
> Jan Stoess
> KIT/UKa System Architecture Group
> Phone: +49 (721) 608-4056
> Fax: +49 (721) 608-7664
> http://os.ibds.kit.edu/stoess
>
>
>
>
>