From de9768f0029b5dc49f7e7452f62fae672ca018e1 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Tue, 14 Jun 2016 10:50:35 +0200 Subject: [PATCH] refactor PCI into own file to reduce QemuServer.pm size also move the $device hash out of any function Signed-off-by: Dominik Csapak --- PVE/QemuServer.pm | 139 +------------------------------------- PVE/QemuServer/Makefile | 1 + PVE/QemuServer/PCI.pm | 146 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 148 insertions(+), 138 deletions(-) create mode 100644 PVE/QemuServer/PCI.pm diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index ee97f95..bc14270 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -30,6 +30,7 @@ use PVE::ProcFSTools; use PVE::QemuConfig; use PVE::QMPClient; use PVE::RPCEnvironment; +use PVE::QemuServer::PCI qw(print_pci_addr print_pcie_addr); use PVE::QemuServer::Memory; use Time::HiRes qw(gettimeofday); use File::Copy qw(copy); @@ -4846,144 +4847,6 @@ sub pci_dev_group_bind_to_vfio { return 1; } -sub print_pci_addr { - my ($id, $bridges) = @_; - - my $res = ''; - my $devices = { - piix3 => { bus => 0, addr => 1 }, - #addr2 : first videocard - balloon0 => { bus => 0, addr => 3 }, - watchdog => { bus => 0, addr => 4 }, - scsihw0 => { bus => 0, addr => 5 }, - 'pci.3' => { bus => 0, addr => 5 }, #can also be used for virtio-scsi-single bridge - scsihw1 => { bus => 0, addr => 6 }, - ahci0 => { bus => 0, addr => 7 }, - qga0 => { bus => 0, addr => 8 }, - spice => { bus => 0, addr => 9 }, - virtio0 => { bus => 0, addr => 10 }, - virtio1 => { bus => 0, addr => 11 }, - virtio2 => { bus => 0, addr => 12 }, - virtio3 => { bus => 0, addr => 13 }, - virtio4 => { bus => 0, addr => 14 }, - virtio5 => { bus => 0, addr => 15 }, - hostpci0 => { bus => 0, addr => 16 }, - hostpci1 => { bus => 0, addr => 17 }, - net0 => { bus => 0, addr => 18 }, - net1 => { bus => 0, addr => 19 }, - net2 => { bus => 0, addr => 20 }, - net3 => { bus => 0, addr => 21 }, - net4 => { bus => 0, addr => 22 }, - net5 => { bus => 0, addr => 23 }, - vga1 => { bus => 0, addr => 24 }, - vga2 => { bus => 0, addr => 25 }, - vga3 => { bus => 0, addr => 26 }, - hostpci2 => { bus => 0, addr => 27 }, - hostpci3 => { bus => 0, addr => 28 }, - #addr29 : usb-host (pve-usb.cfg) - 'pci.1' => { bus => 0, addr => 30 }, - 'pci.2' => { bus => 0, addr => 31 }, - 'net6' => { bus => 1, addr => 1 }, - 'net7' => { bus => 1, addr => 2 }, - 'net8' => { bus => 1, addr => 3 }, - 'net9' => { bus => 1, addr => 4 }, - 'net10' => { bus => 1, addr => 5 }, - 'net11' => { bus => 1, addr => 6 }, - 'net12' => { bus => 1, addr => 7 }, - 'net13' => { bus => 1, addr => 8 }, - 'net14' => { bus => 1, addr => 9 }, - 'net15' => { bus => 1, addr => 10 }, - 'net16' => { bus => 1, addr => 11 }, - 'net17' => { bus => 1, addr => 12 }, - 'net18' => { bus => 1, addr => 13 }, - 'net19' => { bus => 1, addr => 14 }, - 'net20' => { bus => 1, addr => 15 }, - 'net21' => { bus => 1, addr => 16 }, - 'net22' => { bus => 1, addr => 17 }, - 'net23' => { bus => 1, addr => 18 }, - 'net24' => { bus => 1, addr => 19 }, - 'net25' => { bus => 1, addr => 20 }, - 'net26' => { bus => 1, addr => 21 }, - 'net27' => { bus => 1, addr => 22 }, - 'net28' => { bus => 1, addr => 23 }, - 'net29' => { bus => 1, addr => 24 }, - 'net30' => { bus => 1, addr => 25 }, - 'net31' => { bus => 1, addr => 26 }, - 'xhci' => { bus => 1, addr => 27 }, - 'virtio6' => { bus => 2, addr => 1 }, - 'virtio7' => { bus => 2, addr => 2 }, - 'virtio8' => { bus => 2, addr => 3 }, - 'virtio9' => { bus => 2, addr => 4 }, - 'virtio10' => { bus => 2, addr => 5 }, - 'virtio11' => { bus => 2, addr => 6 }, - 'virtio12' => { bus => 2, addr => 7 }, - 'virtio13' => { bus => 2, addr => 8 }, - 'virtio14' => { bus => 2, addr => 9 }, - 'virtio15' => { bus => 2, addr => 10 }, - 'virtioscsi0' => { bus => 3, addr => 1 }, - 'virtioscsi1' => { bus => 3, addr => 2 }, - 'virtioscsi2' => { bus => 3, addr => 3 }, - 'virtioscsi3' => { bus => 3, addr => 4 }, - 'virtioscsi4' => { bus => 3, addr => 5 }, - 'virtioscsi5' => { bus => 3, addr => 6 }, - 'virtioscsi6' => { bus => 3, addr => 7 }, - 'virtioscsi7' => { bus => 3, addr => 8 }, - 'virtioscsi8' => { bus => 3, addr => 9 }, - 'virtioscsi9' => { bus => 3, addr => 10 }, - 'virtioscsi10' => { bus => 3, addr => 11 }, - 'virtioscsi11' => { bus => 3, addr => 12 }, - 'virtioscsi12' => { bus => 3, addr => 13 }, - 'virtioscsi13' => { bus => 3, addr => 14 }, - 'virtioscsi14' => { bus => 3, addr => 15 }, - 'virtioscsi15' => { bus => 3, addr => 16 }, - 'virtioscsi16' => { bus => 3, addr => 17 }, - 'virtioscsi17' => { bus => 3, addr => 18 }, - 'virtioscsi18' => { bus => 3, addr => 19 }, - 'virtioscsi19' => { bus => 3, addr => 20 }, - 'virtioscsi20' => { bus => 3, addr => 21 }, - 'virtioscsi21' => { bus => 3, addr => 22 }, - 'virtioscsi22' => { bus => 3, addr => 23 }, - 'virtioscsi23' => { bus => 3, addr => 24 }, - 'virtioscsi24' => { bus => 3, addr => 25 }, - 'virtioscsi25' => { bus => 3, addr => 26 }, - 'virtioscsi26' => { bus => 3, addr => 27 }, - 'virtioscsi27' => { bus => 3, addr => 28 }, - 'virtioscsi28' => { bus => 3, addr => 29 }, - 'virtioscsi29' => { bus => 3, addr => 30 }, - 'virtioscsi30' => { bus => 3, addr => 31 }, - - }; - - if (defined($devices->{$id}->{bus}) && defined($devices->{$id}->{addr})) { - my $addr = sprintf("0x%x", $devices->{$id}->{addr}); - my $bus = $devices->{$id}->{bus}; - $res = ",bus=pci.$bus,addr=$addr"; - $bridges->{$bus} = 1 if $bridges; - } - return $res; - -} - -sub print_pcie_addr { - my ($id) = @_; - - my $res = ''; - my $devices = { - hostpci0 => { bus => "ich9-pcie-port-1", addr => 0 }, - hostpci1 => { bus => "ich9-pcie-port-2", addr => 0 }, - hostpci2 => { bus => "ich9-pcie-port-3", addr => 0 }, - hostpci3 => { bus => "ich9-pcie-port-4", addr => 0 }, - }; - - if (defined($devices->{$id}->{bus}) && defined($devices->{$id}->{addr})) { - my $addr = sprintf("0x%x", $devices->{$id}->{addr}); - my $bus = $devices->{$id}->{bus}; - $res = ",bus=$bus,addr=$addr"; - } - return $res; - -} - # vzdump restore implementaion sub tar_archive_read_firstfile { diff --git a/PVE/QemuServer/Makefile b/PVE/QemuServer/Makefile index 774eb77..f105d0a 100644 --- a/PVE/QemuServer/Makefile +++ b/PVE/QemuServer/Makefile @@ -1,3 +1,4 @@ .PHONY: install install: + install -D -m 0644 PCI.pm ${DESTDIR}${PERLDIR}/PVE/QemuServer/PCI.pm install -D -m 0644 Memory.pm ${DESTDIR}${PERLDIR}/PVE/QemuServer/Memory.pm diff --git a/PVE/QemuServer/PCI.pm b/PVE/QemuServer/PCI.pm new file mode 100644 index 0000000..0d9cf24 --- /dev/null +++ b/PVE/QemuServer/PCI.pm @@ -0,0 +1,146 @@ +package PVE::QemuServer::PCI; + +use base 'Exporter'; + +our @EXPORT_OK = qw( +print_pci_addr +print_pcie_addr +); + +my $devices = { + piix3 => { bus => 0, addr => 1 }, + #addr2 : first videocard + balloon0 => { bus => 0, addr => 3 }, + watchdog => { bus => 0, addr => 4 }, + scsihw0 => { bus => 0, addr => 5 }, + 'pci.3' => { bus => 0, addr => 5 }, #can also be used for virtio-scsi-single bridge + scsihw1 => { bus => 0, addr => 6 }, + ahci0 => { bus => 0, addr => 7 }, + qga0 => { bus => 0, addr => 8 }, + spice => { bus => 0, addr => 9 }, + virtio0 => { bus => 0, addr => 10 }, + virtio1 => { bus => 0, addr => 11 }, + virtio2 => { bus => 0, addr => 12 }, + virtio3 => { bus => 0, addr => 13 }, + virtio4 => { bus => 0, addr => 14 }, + virtio5 => { bus => 0, addr => 15 }, + hostpci0 => { bus => 0, addr => 16 }, + hostpci1 => { bus => 0, addr => 17 }, + net0 => { bus => 0, addr => 18 }, + net1 => { bus => 0, addr => 19 }, + net2 => { bus => 0, addr => 20 }, + net3 => { bus => 0, addr => 21 }, + net4 => { bus => 0, addr => 22 }, + net5 => { bus => 0, addr => 23 }, + vga1 => { bus => 0, addr => 24 }, + vga2 => { bus => 0, addr => 25 }, + vga3 => { bus => 0, addr => 26 }, + hostpci2 => { bus => 0, addr => 27 }, + hostpci3 => { bus => 0, addr => 28 }, + #addr29 : usb-host (pve-usb.cfg) + 'pci.1' => { bus => 0, addr => 30 }, + 'pci.2' => { bus => 0, addr => 31 }, + 'net6' => { bus => 1, addr => 1 }, + 'net7' => { bus => 1, addr => 2 }, + 'net8' => { bus => 1, addr => 3 }, + 'net9' => { bus => 1, addr => 4 }, + 'net10' => { bus => 1, addr => 5 }, + 'net11' => { bus => 1, addr => 6 }, + 'net12' => { bus => 1, addr => 7 }, + 'net13' => { bus => 1, addr => 8 }, + 'net14' => { bus => 1, addr => 9 }, + 'net15' => { bus => 1, addr => 10 }, + 'net16' => { bus => 1, addr => 11 }, + 'net17' => { bus => 1, addr => 12 }, + 'net18' => { bus => 1, addr => 13 }, + 'net19' => { bus => 1, addr => 14 }, + 'net20' => { bus => 1, addr => 15 }, + 'net21' => { bus => 1, addr => 16 }, + 'net22' => { bus => 1, addr => 17 }, + 'net23' => { bus => 1, addr => 18 }, + 'net24' => { bus => 1, addr => 19 }, + 'net25' => { bus => 1, addr => 20 }, + 'net26' => { bus => 1, addr => 21 }, + 'net27' => { bus => 1, addr => 22 }, + 'net28' => { bus => 1, addr => 23 }, + 'net29' => { bus => 1, addr => 24 }, + 'net30' => { bus => 1, addr => 25 }, + 'net31' => { bus => 1, addr => 26 }, + 'xhci' => { bus => 1, addr => 27 }, + 'virtio6' => { bus => 2, addr => 1 }, + 'virtio7' => { bus => 2, addr => 2 }, + 'virtio8' => { bus => 2, addr => 3 }, + 'virtio9' => { bus => 2, addr => 4 }, + 'virtio10' => { bus => 2, addr => 5 }, + 'virtio11' => { bus => 2, addr => 6 }, + 'virtio12' => { bus => 2, addr => 7 }, + 'virtio13' => { bus => 2, addr => 8 }, + 'virtio14' => { bus => 2, addr => 9 }, + 'virtio15' => { bus => 2, addr => 10 }, + 'virtioscsi0' => { bus => 3, addr => 1 }, + 'virtioscsi1' => { bus => 3, addr => 2 }, + 'virtioscsi2' => { bus => 3, addr => 3 }, + 'virtioscsi3' => { bus => 3, addr => 4 }, + 'virtioscsi4' => { bus => 3, addr => 5 }, + 'virtioscsi5' => { bus => 3, addr => 6 }, + 'virtioscsi6' => { bus => 3, addr => 7 }, + 'virtioscsi7' => { bus => 3, addr => 8 }, + 'virtioscsi8' => { bus => 3, addr => 9 }, + 'virtioscsi9' => { bus => 3, addr => 10 }, + 'virtioscsi10' => { bus => 3, addr => 11 }, + 'virtioscsi11' => { bus => 3, addr => 12 }, + 'virtioscsi12' => { bus => 3, addr => 13 }, + 'virtioscsi13' => { bus => 3, addr => 14 }, + 'virtioscsi14' => { bus => 3, addr => 15 }, + 'virtioscsi15' => { bus => 3, addr => 16 }, + 'virtioscsi16' => { bus => 3, addr => 17 }, + 'virtioscsi17' => { bus => 3, addr => 18 }, + 'virtioscsi18' => { bus => 3, addr => 19 }, + 'virtioscsi19' => { bus => 3, addr => 20 }, + 'virtioscsi20' => { bus => 3, addr => 21 }, + 'virtioscsi21' => { bus => 3, addr => 22 }, + 'virtioscsi22' => { bus => 3, addr => 23 }, + 'virtioscsi23' => { bus => 3, addr => 24 }, + 'virtioscsi24' => { bus => 3, addr => 25 }, + 'virtioscsi25' => { bus => 3, addr => 26 }, + 'virtioscsi26' => { bus => 3, addr => 27 }, + 'virtioscsi27' => { bus => 3, addr => 28 }, + 'virtioscsi28' => { bus => 3, addr => 29 }, + 'virtioscsi29' => { bus => 3, addr => 30 }, + 'virtioscsi30' => { bus => 3, addr => 31 }, +}; + +sub print_pci_addr { + my ($id, $bridges) = @_; + + my $res = ''; + + if (defined($devices->{$id}->{bus}) && defined($devices->{$id}->{addr})) { + my $addr = sprintf("0x%x", $devices->{$id}->{addr}); + my $bus = $devices->{$id}->{bus}; + $res = ",bus=pci.$bus,addr=$addr"; + $bridges->{$bus} = 1 if $bridges; + } + return $res; + +} + +sub print_pcie_addr { + my ($id) = @_; + + my $res = ''; + my $devices = { + hostpci0 => { bus => "ich9-pcie-port-1", addr => 0 }, + hostpci1 => { bus => "ich9-pcie-port-2", addr => 0 }, + hostpci2 => { bus => "ich9-pcie-port-3", addr => 0 }, + hostpci3 => { bus => "ich9-pcie-port-4", addr => 0 }, + }; + + if (defined($devices->{$id}->{bus}) && defined($devices->{$id}->{addr})) { + my $addr = sprintf("0x%x", $devices->{$id}->{addr}); + my $bus = $devices->{$id}->{bus}; + $res = ",bus=$bus,addr=$addr"; + } + return $res; + +} -- 2.39.2