From: "DERUMIER, Alexandre" <Alexandre.DERUMIER@groupe-cyllene.com>
To: "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH many v3] add cluster-wide hardware device mapping
Date: Fri, 23 Sep 2022 16:13:06 +0000 [thread overview]
Message-ID: <3c1b23a6-c761-f726-659a-db7cedb65b3b@groupe-cyllene.com> (raw)
In-Reply-To: <20220920125041.3636561-1-d.csapak@proxmox.com>
Hi Dominik,
I have finished my tests with pci passthrough && mdev,
I didn't have any problem this time, all is working fine for me !
Le 20/09/22 à 14:50, Dominik Csapak a écrit :
> this series aims to add a cluster-wide device mapping for pci and usb devices.
> so that an admin can configure a device to be availble for migration and
> configuring for uses that are non-root
>
> this version is mostly the same as v2, aside from some bugfixes, rebase
> and preventing from having mdev: 1 set for multifunction devices.
> i would appreciate if somebody could take a look at this series
> again ;) (below is the old cover letter + changelog)
>
> built-in are some additional safety checks in contrast to current
> passthrough, e.g. if pci addresses shift, with the mapping
> we can detect that and prevent a vm to boot with the wrong device
> (in most cases, there are some edge cases when one has multiple
> of the same device, e.g. the same gpu, that we cannot detect)
>
> new in this version is the ability to specify multiple devices for
> each host mapping, such that we can select the first free one on
> starting the vm (this fixes #3574). That makes using vGPUs and SR-IOV
> much more useful as a user does not have to hardcode the pci ids anymore
>
> i left that feature seperated in a patch for pve-common(3/3) and in
> qemu-server ({12,13}/13) in the backend for easier review, but did not bother
> to do it for the gui (if we really don't want it, i can just send a different
> version for the ui)
>
> also pve-common 1/3 and qemu-server 1-4/13 are general cleanups that
> would even make sense without the remaining patches
> (qemu-server 1/13 depends on pve-common 1/3)
>
> changes from v2:
> * some bug fixes (e.g use of unitialized variable)
> * don't set mdev for multifunction devices
> -> this should fix alexandres issue, since it's not possible anymore
> to select a mediated device when having a multifunction device
> selected
>
> changes from v1:
> * dropped 'check_hw_perm' (just use 'check_full' now)
> * added some cleanups
> * renamed the buttons in the ui (hopefully better now)
> * added multi device mapping for each host
> this includes a new 'multi pci' selector for that window, which
> automatically adds entries for the whole slots which, when selected,
> disabled the selection of the individual functions
> * fixed some issues (e.g. missing entries in the 'caps' object, wrong
> usb config parsing, etc.)
>
> changes from the rfc:
> * new cluster wide gui instead of node-local one (removed that, since
> it's not necessary when we have a cluster-wide one)
> * uses json instead of a section config
> * api is quite different overall, i split the type into its own level
> for configuring, similar to what we do in pbs
> (e.g. /nodes/NODENAME/hardware/mapping/usb/)
> * fixed quite some bugs the rfc had
> * added patch for handling the gui with limited permissions better
> * added a 'comment' field for mappings
>
> dependencies:
> pve-common (1) breaks current qemu-server
> pve-common (2,3) depends on pve-cluster
> qemu-server (1-4) depends on pve-common (1)
> qemu-server (5-11) depends on qemu-server(<5), pve-access-control,pve-common (2)
> qemu-server (12,13) depends on qemu-server(<12), pve-common (3)
> manager depends on qemu-server,pve-access-control,pve-common
>
> pve-cluster:
>
> Dominik Csapak (1):
> add nodes/hardware-map.conf
>
> data/PVE/Cluster.pm | 1 +
> data/src/status.c | 1 +
> 2 files changed, 2 insertions(+)
>
> pve-access-control:
>
> Dominik Csapak (1):
> PVE/AccessControl: add Hardware.* privileges and /hardware/ paths
>
> src/PVE/AccessControl.pm | 13 +++++++++++++
> src/PVE/RPCEnvironment.pm | 3 ++-
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> pve-common:
>
> Dominik Csapak (3):
> SysFSTools: make mdev cleanup independent of pciid
> add PVE/HardwareMap
> HardwareMap: add support for multiple pci device paths per mapping
>
> src/Makefile | 1 +
> src/PVE/HardwareMap.pm | 378 +++++++++++++++++++++++++++++++++++++++++
> src/PVE/SysFSTools.pm | 6 +-
> 3 files changed, 381 insertions(+), 4 deletions(-)
> create mode 100644 src/PVE/HardwareMap.pm
>
> qemu-server:
>
> Dominik Csapak (13):
> cleanup pci devices in more situations
> PCI: make mediated device path independent of pci id
> PCI: refactor print_pci_device
> PCI: reuse parsed info from print_hostpci_devices
> PVE/QemuServer: allow mapped usb devices in config
> PVE/QemuServer: allow mapped pci deviced in config
> PVE/API2/Qemu: add permission checks for mapped usb devices
> PVE/API2/Qemu: add permission checks for mapped pci devices
> PVE/QemuServer: extend 'check_local_resources' for mapped resources
> PVE/API2/Qemu: migrate preconditions: use new check_local_resources
> info
> PVE/QemuMigrate: check for mapped resources on migration
> fix #3574: enable multi pci device mapping from config
> add tests for mapped pci devices
>
> PVE/API2/Qemu.pm | 109 +++++++++++--
> PVE/QemuMigrate.pm | 13 +-
> PVE/QemuServer.pm | 137 +++++++++++-----
> PVE/QemuServer/PCI.pm | 149 +++++++++++++-----
> PVE/QemuServer/USB.pm | 21 ++-
> test/MigrationTest/Shared.pm | 7 +
> test/cfg2cmd/q35-linux-hostpci-mapping.conf | 17 ++
> .../q35-linux-hostpci-mapping.conf.cmd | 36 +++++
> test/run_config2command_tests.pl | 76 +++++++++
> 9 files changed, 473 insertions(+), 92 deletions(-)
> create mode 100644 test/cfg2cmd/q35-linux-hostpci-mapping.conf
> create mode 100644 test/cfg2cmd/q35-linux-hostpci-mapping.conf.cmd
>
> pve-manager:
>
> Dominik Csapak (13):
> PVE/API2/Hardware: add Mapping.pm
> PVE/API2/Cluster: add Hardware mapping list api call
> ui: form/USBSelector: make it more flexible with nodename
> ui: form: add PCIMapSelector
> ui: form: add USBMapSelector
> ui: qemu/PCIEdit: rework panel to add a mapped configuration
> ui: qemu/USBEdit: add 'mapped' device case
> ui: form: add MultiPCISelector
> ui: add window/PCIEdit: edit window for pci mappings
> ui: add window/USBEdit: edit window for usb mappings
> ui: add dc/HardwareView: a CRUD interface for hardware mapping
> ui: window/Migrate: allow mapped devices
> ui: improve permission handling for hardware
>
> PVE/API2/Cluster.pm | 8 +
> PVE/API2/Cluster/Hardware.pm | 117 +++++
> PVE/API2/Cluster/Makefile | 1 +
> PVE/API2/Hardware.pm | 6 +
> PVE/API2/Hardware/Makefile | 1 +
> PVE/API2/Hardware/Mapping.pm | 708 ++++++++++++++++++++++++++
> www/css/ext6-pve.css | 4 +
> www/manager6/Makefile | 6 +
> www/manager6/data/PermPathStore.js | 1 +
> www/manager6/dc/Config.js | 18 +-
> www/manager6/dc/HardwareView.js | 324 ++++++++++++
> www/manager6/form/MultiPCISelector.js | 289 +++++++++++
> www/manager6/form/PCIMapSelector.js | 102 ++++
> www/manager6/form/PCISelector.js | 18 +-
> www/manager6/form/USBMapSelector.js | 73 +++
> www/manager6/form/USBSelector.js | 33 +-
> www/manager6/qemu/HardwareView.js | 17 +-
> www/manager6/qemu/PCIEdit.js | 314 ++++++++----
> www/manager6/qemu/USBEdit.js | 36 +-
> www/manager6/window/Migrate.js | 37 +-
> www/manager6/window/PCIEdit.js | 283 ++++++++++
> www/manager6/window/USBEdit.js | 248 +++++++++
> 22 files changed, 2513 insertions(+), 131 deletions(-)
> create mode 100644 PVE/API2/Cluster/Hardware.pm
> create mode 100644 PVE/API2/Hardware/Mapping.pm
> create mode 100644 www/manager6/dc/HardwareView.js
> create mode 100644 www/manager6/form/MultiPCISelector.js
> create mode 100644 www/manager6/form/PCIMapSelector.js
> create mode 100644 www/manager6/form/USBMapSelector.js
> create mode 100644 www/manager6/window/PCIEdit.js
> create mode 100644 www/manager6/window/USBEdit.js
>
next prev parent reply other threads:[~2022-09-23 16:13 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 12:50 Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH cluster v3 1/1] add nodes/hardware-map.conf Dominik Csapak
2022-11-08 18:03 ` [pve-devel] applied: " Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 10/13] PVE/API2/Qemu: migrate preconditions: use new check_local_resources info Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 11/13] PVE/QemuMigrate: check for mapped resources on migration Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 12/13] fix #3574: enable multi pci device mapping from config Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 13/13] add tests for mapped pci devices Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH access-control v3 1/1] PVE/AccessControl: add Hardware.* privileges and /hardware/ paths Dominik Csapak
2022-11-09 12:05 ` Fabian Grünbichler
2022-11-09 12:39 ` Dominik Csapak
2022-11-09 13:06 ` Fabian Grünbichler
2022-11-09 13:23 ` Dominik Csapak
2022-11-09 12:52 ` Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH common v3 1/3] SysFSTools: make mdev cleanup independent of pciid Dominik Csapak
2022-11-09 8:38 ` Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH common v3 2/3] add PVE/HardwareMap Dominik Csapak
2022-11-09 8:46 ` Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH common v3 3/3] HardwareMap: add support for multiple pci device paths per mapping Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 01/13] cleanup pci devices in more situations Dominik Csapak
2022-11-09 8:00 ` [pve-devel] applied: " Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 02/13] PCI: make mediated device path independent of pci id Dominik Csapak
2022-11-09 8:08 ` [pve-devel] applied: " Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 03/13] PCI: refactor print_pci_device Dominik Csapak
2022-11-09 7:49 ` Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 04/13] PCI: reuse parsed info from print_hostpci_devices Dominik Csapak
2022-11-09 8:23 ` Thomas Lamprecht
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 05/13] PVE/QemuServer: allow mapped usb devices in config Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 06/13] PVE/QemuServer: allow mapped pci deviced " Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 07/13] PVE/API2/Qemu: add permission checks for mapped usb devices Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 08/13] PVE/API2/Qemu: add permission checks for mapped pci devices Dominik Csapak
2022-11-09 12:14 ` Fabian Grünbichler
2022-11-09 12:51 ` Dominik Csapak
2022-11-09 13:28 ` Fabian Grünbichler
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 09/13] PVE/QemuServer: extend 'check_local_resources' for mapped resources Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 10/13] PVE/API2/Qemu: migrate preconditions: use new check_local_resources info Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 11/13] PVE/QemuMigrate: check for mapped resources on migration Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 12/13] fix #3574: enable multi pci device mapping from config Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH qemu-server v3 13/13] add tests for mapped pci devices Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 01/13] PVE/API2/Hardware: add Mapping.pm Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 02/13] PVE/API2/Cluster: add Hardware mapping list api call Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 03/13] ui: form/USBSelector: make it more flexible with nodename Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 04/13] ui: form: add PCIMapSelector Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 05/13] ui: form: add USBMapSelector Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 06/13] ui: qemu/PCIEdit: rework panel to add a mapped configuration Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 07/13] ui: qemu/USBEdit: add 'mapped' device case Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 08/13] ui: form: add MultiPCISelector Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 09/13] ui: add window/PCIEdit: edit window for pci mappings Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 10/13] ui: add window/USBEdit: edit window for usb mappings Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 11/13] ui: add dc/HardwareView: a CRUD interface for hardware mapping Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 12/13] ui: window/Migrate: allow mapped devices Dominik Csapak
2022-09-20 12:50 ` [pve-devel] [PATCH manager v3 13/13] ui: improve permission handling for hardware Dominik Csapak
2022-09-20 16:12 ` [pve-devel] [PATCH many v3] add cluster-wide hardware device mapping DERUMIER, Alexandre
2022-09-23 16:13 ` DERUMIER, Alexandre [this message]
2022-11-08 18:03 ` Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3c1b23a6-c761-f726-659a-db7cedb65b3b@groupe-cyllene.com \
--to=alexandre.derumier@groupe-cyllene.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal