mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-11 12:33:16 +00:00
pci: refactor pci device preparation
makes the vm start a bit less crowded Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
96a3f51f8d
commit
acd4b77745
@ -5389,19 +5389,7 @@ sub vm_start_nolock {
|
||||
foreach my $pcidevice (@$pcidevices) {
|
||||
my $pciid = $pcidevice->{id};
|
||||
|
||||
my $info = PVE::SysFSTools::pci_device_info("$pciid");
|
||||
die "IOMMU not present\n" if !PVE::SysFSTools::check_iommu_support();
|
||||
die "no pci device info for device '$pciid'\n" if !$info;
|
||||
|
||||
if ($d->{mdev}) {
|
||||
my $uuid = PVE::SysFSTools::generate_mdev_uuid($vmid, $i);
|
||||
PVE::SysFSTools::pci_create_mdev_device($pciid, $uuid, $d->{mdev});
|
||||
} else {
|
||||
die "can't unbind/bind PCI group to VFIO '$pciid'\n"
|
||||
if !PVE::SysFSTools::pci_dev_group_bind_to_vfio($pciid);
|
||||
die "can't reset PCI device '$pciid'\n"
|
||||
if $info->{has_fl_reset} && !PVE::SysFSTools::pci_dev_reset($info);
|
||||
}
|
||||
PVE::QemuServer::PCI::prepare_pci_device($vmid, $pciid, $i, $d->{mdev});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -461,4 +461,24 @@ sub print_hostpci_devices {
|
||||
return ($kvm_off, $gpu_passthrough, $legacy_igd);
|
||||
}
|
||||
|
||||
sub prepare_pci_device {
|
||||
my ($vmid, $pciid, $confslot, $mdev) = @_;
|
||||
|
||||
my $info = PVE::SysFSTools::pci_device_info("$pciid");
|
||||
die "IOMMU not present\n" if !PVE::SysFSTools::check_iommu_support();
|
||||
die "no pci device info for device '$pciid'\n" if !$info;
|
||||
|
||||
if ($mdev) {
|
||||
my $uuid = PVE::SysFSTools::generate_mdev_uuid($vmid, $confslot);
|
||||
PVE::SysFSTools::pci_create_mdev_device($pciid, $uuid, $mdev);
|
||||
} else {
|
||||
die "can't unbind/bind PCI group to VFIO '$pciid'\n"
|
||||
if !PVE::SysFSTools::pci_dev_group_bind_to_vfio($pciid);
|
||||
die "can't reset PCI device '$pciid'\n"
|
||||
if $info->{has_fl_reset} && !PVE::SysFSTools::pci_dev_reset($info);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user