From 34f169293f827efa19fdc9b9c614442353ed4293 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Mon, 29 Sep 2014 11:34:32 +0200 Subject: [PATCH] hw: fix page table handling of core (ref #1387) There might be more then one nested slab allocation. --- repos/base-hw/src/core/platform.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repos/base-hw/src/core/platform.cc b/repos/base-hw/src/core/platform.cc index f10b3848e..6924681ec 100644 --- a/repos/base-hw/src/core/platform.cc +++ b/repos/base-hw/src/core/platform.cc @@ -214,7 +214,7 @@ bool Genode::map_local(addr_t from_phys, addr_t to_virt, size_t num_pages, Translation_table *tt = Kernel::core_pd()->translation_table(); try { - for (unsigned i = 0; i < 2; i++) { + for (;;) { try { Lock::Guard guard(*Kernel::core_pd()->platform_pd()->lock()); @@ -223,6 +223,7 @@ bool Genode::map_local(addr_t from_phys, addr_t to_virt, size_t num_pages, Kernel::core_pd()->platform_pd()->page_slab()); return true; } catch(Page_slab::Out_of_slabs) { + PDBG("Page_slab::Out_of_slabs"); Kernel::core_pd()->platform_pd()->page_slab()->alloc_slab_block(); } }