The SkipMessageFlag kludge When the code in setupdestpage (primcom.c) discovers that map_parm_string cannot map the page that was designated to receive of the string from a kernel object, it cleverly sets cpuentryblock.str to 0 with the excellent comment: "Pretend no string". It then returns 0 to the caller of setupdestpage which is jsimple in the case that motivates this kludge. This is to preclude deliver_message from attempting to deliver a message to kernel address 0, which would be really bad. Unfortunately nobody looks at the modified value of cpuentryblock for the line commented "culprit" stores a new value there. To remove this kludge delete definitions of SkipMessageFlag in both common/datac.c and common/percpu.h. This will lead you to the several uses of the flag. Delete the whole line reading if(cpuparmaddr || !SkipMessageFlag)