X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=PVE%2FQemuServer.pm;h=a5576a6da78639ae99dfd8ce5a0796e94ce23ad9;hb=0cea6a01606674112f921b151bf2b636ff8b3b69;hp=f4f8a2cc0692115fc303365c8dc9b0fe7d7aea83;hpb=a96900bcbe9596301ee68d5abbb86e2eb87324f0;p=qemu-server.git diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index f4f8a2c..a5576a6 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -558,7 +558,7 @@ PVE::JSONSchema::register_standard_option("pve-qm-usb", $usbdesc); my $hostpcidesc = { optional => 1, type => 'string', format => 'pve-qm-hostpci', - typetext => "HOSTPCIDEVICE", + typetext => "[host=]HOSTPCIDEVICE [,driver=kvm|vfio] [,rombar=on|off]", description => <{pciid} = $value; - } else { - return undef; + if ($kv =~ m/^(host=)?([a-f0-9]{2}:[a-f0-9]{2}\.[a-f0-9])$/) { + $found = 1; + $res->{pciid} = $2; + } elsif ($kv =~ m/^driver=(kvm|vfio)$/) { + $res->{driver} = $1; + } elsif ($kv =~ m/^rombar=(on|off)$/) { + $res->{rombar} = $1; + } else { + warn "unknown hostpci setting '$kv'\n"; + } } + return undef if !$found; + return $res; } @@ -2333,7 +2350,8 @@ sub config_to_command { my $d = parse_hostpci($conf->{"hostpci$i"}); next if !$d; $pciaddr = print_pci_addr("hostpci$i", $bridges); - push @$devices, '-device', "pci-assign,host=$d->{pciid},id=hostpci$i$pciaddr"; + my $rombar = $d->{rombar} && $d->{rombar} eq 'off' ? ",rombar=0" : ""; + push @$devices, '-device', "pci-assign,host=$d->{pciid},id=hostpci$i$pciaddr$rombar"; } # usb devices