From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 1F0F18D868 for ; Wed, 9 Nov 2022 08:49:42 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 026861937C for ; Wed, 9 Nov 2022 08:49:12 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 9 Nov 2022 08:49:11 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id F112C42E32 for ; Wed, 9 Nov 2022 08:49:10 +0100 (CET) Message-ID: <7c71911c-22ff-fefc-c3b8-b6848b8d9ee6@proxmox.com> Date: Wed, 9 Nov 2022 08:49:09 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:107.0) Gecko/20100101 Thunderbird/107.0 To: Proxmox VE development discussion , Dominik Csapak References: <20220920125041.3636561-1-d.csapak@proxmox.com> <20220920125041.3636561-13-d.csapak@proxmox.com> Content-Language: en-GB From: Thomas Lamprecht In-Reply-To: <20220920125041.3636561-13-d.csapak@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.033 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -0.001 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [pci.pm] Subject: Re: [pve-devel] [PATCH qemu-server v3 03/13] PCI: refactor print_pci_device X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Nov 2022 07:49:42 -0000 Am 20/09/2022 um 14:50 schrieb Dominik Csapak: > into a private sub. This makes the 'print_hostpci_devices' function more > easier to read looks OK, some style nits inline > > Signed-off-by: Dominik Csapak > --- > PVE/QemuServer/PCI.pm | 57 +++++++++++++++++++++++++------------------ > 1 file changed, 33 insertions(+), 24 deletions(-) > > diff --git a/PVE/QemuServer/PCI.pm b/PVE/QemuServer/PCI.pm > index 1b82aca..7406246 100644 > --- a/PVE/QemuServer/PCI.pm > +++ b/PVE/QemuServer/PCI.pm > @@ -393,6 +393,29 @@ sub parse_hostpci { > return $res; > } > > +my $print_pci_device = sub { nit: could use a `my sub` here or? > + my ($device, $id, $hostdevice, $pciaddr, $xvga, $bootindex, $function) = @_; could use the opportunity to switch to a more consistent naming style, e.g., using snake_case > + > + my $devicestr = "vfio-pci,$hostdevice"; > + > + my $mf_addr = defined($function) ? ".$function" : ''; s/mf/multi_function/ > + > + $devicestr .= ",id=${id}${mf_addr}${pciaddr}${mf_addr}"; > + > + if (!defined($function) || $function == 0) { > + $devicestr .= ',rombar=0' if defined($device->{rombar}) && !$device->{rombar}; > + $devicestr .= "$xvga"; > + $devicestr .= ",multifunction=on" if defined($function); > + $devicestr .= ",romfile=/usr/share/kvm/$device->{romfile}" if $device->{romfile}; > + $devicestr .= ",bootindex=$bootindex" if defined($bootindex); > + for my $option (qw(vendor-id device-id sub-vendor-id sub-device-id)) { > + $devicestr .= ",x-pci-$option=$device->{$option}" if $device->{$option}; > + } > + } > + > + return $devicestr; > +}; > + > sub print_hostpci_devices { > my ($vmid, $conf, $devices, $vga, $winversion, $q35, $bridges, $arch, $machine_type, $bootorder) = @_; > > @@ -457,37 +480,23 @@ sub print_hostpci_devices { > $gpu_passthrough = 1; > } > > - my $sysfspath; > - if ($d->{mdev} && scalar(@$pcidevices) == 1) { > + my $bootindex = $bootorder->{$id}; > + > + if ($d->{mdev} && !$multifunction) { > my $uuid = generate_mdev_uuid($vmid, $i); > - $sysfspath = "/sys/bus/mdev/devices/$uuid"; > + my $sysfspath = "sysfsdev=/sys/bus/mdev/devices/$uuid"; > + my $devicestr = $print_pci_device->($d, $id, $sysfspath, $pciaddr, $xvga, $bootindex); > + push @$devices, '-device', $devicestr; maybe add a short comment or empty line here to make this `next` stand out a bit more, almost overlooked it > + next; > } elsif ($d->{mdev}) { > warn "ignoring mediated device '$id' with multifunction device\n"; > } > > my $j = 0; > foreach my $pcidevice (@$pcidevices) { > - my $devicestr = "vfio-pci"; > - > - if ($sysfspath) { > - $devicestr .= ",sysfsdev=$sysfspath"; > - } else { > - $devicestr .= ",host=$pcidevice->{id}"; > - } > - > - my $mf_addr = $multifunction ? ".$j" : ''; > - $devicestr .= ",id=${id}${mf_addr}${pciaddr}${mf_addr}"; > - > - if ($j == 0) { > - $devicestr .= ',rombar=0' if defined($d->{rombar}) && !$d->{rombar}; > - $devicestr .= "$xvga"; > - $devicestr .= ",multifunction=on" if $multifunction; > - $devicestr .= ",romfile=/usr/share/kvm/$d->{romfile}" if $d->{romfile}; > - $devicestr .= ",bootindex=$bootorder->{$id}" if $bootorder->{$id}; > - for my $option (qw(vendor-id device-id sub-vendor-id sub-device-id)) { > - $devicestr .= ",x-pci-$option=$d->{$option}" if $d->{$option}; > - } > - } > + my $host = "host=$pcidevice->{id}"; extra white space after = > + my $func = $multifunction ? $j : undef; > + my $devicestr = $print_pci_device->($d, $id, $host, $pciaddr, $xvga, $bootindex, $func); > > push @$devices, '-device', $devicestr; > $j++;