Hello, I want to run Genode on Windriver Simics https://www.windriver.com/products/simics/. I've just created a disk image with the demo scenario from a freshly cloned Genode. It crashes with the following error.
page fault, pd='init -> drivers -> acpi_drv' thread='ep' cpu=0 ip=0x1011062 address=0xbff00000 stack pointer=0x401fbbc0 qualifiers=0x4 irUwp reason=1
addr2line -e debug/acpi_drv 0x1011062
The IP 0x1011062 resolves to repos/base/include/util/mmio.h:54
/**
- Read '_ACCESS_T' typed from MMIO base + 'offset'
*/ template <typename ACCESS_T> inline ACCESS_T _read(off_t const &offset) const { addr_t const dst = _base + offset; 54 ACCESS_T const value = *(ACCESS_T volatile *)dst; return value; }
When using the Genode::backtrace(), I get this
Error: PAGE-FAULT IN CORE addr=0x204 ip=0x1b32b8 (read)
stack pointer 0x403feda0, qualifiers 0x4 irUwp faulter utcb 0x403ff000, last message item count 0 #1 0x00000000403feda0 0x00000000001b32b8 #2 0x00000000403feea8 0x000000000015e7c3 [ 0] Killed EC:0xffffffff8103b4c0 SC:0xffffffff81148040 V:0xe CS:0x2b IP:0x1c6ac3(0x2155ca) CR2:0x100000008 ERR:0x4 (Livelock) Pd::root [ 0] Killed EC:0xffffffff8103bb80 SC:0xffffffff81148040 V:0xe CS:0x2b IP:0x1b32b8(0x1) CR2:0x204 ERR:0x4 (IPC Abort) Pd::root [ 0] Killed EC:0xffffffff81139280 SC:0xffffffff81148040 V:0xe CS:0x2b IP:0x1010ab2(0x0) CR2:0xbff00000 ERR:0x4 (IPC Abort) [ 0] Killed EC:0xffffffff816cb280 SC:0xffffffff816d9040 V:0xe CS:0x2b IP:0x1021b10(0x1) CR2:0x1021b10 ERR:0x14 (IPC Timeout) [ 0] Killed EC:0xffffffff8178d280 SC:0xffffffff8106b040 V:0xe CS:0x2b IP:0xf11fb(0x1067000) CR2:0x1392fff ERR:0x6 (IPC Timeout) [ 0] Killed EC:0xffffffff8178d040 SC:0xffffffff8106b040 V:0xe CS:0x2b IP:0xccd34(0x0) CR2:0xccd34 ERR:0x14 (IPC Timeout) [init -> drivers -> acpi_drv] Error: Uncaught exception of type 'Genode::Ipc_error' [init -> drivers -> acpi_drv] Warning: abort called - thread: main
The IP:0x1010ab2 resolves to /home/parfait/git/genode20.05/repos/os/src/drivers/acpi/acpi.cc:254 where I can read following :
Fadt(addr_t a) : Genode::Mmio(a)
{ features = readFadt::Feature_flags(); reset_type = readFadt::Reset_reg_type(); 254 reset_addr = readFadt::Reset_reg_addr(); reset_value = readFadt::Reset_value(); }
It seems like there is an issue with the parsing of the acpi table, especially the FADT. How can I proceed to resolve this ?