[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] xend: specify the slot for pass-through devices
Sorry, I should have noted in the subject of the original email that this is an rfc. In particular with regards to inclusion in 3.4. My opinion is that that it would be a good addition to 3.4. On Fri, Mar 20, 2009 at 09:55:03PM +1100, Simon Horman wrote: > Currently a slot may be specified for a hot-plug device, > but not for a pass-through device that is inserted at boot time. > This patch adds support for the latter. > > The syntax is: > BUS:DEV.FUNC[@VSLOT] > e.g: 0000:00:1d:0@7 > > This may be important as recent changes that allow any free PCI > slot to be used for pass-through (and hotplug) may case pass-through > devices to be assigned in different locations to before. Amongst > other things, specifying the slot will allow users to move them > back, if there is a need. > > There is also an ioemu portion of this patch, which will be posted separately. > > Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx> > > Index: xen-unstable.hg/tools/python/xen/xend/server/pciif.py > =================================================================== > --- xen-unstable.hg.orig/tools/python/xen/xend/server/pciif.py > 2009-03-20 21:41:12.000000000 +1100 > +++ xen-unstable.hg/tools/python/xen/xend/server/pciif.py 2009-03-20 > 21:41:15.000000000 +1100 > @@ -75,6 +75,7 @@ class PciController(DevController): > bus = parse_hex(pci_config.get('bus', 0)) > slot = parse_hex(pci_config.get('slot', 0)) > func = parse_hex(pci_config.get('func', 0)) > + vslot = parse_hex(pci_config.get('vslot', 0)) > > opts = pci_config.get('opts', '') > if len(opts) > 0: > Index: xen-unstable.hg/tools/python/xen/xm/create.py > =================================================================== > --- xen-unstable.hg.orig/tools/python/xen/xm/create.py 2009-03-20 > 21:41:12.000000000 +1100 > +++ xen-unstable.hg/tools/python/xen/xm/create.py 2009-03-20 > 21:41:15.000000000 +1100 > @@ -1,4 +1,4 @@ > -#============================================================================ > +#============================================================================UTO > # This library is free software; you can redistribute it and/or > # modify it under the terms of version 2.1 of the GNU Lesser General Public > # License as published by the Free Software Foundation. > @@ -32,6 +32,7 @@ from xen.xend import PrettyPrint as SXPP > from xen.xend import osdep > import xen.xend.XendClient > from xen.xend.XendBootloader import bootloader > +from xen.xend.XendConstants import * > from xen.xend.server.DevConstants import xenbusState > from xen.util import blkif > from xen.util import vscsi_util > @@ -322,10 +323,12 @@ gopts.var('disk', val='phy:DEV,VDEV,MODE > backend driver domain to use for the disk. > The option may be repeated to add more than one disk.""") > > -gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1][,power_mgmt=0|1]', > +gopts.var('pci', > val='BUS:DEV.FUNC[@VSLOT][,msitranslate=0|1][,power_mgmt=0|1]', > fn=append_value, default=[], > use="""Add a PCI device to a domain, using given params (in hex). > For example 'pci=c0:02.1'. > + If VSLOT is supplied the device will be inserted into that > + virtual slot in the guest, else a free slot is selected. > If msitranslate is set, MSI-INTx translation is enabled if > possible. > Guest that doesn't support MSI will get IO-APIC type IRQs > translated from physical MSI, HVM only. Default is 1. > @@ -696,7 +699,7 @@ def configure_pci(config_devs, vals): > """Create the config for pci devices. > """ > config_pci = [] > - for (domain, bus, slot, func, opts) in vals.pci: > + for (domain, bus, slot, func, vslot, opts) in vals.pci: > config_pci_opts = [] > d = comma_sep_kv_to_dict(opts) > > @@ -707,7 +710,7 @@ def configure_pci(config_devs, vals): > config_pci_opts.append([k, d[k]]) > > config_pci_bdf = ['dev', ['domain', domain], ['bus', bus], \ > - ['slot', slot], ['func', func]] > + ['slot', slot], ['func', func], ['vslot', vslot]] > map(f, d.keys()) > if len(config_pci_opts)>0: > config_pci_bdf.append(['opts', config_pci_opts]) > @@ -1054,16 +1057,21 @@ def preprocess_pci(vals): > r"(?P<bus>[0-9a-fA-F]{1,2})[:,]" + \ > r"(?P<slot>[0-9a-fA-F]{1,2})[.,]" + \ > r"(?P<func>[0-7])" + \ > - r"(,(?P<opts>.*))?$", pci_dev_str) > + r"(@(?P<vslot>[0-9a-fA-F]))?" + \ > + r"(,(?P<opts>.*))?$", \ > + pci_dev_str) > if pci_match!=None: > pci_dev_info = pci_match.groupdict('') > if pci_dev_info['domain']=='': > pci_dev_info['domain']='0' > + if pci_dev_info['vslot']=='': > + pci_dev_info['vslot']="%02x" % AUTO_PHP_SLOT > try: > pci.append( ('0x'+pci_dev_info['domain'], \ > '0x'+pci_dev_info['bus'], \ > '0x'+pci_dev_info['slot'], \ > '0x'+pci_dev_info['func'], \ > + '0x'+pci_dev_info['vslot'], \ > pci_dev_info['opts'])) > except IndexError: > err('Error in PCI slot syntax "%s"'%(pci_dev_str)) > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel -- Simon Horman VA Linux Systems Japan K.K., Sydney, Australia Satellite Office H: www.vergenet.net/~horms/ W: www.valinux.co.jp/en _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |