Based on the RFC and following on- and off-list discussion about custom CPU models [0].
In essence, this revised patch allows a user to specify custom CPU models in /etc/pve/cpu-models.conf (section-config style [1]), where VMs using that CPU model inherit details from the definition. This removes any fragile "auto-magical" CPU flag detection, while still giving the user a way to create VMs with the best possible subset of CPU features maintaining live-migration compatibility. Includes the infrastructure for broadcasting supported CPU flags for each cluster-node via the key-value store - this is not necessary for the custom-cpu feature in particular, but I think could prove useful for implementing the GUI part (e.g. show the user which flags are supported on which nodes). v7 -> v8: * rebase on master, fix tests now using +pve0 * fixed nits noted by Thomas * moved live-migration/snapshot patches forward to avoid temporary breakage * fix CPU hotplug with custom CPUs * guard mkdir with check_cfs_is_mounted and also run before write * fix rebase-error in cfg2cmd tests (getaddrinfo_all) * dropped applied patches I deliberately didn't add any version_guard checks, since I don't think a bump is the right thing to do here (I say, after I waited for the pve-version series to be applied for making this v8). Doing so would break custom CPUs on older machine versions (since I'd have to pin it to 4.1~pve2) for no reason. The idea would have been to show a neat error message, but since up to this point we didn't even check the pve-version on migration, it wouldn't help much. Besides, migration to older versions already fails cleanly with a semi-readable message ('Unknown option: force-cpu'). < see [2] for older history > [0]: https://pve.proxmox.com/pipermail/pve-devel/2019-July/038268.html [1]: e.g.: cpu-model: custom-cpu-name host-phys-bits 1 flags +aes;+avx;+avx2 reported-model kvm64 [2] https://pve.proxmox.com/pipermail/pve-devel/2020-January/041278.html qemu-server: Stefan Reiter (8): Adapt CPUConfig to handle custom models Verify VM-specific CPU configs seperately Include "-cpu" parameter with live-migration Include "-cpu" parameter with snapshots/suspend Add helpers to better structure CPU option handling Rework get_cpu_options and allow custom CPU models fix #2318: allow phys-bits and host-phys-bits CPU settings cfg2cmd: add test cases for custom CPU models PVE/API2/Qemu.pm | 10 +- PVE/QemuConfig.pm | 36 +- PVE/QemuMigrate.pm | 22 + PVE/QemuServer.pm | 44 +- PVE/QemuServer/CPUConfig.pm | 477 +++++++++++++++--- test/cfg2cmd/custom-cpu-model-defaults.conf | 8 + .../custom-cpu-model-defaults.conf.cmd | 24 + test/cfg2cmd/custom-cpu-model.conf | 8 + test/cfg2cmd/custom-cpu-model.conf.cmd | 27 + test/cfg2cmd/i440fx-win10-hostpci.conf.cmd | 2 +- test/cfg2cmd/minimal-defaults.conf.cmd | 2 +- test/cfg2cmd/pinned-version.conf.cmd | 2 +- .../q35-linux-hostpci-multifunction.conf.cmd | 2 +- test/cfg2cmd/q35-linux-hostpci.conf.cmd | 2 +- test/cfg2cmd/q35-win10-hostpci.conf.cmd | 2 +- test/cfg2cmd/simple1.conf.cmd | 2 +- test/cfg2cmd/spice-enhancments.conf.cmd | 2 +- test/cfg2cmd/spice-linux-4.1.conf.cmd | 2 +- test/cfg2cmd/spice-usb3.conf.cmd | 2 +- test/cfg2cmd/spice-win.conf.cmd | 2 +- test/run_config2command_tests.pl | 23 + 21 files changed, 609 insertions(+), 92 deletions(-) create mode 100644 test/cfg2cmd/custom-cpu-model-defaults.conf create mode 100644 test/cfg2cmd/custom-cpu-model-defaults.conf.cmd create mode 100644 test/cfg2cmd/custom-cpu-model.conf create mode 100644 test/cfg2cmd/custom-cpu-model.conf.cmd -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel