[Barrelfish-users] UMP IPI on x86 (_64)

Lukas Humbel humbell at ethz.ch
Thu Feb 21 19:01:39 CET 2013


Hi all

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
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 
basically:
...
fifo[slot] = 0;  //first iteration, slot = 0
...
val = fifo[slot]; //second iteration, slot = 0
val == 133143986182 ??


Cheers,
Lukas






More information about the Barrelfish-users mailing list