[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Setting up page directories and tables
> This OS is designed for 32-bit x86 (no PAE), so I intend to use a two-level > paging system. Each process has a page directory - one page with entries > which point to page tables, whose entries describe actual pages. As far as > I can tell, this is what's done in the Mini-OS source, with page > directories referred to as L1 page tables, and what I'm calling page tables > referred to as L2 page tables. I think you've got this backwards: in Xen code, L1 page tables are the leaf nodes, L2 are their parents, L3 are their parents, etc etc. Cheers, Mark > So when creating a process, I do the following: > allocate a page P for the process's page directory > fill P with zeros > update the existing page table mapping for P (previously set up by what > is essentially the build_pagetable() code from Mini-OS) to give it L1_PROT > & ~_PAGE_RW > (using HYPERVISOR_mmu_update(...)) > pin the page (using HYPERVISOR_mmuext_op({MMUEXT_PIN_L1_TABLE, > ...}...)) > > All of these steps succeed (the hypercall returns 0, and the argument > indicating how many updates succeeded is 1 in both cases). But later, when > switching into the context of this process, I try to update the user base > pointer with > > HYPERVISOR_mmuext_op({MMUEXT_NEW_USER_BASEPTR, mfn of P}...). > > This call fails (returns -1, and indicates that 0 operations succeeded). > Why might that be? As I've established, the page is zero'd out (so it's not > invalid), and it seems to be mapped properly (not writable, pinned L1 page > table). So why would this operation fail? > > Thanks in advance, > Dave Pacheco -- Dave: Just a question. What use is a unicyle with no seat? And no pedals! Mark: To answer a question with a question: What use is a skateboard? Dave: Skateboards have wheels. Mark: My wheel has a wheel! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |