History log of /barrelfish-master/lib/barrelfish/ram_alloc.c
Revision Date Author Comments
# 9bd8d1d5 03-Apr-2019 Reto Achermann <reto.achermann@inf.ethz.ch>

replacing umlaute and fixing address in headers Haldeneggsteig -> Universitaetsstrasse

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>


# 8ff0486c 13-Nov-2018 Simon Gerber <simon.gerber@inf.ethz.ch>

Remove invoke_frame_identify, replaced with frame_identify().

This commit fully removes the Frame_Identify invocation and replaces the
calls with frame_identify().
Additionally, because the KCB is special, this commit introduces a new
invocation kcb_identify() which translates the lvaddr in the KCB
capability into the pysical address of the kernel control block.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 037564f5 02-Nov-2018 Simon Gerber <simon.gerber@inf.ethz.ch>

libbarrelfish: early cn allocator: move state to ram_alloc_state

Each dispatcher is provided with a L2 CNode filled with 16kB RAM
capabilities for the purpose of allocating more L2 CNodes before the
connection with the memory server is established.

The first implementation of this early_cn allocator simply used a static
local variable to keep track of which 16kB RAM caps have been handed out
yet. Naturally, this does not work correctly in combination with domain
spanning.

To fix this allocator in the presence of spanned domains, this commit
moves the "next free" indicator into the ram allocator state (struct
ram_alloc_state).

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 1e17c322 18-Oct-2018 Simon Gerber <simon.gerber@inf.ethz.ch>

Use new frame identity format in ram_alloc for arrakis

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 580d39a5 25-Mar-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T82: 1G ept.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 58159663 24-Mar-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T82: implement dynamic EPT mapping.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# a2f1e286 23-Mar-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T82: checkpoint. Guest domain up. Need to implement hypervisor service.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# f4ee3ef8 05-Dec-2017 Simon Gerber <simon.gerber@inf.ethz.ch>

libbarrelfish,ram_alloc_fixed: fix assertion about amount of basecn caps

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 244ab29c 27-Feb-2017 Adam Turowski <adam.turowski@inf.ethz.ch>

flounder: merging rpc client with a binding layer

Signed-off-by: Adam Turowski <adam.turowski@inf.ethz.ch>


# 5b55045b 24-Aug-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T284: Change flounder to use provided slots when in RPC and call lmp_chan_alloc_recv_slot() otherwise

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 4e992052 02-Mar-2013 Simon Peter <simpeter@cs.washington.edu>

Disable error message on ram_alloc failure. The x86 monitor bootup code
probes for available memory regions using ram_alloc and in certain cases triggers this message,
confusing the users.


# ec4c9cc2 25-Oct-2012 Raphael Fuchs <raphaelfuchs@student.ethz.ch>

Refactor: Improve debug message of in case ram_alloc fails.


# 83fcfcbd 06-Aug-2012 Kornilios Kourtis <kkourt@inf.ethz.ch>

ram_alloc_remote(): reset affinity before calling slot_alloc()

Based on patch provided by Shi Jinghao <jhshi@cs.hku.hk>:
https://lists.inf.ethz.ch/pipermail/barrelfish-users/2012-August/000783.html:

In ram_alloc_remote, there is a hack that before we obtain the
ram_alloc_lock and do the actual transport, we first check if cs->space ==
1: if yes, we do a pair of dummy slot_alloc and slot_free to help the
slot_allocator grow itself. But since slot_alloc may involve another
ram_alloc call, we need to reset the affinity to the default (0, 0) before
slot_alloc and restore the affinity after slot_free.

I found this bug when I repeatly do: set affinity to
(0x80000000-0xc0000000) (shared memory on SCC), allocate a 4K frame use
frame_alloc, set the affinity back to (0, 0). After a certain number of
iterations, all the slot in slot_allocator are consumed and trigger the
dummy slot_alloc/slot_free operation. Then the slot_alloc failed since at
the moment, the affinity is not the default (0, 0) but
(0x80000000,0xc0000000). So the new frame is allocated on a non-expected
physical memory region and somehow a page fault is triggered, which cause
the system to crash.

Here is the fix patch, FYI.

diff -r ba0440b6d59d lib/barrelfish/ram_alloc.c
--- a/lib/barrelfish/ram_alloc.c Wed Aug 01 20:17:53 2012 +0800
+++ b/lib/barrelfish/ram_alloc.c Wed Aug 01 20:18:31 2012 +0800
@@ -35,6 +35,7 @@
struct slot_alloc_state *sas = get_slot_alloc_state();
struct slot_allocator *ca = (struct slot_allocator*)(&sas->defca);
if (ca->space == 1) {
+ ram_set_affinity(0, 0);
struct capref cap;
err = slot_alloc(&cap);
if (err_is_fail(err)) {
@@ -44,6 +45,7 @@
if (err_is_fail(err)) {
return err_push(err, LIB_ERR_SLOT_FREE);
}
+ ram_set_affinity(minbase, maxlimit);
}

assert(ret != NULL);


# 8648b77a 15-Dec-2011 pravin shindep@inf.ethz.ch <pravin shindep@inf.ethz.ch>

Removed most of the debugging code which was breaking the compilation for arm


# 77761397 16-Sep-2011 Jana Giceva <gicevaj@inf.ethz.ch>

Reverted problematic size change to network stack, along with several debug changes.


# 92797b2a 14-Sep-2011 Jana Giceva <gicevaj@inf.ethz.ch>

snapshot


# 43abdd47 13-Sep-2011 Jana Giceva <gicevaj@inf.ethz.ch>

added more debug information in case an error was returned from ram_alloc_func


# d9ab9875 06-Sep-2011 akhi akhi@inf.ethz.ch <akhi akhi@inf.ethz.ch>

Remove the dependency from fish on memclient and ramclient by moving the
required functionality into lib/barrelfish.

This ensures that there is no duplicate flounder code generation for the two
clients in fish.


# 559955b4 02-Aug-2011 Simon Peter <speter@inf.ethz.ch>

Merge from ASPLOS tree.


# 9299dcef 08-Jul-2011 Stefan Kästle <stefan.kaestle@inf.ethz.ch>

Initial version of public stable barrelfish repository.