[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 18/03/2013 10:55, "Jan Beulich" <JBeulich@xxxxxxxx> wrote: >>>> 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). I think I did intend pt_base == cr3 == first page-table page in the consecutive sequence of reserved pages on domain startup. -- Keir > 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |