[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.2-testing] hvm: Allocate an unmapped guard page to separate ordinary low RAM
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1200664313 0 # Node ID eb437e9fc19b2f7c73981be9254eb965d2e9e8f7 # Parent 148bb6e0f3ab113e44afea74f671b055de1a2c8d hvm: Allocate an unmapped guard page to separate ordinary low RAM from special pages (ioreq, xenstore, etc). This will stop some probe functions (e.g., embedded in memtest) from stomping on the special pages. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> xen-unstable changeset: 16728:be960a84e492c1baa0a2dfa76b1a770d0df5e433 xen-unstable date: Thu Jan 17 12:59:10 2008 +0000 --- tools/libxc/xc_hvm_build.c | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff -r 148bb6e0f3ab -r eb437e9fc19b tools/libxc/xc_hvm_build.c --- a/tools/libxc/xc_hvm_build.c Fri Jan 18 13:51:33 2008 +0000 +++ b/tools/libxc/xc_hvm_build.c Fri Jan 18 13:51:53 2008 +0000 @@ -77,13 +77,19 @@ static void build_e820map(void *e820_pag e820entry[nr_map].type = E820_RESERVED; nr_map++; - /* Low RAM goes here. Remove 3 pages for ioreq, bufioreq, and xenstore. */ + /* + * Low RAM goes here. Remove 4 pages for: ioreq, bufioreq, and xenstore. + * 1. Guard page. + * 2. Buffered ioreq. + * 3. Xenstore. + * 4. Normal ioreq. + */ e820entry[nr_map].addr = 0x100000; - e820entry[nr_map].size = mem_size - 0x100000 - PAGE_SIZE * 3; + e820entry[nr_map].size = mem_size - 0x100000 - PAGE_SIZE * 4; e820entry[nr_map].type = E820_RAM; nr_map++; - /* Explicitly reserve space for special pages (ioreq and xenstore). */ + /* Explicitly reserve space for special pages. */ e820entry[nr_map].addr = mem_size - PAGE_SIZE * 3; e820entry[nr_map].size = PAGE_SIZE * 3; e820entry[nr_map].type = E820_RESERVED; @@ -244,6 +250,15 @@ static int setup_guest(int xc_handle, else shared_page_nr = (v_end >> PAGE_SHIFT) - 1; + /* Free the guard page that separates low RAM from special pages. */ + rc = xc_domain_memory_decrease_reservation( + xc_handle, dom, 1, 0, &page_array[shared_page_nr-3]); + if ( rc != 0 ) + { + PERROR("Could not deallocate guard page for HVM guest.\n"); + goto error_out; + } + /* Paranoia: clean pages. */ if ( xc_clear_domain_page(xc_handle, dom, shared_page_nr) || xc_clear_domain_page(xc_handle, dom, shared_page_nr-1) || _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |