77609c
From 4a0a5d5019938a8b4b5526d33e1bf3d7dcfc56a5 Mon Sep 17 00:00:00 2001
a83cc2
From: Miroslav Rezanina <mrezanin@redhat.com>
77609c
Date: Wed, 26 May 2021 10:56:02 +0200
a83cc2
Subject: Initial redhat build
a83cc2
a83cc2
This patch introduces redhat build structure in redhat subdirectory. In addition,
a83cc2
several issues are fixed in QEMU tree:
a83cc2
77609c
- Change of app name for sasl_server_init in VNC code from qemu to qemu-kvm
77609c
 - As we use qemu-kvm as name in all places, this is updated to be consistent
77609c
- Man page renamed from qemu to qemu-kvm
77609c
 - man page is installed using make install so we have to fix it in qemu tree
a83cc2
a83cc2
We disable make check due to issues with some of the tests.
a83cc2
77609c
This rebase is based on qemu-kvm-5.2.0-13.el9
a83cc2
a83cc2
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
77609c
--
77609c
Rebase changes (210526):
77609c
- Move build to .distro
77609c
- Move changes for support file to related commit
77609c
- Added dependency for python3-sphinx-rtd_theme
77609c
- Removed --disable-sheepdog configure option
77609c
- Added new hw-display modules
77609c
77609c
Rebase changes (210623):
77609c
- SASL initialization moved to ui/vnc-auth-sasl.c
77609c
77609c
Rebase changes (210714):
77609c
- Add accel-qtest-<arch> and accel-tcg-x86_64 libraries
77609c
77609c
Rebase changes (6.1.0 rc1):
77609c
- Added hw-usb-host module
77609c
77609c
Rebase changes (6.1.0 rc4):
77609c
- Disable new configure options (bpf, nvmm, slirp-smbd)
77609c
77609c
Rebase chagnes (6.1.0):
77609c
- Use -pie for ksmctl build (annocheck complain fix)
a83cc2
a83cc2
Merged patches (6.0.0):
77609c
 - 605758c902 Limit build on Power to qemu-img and qemu-ga only
77609c
77609c
Merged patches (6.1.0 RC1):
77609c
- f04f91751f Use cached tarballs
77609c
- 6581165c65 Remove message with running VM count
77609c
- 03c3cac9fc spec-file: build qemu-kvm without SPICE and QXL
77609c
- e0ae6c1f6c spec-file: Obsolete qemu-kvm-ui-spice
77609c
- 9d2e9f9ecf spec: Do not build qemu-kvm-block-gluster
77609c
- cf470b4234 spec: Do not link pcnet and ne2k_pci roms
77609c
- e981284a6b redhat: Install the s390-netboot.img that we've built
77609c
- 24ef557f33 spec: Remove usage of Group: tag
77609c
- c40d69b4f4 spec: Drop %defattr usage
77609c
- f8e98798ce spec: Clean up BuildRequires
77609c
- 47246b43ee spec: Remove iasl BuildRequires
77609c
- 170dc1cbe0 spec: Remove redundant 0 in conditionals
77609c
- 8718f6fa11 spec: Add more have_XXX conditionals
77609c
- a001269ce9 spec: Remove binutils versioned Requires
77609c
- 34545ee641 spec: Remove diffutils BuildRequires
77609c
- c2c82beac9 spec: Remove redundant Requires:
77609c
- 9314c231f4 spec: Add XXX_version macros
77609c
- c43db0bf0f spec: Add have_block_rbd
77609c
- 3ecb0c0319 qga: drop StandardError=syslog
77609c
- 018049dc80 Remove iscsi support
77609c
- a2edf18777 redhat: Replace the kvm-setup.service with a /etc/modules-load.d config file
77609c
- 387b5fbcfe redhat: Move qemu-kvm-docs dependency to qemu-kvm
77609c
- 4ead693178 redhat: introducting qemu-kvm-hw-usbredir
77609c
- 4dc6fc3035 redhat: use the standard vhost-user JSON path
77609c
- 84757178b4 Fix local build
77609c
- 8c394227dd spec: Restrict block drivers in tools
77609c
- b6aa7c1fae Move tools to separate package
77609c
- eafd82e509 Split qemu-pr-helper to separate package
77609c
- 2c0182e2aa spec: RPM_BUILD_ROOT -> %{buildroot}
77609c
- 91bd55ca13 spec: More use of %{name} instead of 'qemu-kvm'
77609c
- 50ba299c61 spec: Use qemu-pr-helper.service from qemu.git (partial)
77609c
- ee08d4e0a3 spec: Use %{_sourcedir} for referencing sources
77609c
- 039e7f7d02 spec: Add tools_only
77609c
- 884ba71617 spec: %build: Add run_configure helper
77609c
- 8ebd864d65 spec: %build: Disable more bits with %{disable_everything} (partial)
77609c
- f23fdb53f5 spec: %build: Add macros for some 'configure' parameters
77609c
- fe951a8bd8 spec: %files: Move qemu-guest-agent and qemu-img earlier
77609c
- 353b632e37 spec: %install: Remove redundant bits
77609c
- 9d2015b752 spec: %install: Add %{modprobe_kvm_conf} macro
77609c
- 6d05134e8c spec: %install: Remove qemu-guest-agent /etc/qemu-kvm usage
77609c
- 985b226467 spec: %install: clean up qemu-ga section
77609c
- dfaf9c600d spec: %install: Use a single %{tools_only} section
77609c
- f6978ddb46 spec: Make tools_only not cross spec sections
77609c
- 071c211098 spec: %install: Limit time spent in %{qemu_kvm_build}
77609c
- 1b65c674be spec: misc syntactic merges with Fedora
77609c
- 4da16294cf spec: Use Fedora's pattern for specifying rc version
77609c
- d7ee259a79 spec: %files: don't use fine grained -docs file list
77609c
- 64cad0c60f spec: %files: Add licenses to qemu-common too
77609c
- c3de4f080a spec: %install: Drop python3 shebang fixup
77609c
77609c
Merged patches (6.1.0 RC2):
77609c
- 46fc216115 Update local build to work with spec file improvements
77609c
77609c
Merged patches (6.1.0 RC3):
77609c
- bab9531548 spec: Remove buildldflags
77609c
- c8360ab6a9 spec: Use %make_build macro
77609c
- f6966c66e9 spec: Drop make install sharedir and datadir usage
77609c
- 86982421bc spec: use %make_install macro
77609c
- 191c405d22 spec: parallelize `make check`
77609c
- 251a1fb958 spec: Drop explicit --build-id
77609c
- 44c7dda6c3 spec: use %{build_ldflags}
77609c
- 0009a34354 Move virtiofsd to separate package
77609c
-  34d1b200b3 Utilize --firmware configure option
77609c
77609c
Merged patches (6.1.0):
77609c
- 2800e1dd03 spec: Switch toolchain to Clang/LLVM (except process-patches.sh)
77609c
- e8a70f500f spec: Use safe-stack for x86_64
77609c
- e29445d50d spec: Reenable write support for VMDK etc. in tools
77609c
- a4fe2a3e16 redhat: Disable LTO on non-x86 architectures
77609c
77609c
fixes
a83cc2
---
77609c
 .distro/85-kvm.preset                   |    5 -
77609c
 .distro/Makefile                        |  100 +
77609c
 .distro/Makefile.common                 |   45 +
77609c
 .distro/README.tests                    |   39 +
77609c
 .distro/kvm-setup                       |   49 -
77609c
 .distro/kvm-setup.service               |   14 -
77609c
 .distro/modules-load.conf               |    4 +
77609c
 .distro/qemu-guest-agent.service        |    1 -
77609c
 .distro/qemu-kvm.spec.template          | 3767 +++++++++++++++++++++++
77609c
 .distro/scripts/extract_build_cmd.py    |   12 +
a83cc2
 .gitignore                              |    1 +
a83cc2
 README.systemtap                        |   43 +
77609c
 configure                               |    1 -
77609c
 meson.build                             |    6 +-
a83cc2
 scripts/qemu-guest-agent/fsfreeze-hook  |    2 +-
a83cc2
 scripts/systemtap/conf.d/qemu_kvm.conf  |    4 +
a83cc2
 scripts/systemtap/script.d/qemu_kvm.stp |    1 +
a83cc2
 tests/check-block.sh                    |    2 +
77609c
 ui/vnc-auth-sasl.c                      |    2 +-
77609c
 19 files changed, 4024 insertions(+), 74 deletions(-)
77609c
 delete mode 100644 .distro/85-kvm.preset
77609c
 create mode 100644 .distro/Makefile
77609c
 create mode 100644 .distro/Makefile.common
77609c
 create mode 100644 .distro/README.tests
77609c
 delete mode 100644 .distro/kvm-setup
77609c
 delete mode 100644 .distro/kvm-setup.service
77609c
 create mode 100644 .distro/modules-load.conf
77609c
 create mode 100644 .distro/qemu-kvm.spec.template
a83cc2
 create mode 100644 README.systemtap
a83cc2
 create mode 100644 scripts/systemtap/conf.d/qemu_kvm.conf
a83cc2
 create mode 100644 scripts/systemtap/script.d/qemu_kvm.stp
a83cc2
a83cc2
diff --git a/README.systemtap b/README.systemtap
a83cc2
new file mode 100644
a83cc2
index 0000000000..ad913fc990
a83cc2
--- /dev/null
a83cc2
+++ b/README.systemtap
a83cc2
@@ -0,0 +1,43 @@
a83cc2
+QEMU tracing using systemtap-initscript
a83cc2
+---------------------------------------
a83cc2
+
a83cc2
+You can capture QEMU trace data all the time using systemtap-initscript.  This
a83cc2
+uses SystemTap's flight recorder mode to trace all running guests to a
a83cc2
+fixed-size buffer on the host.  Old trace entries are overwritten by new
a83cc2
+entries when the buffer size wraps.
a83cc2
+
a83cc2
+1. Install the systemtap-initscript package:
a83cc2
+  # yum install systemtap-initscript
a83cc2
+
a83cc2
+2. Install the systemtap scripts and the conf file:
a83cc2
+  # cp /usr/share/qemu-kvm/systemtap/script.d/qemu_kvm.stp /etc/systemtap/script.d/
a83cc2
+  # cp /usr/share/qemu-kvm/systemtap/conf.d/qemu_kvm.conf /etc/systemtap/conf.d/
a83cc2
+
a83cc2
+The set of trace events to enable is given in qemu_kvm.stp.  This SystemTap
a83cc2
+script can be customized to add or remove trace events provided in
a83cc2
+/usr/share/systemtap/tapset/qemu-kvm-simpletrace.stp.
a83cc2
+
a83cc2
+SystemTap customizations can be made to qemu_kvm.conf to control the flight
a83cc2
+recorder buffer size and whether to store traces in memory only or disk too.
a83cc2
+See stap(1) for option documentation.
a83cc2
+
a83cc2
+3. Start the systemtap service.
a83cc2
+ # service systemtap start qemu_kvm
a83cc2
+
a83cc2
+4. Make the service start at boot time.
a83cc2
+ # chkconfig systemtap on
a83cc2
+
a83cc2
+5. Confirm that the service works.
a83cc2
+  # service systemtap status qemu_kvm
a83cc2
+  qemu_kvm is running...
a83cc2
+
a83cc2
+When you want to inspect the trace buffer, perform the following steps:
a83cc2
+
a83cc2
+1. Dump the trace buffer.
a83cc2
+  # staprun -A qemu_kvm >/tmp/trace.log
a83cc2
+
a83cc2
+2. Start the systemtap service because the preceding step stops the service.
a83cc2
+  # service systemtap start qemu_kvm
a83cc2
+
a83cc2
+3. Translate the trace record to readable format.
a83cc2
+  # /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log
a83cc2
diff --git a/configure b/configure
77609c
index 9a79a004d7..b0dbdded06 100755
a83cc2
--- a/configure
a83cc2
+++ b/configure
77609c
@@ -5189,7 +5189,6 @@ if test "$skip_meson" = no; then
a83cc2
         -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
a83cc2
         -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
a83cc2
         -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
a83cc2
-        ${staticpic:+-Db_staticpic=$staticpic} \
a83cc2
         -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
a83cc2
         -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug \
a83cc2
         -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
