inverse.midas at gmail.com
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 poste.it> 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
> 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);
> 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 @ cs.unibo.it
> ICQ: 33292311 - email: mbellett at cs.unibo.it
> IRC: RedGlow - site(s): http://mbellett.web.cs.unibo.it/
> Jabber: RedGlow - Linux registered user 299762 @ machine 213003
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
More information about the l4-hackers