[Barrelfish-users] UMP IPI on x86 (_64)
humbell at ethz.ch
Thu Feb 21 19:01:39 CET 2013
I'm trying to use the UMP_IPI flounder backend on x86_64, but it crashes
every time I send a message over the channel with a "read page fault due
to page not present".
I added "ump_ipi" to optInterconnectDrivers in X86_64.hs, copy&pasted
the flounder generated code and changed it in such a way that my
specific connection uses ump_ipi (i also made sure that the ipi_init
routines are called and commented out some other #if
defined(CONFIG_FLOUNDER_BACKEND_UMP_IPI) ). I'm not sure if my
modifications are 100% correct, but the error it produces is the same as
if I activate it globally (by adding ump_ipi to optFlounderBackends).
The error occurs on the receiving side of the channel after a message
has been sent in the function ipi_handle_notify at the line
assert(endpoints[val].cap.type != ObjType_Null); . I added a printf to
the function inside the while(fifo[slot] != 0) loop, and it seems that
val gets really big (133143986182) which then causes the fault (in the
second iteration of the loop).
ipi_handle_notify line:93 val:1 slot: 0
ipi_handle_notify line:93 val:133143986182 slot: 0
Any ideas? This really seems strange to me, because the code does
fifo[slot] = 0; //first iteration, slot = 0
val = fifo[slot]; //second iteration, slot = 0
val == 133143986182 ??
More information about the Barrelfish-users