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@xxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |