Messages in this thread |  | | | Date | Thu, 14 Apr 2011 12:30:11 +0100 | | From | Stefano Stabellini <> | | Subject | Re: [PATCH 2/4] x86,xen: introduce x86_init.mapping.pagetable_reserve |
| |
On Wed, 13 Apr 2011, H. Peter Anvin wrote: > On 04/12/2011 04:19 AM, stefano.stabellini@eu.citrix.com wrote: > > From: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > > > Introduce a new x86_init hook called pagetable_reserve that during the > > initial memory mapping is used to reserve a range of memory addresses for > > kernel pagetable usage. > > > > On native it just calls memblock_x86_reserve_range while on xen it also > > takes care of setting the spare memory previously allocated > > for kernel pagetable pages from RO to RW, so that it can be used for > > other purposes. > > > > What are the *semantics* of this hook? > > Hooks are insanely nasty if they are just defined by a particular code > flow, as evidenced by the royal mess called paravirt_ops.
I hope that the other email I have just sent clarifies the purpose of the hook. I admit that as it is it wouldn't find much usage outside init_memory_mapping. Maybe adding the corresponding hook to allocate the initial kernel pagetable pages would help generalizing it. Or maybe we just need a better comment in the code:
/* Reserve the kernel pagetable pages we used and free the other ones so * that they can be reused for other purposes. * * On native it just means calling memblock_x86_reserve_range, on Xen it * also means marking RW the pagetable pages that we allocated before * but that haven't been used here. */ if (!after_bootmem && pgt_buf_end > pgt_buf_start) x86_init.mapping.pagetable_reserve(PFN_PHYS(pgt_buf_start), PFN_PHYS(pgt_buf_end));
|  |