[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch V2 10/15] xen: check pre-allocated page tables for conflict with memory map
On 09/04/2015 07:55, Juergen Gross wrote: > Check whether the page tables built by the domain builder are at > memory addresses which are in conflict with the target memory map. > If this is the case just panic instead of running into problems > later. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> > --- > arch/x86/xen/mmu.c | 19 ++++++++++++++++--- > arch/x86/xen/setup.c | 6 ++++++ > arch/x86/xen/xen-ops.h | 1 + > 3 files changed, 23 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c > index 1ca5197..41aeb1c 100644 > --- a/arch/x86/xen/mmu.c > +++ b/arch/x86/xen/mmu.c > @@ -116,6 +116,7 @@ static pud_t level3_user_vsyscall[PTRS_PER_PUD] > __page_aligned_bss; > DEFINE_PER_CPU(unsigned long, xen_cr3); /* cr3 stored as physaddr */ > DEFINE_PER_CPU(unsigned long, xen_current_cr3); /* actual vcpu cr3 */ > > +static phys_addr_t xen_pt_base, xen_pt_size; These be __init, but the use of globals in this way is confusing. > > /* > * Just beyond the highest usermode address. STACK_TOP_MAX has a > @@ -1998,7 +1999,9 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, > unsigned long max_pfn) > check_pt_base(&pt_base, &pt_end, addr[i]); > > /* Our (by three pages) smaller Xen pagetable that we are using */ > - memblock_reserve(PFN_PHYS(pt_base), (pt_end - pt_base) * PAGE_SIZE); > + xen_pt_base = PFN_PHYS(pt_base); > + xen_pt_size = (pt_end - pt_base) * PAGE_SIZE; > + memblock_reserve(xen_pt_base, xen_pt_size); Why not provide a xen_memblock_check_and_reserve() call that has the xen_is_e820_reserved() check and the memblock_reserve() call? This may also be useful for patch #9 as well. > +void __init xen_pt_check_e820(void) > +{ > + if (xen_chk_e820_reserved(xen_pt_base, xen_pt_size)) { > + xen_raw_console_write("Xen hypervisor allocated page table > memory conflicts with E820 map\n"); > + BUG(); > + } > +} > + > static unsigned char dummy_mapping[PAGE_SIZE] __page_aligned_bss; David _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |