mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-07-23 08:12:37 +00:00

this patch allows configuring pci devices that are mapped via cluster resource mapping when the user has 'Resource.Use' on the ACL path '/mapping/pci/{ID}' (in addition to the usual required vm config privileges) When given multiple mappings in the config, we use them as alternatives for the passthrough, and will select the first free one on startup. It is using our regular pci reservation mechanism for regular devices and we introduce a selection mechanism for mediated devices. A few changes to the inner workings were required to make this work well: * parse_hostpci now returns a different structure where we have a list of lists (first level is for the different alternatives and second level is for the different devices that should be passed through together) * factor out the 'parse_hostpci_devices' which parses each device from the config and does some precondition checks * reserve_pci_usage now behaves slightly different when trying to reserve an device with the same VMID that's already reserved for, since for checking which alternative we can use, we already must reserve one (this means that qm showcmd can actually reserve devices, albeit only for up to 10 seconds) * configuring a mediated device on a multifunction device is not supported anymore, and results in failure to start (previously, it just chose the first device to do it). This is a breaking change * configuring a single pci device twice on different hostpci slots now fails during commandline generation instead on qemu start, so we had to adapt one test where this occurred (it could never have worked anyway) * we now check permissions during clone/restore, meaning raw/real devices can only be cloned/restored by root@pam from now on. this is a breaking change. Fixes #3574: Improve SR-IOV usability Signed-off-by: Dominik Csapak <d.csapak@proxmox.com> Tested-By: Markus Frank <m.frank@proxmox.com>
21 lines
516 B
Plaintext
21 lines
516 B
Plaintext
# TEST: Config with q35, NUMA, hostpci passthrough, EFI & Linux
|
|
bios: ovmf
|
|
bootdisk: scsi0
|
|
cores: 1
|
|
efidisk0: local:100/vm-100-disk-1.qcow2,size=128K
|
|
hostpci0: 00:ff.1
|
|
hostpci1: d0:13.0,pcie=1
|
|
hostpci2: 00:f4.0
|
|
hostpci3: d0:15.1,pcie=1
|
|
hostpci4: d0:17.0,pcie=1,rombar=0
|
|
hostpci7: d0:15.2,pcie=1
|
|
machine: q35
|
|
memory: 512
|
|
net0: virtio=2E:01:68:F9:9C:87,bridge=vmbr0
|
|
numa: 1
|
|
ostype: l26
|
|
scsihw: virtio-scsi-pci
|
|
smbios1: uuid=3dd750ce-d910-44d0-9493-525c0be4e687
|
|
sockets: 2
|
|
vmgenid: 54d1c06c-8f5b-440f-b5b2-6eab1380e13d
|