All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] xend: Update info['platform']['pci']
@ 2009-05-28  7:01 Masaki Kanno
  2009-05-28 10:46 ` Simon Horman
  2009-06-01  6:01 ` Zhai, Edwin
  0 siblings, 2 replies; 8+ messages in thread
From: Masaki Kanno @ 2009-05-28  7:01 UTC (permalink / raw)
  To: xen-devel; +Cc: horms

[-- Attachment #1: Mail message body --]
[-- Type: text/plain, Size: 719 bytes --]

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@verge.net.au>
Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>

Best regards,
 Kan


[-- Attachment #2: update_platform_pci.patch --]
[-- Type: application/octet-stream, Size: 6279 bytes --]

diff -r fe68405201d2 tools/python/xen/util/pci.py
--- a/tools/python/xen/util/pci.py	Wed May 27 15:55:29 2009 +0100
+++ b/tools/python/xen/util/pci.py	Thu May 28 11:56:44 2009 +0900
@@ -14,6 +14,7 @@
 import time
 import threading
 from xen.util import utils
+from xen.xend import sxp
 
 PROC_PCI_PATH = '/proc/bus/pci/devices'
 PROC_PCI_NUM_RESOURCES = 7
@@ -140,10 +141,17 @@
     return (domain, bus, slot, func)
 
 def assigned_or_requested_vslot(dev):
-    if dev.has_key("vslot"):
-        return dev["vslot"]
-    if dev.has_key("requested_vslot"):
-        return dev["requested_vslot"]
+    if isinstance(dev, types.DictType):
+        if dev.has_key("vslot"):
+            return dev["vslot"]
+        if dev.has_key("requested_vslot"):
+            return dev["requested_vslot"]
+    elif isinstance(dev, (types.ListType, types.TupleType)):
+        vslot = sxp.child_value(dev, 'vslot', None)
+        if not vslot:
+            vslot = sxp.child_value(dev, 'requested_vslot', None)
+        if vslot:
+            return vslot
     raise PciDeviceVslotMissing("%s" % dev)
 
 def find_sysfs_mnt():
diff -r fe68405201d2 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py	Wed May 27 15:55:29 2009 +0100
+++ b/tools/python/xen/xend/XendConfig.py	Thu May 28 11:56:44 2009 +0900
@@ -37,6 +37,7 @@
 from xen.xend.server.BlktapController import blktap_disk_types
 from xen.xend.server.netif import randomMAC
 from xen.util.blkif import blkdev_name_to_number, blkdev_uname_to_file
+from xen.util.pci import assigned_or_requested_vslot
 from xen.util import xsconstants
 import xen.util.auxbin
 
@@ -2186,3 +2187,26 @@
 
     def is_hap(self):
         return self['platform'].get('hap', 0)
+
+    def update_platform_pci(self):
+        if not self.is_hvm():
+            return
+
+        pci = []
+        for dev_type, dev_info in self.all_devices_sxpr():
+            if dev_type != 'pci':
+                continue
+            for dev in sxp.children(dev_info, 'dev'):
+                domain = sxp.child_value(dev, 'domain')
+                bus = sxp.child_value(dev, 'bus')
+                slot = sxp.child_value(dev, 'slot')
+                func = sxp.child_value(dev, 'func')
+                vslot = assigned_or_requested_vslot(dev) 
+                opts = ''
+                for opt in sxp.child_value(dev, 'opts', []):
+                    if opts:
+                        opts += ','
+                    opts += '%s=%s' % (opt[0], str(opt[1]))
+                pci.append([domain, bus, slot, func, vslot, opts])
+        self['platform']['pci'] = pci
+
diff -r fe68405201d2 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py	Wed May 27 15:55:29 2009 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py	Thu May 28 11:56:44 2009 +0900
@@ -893,18 +893,9 @@
             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'):
@@ -923,18 +914,9 @@
             dev_uuid = sxp.child_value(existing_dev_info, 'uuid')
             self.info.device_update(dev_uuid, new_dev_sxp)
 
-            # If there is only 'vscsi' in new_dev_sxp, remove the config.
+            # If there is no device left, remove 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)
 
@@ -2463,6 +2445,7 @@
                               (self.getVCpuCount() * 100))
 
         # Test whether the devices can be assigned with VT-d
+        self.info.update_platform_pci()
         pci = self.info["platform"].get("pci")
         pci_str = ''
         if pci and len(pci) > 0:
diff -r fe68405201d2 tools/python/xen/xend/server/pciif.py
--- a/tools/python/xen/xend/server/pciif.py	Wed May 27 15:55:29 2009 +0100
+++ b/tools/python/xen/xend/server/pciif.py	Thu May 28 11:56:44 2009 +0900
@@ -223,6 +223,11 @@
                     except IndexError:
                         dev_dict['vslot'] = AUTO_PHP_SLOT_STR
 
+                #append opts info
+                opts = self.readBackend(devid, 'opts-%d' % i)
+                if opts is not None:
+                    dev_dict['opts'] = opts
+
                 pci_devs.append(dev_dict)
 
         result['devs'] = pci_devs
@@ -243,8 +248,14 @@
         
         for dev in devs:
             dev_sxpr = ['dev']
-            for dev_item in dev.items():
-                dev_sxpr.append(list(dev_item))
+            for dev_key, dev_val in dev.items():
+                if dev_key == 'opts':
+                    opts = []
+                    for opt in dev_val.split(','):
+                        opts.append(opt.split('='))
+                    dev_sxpr.append(['opts', opts])
+                else:
+                    dev_sxpr.append([dev_key, dev_val])
             sxpr.append(dev_sxpr)
         
         for key, val in configDict.items():

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] xend: Update info['platform']['pci']
  2009-05-28  7:01 [PATCH] xend: Update info['platform']['pci'] Masaki Kanno