a83cc2
diff --git a/meson.build b/meson.build
77609c
index b3e7ec0e92..17707c8748 100644
a83cc2
--- a/meson.build
a83cc2
+++ b/meson.build
a83cc2
@@ -1,6 +1,6 @@
a83cc2
 project('qemu', ['c'], meson_version: '>=0.55.0',
77609c
         default_options: ['warning_level=1', 'c_std=gnu11', 'cpp_std=gnu++11', 'b_colorout=auto'] +
a83cc2
-                         (meson.version().version_compare('>=0.56.0') ? [ 'b_staticpic=false' ] : []),
77609c
+                          [ 'b_staticpic=false' ],
a83cc2
         version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
a83cc2
 
a83cc2
 not_found = dependency('', required: false)
77609c
@@ -1790,7 +1790,9 @@ if capstone_opt == 'internal'
a83cc2
     # Include all configuration defines via a header file, which will wind up
a83cc2
     # as a dependency on the object file, and thus changes here will result
a83cc2
     # in a rebuild.
a83cc2
-    '-include', 'capstone-defs.h'
a83cc2
+    '-include', 'capstone-defs.h',
a83cc2
+
a83cc2
+    '-Wp,-D_GLIBCXX_ASSERTIONS',
a83cc2
   ]
a83cc2
 
a83cc2
   libcapstone = static_library('capstone',
a83cc2
diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-agent/fsfreeze-hook
a83cc2
index 13aafd4845..e9b84ec028 100755
a83cc2
--- a/scripts/qemu-guest-agent/fsfreeze-hook
a83cc2
+++ b/scripts/qemu-guest-agent/fsfreeze-hook
a83cc2
@@ -8,7 +8,7 @@
a83cc2
 # request, it is issued with "thaw" argument after filesystem is thawed.
a83cc2
 
a83cc2
 LOGFILE=/var/log/qga-fsfreeze-hook.log
a83cc2
-FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d
a83cc2
+FSFREEZE_D=$(dirname -- "$(realpath $0)")/fsfreeze-hook.d
a83cc2
 
a83cc2
 # Check whether file $1 is a backup or rpm-generated file and should be ignored
a83cc2
 is_ignored_file() {
a83cc2
diff --git a/scripts/systemtap/conf.d/qemu_kvm.conf b/scripts/systemtap/conf.d/qemu_kvm.conf
a83cc2
new file mode 100644
a83cc2
index 0000000000..372d8160a4
a83cc2
--- /dev/null
a83cc2
+++ b/scripts/systemtap/conf.d/qemu_kvm.conf
a83cc2
@@ -0,0 +1,4 @@
a83cc2
+# Force load uprobes (see BZ#1118352)
a83cc2
+stap -e 'probe process("/usr/libexec/qemu-kvm").function("main") { printf("") }' -c true
a83cc2
+
a83cc2
+qemu_kvm_OPT="-s4" # per-CPU buffer size, in megabytes
a83cc2
diff --git a/scripts/systemtap/script.d/qemu_kvm.stp b/scripts/systemtap/script.d/qemu_kvm.stp
a83cc2
new file mode 100644
a83cc2
index 0000000000..c04abf9449
a83cc2
--- /dev/null
a83cc2
+++ b/scripts/systemtap/script.d/qemu_kvm.stp
a83cc2
@@ -0,0 +1 @@
a83cc2
+probe qemu.kvm.simpletrace.handle_qmp_command,qemu.kvm.simpletrace.monitor_protocol_*,qemu.kvm.simpletrace.migrate_set_state {}
a83cc2
diff --git a/tests/check-block.sh b/tests/check-block.sh
a83cc2
index f86cb863de..6d38340d49 100755
a83cc2
--- a/tests/check-block.sh
a83cc2
+++ b/tests/check-block.sh
a83cc2
@@ -69,6 +69,8 @@ else
a83cc2
     fi
a83cc2
 fi
a83cc2
 
a83cc2
+exit 0
a83cc2
+
a83cc2
 cd tests/qemu-iotests
a83cc2
 
a83cc2
 # QEMU_CHECK_BLOCK_AUTO is used to disable some unstable sub-tests
77609c
diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c
77609c
index 47fdae5b21..2a950caa2a 100644
77609c
--- a/ui/vnc-auth-sasl.c
77609c
+++ b/ui/vnc-auth-sasl.c
77609c
@@ -42,7 +42,7 @@
a83cc2
 
77609c
 bool vnc_sasl_server_init(Error **errp)
77609c
 {
77609c
-    int saslErr = sasl_server_init(NULL, "qemu");
77609c
+    int saslErr = sasl_server_init(NULL, "qemu-kvm");
a83cc2
 
77609c
     if (saslErr != SASL_OK) {
77609c
         error_setg(errp, "Failed to initialize SASL auth: %s",
a83cc2
-- 
a83cc2
2.27.0
a83cc2