[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 5/6] docs: Document start_info changes in Xen 4.2.



>>> On 15.03.13 at 20:51, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
> The  25833:bb85bbccb1c9. "x86/32-on-64: adjust Dom0 initial page table layout"
> fixes a bug in the reported value of pt_base versus where the page tables
> actually start. This documents this in the start of the world header note.
> 
> This clarifies the implied understanding that the page table space is
> pointed by pt_base. As in it is ".. implied that the range of page-tables
> is the range [pt_base, pt_base + nr_pt_frames), whereas that that range
> here indeed is [pt_base - 2, pt_base -2 + nr_pt_frames)" (Jan Beulich).
> 
> Also make it crystal clear that pt_base == %cr3.

Question is - do we really want this? While I provided aforementioned
fix, I was never really convinced whether it was the hypervisor or
the kernel that misbehaved here. It just was so that dealing with this
on the hypervisor side was much easier.

Perhaps Keir would remember what the original intentions (if any)
were regarding the page table layout (i.e. whether the above
equality was really intended).

Jan

> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> ---
>  xen/include/public/xen.h | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
> index 73fd7e7..4dd9615 100644
> --- a/xen/include/public/xen.h
> +++ b/xen/include/public/xen.h
> @@ -693,7 +693,7 @@ typedef struct shared_info shared_info_t;
>   *      c. list of allocated page frames [mfn_list, nr_pages]
>   *         (unless relocated due to XEN_ELFNOTE_INIT_P2M)
>   *      d. start_info_t structure        [register ESI (x86)]
> - *      e. bootstrap page tables         [pt_base, CR3 (x86)]
> + *      e. bootstrap page tables         [pt_base and CR3 (x86)]
>   *      f. bootstrap stack               [register ESP (x86)]
>   *  4. Bootstrap elements are packed together, but each is 4kB-aligned.
>   *  5. The initial ram disk may be omitted.
> @@ -705,6 +705,16 @@ typedef struct shared_info shared_info_t;
>   *  8. There is guaranteed to be at least 512kB padding after the final
>   *     bootstrap element. If necessary, the bootstrap virtual region is
>   *     extended by an extra 4MB to ensure this.
> + *
> + * Note: Prior to 25833:bb85bbccb1c9. ("x86/32-on-64 adjust Dom0 initial page
> + * table layout") a bug caused the pt_base (3.e above) and cr3 to not point
> + * to the start of the guest page tables (it was offset by two pages).
> + * This only manifested itself on 32-on-64 dom0 kernels and not 32-on-64 domU
> + * or 64-bit kernels of any colour. The page tables for a 32-on-64 dom0 got
> + * allocated in the order: 'first L1','first L2', 'first L3', so the offset
> + * to the page table base is by two pages back. The initial domain if it is
> + * 32-bit and runs under a 64-bit hypervisor should _NOT_ use two of the
> + * pages preceding pt_base and mark them as reserved/unused.
>   */
>  
>  #define MAX_GUEST_CMDLINE 1024
> -- 
> 1.8.0.2
> 
> 
> _______________________________________________
> 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®.