@ 2009-05-28 10:46 ` Simon Horman
  2009-06-01  4:08   ` Masaki Kanno
  2009-06-01  6:01 ` Zhai, Edwin
  1 sibling, 1 reply; 8+ messages in thread
From: Simon Horman @ 2009-05-28 10:46 UTC (permalink / raw)
  To: Masaki Kanno; +Cc: xen-devel

On Thu, May 28, 2009 at 04:01:50PM +0900, Masaki Kanno wrote:
Content-Description: Mail message body
> 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.

Hi Kanno-san,

I am curious to know how you exercise this code.
Did you notice a bug under some conditions?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Re: [PATCH] xend: Update info['platform']['pci']
  2009-05-28 10:46 ` Simon Horman
@ 2009-06-01  4:08   ` Masaki Kanno
  2009-06-01  4:24     ` Simon Horman
  0 siblings, 1 reply; 8+ messages in thread
From: Masaki Kanno @ 2009-06-01  4:08 UTC (permalink / raw)
  To: Simon Horman; +Cc: xen-devel

Thu, 28 May 2009 20:46:31 +1000, Simon Horman wrote:

>On Thu, May 28, 2009 at 04:01:50PM +0900, Masaki Kanno wrote:
>Content-Description: Mail message body
>> 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.
>
>Hi Kanno-san,
>
>I am curious to know how you exercise this code.
>Did you notice a bug under some conditions?

Hi Simon,

Sorry for late response.

