Question about memory management in L4 Fiasco O.C + L4re

Adam Lackorzynski adam at
Wed Jul 22 00:00:52 CEST 2015


On Tue Jul 21, 2015 at 16:06:33 +0200, Mahdi Aichouch wrote:
> I would like to understand how L4 Fiasco manages the virtual memory of a
> L4Linux guest.
> Does L4 Fiasco maintains a "shadow page table" in order to perform a
> two-level memory address translation:
> guest virtual memory --> guest real memory --> host physical memory?

There are two page tables, one is in L4Linux and that maps
process memory to Linux internal memory (in a strict sense it's virtual
to virtual but you could also understand that as guest virtual to guest
physical). The other page table is the real one, maintained by Fiasco.
This one maps from virtual to physical, it's a normal process page
table. There's also no nesting/chaining here.

> If the answer is yes, where the "shadow page table" is maintained? which L4
> Fiasco object
> is responsible of this operation?

A page table is part of each L4::Task object.

> If we suppose that an L4Linux guest has for example a 64MB of fixed
> physical memory region,
> in case a new L4Linux user task arrives and there is no available space to
> allocate
> a new page for this task, an already used page has to be unmapped, right?

Yes, probably, whatever Linux is doing in this case.

> If the answer is yes, then where the dirty page will be swapped?

Whatever Linux is doing for that, so for example to swap space on disk,
or the fork will fail.

Adam                 adam at

More information about the l4-hackers mailing list