WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] understanding __linear_l2_table and friends

To: Scott Parish <srparish@xxxxxxxxxx>
Subject: Re: [Xen-devel] understanding __linear_l2_table and friends
From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Date: Wed, 20 Apr 2005 11:05:02 +0100
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 20 Apr 2005 10:04:52 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: Your message of "Tue, 19 Apr 2005 23:03:51 -0000." <20050419230351.GA30256@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
They aren't actually used during domain building, but anyway: Xen uses
the common trick whereby each page directory maps itself. This means
that every page-table entry is mapped into the address space at some
virtual address. In fact, page directory entries (and PML3 and PML4
entries on x86/64) are also directly accessible in the virtual address
space. The macros below are expressions that evaluate to the correct
virtual addresses.

 -- Keir

> I was trying to understand the states behind domain creation, but i'm
> having troubles getting past this. Would someone mind saying a few
> words about what these are and (if still needed) why these calculations
> work for that?
> 
> xen/include/asm-x86/page.h:
>    #define linear_l1_table                                                 \
>        ((l1_pgentry_t *)(LINEAR_PT_VIRT_START))
>    #define __linear_l2_table                                                 \
>        ((l2_pgentry_t *)(LINEAR_PT_VIRT_START +                            \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<0))))
>    #define __linear_l3_table                                                 \
>        ((l3_pgentry_t *)(LINEAR_PT_VIRT_START +                            \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<0)) +   \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<1))))
>    #define __linear_l4_table                                                 \
>        ((l4_pgentry_t *)(LINEAR_PT_VIRT_START +                            \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<0)) +   \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<1)) +   \
>                         (LINEAR_PT_VIRT_START >> (PAGETABLE_ORDER<<2))))
>    
> Thanks!
> sRp
> 
> -- 
> Scott Parish
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
> 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel