"H. Peter Anvin" <hpa at zytor.com> writes: > "huang ying" <huang.ying.caritas at gmail.com> wrote: > >>On Mon, Aug 16, 2010 at 11:27 AM, H. Peter Anvin <hpa at zytor.com> wrote: >>> No, it should not be dynamic; rather we should unify all the users >>> who need a 1:1 map and just keep that page table set around. We still want to restore cr3 from the local task structure as soon as is reasonable, as an identity mapped page table will have page 0 mapped and thus hide null pointer dereferences. >>Agree. One known issue of global 1:1 map is that we need to make at >>least part of page table PAGE_KERNEL_EXEC for EFI runtime code, and >>change_page_attr can not be used before page allocator is available. > For the 1:1 map we probably should make all pages executable; other > things need it too, but we shouldn't have it mapped in except when > needed. We need to be careful in the setup of the global page table so that we are in sync with the pat structure for the attributes pages are mapped so that we don't map a page as cached and uncached at the same time. Otherwise we could accidentally get cache corruption. To do that would seem to mean change_page_attr is relevant at least after we switch from our default set of page permissions. Eric