[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] RE: [Xen-changelog] [xen-unstable] xend: specify the slot for pass-through devices
Hi Simon, Did you actually test your patch and verify it works? -- It doesn't work at least in my side. For a statically assigned device ("a pass-through device that is inserted at boot time"), needn't we modify ioemu to handle the vslot info properly? BTW, in the python codes inside tools/python/xen, somewhere we use the stirng 'vslot', somewhere we use 'vslt'. We may as well use the same string. In your patch, tools/python/xen/xend/server/pciif.py: + vslot = parse_hex(pci_config.get('vslot', 0)) ===> in the newly-added line, vslot is not used later?? And in your patch, you only allow a vslot 0x0~0xf. I think we should support 0x0~0x1f. Thanks, -- Dexuan Xen patchbot-unstable wrote: > # HG changeset patch > # User Keir Fraser <keir.fraser@xxxxxxxxxx> > # Date 1237550960 0 > # Node ID 538a64b1ed6389da2c669a76ba26a8e4d670351a > # Parent 2cd2e78d7c2d9deb083f0035df2876805ffeb065 > xend: specify the slot for pass-through devices > > 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. > > Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx> > --- > tools/python/xen/xend/server/pciif.py | 1 + > tools/python/xen/xm/create.py | 18 +++++++++++++----- > 2 files changed, 14 insertions(+), 5 deletions(-) > > diff -r 2cd2e78d7c2d -r 538a64b1ed63 > tools/python/xen/xend/server/pciif.py --- > a/tools/python/xen/xend/server/pciif.py Fri Mar 20 10:37:12 2009 > +0000 +++ b/tools/python/xen/xend/server/pciif.py Fri Mar 20 12:09:20 > 2009 +0000 @@ -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: > diff -r 2cd2e78d7c2d -r 538a64b1ed63 tools/python/xen/xm/create.py > --- a/tools/python/xen/xm/create.py Fri Mar 20 10:37:12 2009 +0000 > +++ b/tools/python/xen/xm/create.py Fri Mar 20 12:09:20 2009 +0000 > @@ -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 osdep > 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-changelog mailing list > Xen-changelog@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-changelog _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |