Well, the cause of my problem seems to be: static int map_code_area(void) { int err; Ram_dataspace_capability ds_cap; void *dummy; printf("map_code_area will map_io_mem\n"); /* map page0 */ if ((err = Framebuffer_drv::map_io_mem(0x0, PAGESIZE, false, &dummy))) { printf("map_io_mem error"); PERR("Could not map page zero"); return err; } printf("map_code_area succeede map_io_mem\n");
It looks like Framebuffer_drv::map_io_mem(0x0, PAGESIZE, false, &dummy) never return and cause: int main(): --- start init --- int main(): transferred 484 MB to init int main(): --- init created, waiting for exit condition --- [init] Could not open file "ld.lib.so" [init -> pci_drv] PCI driver started modified [init -> pci_drv] PCI begin by Paul [init -> vesa_drv] VESA begin main [init -> vesa_drv] VESA will init [init -> vesa_drv] VESA init beginning [init -> vesa_drv] x86emu::init will now call map_code_area [init -> vesa_drv] map_code_area will map_io_mem I/O memory [0,1000) not available Local MMIO mapping failed! [init -> launchpad] Could not open file "ld.lib.so" [init -> launchpad] Could not open file "config" [init -> timer] Timer::Timeout_scheduler::Timeout_scheduler(Platform_timer*, Ger [init -> vesa_drv] C++ runtime: Genode::Parent::Service_denied [init -> launchpad] Could not obtain config file [init -> vesa_drv] void* abort(): abort called [init -> pci_drv] PCI will announce myself [init -> pci_drv] PCI will sleep forever now [init -> ps2_drv] Using keyboard with scan code set 2.
Oops, I now see I forgot the \n at the end of printf("map_io_mem error"); making it not flushing output to serial. So I am not sure map_io_mem does not return.