[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Why we are doing this (below code) in __init setup_pagetables() method in ARM arch in setup.c.
Please read http://wiki.xen.org/wiki/Asking_Xen_Devel_Questions and consider re-asking your question with more context. e.g. include your actual goal, what steps have you taken to find the answer for yourself etc. On Sat, 2012-12-08 at 13:02 +0000, asad raza wrote: > /* Link in the fixmap pagetable */ > pte = mfn_to_xen_entry((((unsigned long) xen_fixmap) + phys_offset) > >> PAGE_SHIFT); > pte.pt.table = 1; > write_pte(xen_second + second_table_offset(FIXMAP_ADDR(0)), pte); > /* > * No flush required here. Individual flushes are done in > * set_fixmap as entries are used. > */ > > /* Break up the Xen mapping into 4k pages and protect them separately. */ > for ( i = 0; i < LPAE_ENTRIES; i++ ) > { > unsigned long mfn = paddr_to_pfn(xen_paddr) + i; > unsigned long va = XEN_VIRT_START + (i << PAGE_SHIFT); > if ( !is_kernel(va) ) > break; > pte = mfn_to_xen_entry(mfn); > pte.pt.table = 1; /* 4k mappings always have this bit set */ > if ( is_kernel_text(va) || is_kernel_inittext(va) ) > { > pte.pt.xn = 0; > pte.pt.ro = 1; > } > if ( is_kernel_rodata(va) ) > pte.pt.ro = 1; > write_pte(xen_xenmap + i, pte); > /* No flush required here as page table is not hooked in yet. */ > } > pte = mfn_to_xen_entry((((unsigned long) xen_xenmap) + phys_offset) > >> PAGE_SHIFT); > pte.pt.table = 1; > write_pte(xen_second + second_linear_offset(XEN_VIRT_START), pte); > /* Have changed a mapping used for .text. Flush everything for safety. */ > flush_xen_text_tlb(); > > /* From now on, no mapping may be both writable and executable. */ > WRITE_CP32(READ_CP32(HSCTLR) | SCTLR_WXN, HSCTLR); > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |