Various questions

Sangwoon Park inverse.midas at
Tue Nov 9 05:22:36 CET 2004

Hi, I'm a L4 newbie but I will try to answer some questions.

On Mon, 08 Nov 2004 22:56:02 +0100, Mattia Belletti
<mattia.belletti at> wrote:
> Hi all - I have some questions; I hope they have not already been posed!
> - I'm running a bare qemu + pistachio 0.4, and its kickstart + sigma0,
> with a little root server of my own, on a IA32 architecture. I ask for
> bootinfo location, and I find it's 0x1000 (that's where kickstart puts
> it, so it's ok). However, when I try accessing it, I obviously
> pagefault, but sigma0 refuses to give me that page. Anyway, if I _force_

 Actually this was my problem several days ago :)
 The reason is that sigma0(at least the one in pistachio 0.4 source
tree) tries to find a free page only in conventional memory when
handling a page fault. So you should send sigma0 a Sigma0 RPC message
that requests the bootinfo location to be mapped to your address space
before accessing the location so that a page fault will not occur.

> it it to do (I've tweaked by hand source code), everything works fine -
> in fact the bootinfo is there, and it is correct. Did I get something wrong?
> - Little note: looking kickstart, I found this, around
> user/util/kickstart/
>     if (use_bootinfo)
>     {
>         // Allocate and initialize a bootinfo structure.
>         bi = init_bootinfo (&kip);
>         rec = (L4_BootRec_t *) ((L4_Word_t) bi + bi->size);
>         if (bi)
>             // Record MBI modules
>             rec = record_bootinfo_modules (bi, rec);
>         else
>             use_bootinfo = false;
>     }
> (I'm referring to CVS version, If I remember well 0.4 version was
> exactly the same). The "rec = stuff" isn't wrong? If "bi" is set to NULL
> by the init_bootinfo (in case of OOM, if I remember well), this
> segfaults - well, don't know what it does exactly, since there's still
> no kernel around, and I don't remember IA32 defaults ;D

 umm..I agree on this point. Any L4 kernel hackers, please let us know.

> - Looking L4 specs (even the latest - by the way, how come the sources
> theirselves aren't published? I would have found it useful when I did
> those searches about sigma0 ;D), I have found no satisfying explanation
> about the kinds of memory descriptors L4 knows about. That is,
> UndefinedMemoryType, BootLoaderSpecificMemoryType,
> ArchitectureSpecificMemoryType are obvious, but what are the differences
> between ConventionalMemoryType and SharedMemoryType? What between
> ReservedMemoryType and DedicatedMemoryType? What are their exact
> meanings? Not that I absolutely need to work this out now, but I would
> like to know this better! :-)

 I can be wrong here but,
 Conventional memory is "normal" memory so sigma0 maps/grants a page
of conventional memory type only once.
 Shared memory is the type of memory which any thread can map into its
address space. For example, the address range for
video(0xa0000~0xbffff) is of shared memory type. Furthermore, because
the first memory descriptor usually specifies the entire address
space(0x0~0xffffffff) as shared memory type, the memory which doesn't
belong to any other types is of shared memory type. I think this type
of memory is for device drivers which access some IO addresses.
 Reserved memory is the memory that the kernel reserves for its own use.
 I don't know what dedicated memory is.

> - Last: what purpose sigma1 has? I remember reading something about it
> in the papers about transparent checkouts of kernel state, and stuff
> like that...
> Thank you all for the attention! :-)
> --
> Mat/tia Belletti - Undergraduate student @
> ICQ: 33292311    - email: mbellett at
> IRC: RedGlow     - site(s):
> Jabber: RedGlow  - Linux registered user 299762 @ machine 213003
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at

More information about the l4-hackers mailing list