# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID e33ebd1437675bc2a4a01f63de359783fc14653f
# Parent 70575c8cab99332d3836be101e6f3b6cf7228715
Tools changes for per-vcpu io event channel on IA64.
Signed-off-by Kevin Tian <Kevin.tian@xxxxxxxxx>
diff -r 70575c8cab99 -r e33ebd143767 tools/libxc/xc_ia64_stubs.c
--- a/tools/libxc/xc_ia64_stubs.c Fri Feb 24 07:49:32 2006
+++ b/tools/libxc/xc_ia64_stubs.c Fri Feb 24 09:29:09 2006
@@ -569,12 +569,14 @@
static int setup_guest( int xc_handle,
uint32_t dom, unsigned long memsize,
char *image, unsigned long image_size,
- unsigned int control_evtchn,
+ uint32_t vcpus,
unsigned int store_evtchn,
unsigned long *store_mfn)
{
unsigned long page_array[2];
shared_iopage_t *sp;
+ int i;
+
// FIXME: initialize pfn list for a temp hack
if (xc_ia64_get_pfn_list(xc_handle, dom, NULL, -1, -1) == -1) {
PERROR("Could not allocate continuous memory");
@@ -612,7 +614,18 @@
page_array[0])) == 0)
goto error_out;
memset(sp, 0, PAGE_SIZE);
- sp->sp_global.eport = control_evtchn;
+
+ for (i = 0; i < vcpus; i++) {
+ uint32_t vp_eport;
+
+ vp_eport = xc_evtchn_alloc_unbound(xc_handle, dom, 0);
+ if (vp_eport < 0) {
+ fprintf(stderr, "Couldn't get unbound port from VMX guest.\n");
+ goto error_out;
+ }
+ sp->vcpu_iodata[i].vp_eport = vp_eport;
+ }
+
munmap(sp, PAGE_SIZE);
return 0;
@@ -625,7 +638,6 @@
uint32_t domid,
int memsize,
const char *image_name,
- unsigned int control_evtchn,
unsigned int vcpus,
unsigned int pae,
unsigned int acpi,
@@ -668,8 +680,8 @@
memset(ctxt, 0, sizeof(*ctxt));
- if ( setup_guest(xc_handle, domid, (unsigned long)memsize, image,
image_size,
- control_evtchn, store_evtchn, store_mfn ) < 0 ){
+ if ( setup_guest(xc_handle, domid, (unsigned long)memsize, image,
+ image_size, vcpus, store_evtchn, store_mfn ) < 0 ){
ERROR("Error constructing guest OS");
goto error_out;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|