Simon Horman
2009-Feb-19 06:59 UTC
[Xen-devel] [patch] align periodic vtds only if hypervisor support is present
Allow xend to work with hypervisors that don''t support alignment of
periodic vtds.
I''m not sure if there is any interest in this, but it allows older (pre
20109:d9480422034b "hvm: Align periodic vpts") hypervisors when used
with
newer (>= 20109) xend.
Signed-off-by: Simon Horman <horms@verge.net.au>
Index: xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py
==================================================================---
xen-unstable.hg.orig/tools/python/xen/xend/XendDomainInfo.py 2009-02-19
17:17:48.000000000 +1100
+++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py 2009-02-19
17:53:50.000000000 +1100
@@ -898,15 +898,21 @@ class XendDomainInfo:
else:
cur_dev_sxp = self._getDeviceInfo_vscsi(req_devid, None)
new_dev_sxp = [''vscsi'']
+ cur_mode = sxp.children(cur_dev_sxp,
''feature-host'')[0]
+ new_dev_sxp.append(cur_mode)
+
for cur_dev in sxp.children(cur_dev_sxp, ''dev''):
if state == xenbusState[''Closing'']:
+ if int(cur_mode[1]) == 1:
+ continue
cur_dev_vdev = sxp.child_value(cur_dev,
''v-dev'')
if cur_dev_vdev == dev[''v-dev'']:
continue
new_dev_sxp.append(cur_dev)
if state == xenbusState[''Initialising'']:
- new_dev_sxp.append(sxp.child0(dev_sxp,
''dev''))
+ for new_dev in sxp.children(dev_sxp, ''dev''):
+ new_dev_sxp.append(new_dev)
dev_uuid = sxp.child_value(cur_dev_sxp, ''uuid'')
self.info.device_update(dev_uuid, new_dev_sxp)
@@ -1112,7 +1118,8 @@ class XendDomainInfo:
vscsi_dev.append([''frontstate'',
None])
vscsi_devs[1].append(vscsi_dev)
dev_num = int(sxp.child_value(vscsi_dev,
''devid''))
- sxprs.append([dev_num, [vscsi_devs]])
+ vscsi_mode = sxp.children(dev_info,
''feature-host'')[0]
+ sxprs.append([dev_num, [vscsi_devs, vscsi_mode]])
elif deviceClass == ''vbd'':
dev = sxp.child_value(dev_info, ''dev'')
if ''ioemu:'' in dev:
@@ -2240,8 +2247,10 @@ class XendDomainInfo:
# Optionally enable periodic vpt aligning
vpt_align = self.info["platform"].get("vpt_align")
if hvm and vpt_align is not None:
- xc.hvm_set_param(self.domid, HVM_PARAM_VPT_ALIGN,
- long(vpt_align))
+ try:
+ xc.hvm_set_param(self.domid, HVM_PARAM_VPT_ALIGN, vpt_align_l)
+ except Exception, e:
+ log.warn(''Hypervisor does not support
HVM_PARAM_VPT_ALIGN\n'')
# Set maximum number of vcpus in domain
xc.domain_max_vcpus(self.domid,
int(self.info[''VCPUs_max'']))
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Simon Horman
2009-Feb-19 23:51 UTC
Re: [Xen-devel] [patch] align periodic vtds only if hypervisor support is present
Allow xend to work with hypervisors that don''t support alignment of
periodic vtds.
I''m not sure if there is any interest in this, but it allows older (pre
20109:d9480422034b "hvm: Align periodic vpts") hypervisors when used
with
newer (>= 20109) xend.
Signed-off-by: Simon Horman <horms@verge.net.au>
---
There was some noise in the previous patch I posted, apologies for that.
Index: xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py
==================================================================---
xen-unstable.hg.orig/tools/python/xen/xend/XendDomainInfo.py 2009-02-20
10:18:41.000000000 +1100
+++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py 2009-02-20
10:21:13.000000000 +1100
@@ -2247,8 +2247,10 @@ class XendDomainInfo:
# Optionally enable periodic vpt aligning
vpt_align = self.info["platform"].get("vpt_align")
if hvm and vpt_align is not None:
- xc.hvm_set_param(self.domid, HVM_PARAM_VPT_ALIGN,
- long(vpt_align))
+ try:
+ xc.hvm_set_param(self.domid, HVM_PARAM_VPT_ALIGN, vpt_align_l)
+ except Exception, e:
+ log.warn(''Hypervisor does not support
HVM_PARAM_VPT_ALIGN\n'')
# Set maximum number of vcpus in domain
xc.domain_max_vcpus(self.domid,
int(self.info[''VCPUs_max'']))
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel