[pve-devel] applied: [PATCH qemu] Write recognized CPUID flags into static file

Thomas Lamprecht t.lamprecht at proxmox.com
Thu Oct 17 13:56:19 CEST 2019


located at /usr/share/kvm/recognized-CPUID-flags-x86_64

It's a simple one flag per line list of all flags the build of QEMU
can understand for x86_64 CPUs.

It will be used in qemu-server for the custom CPU model feature.

For now, only x86_64 is implemented, since aarch64 doesn't print any flags when
called this way.

Co-developed-by: Stefan Reiter <s.reiter at proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
---

if applied this one, I changed the name of the file, it's now directly derived
from what QEMU uses when doing -cpu help, makes sense to match them IMO.

 debian/parse-cpu-flags.pl | 23 +++++++++++++++++++++++
 debian/rules              |  5 +++++
 2 files changed, 28 insertions(+)
 create mode 100755 debian/parse-cpu-flags.pl

diff --git a/debian/parse-cpu-flags.pl b/debian/parse-cpu-flags.pl
new file mode 100755
index 0000000..1847b3e
--- /dev/null
+++ b/debian/parse-cpu-flags.pl
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+my @flags = ();
+my $got_flags_section;
+
+while (<STDIN>) {
+    if (/^\s*Recognized CPUID flags:/) {
+	$got_flags_section = 1;
+	next;
+    }
+    next if !$got_flags_section;
+
+    s/^\s+//;
+
+    push @flags, split(/\s+/);
+}
+
+die "no QEMU/KVM CPU flags detected from STDIN input" if scalar (@flags) <= 0;
+
+print join("\n", @flags) or die "$!\n";
diff --git a/debian/rules b/debian/rules
index 8f428c7..dad78dd 100755
--- a/debian/rules
+++ b/debian/rules
@@ -21,6 +21,8 @@ ARCH ?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
 PACKAGE=pve-qemu-kvm
 destdir := $(CURDIR)/debian/$(PACKAGE)
 
+flagfile := $(destdir)/usr/share/kvm/recognized-CPUID-flags-x86_64
+
 CFLAGS = -Wall
 
 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
@@ -128,6 +130,9 @@ install: build
 	rm -Rf $(destdir)/usr/include
 	rm -Rf $(destdir)/usr/lib*
 
+	# CPU flags are static for QEMU version, allows avoiding more costly checks
+	$(destdir)/usr/bin/qemu-system-x86_64 -cpu help | ./debian/parse-cpu-flags.pl > $(flagfile)
+
 # Build architecture-independent files here.
 binary-indep: build install
 # We have nothing to do by default.
-- 
2.20.1





More information about the pve-devel mailing list