return $pci_addr_map;
}
+my sub generate_mdev_uuid {
+ my ($vmid, $index) = @_;
+ return sprintf("%08d-0000-0000-0000-%012d", $index, $vmid);
+}
+
my $get_addr_mapping_from_id = sub {
my ($map, $id) = @_;
my $sysfspath;
if ($d->{mdev} && scalar(@$pcidevices) == 1) {
my $pci_id = $pcidevices->[0]->{id};
- my $uuid = PVE::SysFSTools::generate_mdev_uuid($vmid, $i);
+ my $uuid = generate_mdev_uuid($vmid, $i);
$sysfspath = "/sys/bus/pci/devices/$pci_id/$uuid";
} elsif ($d->{mdev}) {
warn "ignoring mediated device '$id' with multifunction device\n";
}
sub prepare_pci_device {
- my ($vmid, $pciid, $confslot, $mdev) = @_;
+ my ($vmid, $pciid, $index, $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);
+ my $uuid = generate_mdev_uuid($vmid, $index);
PVE::SysFSTools::pci_create_mdev_device($pciid, $uuid, $mdev);
} else {
die "can't unbind/bind PCI group to VFIO '$pciid'\n"
die "can't reset PCI device '$pciid'\n"
if $info->{has_fl_reset} && !PVE::SysFSTools::pci_dev_reset($info);
}
-
- return;
}
1;