mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
Merged.
This commit is contained in:
commit
ff9465e411
116 files changed
+3690
-1399
No files matched your search
@@ -438,19 +438,20 @@ static PyObject *pyxc_vmx_build(PyObject *self,
|
||||
char *image;
|
||||
int control_evtchn, store_evtchn;
|
||||
int vcpus = 1;
|
||||
int lapic = 0;
|
||||
int memsize;
|
||||
unsigned long store_mfn = 0;
|
||||
|
||||
static char *kwd_list[] = { "dom", "control_evtchn", "store_evtchn",
|
||||
"memsize", "image", "vcpus", NULL };
|
||||
"memsize", "image", "lapic", "vcpus", NULL };
|
||||
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiisi", kwd_list,
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "iiiisii", kwd_list,
|
||||
&dom, &control_evtchn, &store_evtchn,
|
||||
&memsize, &image, &vcpus) )
|
||||
&memsize, &image, &lapic, &vcpus) )
|
||||
return NULL;
|
||||
|
||||
if ( xc_vmx_build(xc->xc_handle, dom, memsize, image, control_evtchn,
|
||||
vcpus, store_evtchn, &store_mfn) != 0 )
|
||||
lapic, vcpus, store_evtchn, &store_mfn) != 0 )
|
||||
return PyErr_SetFromErrno(xc_error);
|
||||
|
||||
return Py_BuildValue("{s:i}", "store_mfn", store_mfn);
|
||||
|
||||
@@ -99,7 +99,7 @@ def listenTCP(port, factory, interface='', backlog=None):
|
||||
return l
|
||||
|
||||
def SetCloExec(SocketListener):
|
||||
SocketListener.SetCloExec()
|
||||
SocketListener.setCloExec()
|
||||
|
||||
def connectTCP(host, port, factory, timeout=None, bindAddress=None):
|
||||
c = TCPConnector(host, port, factory, timeout=timeout, bindAddress=bindAddress)
|
||||
|
||||
@@ -203,6 +203,10 @@ class VmxImageHandler(ImageHandler):
|
||||
|
||||
self.dmargs += self.configVNC(imageConfig)
|
||||
|
||||
self.lapic = 0
|
||||
lapic = sxp.child_value(imageConfig, 'lapic')
|
||||
if not lapic is None:
|
||||
self.lapic = int(lapic)
|
||||
|
||||
def buildDomain(self):
|
||||
# Create an event channel
|
||||
@@ -217,6 +221,7 @@ class VmxImageHandler(ImageHandler):
|
||||
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("lapic = %d", self.lapic)
|
||||
log.debug("vcpus = %d", self.vm.getVCpuCount())
|
||||
|
||||
return xc.vmx_build(dom = self.vm.getDomid(),
|
||||
@@ -224,6 +229,7 @@ class VmxImageHandler(ImageHandler):
|
||||
control_evtchn = self.device_channel,
|
||||
store_evtchn = store_evtchn,
|
||||
memsize = self.vm.getMemoryTarget() / 1024,
|
||||
lapic = self.lapic,
|
||||
vcpus = self.vm.getVCpuCount())
|
||||
|
||||
|
||||
@@ -342,12 +348,15 @@ class VmxImageHandler(ImageHandler):
|
||||
|
||||
def getDomainMemory(self, mem):
|
||||
"""@see ImageHandler.getDomainMemory"""
|
||||
page_kb = 4
|
||||
if os.uname()[4] == 'ia64':
|
||||
page_kb = 16
|
||||
# for ioreq_t and xenstore
|
||||
static_pages = 2
|
||||
return mem + self.getPageTableSize(mem / 1024) + 4 * static_pages
|
||||
return mem + (self.getPageTableSize(mem / 1024) + static_pages) * page_kb
|
||||
|
||||
def getPageTableSize(self, mem_mb):
|
||||
"""Return the size of memory needed for 1:1 page tables for physical
|
||||
"""Return the pages of memory needed for 1:1 page tables for physical
|
||||
mode.
|
||||
|
||||
@param mem_mb: size in MB
|
||||
@@ -355,13 +364,13 @@ class VmxImageHandler(ImageHandler):
|
||||
"""
|
||||
# 1 page for the PGD + 1 pte page for 4MB of memory (rounded)
|
||||
if os.uname()[4] == 'x86_64':
|
||||
return (5 + ((mem_mb + 1) >> 1)) * 4
|
||||
return 5 + ((mem_mb + 1) >> 1)
|
||||
elif os.uname()[4] == 'ia64':
|
||||
# XEN/IA64 has p2m table allocated on demand, so only return
|
||||
# guest firmware size here.
|
||||
return 16 * 1024
|
||||
# 1:1 pgtable is allocated on demand ia64, so just return rom size
|
||||
# for guest firmware
|
||||
return 1024
|
||||
else:
|
||||
return (1 + ((mem_mb + 3) >> 2)) * 4
|
||||
return 1 + ((mem_mb + 3) >> 2)
|
||||
|
||||
|
||||
"""Table of image handler classes for virtual machine images. Indexed by
|
||||
|
||||
@@ -192,4 +192,5 @@ def listenEvent(daemon):
|
||||
if xroot.get_xend_http_server():
|
||||
port = xroot.get_xend_event_port()
|
||||
interface = xroot.get_xend_address()
|
||||
tcp.listenTCP(port, factory, interface=interface)
|
||||
l = tcp.listenTCP(port, factory, interface=interface)
|
||||
l.setCloExec()
|
||||
Whitespace-only changes.
@@ -157,6 +157,10 @@ gopts.var('cpu', val='CPU',
|
||||
fn=set_int, default=None,
|
||||
use="CPU to run the domain on.")
|
||||
|
||||
gopts.var('lapic', val='LAPIC',
|
||||
fn=set_int, default=0,
|
||||
use="Disable or enable local APIC of VMX domain.")
|
||||
|
||||
gopts.var('vcpus', val='VCPUS',
|
||||
fn=set_int, default=1,
|
||||
use="# of Virtual CPUS in domain.")
|
||||
@@ -315,10 +319,6 @@ gopts.var('nfs_root', val="PATH",
|
||||
fn=set_value, default=None,
|
||||
use="Set the path of the root NFS directory.")
|
||||
|
||||
gopts.var('memmap', val='FILE',
|
||||
fn=set_value, default='',
|
||||
use="Path to memap SXP file.")
|
||||
|
||||
gopts.var('device_model', val='FILE',
|
||||
fn=set_value, default='',
|
||||
use="Path to device model program.")
|
||||
@@ -556,9 +556,9 @@ def configure_vfr(config, vals):
|
||||
def configure_vmx(config_image, vals):
|
||||
"""Create the config for VMX devices.
|
||||
"""
|
||||
args = [ 'memmap', 'device_model', 'vcpus', 'cdrom',
|
||||
'boot', 'fda', 'fdb', 'localtime', 'serial', 'macaddr', 'stdvga',
|
||||
'isa', 'nographic', 'vnc', 'vncviewer', 'sdl', 'display', 'ne2000']
|
||||
args = [ 'device_model', 'vcpus', 'cdrom', 'boot', 'fda', 'fdb',
|
||||
'localtime', 'serial', 'macaddr', 'stdvga', 'isa', 'nographic',
|
||||
'vnc', 'vncviewer', 'sdl', 'display', 'ne2000', 'lapic']
|
||||
for a in args:
|
||||
if (vals.__dict__[a]):
|
||||
config_image.append([a, vals.__dict__[a]])
|
||||
|
||||
@@ -61,6 +61,8 @@ xm common subcommands:
|
||||
top monitor system and domains in real-time
|
||||
unpause <DomId> unpause a paused domain
|
||||
|
||||
<DomName> can be substituted for <DomId> in xm subcommands.
|
||||
|
||||
For a complete list of subcommands run 'xm help --long'
|
||||
For more help on xm see the xm(1) man page
|
||||
For more help on xm create, see the xmdomain.cfg(5) man page"""
|
||||
@@ -119,6 +121,8 @@ xm full list of subcommands:
|
||||
vnet-create <config> create a vnet from a config file
|
||||
vnet-delete <vnetid> delete a vnet
|
||||
|
||||
<DomName> can be substituted for <DomId> in xm subcommands.
|
||||
|
||||
For a short list of subcommands run 'xm help'
|
||||
For more help on xm see the xm(1) man page
|
||||
For more help on xm create, see the xmdomain.cfg(5) man page"""
|
||||
|
||||