[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] disallow duplicate pci device strings in guest config file
On Fri, May 15, 2009 at 07:31:23PM +0800, Cui, Dexuan wrote: > When we specify duplicate pci device strings in guest config file, like > pci=['01:00.0', '01:00.0'], or pci=['01:00.0', '0000:01:00.0'], or > pci=['01:00.0', '0000:01:00.0@7'], > xend doesn't detect this case and passes the pci string to ioemu and ioemu > invokes register_real_device() twice for the same physical device and this > could cause unexpected behavior. > > The patch detects this case and makes the domain construction fail. > > diff -r 40d4267296ad tools/python/xen/xend/server/pciif.py > --- a/tools/python/xen/xend/server/pciif.py Fri May 15 08:12:39 2009 +0100 > +++ b/tools/python/xen/xend/server/pciif.py Fri May 15 17:14:43 2009 +0800 > @@ -396,6 +396,9 @@ class PciController(DevController): > pci_str = '%04x:%02x:%02x.%01x' % (domain, bus, slot, func) > pci_str_list = pci_str_list + [pci_str] > pci_dev_list = pci_dev_list + [(domain, bus, slot, func)] > + > + if pci_str_list != list(set(pci_str_list)): > + raise VmError('pci: duplicate devices specified in guest > config?') > > for (domain, bus, slot, func) in pci_dev_list: > try: Hi Dexuan, Hi Keir, At a glance it seems that this might not be correct, as set() may not preserve the order of pci_str_list. However, as set will remove any duplicates, its probably sufficient to use: if len(pci_str_list) != len(set(pci_str_list): Some musings in code: # python >>> pci_str_list = [ "01:00.1", "01:00.0" ] >>> print pci_str_list ['01:00.1', '01:00.0'] >>> print set(pci_str_list) set(['01:00.0', '01:00.1']) >>> print list(set(pci_str_list)) ['01:00.0', '01:00.1'] >>> pci_str_list= [ "01:00.1", "01:00.0", "01:00.0" ] >>> print list(set(pci_str_list)) >>> print len(set(pci_str_list)) 2 >>> print len(pci_str_list) 3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |