Hello,
I want to run Genode on Windriver 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    = read<Fadt::Feature_flags>();
reset_type  = read<Fadt::Reset_reg_type>();
254     reset_addr  = read<Fadt::Reset_reg_addr>();
reset_value = read<Fadt::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 ?
--
Parfait T.