WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Re: [Xen-changelog] [xen-unstable] xend: hot-plug PCI de

On Tue, Jun 02, 2009 at 10:52:39PM +1000, Simon Horman wrote:
> On Tue, Jun 02, 2009 at 07:31:35PM +0800, Cui, Dexuan wrote:
> > Cui, Dexuan wrote:
> > > Simon Horman wrote:
> > >> On Tue, Jun 02, 2009 at 04:38:17PM +0800, Cui, Dexuan wrote:
> > >>> Simon Horman wrote:
> > >>>> On Tue, Jun 02, 2009 at 01:05:16PM +0800, Cui, Dexuan wrote:
> > >> 
> > >> [snip]
> > >> 
> > >>>>> BTW, there is another bug with guest hotplug:
> > >>>>> After I create a guest without assigning any device to it, I can
> > >>>>> 'xm pci-attach' a device into the guest, but "xm pci-list" doesn't
> > >>>>> show the vslot info. Looks this issue is originally introduced by
> > >>>>> c/s 19510. Can you and Masaki Kanno have a look?
> > >>>> 
> > >>>> Yes, of course, I will look into it.
> > >>>> 
> > >>>> Which revisions of xen-unstable.hg and qemu-xen-unstable.git are
> > >>>> you using?
> > >>> I'm using the latest xen c/s 19696 and ioemu
> > >>> 72f4654095e0ac1539749b628e98f5e1569c9801 plus applying your patch
> > >>> manually now and can still reproduce it.
> > >> 
> > >> Are you booting an HVM domain?
> > >> I am not able to see this problem with the config below
> > >> and running the following commands to attach a device:
> > >> 
> > >> $ xm pci-list debian
> > >> $ xm pci-attach debian 01:00.0
> > >> $ xm pci-list debian
> > >> domain bus  slot func
> > >> 0x0000 0x01 0x00 0x0
> > > Here, I think the VSLT is missing?
> > 
> > I expect it should be something like:
> > 
> > $ xm pci-list debian
> > VSlt domain bus  slot func
> > 0x04 0x0000 0x01 0x00 0x0
> 
> Sorry, my mistake. I see the problem now. I will investigate.

Hi Dexuan,

can you see if the following resolves the problem that you are seeing?

----------------------------------------------------------------------

xend: pass-through: record the vslot of first pass-through device

Make sure that if a vslot is assigned to the first pass-through device
it is recorded and subsequently used by xm and xend.

e.g.:
$ xm pci-list debian
$ xm pci-attach debian 01:00.0
$ xm pci-list debian
VSlt domain bus  slot func
0x04 0x0000 0x01 0x00 0x0

Without this change the output of the last command is:
domain bus  slot func
0x0000 0x01 0x00 0x0

Thanks to Dexuan Cui for pointing this out. It appears to
be a regression introduced in change-set 'xm, xend: Replace "vslt" with "vslot"'
(19510:5c69f98c348e) and thus present in the 3.4.0 release.

Cc: Dexuan Cui <dexuan.cui@xxxxxxxxx>,
Cc: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
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-06-03 01:01:01.000000000 +1000
+++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py     2009-06-03 
01:02:03.000000000 +1000
@@ -762,6 +762,13 @@ class XendDomainInfo:
                 raise VmError(("Cannot pass-through PCI function '%s'. " +
                                "Device model reported an error: %s") %
                               (bdf_str, vslot))
+
+            # A vslot has been assigned if the result isn't AUTO_PHP_SLOT
+            # and the request contained 'requested_vslot'.
+            # If assignment has occured, update new_dev accordingly.
+            if vslot_int != AUTO_PHP_SLOT and 'requested_vslot' in new_dev:
+                new_dev['vslot'] = vslot
+                del new_dev['requested_vslot']
         else:
             vslot = new_dev['requested_vslot']
 
@@ -880,7 +887,9 @@ class XendDomainInfo:
 
         # If pci platform does not exist, create and exit.
         if existing_dev_info is None:
-            self.device_create(dev_sxp)
+            new_dev_sxp = self.info.pci_convert_dict_to_sxp(
+                    dev_config['devs'][0], pci_state, pci_sub_state)
+            self.device_create(new_dev_sxp)
             return True
 
         if self.domid is not None:

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

<Prev in Thread] Current Thread [Next in Thread>