Hello Ben,

On 2024-10-29 03:08, Ben McCart wrote:
I have been working through the tutorials and doing some experimenting and ran into behavior that very much surprised me. I can seL4_X86_PageTable_Map & seL4_X86_Page_Map to virtual addresses starting at the 96 MB address (0x06000000) with no errors.

This implies that there is already a PD mapped, otherwise you would get a seL4_FailedLookup error when doing this.

  However, as soon as I try to seL4_X86_PageDirectory_Map that same virtual address I get the error seL4_DeleteFirst.

You either get an error here, or earlier, depending on the state of the page table.

I didn't think the kernel mapped anything for the root address above 64 MB virtual address range for the root address in these tutorials.  If it did I would have expected an error for seL4_X86_PageTable_Map & seL4_X86_Page_Map.

What is going on?  What am I missing?  How can I avoid expecting to map a virtual address in a range already mapped by the kernel for the root process on a given architecture?

See chapter 7 of the seL4 manual. On x64, the address bits covered are:

PML4 39—47
PDPT 30—38
PageDirectory 21—29
PageTable 12—20

By default the rootserver has everything mapped starting from a low address, so there is always a PD present for the first 512 MB. If you want to fully
manage your own PD, you need to start at address 0x20000000.

Greetings,

Indan
_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to