two small nits on individual patches (could also be done as follow-ups, but it requires a rebase already anyway), others looks good to go from my side :)
thanks for the patience and work! On October 15, 2019 4:12 pm, Stefan Reiter wrote: > 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). > > I intentionally wanted to send this series before starting any GUI or new API > work, to get some feedback if this approach works better than the cluster-cpu > one. > > v4 -> v5: > > * fix flag broadcasting error detection > * check for empty flag file on generation in pve-qemu > * get_model_by_name -> get_custom_model w/o defaults and inlined conf loading > * rename verify_vm_cpu_conf to parse_vm_cpu_conf and fix property checking > (even custom models have restrictions on certain properties when used to > verify a VM-specific configuration) > * add pve-cpu-conf format for future API additions > * smaller cleanups/renamings/commenting according to Fabian's review > > v3 -> v4: > > * Change "built-in"/"custom" flag to "custom-" prefix for namespacing > * Include missing pve-cluster patch for cfs_ functions > > Previously forgot to mention for v3: > * Rebased to master to include Alexandre's Intel CPU model patches > > v2 -> v3: > > * Shuffle some code between patches to make sure nothing breaks in-between > * Change "query_understood_cpu_flags" to use static file generated at compile > time of "pve-qemu" > * Fix "query_supported_cpu_flags" to accomodate tcg accelerator (instead of > kvm > only). Also fix broadcast to set both variants, and better failure handling. > * Useful minimum value for phys-bits > * Rename/Negate property: "custom" -> "built-in" > * more/better comments, minor code/commit fixes as suggested by Thomas' review > > v1 -> v2: > > Quite a big change to v1. Once I began reusing the $cpu_fmt hash for both > custom > CPU models and VM-specific settings, I realized the approach mentioned by > Fabian > - to move some helpers from QemuServer to the new CPUConfig > - would actually make a lot of sense. > > * Re-query supported CPU flags when QEMU/KVM updates (without needing to > restart pvestatd) using kvm_user_version > * Improve documentation and error handling on CPU flag querying helpers > * Rename CustomCPUConfig -> CPUConfig > * Extract some CPU helpers from QemuServer to CPUConfig > * Use cfs_ functions for IO, don't use 'bless' > * Merge $cpu_fmt for custom models and VM-specific CPU settings > * Rename 'basemodel' -> 'reported-model', only support default models as > reported (avoids custom models depending on each other for now) > * Add new CPU flag resolving infrastructure > * Add and fix test cases > > Does not include any fix for versioning/live-migration with custom models for > now, felt these changes were big enough. Also applies to CPU hotplug with > custom > models. > > > [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 > > > manager: Stefan Reiter (1): > Broadcast supported CPU flags > > PVE/Service/pvestatd.pm | 47 +++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 45 insertions(+), 2 deletions(-) > > qemu: Stefan Reiter (1): > Write understood CPU flags into static file > > debian/rules | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > cluster: Stefan Reiter (1): > Add "cpu-models.conf" to observed files > > data/PVE/Cluster.pm | 1 + > data/src/status.c | 1 + > 2 files changed, 2 insertions(+) > > qemu-server: Stefan Reiter (9): > Add QEMU CPU flag querying helpers > Add CPUConfig file and migrate some helpers > Adapt CPUConfig to handle custom models > Add overrides and convenience functions to CPUConfig > Verify VM-specific CPU configs seperately > 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 case for custom CPU model > > PVE/QemuServer.pm | 333 ++++-------- > PVE/QemuServer/CPUConfig.pm | 599 +++++++++++++++++++++ > PVE/QemuServer/Makefile | 1 + > 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/q35-linux-hostpci.conf.cmd | 2 +- > test/cfg2cmd/q35-win10-hostpci.conf.cmd | 2 +- > test/cfg2cmd/simple1.conf.cmd | 2 +- > test/cfg2cmd/spice-usb3.conf.cmd | 2 +- > test/run_config2command_tests.pl | 21 + > 12 files changed, 767 insertions(+), 234 deletions(-) > create mode 100644 PVE/QemuServer/CPUConfig.pm > 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 > > _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel