public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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: Tue, 20 Sep 2022 16:12:29 +0000	[thread overview]
Message-ID: <4fb3586e7f215464e2d7da86a754ea58203c3fbf.camel@groupe-cyllene.com> (raw)
In-Reply-To: <20220920125041.3636561-1-d.csapak@proxmox.com>

Hi Dominik,

I will try to test it this week.

Le mardi 20 septembre 2022 à 14:50 +0200, 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
> 


  parent reply	other threads:[~2022-09-20 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 ` DERUMIER, Alexandre [this message]
2022-09-23 16:13 ` [pve-devel] [PATCH many v3] add cluster-wide hardware device mapping DERUMIER, Alexandre
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=4fb3586e7f215464e2d7da86a754ea58203c3fbf.camel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal