aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-02-27 15:34:24 +0000
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-02-27 15:34:24 +0000
commite60659a59bf12208a1316dd02c00f18411015db7 (patch)
treeb73c099506c7a3e1b6c1703d5d6f5457f4c107b0 /tools
parentcfb8ffa9f965e05009e03e1c6852df65c48a0033 (diff)
downloadxen-e60659a59bf12208a1316dd02c00f18411015db7.tar.gz
xen-e60659a59bf12208a1316dd02c00f18411015db7.tar.bz2
xen-e60659a59bf12208a1316dd02c00f18411015db7.zip
Accelerate IDE PIO on HVM/IA64 [2/3]
Add one more page to the guest for IDE PIO. Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/libxc/ia64/xc_ia64_hvm_build.c12
-rw-r--r--tools/python/xen/xend/image.py4
2 files changed, 12 insertions, 4 deletions
diff --git a/tools/libxc/ia64/xc_ia64_hvm_build.c b/tools/libxc/ia64/xc_ia64_hvm_build.c
index 270a6f67a2..7beddddf32 100644
--- a/tools/libxc/ia64/xc_ia64_hvm_build.c
+++ b/tools/libxc/ia64/xc_ia64_hvm_build.c
@@ -569,6 +569,7 @@ setup_guest(int xc_handle, uint32_t dom, unsigned long memsize,
xen_pfn_t *pfn_list;
shared_iopage_t *sp;
void *ioreq_buffer_page;
+ void *pio_buffer_page;
unsigned long dom_memsize = memsize << 20;
unsigned long nr_pages = memsize << (20 - PAGE_SHIFT);
unsigned long vcpus;
@@ -628,9 +629,10 @@ setup_guest(int xc_handle, uint32_t dom, unsigned long memsize,
pfn_list[0] = IO_PAGE_START >> PAGE_SHIFT;
pfn_list[1] = STORE_PAGE_START >> PAGE_SHIFT;
- pfn_list[2] = BUFFER_IO_PAGE_START >> PAGE_SHIFT;
+ pfn_list[2] = BUFFER_IO_PAGE_START >> PAGE_SHIFT;
+ pfn_list[3] = BUFFER_PIO_PAGE_START >> PAGE_SHIFT;
- rc = xc_domain_memory_populate_physmap(xc_handle, dom, 3,
+ rc = xc_domain_memory_populate_physmap(xc_handle, dom, 4,
0, 0, &pfn_list[0]);
if (rc != 0) {
PERROR("Could not allocate IO page or store page or buffer io page.\n");
@@ -684,6 +686,12 @@ setup_guest(int xc_handle, uint32_t dom, unsigned long memsize,
pfn_list[2]);
memset(ioreq_buffer_page,0,PAGE_SIZE);
munmap(ioreq_buffer_page, PAGE_SIZE);
+
+ pio_buffer_page = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE,
+ PROT_READ | PROT_WRITE,
+ pfn_list[3]);
+ memset(pio_buffer_page,0,PAGE_SIZE);
+ munmap(pio_buffer_page, PAGE_SIZE);
free(pfn_list);
return 0;
diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py
index d6aa9182de..ec3ce1fe30 100644
--- a/tools/python/xen/xend/image.py
+++ b/tools/python/xen/xend/image.py
@@ -572,8 +572,8 @@ class IA64_HVM_ImageHandler(HVMImageHandler):
def getRequiredAvailableMemory(self, mem_kb):
page_kb = 16
- # ROM size for guest firmware, ioreq page and xenstore page
- extra_pages = 1024 + 3
+ # ROM size for guest firmware, ioreq page, pio page and xenstore page
+ extra_pages = 1024 + 4
return mem_kb + extra_pages * page_kb
def getRequiredInitialReservation(self):