Masaki,
Attached is my patch to fix another bug caused by wrong synchronization
of info['platform']['pci']. Just FYI. I don't know if it still can apply
on unstable. We also need make sure old saved image can be restored with
this fix.
Thanks,
Masaki Kanno wrote:
Mon, 1 Jun 2009 14:01:58 +0800, "Zhai, Edwin" wrote:
Masaki,
How about removing the 'pci' config from the info['platform']? We already
have
the info['devices'] to kept the pci/vif/disk config, so duplicated info in
['platform']['pci'] would cause synchronization troubles.
There are only several places using info['platform']['pci'], so take place
of
them with _getDeviceInfo_pci('0') should be okay.
Hi Edwin,
As far as I know, info['platform']['pci'] is referred in the following
places.
- _constructDomain@xxxxxxxxxxxxxxxxx
- image_sxpr@xxxxxxxxxxxxx
Are there any others than the above? If there are others, I will
confirm them.
Best regards,
Kan
On Thu, May 28, 2009 at 03:01:50PM +0800, Masaki Kanno wrote:
Hi,
This patch updates info['platform']['pci'] for PCI devices assignment
to domains.
When a domain is started, xend confirms by using xc.test_assign_device
whether PCI devices can be assigned to the domain.
For the confirmation, info['platform']['pci'] must be an appropriate
value. However, info['platform']['pci'] may be not appropriate.
Because info['platform']['pci'] isn't almost always updated even if
the PCI device configuration of the domain was changed by using
xm pci-attach/detach.
This patch updates info['platform']['pci'] to the appropriate value
when domains are started.
Cc: Simon Horman <horms@xxxxxxxxxxxx>
Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Best regards,
Kan
Content-Description: ATT00001.txt
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
--
best rgds,
edwin
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
--
best rgds,
edwin
Index: hv/tools/python/xen/xend/XendDomainInfo.py
===================================================================
--- hv.orig/tools/python/xen/xend/XendDomainInfo.py
+++ hv/tools/python/xen/xend/XendDomainInfo.py
@@ -851,18 +851,9 @@ class XendDomainInfo:
if num_devs == 0:
if self.info.is_hvm():
self.destroyDevice('pci', devid, True)
- del self.info['devices'][dev_uuid]
- platform = self.info['platform']
- orig_dev_num = len(platform['pci'])
- # TODO: can use this to keep some info to ask high level
- # management tools to hot insert a new passthrough dev
- # after migration
- if orig_dev_num != 0:
- #platform['pci'] = ["%dDEVs" % orig_dev_num]
- platform['pci'] = []
else:
self.destroyDevice('pci', devid)
- del self.info['devices'][dev_uuid]
+ del self.info['devices'][dev_uuid]
else:
new_dev_sxp = ['pci']
for cur_dev in sxp.children(existing_dev_info, 'dev'):
@@ -884,15 +875,6 @@ class XendDomainInfo:
# If there is only 'vscsi' in new_dev_sxp, remove the config.
if len(sxp.children(new_dev_sxp, 'dev')) == 0:
del self.info['devices'][dev_uuid]
- if self.info.is_hvm():
- platform = self.info['platform']
- orig_dev_num = len(platform['pci'])
- # TODO: can use this to keep some info to ask high level
- # management tools to hot insert a new passthrough dev
- # after migration
- if orig_dev_num != 0:
- #platform['pci'] = ["%dDEVs" % orig_dev_num]
- platform['pci'] = []
xen.xend.XendDomain.instance().managed_config_save(self)
@@ -2388,11 +2370,18 @@ class XendDomainInfo:
(self.getVCpuCount() * 100))
# Test whether the devices can be assigned with VT-d
- pci = self.info["platform"].get("pci")
pci_str = ''
- if pci and len(pci) > 0:
- pci = map(lambda x: x[0:4], pci) # strip options
- pci_str = str(pci)
+ pci_list = []
+ devid = '0'
+ dev_info = self._getDeviceInfo_pci(devid)
+ if dev_info is not None:
+ dev_uuid = sxp.child_value(dev_info, 'uuid')
+ pci_conf = self.info['devices'][dev_uuid][1]
+ pci_devs = pci_conf['devs']
+ for x in pci_devs:
+ pci_list.append([x['domain'], x['bus'], x['slot'], x['func']])
+ pci_str = str(pci_list)
+
if hvm and pci_str:
bdf = xc.test_assign_device(0, pci_str)
if bdf != 0:
Index: hv/tools/python/xen/xend/XendConfig.py
===================================================================
--- hv.orig/tools/python/xen/xend/XendConfig.py
+++ hv/tools/python/xen/xend/XendConfig.py
@@ -163,7 +163,6 @@ XENAPI_PLATFORM_CFG_TYPES = {
'vncpasswd': str,
'vncunused': int,
'xauthority': str,
- 'pci': str,
'vhpt': int,
'guest_os_type': str,
'hap': int,
@@ -214,7 +213,6 @@ XENAPI_CFG_TYPES = {
'other_config': dict,
'target': int,
'security_label': str,
- 'pci': str,
'cpuid' : dict,
'cpuid_check' : dict,
'machine_address_size': int,
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|