mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
Per-vcpu IO evtchn patch for HVM domain.
We are starting to send patches to support SMP VMX guest. Signed-off-by: Xin Li <xin.b.li@intel.com>
This commit is contained in:
1 parent
d7f4473fae
commit
bb86d19e6e
21 files changed
+128
-96
No files matched your search
@@ -363,7 +363,7 @@ static PyObject *pyxc_hvm_build(XcObject *self,
|
||||
{
|
||||
uint32_t dom;
|
||||
char *image;
|
||||
int control_evtchn, store_evtchn;
|
||||
int store_evtchn;
|
||||
int memsize;
|
||||
int vcpus = 1;
|
||||
int pae = 0;
|
||||
@@ -371,15 +371,15 @@ static PyObject *pyxc_hvm_build(XcObject *self,
|
||||
int apic = 0;
|
||||
unsigned long store_mfn = 0;
|
||||
|
||||
static char *kwd_list[] = { "dom", "control_evtchn", "store_evtchn",
|
||||
static char *kwd_list[] = { "dom", "store_evtchn",
|
||||
"memsize", "image", "vcpus", "pae", "acpi", "apic",
|
||||
NULL };
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiisiiii", kwd_list,
|
||||
&dom, &control_evtchn, &store_evtchn,
|
||||
&memsize, &image, &vcpus, &pae, &acpi, &apic) )
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiisiiii", kwd_list,
|
||||
&dom, &store_evtchn, &memsize,
|
||||
&image, &vcpus, &pae, &acpi, &apic) )
|
||||
return NULL;
|
||||
|
||||
if ( xc_hvm_build(self->xc_handle, dom, memsize, image, control_evtchn,
|
||||
if ( xc_hvm_build(self->xc_handle, dom, memsize, image,
|
||||
vcpus, pae, acpi, apic, store_evtchn, &store_mfn) != 0 )
|
||||
return PyErr_SetFromErrno(xc_error);
|
||||
|
||||
|
||||
@@ -205,7 +205,6 @@ class HVMImageHandler(ImageHandler):
|
||||
("image/device-model", self.device_model),
|
||||
("image/display", self.display))
|
||||
|
||||
self.device_channel = None
|
||||
self.pid = 0
|
||||
|
||||
self.dmargs += self.configVNC(imageConfig)
|
||||
@@ -216,16 +215,10 @@ class HVMImageHandler(ImageHandler):
|
||||
self.apic = int(sxp.child_value(imageConfig, 'apic', 0))
|
||||
|
||||
def buildDomain(self):
|
||||
# Create an event channel
|
||||
self.device_channel = xc.evtchn_alloc_unbound(dom=self.vm.getDomid(),
|
||||
remote_dom=0)
|
||||
log.info("HVM device model port: %d", self.device_channel)
|
||||
|
||||
store_evtchn = self.vm.getStorePort()
|
||||
|
||||
log.debug("dom = %d", self.vm.getDomid())
|
||||
log.debug("image = %s", self.kernel)
|
||||
log.debug("control_evtchn = %d", self.device_channel)
|
||||
log.debug("store_evtchn = %d", store_evtchn)
|
||||
log.debug("memsize = %d", self.vm.getMemoryTarget() / 1024)
|
||||
log.debug("vcpus = %d", self.vm.getVCpuCount())
|
||||
@@ -237,7 +230,6 @@ class HVMImageHandler(ImageHandler):
|
||||
|
||||
return xc.hvm_build(dom = self.vm.getDomid(),
|
||||
image = self.kernel,
|
||||
control_evtchn = self.device_channel,
|
||||
store_evtchn = store_evtchn,
|
||||
memsize = self.vm.getMemoryTarget() / 1024,
|
||||
vcpus = self.vm.getVCpuCount(),
|
||||
@@ -345,7 +337,6 @@ class HVMImageHandler(ImageHandler):
|
||||
if len(vnc):
|
||||
args = args + vnc
|
||||
args = args + ([ "-d", "%d" % self.vm.getDomid(),
|
||||
"-p", "%d" % self.device_channel,
|
||||
"-m", "%s" % (self.vm.getMemoryTarget() / 1024)])
|
||||
args = args + self.dmargs
|
||||
env = dict(os.environ)
|
||||
|
||||