[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.