I noticed the bug when I tried the following operations.

 1) xm new vm1
 2) xm list --long vm1
    (domain
    <<snip>>
        (image
            (hvm
    <<snip>>
                (pci ((0x0 0x01 0x00 0x0 0x6 )))
 3) xm pci-attach vm1 00:1a.0 7
 4) xm list --long vm1
    (domain
    <<snip>>
        (image
            (hvm
    <<snip>>
                (pci ((0x0 0x01 0x00 0x0 0x6 )))

The value of /domain/image/hvm/pci is a value of info['platform']['pci'].
The value wasn't updated when I attached the PCI device to the domain by 
using xm pci-attach.

The value is updated by my patch.  Nonetheless, the value isn't still 
updated when xm pci-attach/detach are executed.  The value is updated 
when starting domains.

Best regards,
 Kan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Re: [PATCH] xend: Update info['platform']['pci']
  2009-06-01  4:08   ` Masaki Kanno
@ 2009-06-01  4:24     ` Simon Horman
  2009-06-01  5:50       ` Masaki Kanno
  0 siblings, 1 reply; 8+ messages in thread
From: Simon Horman @ 2009-06-01  4:24 UTC (permalink / raw)
  To: Masaki Kanno; +Cc: xen-devel

On Mon, Jun 01, 2009 at 01:08:09PM +0900, Masaki Kanno wrote:
> Thu, 28 May 2009 20:46:31 +1000, Simon Horman wrote:
> 
> >On Thu, May 28, 2009 at 04:01:50PM +0900, Masaki Kanno wrote:
> >Content-Description: Mail message body
> >> 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.
> >
> >Hi Kanno-san,
> >
> >I am curious to know how you exercise this code.
> >Did you notice a bug under some conditions?
> 
> Hi Simon,
> 
> Sorry for late response.
> 
> I noticed the bug when I tried the following operations.
> 
>  1) xm new vm1
>  2) xm list --long vm1
>     (domain
>     <<snip>>
>         (image
>             (hvm
>     <<snip>>
>                 (pci ((0x0 0x01 0x00 0x0 0x6 )))
>  3) xm pci-attach vm1 00:1a.0 7
>  4) xm list --long vm1
>     (domain
>     <<snip>>
>         (image
>             (hvm
>     <<snip>>
>                 (pci ((0x0 0x01 0x00 0x0 0x6 )))
> 
> The value of /domain/image/hvm/pci is a value of info['platform']['pci'].
> The value wasn't updated when I attached the PCI device to the domain by 
> using xm pci-attach.
> 
> The value is updated by my patch.  Nonetheless, the value isn't still 
> updated when xm pci-attach/detach are executed.  The value is updated 
> when starting domains.

Understood. Do you think that also needs to be fixed?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Re: [PATCH] xend: Update info['platform']['pci']
  2009-06-01  4:24     ` Simon Horman
@ 2009-06-01  5:50       ` Masaki Kanno
  0 siblings, 0 replies; 8+ messages in thread
From: Masaki Kanno @ 2009-06-01  5:50 UTC (permalink / raw)
  To: Simon Horman; +Cc: xen-devel

Mon, 1 Jun 2009 14:24:20 +1000, Simon Horman wrote:

>On Mon, Jun 01, 2009 at 01:08:09PM +0900, Masaki Kanno wrote:
>> Thu, 28 May 2009 20:46:31 +1000, Simon Horman wrote:
>> 
>> >On Thu, May 28, 2009 at 04:01:50PM +0900, Masaki Kanno wrote:
>> >Content-Description: Mail message body
>> >> 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.
>> >
>> >Hi Kanno-san,
>> >
>> >I am curious to know how you exercise this code.
>> >Did you notice a bug under some conditions?
>> 
>> Hi Simon,
>> 
>> Sorry for late response.
>> 
>> I noticed the bug when I tried the following operations.
>> 
>>  1) xm new vm1
>>  2) xm list --long vm1
>>     (domain
>>     <<snip>>
>>         (image
>>             (hvm
>>     <<snip>>
>>                 (pci ((0x0 0x01 0x00 0x0 0x6 )))
>>  3) xm pci-attach vm1 00:1a.0 7
>>  4) xm list --long vm1
>>     (domain
>>     <<snip>>
>>         (image
>>             (hvm
>>     <<snip>>
>>                 (pci ((0x0 0x01 0x00 0x0 0x6 )))
>> 
>> The value of /domain/image/hvm/pci is a value of info['platform']['pci'].
>> The value wasn't updated when I attached the PCI device to the domain by 
>> using xm pci-attach.
>> 
>> The value is updated by my patch.  Nonetheless, the value isn't still 
>> updated when xm pci-attach/detach are executed.  The value is updated 
>> when starting domains.
>
>Understood. Do you think that also needs to be fixed?

Hi Simon,

For now, I think that doesn't need to be fixed.

Best regards,
 Kan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] xend: Update info['platform']['pci']
  2009-05-28  7:01 [PATCH] xend: Update info['platform']['pci'] Masaki Kanno
  2009-05-28 10:46 ` Simon Horman
@ 2009-06-01  6:01 ` Zhai, Edwin
  2009-06-01  9:35   ` Masaki Kanno
  1 sibling, 1 reply; 8+ messages in thread
From: Zhai, Edwin @ 2009-06-01  6:01 UTC (permalink / raw)
  To: Masaki Kanno
  Cc: xen-devel@lists.xensource.com, Zhai, Edwin, horms@verge.net.au

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.

Thanks,


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@verge.net.au>
> Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
> 
> Best regards,
>  Kan
> 


Content-Description: ATT00001.txt
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel


-- 
best rgds,
edwin

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] xend: Update info['platform']['pci']
  2009-06-01  6:01 ` Zhai, Edwin
@ 2009-06-01  9:35   ` Masaki Kanno
  2009-06-01  9:54     ` Zhai, Edwin
  0 siblings, 1 reply; 8+ messages in thread
From: Masaki Kanno @ 2009-06-01  9:35 UTC (permalink / raw)
  To: Zhai, Edwin; +Cc: xen-devel@lists.xensource.com, horms@verge.net.au

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@XendDomainInfo.py
 - image_sxpr@XendConfig.py

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@verge.net.au>
>> Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
>> 
>> Best regards,
>>  Kan
>> 
>
>
>Content-Description: ATT00001.txt
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>
>
>-- 
>best rgds,
>edwin
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@lists.xensource.com
>http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] xend: Update info['platform']['pci']
  2009-06-01  9:35   ` Masaki Kanno
@ 2009-06-01  9:54     ` Zhai, Edwin
  0 siblings, 0 replies; 8+ messages in thread
From: Zhai, Edwin @ 2009-06-01  9:54 UTC (permalink / raw)
  To: Masaki Kanno; +Cc: xen-devel@lists.xensource.com, horms@verge.net.au

[-- Attachment #1: Type: text/plain, Size: 2325 bytes --]

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@XendDomainInfo.py
>  - image_sxpr@XendConfig.py
>
> 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@verge.net.au>
>>> Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
>>>
>>> Best regards,
>>>  Kan
>>>
>>>       
>> Content-Description: ATT00001.txt
>>     
>>> _______________________________________________
>>> Xen-devel mailing list
>>> Xen-devel@lists.xensource.com
>>> http://lists.xensource.com/xen-devel
>>>       
>> -- 
>> best rgds,
>> edwin
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>>     
>
>   

-- 
best rgds,
edwin


[-- Attachment #2: remove_pci_conf_r19597.patch --]
[-- Type: text/plain, Size: 3550 bytes --]

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,

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2009-06-01  9:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-28  7:01 [PATCH] xend: Update info['platform']['pci'] Masaki Kanno
2009-05-28 10:46 ` Simon Horman
2009-06-01  4:08   ` Masaki Kanno
2009-06-01  4:24     ` Simon Horman
2009-06-01  5:50       ` Masaki Kanno
2009-06-01  6:01 ` Zhai, Edwin
2009-06-01  9:35   ` Masaki Kanno
2009-06-01  9:54     ` Zhai, Edwin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.