When a PCI function is passed-through extra options may be passed through.
In the case of boot-time PCI pass-through the documented format is:
[dom:]bus:dev.slot[@vslot][[,opt]...]
e.g.
00:01.00.1@7,msitranslate=1
In the case of PCI hot-plug the xm pci-attach command take the following
arguments:
[-o opt[,opt]...] [dom:]bus:dev.slot [vslot]
e.g.
-o msitranslate=1 00:01.00.1 7
These xm ends up passing these to xem-qemu as:
[dom:]bus:dev.slot[[,opt]...][@vslot]
e.g.
00:01.00.1,msitranslate=1@7
Note that the option and the vslot have are transposed when
compared to the format used by boot-time PCI pass-through.
The parser inside qemu-xen can only handle the format used by
boot-time PCI pass-through and because of this ignores
any options passed by hot-plug.
This patch alters format used by hot-plug to match the parser.
Cc: Dexuan Cui <dexuan.cui@xxxxxxxxx>
Cc: Qing He <qing.he@xxxxxxxxx>
Cc: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx>
Cc: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>
---
This bug does not appear be a recent regression.
This bug seems important enough to fix for 3.4, though
it could be argued that if it hasn't been noticed for a while
there aren't many (any?) users of this.
Wed, 13 May 2009 11:31:19 +1000
* Initial Public Release
Wed, 13 May 2009 13:04:06 +1000
* Remove tab from indentation
Index: xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py
===================================================================
--- xen-unstable.hg.orig/tools/python/xen/xend/XendDomainInfo.py
2009-05-13 11:37:00.000000000 +1000
+++ xen-unstable.hg/tools/python/xen/xend/XendDomainInfo.py 2009-05-13
11:37:24.000000000 +1000
@@ -706,12 +706,12 @@ class XendDomainInfo:
config_opts = map(lambda (x, y): x+'='+y, config_opts)
opts = ',' + reduce(lambda x, y: x+','+y, config_opts)
- bdf_str = "%s:%s:%s.%s%s@%s" % (new_dev['domain'],
+ bdf_str = "%s:%s:%s.%s@%s%s" % (new_dev['domain'],
new_dev['bus'],
new_dev['slot'],
new_dev['func'],
- opts,
- new_dev['vslot'])
+ new_dev['vslot'],
+ opts)
self.image.signalDeviceModel('pci-ins', 'pci-inserted', bdf_str)
vslot = xstransact.Read("/local/domain/0/device-model/%i/parameter"
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|