At 12/13/2011 02:12 PM, KAMEZAWA Hiroyuki Write:
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu(a)jp.fujitsu.com>
PCI <address...> can be specified by attach-disk but multifunction cannot
be specified. add --multifunction support.
IIRC, libvirt does not support hot plugging multifunction PCI device. Why
do you need this feature?
Thanks
Wen Congyang
---
tools/virsh.c | 7 ++++++-
tools/virsh.pod | 3 ++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index d58b827..346b440 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -12661,6 +12661,7 @@ static const vshCmdOptDef opts_attach_disk[] = {
{"serial", VSH_OT_STRING, 0, N_("serial of disk device")},
{"shareable", VSH_OT_BOOL, 0, N_("shareable between domains")},
{"address", VSH_OT_STRING, 0, N_("address of disk device")},
+ {"multifunction", VSH_OT_BOOL, 0, N_("use multifunction pci under
specified address")},
{NULL, 0, 0, NULL}
};
@@ -12916,9 +12917,13 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
if (diskAddr.type == DISK_ADDR_TYPE_PCI) {
virBufferAsprintf(&buf,
" <address type='pci'
domain='0x%04x'"
- " bus ='0x%02x' slot='0x%02x'
function='0x%0x' />\n",
+ " bus ='0x%02x' slot='0x%02x'
function='0x%0x'",
diskAddr.addr.pci.domain, diskAddr.addr.pci.bus,
diskAddr.addr.pci.slot, diskAddr.addr.pci.function);
+ if (vshCommandOptBool(cmd, "multifunction"))
+ virBufferAsprintf(&buf, " multifunction='on'
/>\n");
+ else
+ virBufferAsprintf(&buf, " />\n");
} else {
vshError(ctl, "%s", _("expecting a pci:0000.00.00.00
address."));
goto cleanup;
diff --git a/tools/virsh.pod b/tools/virsh.pod
index fe92714..1a778f9 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -1273,7 +1273,7 @@ the device does not use managed mode.
=item B<attach-disk> I<domain-id> I<source> I<target>
[I<--driver driver>] [I<--subdriver subdriver>] [I<--cache cache>]
[I<--type type>] [I<--mode mode>] [I<--persistent>] [I<--sourcetype
soucetype>]
-[I<--serial serial>] [I<--shareable>] [I<--address address>]
+[I<--serial serial>] [I<--shareable>] [I<--address address>]
[I<--multifunction>]
Attach a new disk device to the domain.
I<source> and I<target> are paths for the files and devices.
@@ -1291,6 +1291,7 @@ I<serial> is the serial of disk device. I<shareable>
indicates the disk device
is shareable between domains.
I<address> is the address of disk device in the form of
pci:domain.bus.slot.function,
scsi:controller.bus.unit or ide:controller.bus.unit.
+I<multifunction> indicates specified pci address is a multifunction pci device
address.
=item B<attach-interface> I<domain-id> I<type> I<source>
[I<--target target>] [I<--mac mac>] [I<--script script>] [I<--model
model>]