On Thu Nov 18, 2010 at 19:04:15 +0100, BERTRAND Joel wrote:
I have check in http://hg.l4ka.org/l4ka-pistachio-ref/l4-x2.pdf, and I think that mapitem makes sense.
When a pagefault occurs, I obtain :
vms$pagefault(addr:47fe8, s:2000) [priv=4] memsection 46000 47fff 1 0 V=46000 P=9c000 s0: got msg from 0x0000003a00000001, (0xffffffffc170, 0x0000000000000001, 0x0000000000989680) s0: got msg from 0x0000003a00000001, (0xffffffffffa0, 0x000000000009c0d7, 0x0000000000000000) s0: allocate_page (tid: 0x3a00000001, addr: 9c000, log2size: 13) %MEM-I-ACCMAP, accepting mapping %MEM-I-ACCMAP, virtual $0000000000046000 - $0000000000047FFF %MEM-I-ACCMAP, physical $000000000009C000 - $000000000009DFFF After vms$sigma0_map
Thus, virtual region 46000-47FFF is mapped in 9C000-9DFFF memory (and mapping is accepted). Mapitem seems to be required.
3 parties are involved. The faulting program, roottask, and sigma0. As far as I (quickly) read the code: roottask is requesting sigma0 to map memory to 46000 within its own virtual address space. Is this memory accessible by roottask, i.e. can roottask read/write from/to 46000? This is required so that roottask can map it further to other tasks. Also 'virt' seems to be the fpage for the faulting task but is also used for the sigma0 call, i.e. the memory is mapped there in roottask. Might this clash with the roottask virtual memory?
Adam