|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xend: Update info['platform']['pci']
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@xxxxxxxxxxxxxAre there any others than the above? If there are others, I will confirm them.Best regards, KanOn 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, KanContent-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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |