[pve-devel] [PATCH] add print_pci_addr

Derumier Alexandre aderumier at odiso.com
Thu Sep 15 06:47:39 CEST 2011


contain devices pci addr and bus mapping
return formated string with bus=pci.x,addr=x

also in this commit, use it for virtio disk

Signed-off-by: Derumier Alexandre <aderumier at odiso.com>
---
 PVE/QemuServer.pm |   31 +++++++++++++++++++++++++++++--
 1 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index c15cbfa..c1d99e8 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -887,8 +887,8 @@ sub print_drivedevice_full {
     my $maxdev = 0;
 
     if ($drive->{interface} eq 'virtio') {
-
-      $device="virtio-blk-pci,drive=drive-$drive->{interface}$drive->{index},id=device-$drive->{interface}$drive->{index}";
+      my $pciaddr=print_pci_addr("$drive->{interface}$drive->{index}");
+      $device="virtio-blk-pci,drive=drive-$drive->{interface}$drive->{index},id=device-$drive->{interface}$drive->{index}$pciaddr";
     }
 
     elsif ($drive->{interface} eq 'scsi') {
@@ -2781,4 +2781,31 @@ sub pci_dev_bind_to_stub {
     return -d $testdir;
 }
 
+sub print_pci_addr() { 
+    my ($id) = @_;
+    my $res = '';
+    my $devices = {};
+
+    $devices->{virtio0}->{bus} = 0;
+    $devices->{virtio0}->{addr} = 10;
+    $devices->{virtio1}->{bus} = 0;
+    $devices->{virtio1}->{addr} = 11;
+    $devices->{virtio2}->{bus} = 0;
+    $devices->{virtio2}->{addr} = 12;
+    $devices->{virtio3}->{bus} = 0;
+    $devices->{virtio3}->{addr} = 13;
+    $devices->{virtio4}->{bus} = 0;
+    $devices->{virtio4}->{addr} = 14;
+    $devices->{virtio5}->{bus} = 0;
+    $devices->{virtio5}->{addr} = 15;
+
+
+    if (defined ($devices->{$id}->{bus}) && defined ($devices->{$id}->{addr})) {
+	   my $addr = sprintf("0x%x", $devices->{$id}->{addr});
+	   $res = ",bus=pci.$devices->{$id}->{bus},addr=$addr";
+    }
+    return $res;
+
+}
+
 1;
-- 
1.7.2.5



More information about the pve-devel mailing list