
在 2013-01-08二的 08:51 +0000,Daniel P. Berrange写道:
On Tue, Jan 08, 2013 at 04:47:40PM +0800, li guang wrote:
在 2013-01-08二的 16:37 +0800,li guang写道:
在 2013-01-08二的 08:04 +0000,Daniel P. Berrange写道:
On Tue, Jan 08, 2013 at 09:58:49AM +0800, liguang wrote:
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com> --- src/conf/device_conf.c | 12 +++++++++++- src/conf/device_conf.h | 1 + src/conf/domain_conf.c | 5 ++++- src/conf/domain_conf.h | 1 + 4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c index 7b97f45..1c06ed0 100644 --- a/src/conf/device_conf.c +++ b/src/conf/device_conf.c @@ -51,16 +51,18 @@ int virDevicePCIAddressParseXML(xmlNodePtr node, virDevicePCIAddressPtr addr) { - char *domain, *slot, *bus, *function, *multi; + char *domain, *slot, *bus, *function, *multi, *bridge; int ret = -1;
memset(addr, 0, sizeof(*addr)); + addr->bridge = -1;
domain = virXMLPropString(node, "domain"); bus = virXMLPropString(node, "bus"); slot = virXMLPropString(node, "slot"); function = virXMLPropString(node, "function"); multi = virXMLPropString(node, "multifunction"); + bridge = virXMLPropString(node, "bridge");
if (domain && virStrToLong_ui(domain, NULL, 0, &addr->domain) < 0) { @@ -98,6 +100,14 @@ virDevicePCIAddressParseXML(xmlNodePtr node, goto cleanup;
} + + if (bridge && + virStrToLong_i(bridge, NULL, 0, &addr->bridge) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("pci-bridge number must be >= 0 ")); + goto cleanup; + }
This is bogus - there's no need for a new 'bridge' attribute - we have 'bus' which is sufficient.
Oh, yes, this version 'bridge' is unnecessary.
In former version, I want to discriminate if a pci device want to sitting on default bus pci.0 or pci-bridge0, so bring in 'bridge'.
Thanks!
but, without 'bridge', can't know if user want or don't want pci-bridge, and the check for 'bus != 0' will be removed, then if user happened to define a pci device greater than 0, qemu will complain about this, so it's inconvenient for this case.
The check for 'bus != 0' was only added because we didn't have any support for bridges. Once we have bridge support, then that check can be changed. If bus != 0, then check to see if there's a matching bridge device, otherwise raise an error.
OK for me, though it seems much more changes will be involved than with 'bridge' condition.
Daniel
-- regards! li guang