From cbd36e2ba7f3e96ce441c7cfbf92017a7ba3bfe8 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Wed, 26 May 2021 10:56:02 +0200 Subject: Initial redhat build This patch introduces redhat build structure in redhat subdirectory. In addition, several issues are fixed in QEMU tree: - Change of app name for sasl_server_init in VNC code from qemu to qemu-kvm - As we use qemu-kvm as name in all places, this is updated to be consistent - Man page renamed from qemu to qemu-kvm - man page is installed using make install so we have to fix it in qemu tree We disable make check due to issues with some of the tests. This rebase is based on qemu-kvm-9.0.0-10.el9 Signed-off-by: Miroslav Rezanina -- Rebase changes (6.1.0): - Move build to .distro - Move changes for support file to related commit - Added dependency for python3-sphinx-rtd_theme - Removed --disable-sheepdog configure option - Added new hw-display modules - SASL initialization moved to ui/vnc-auth-sasl.c - Add accel-qtest- and accel-tcg-x86_64 libraries - Added hw-usb-host module - Disable new configure options (bpf, nvmm, slirp-smbd) - Use -pie for ksmctl build (annocheck complain fix) Rebase changes (6.2.0): - removed --disable-jemalloc and --disable-tcmalloc configure options - added audio-oss.so - added fdt requirement for x86_64 - tests/acceptance renamed to tests/avocado - added multiboot_dma.bin - Add -Wno-string-plus-int to extra flags - Updated configure options Rebase changes (7.0.0): - Do not use -mlittle CFLAG on ppc64le - Used upstream handling issue with ui/clipboard.c - Use -mlittle-endian on ppc64le instead of deleteing it in configure - Drop --disable-libxml2 option for configure (upstream) - Remove vof roms - Disable AVX2 support - Use internal meson - Disable new configure options (dbus-display and qga-vss) - Change permissions on installing tests/Makefile.include - Remove ssh block driver Rebase changes (7.1.0): - --disable-vnc-png renamed to --disable-png (upstream) - removed --disable-vhost-vsock and --disable-vhost-scsi - capstone submodule removed - Temporary include capstone build Rebase changes (7.2.0): - Switch --enable-slirp=system to --enable-slirp - Added new configure options (blkio and sndio, both disabled) Rebase changes (7.2.0): - Fix SRPM name generation to work on Fedora 37 - Switch back to system meson Rebase changes (8.0.0): - use enable-dtrace-backands instead of enable-dtrace-backend - Removed qemu virtiofsd bits - test/check-block.sh removed (upstream) - Add new --disable-* options for configure Rebase changes (8.1.0): - qmp-spec.txt installed by make - Removed --meson configure option - Add --disable-pypi - Removed --with-git and -with-gitsubmodules - Renamed --disable-pypi to --disable-downloads - Minor updates in README.tests Rebase changes (8.2.0): - Removed --disable-hax (upstream) - Added --disable-plugins configure option - Fixing frh.py strings Rebase notes (9.0.0): - Fixed qemu-kvm binary location change - Remove hppa-firmware64.img - Package stp files for utilities - Download subprojects on local build Rebase notes (9.1.0 rc0): - Explicit BuildRequires for python3-tomli - Removed --disable-avx512f configure option Merged patches (6.0.0): - 605758c902 Limit build on Power to qemu-img and qemu-ga only Merged patches (6.1.0): - f04f91751f Use cached tarballs - 6581165c65 Remove message with running VM count - 03c3cac9fc spec-file: build qemu-kvm without SPICE and QXL - e0ae6c1f6c spec-file: Obsolete qemu-kvm-ui-spice - 9d2e9f9ecf spec: Do not build qemu-kvm-block-gluster - cf470b4234 spec: Do not link pcnet and ne2k_pci roms - e981284a6b redhat: Install the s390-netboot.img that we've built - 24ef557f33 spec: Remove usage of Group: tag - c40d69b4f4 spec: Drop %defattr usage - f8e98798ce spec: Clean up BuildRequires - 47246b43ee spec: Remove iasl BuildRequires - 170dc1cbe0 spec: Remove redundant 0 in conditionals - 8718f6fa11 spec: Add more have_XXX conditionals - a001269ce9 spec: Remove binutils versioned Requires - 34545ee641 spec: Remove diffutils BuildRequires - c2c82beac9 spec: Remove redundant Requires: - 9314c231f4 spec: Add XXX_version macros - c43db0bf0f spec: Add have_block_rbd - 3ecb0c0319 qga: drop StandardError=syslog - 018049dc80 Remove iscsi support - a2edf18777 redhat: Replace the kvm-setup.service with a /etc/modules-load.d config file - 387b5fbcfe redhat: Move qemu-kvm-docs dependency to qemu-kvm - 4ead693178 redhat: introducting qemu-kvm-hw-usbredir - 4dc6fc3035 redhat: use the standard vhost-user JSON path - 84757178b4 Fix local build - 8c394227dd spec: Restrict block drivers in tools - b6aa7c1fae Move tools to separate package - eafd82e509 Split qemu-pr-helper to separate package - 2c0182e2aa spec: RPM_BUILD_ROOT -> %{buildroot} - 91bd55ca13 spec: More use of %{name} instead of 'qemu-kvm' - 50ba299c61 spec: Use qemu-pr-helper.service from qemu.git (partial) - ee08d4e0a3 spec: Use %{_sourcedir} for referencing sources - 039e7f7d02 spec: Add tools_only - 884ba71617 spec: %build: Add run_configure helper - 8ebd864d65 spec: %build: Disable more bits with %{disable_everything} (partial) - f23fdb53f5 spec: %build: Add macros for some 'configure' parameters - fe951a8bd8 spec: %files: Move qemu-guest-agent and qemu-img earlier - 353b632e37 spec: %install: Remove redundant bits - 9d2015b752 spec: %install: Add %{modprobe_kvm_conf} macro - 6d05134e8c spec: %install: Remove qemu-guest-agent /etc/qemu-kvm usage - 985b226467 spec: %install: clean up qemu-ga section - dfaf9c600d spec: %install: Use a single %{tools_only} section - f6978ddb46 spec: Make tools_only not cross spec sections - 071c211098 spec: %install: Limit time spent in %{qemu_kvm_build} - 1b65c674be spec: misc syntactic merges with Fedora - 4da16294cf spec: Use Fedora's pattern for specifying rc version - d7ee259a79 spec: %files: don't use fine grained -docs file list - 64cad0c60f spec: %files: Add licenses to qemu-common too - c3de4f080a spec: %install: Drop python3 shebang fixup - 46fc216115 Update local build to work with spec file improvements - bab9531548 spec: Remove buildldflags - c8360ab6a9 spec: Use %make_build macro - f6966c66e9 spec: Drop make install sharedir and datadir usage - 86982421bc spec: use %make_install macro - 191c405d22 spec: parallelize `make check` - 251a1fb958 spec: Drop explicit --build-id - 44c7dda6c3 spec: use %{build_ldflags} - 0009a34354 Move virtiofsd to separate package - 34d1b200b3 Utilize --firmware configure option - 2800e1dd03 spec: Switch toolchain to Clang/LLVM (except process-patches.sh) - e8a70f500f spec: Use safe-stack for x86_64 - e29445d50d spec: Reenable write support for VMDK etc. in tools - a4fe2a3e16 redhat: Disable LTO on non-x86 architectures Merged patches (6.2.0): - 333452440b remove sgabios dependency - 7d3633f184 enable pulseaudio - bd898709b0 spec: disable use of gcrypt for crypto backends in favour of gnutls - e4f0c6dee6 spec: Remove block-curl and block-ssh dependency - 4dc13bfe63 spec: Build the VDI block driver - d2f2ff3c74 spec: Explicitly include compress filter - a7d047f9c2 Move ksmtuned files to separate package Merged patches (7.0.0): - 098d4d08d0 spec: Rename qemu-kvm-hw-usbredir to qemu-kvm-device-usb-redirect - c2bd0d6834 spec: Split qemu-kvm-ui-opengl - 2c9cda805d spec: Introduce packages for virtio-gpu-* modules (changed as rhel device tree not set) - d0414a3e0b spec: Introduce device-display-virtio-vga* packages - 3534ec46d4 spec: Move usb-host module to separate package - ddc14d4737 spec: Move qtest accel module to tests package - 6f2c4befa6 spec: Extend qemu-kvm-core description - 6f11866e4e (rhel/rhel-9.0.0) Update to qemu-kvm-6.2.0-6.el9 - da0a28758f ui/clipboard: fix use-after-free regression - 895d4d52eb spec: Remove qemu-virtiofsd - c8c8c8bd84 spec: Fix obsolete for spice subpackages - d46d2710b2 spec: Obsolete old usb redir subpackage - 6f52a50b68 spec: Obsolete ssh driver Merged patches (7.2.0): - 8c6834feb6 Remove opengl display device subpackages (C9S MR 124) - 0ecc97f29e spec: Add requires for packages with additional virtio-gpu variants (C9S MR 124) Merged patches (8.0.0): - 7754f6ba78 Minor packaging fixes - 401af56187 spec: Disable VDUSE Merged patches (8.1.0): - 0c2306676f Enable Linux io_uring - b7fa6426d5 Enable libblkio block drivers - 19f6d7a6f4 Fix virtio-blk-vhost-vdpa typo in spec file - f356cae88f spec: Build DBUS display - 77b763efd5 Provide elf2dmp binary in qemu-tools Merged patches (8.2.0): - cd9efa221d Enable qemu-kvm-device-usb-redirec for aarch64 Merged patches (9.0.0 rc0): - 25de053dbf spec: Enable zstd Signed-off-by: Miroslav Rezanina --- .distro/Makefile | 101 + .distro/Makefile.common | 42 + .distro/README.tests | 39 + .distro/modules-load.conf | 4 + .distro/qemu-guest-agent.service | 1 - .distro/qemu-kvm.spec.template | 5351 +++++++++++++++++++++++ .distro/rpminspect.yaml | 6 +- .distro/scripts/extract_build_cmd.py | 12 + .distro/scripts/frh.py | 4 +- .distro/scripts/process-patches.sh | 6 +- .gitignore | 1 + README.systemtap | 43 + scripts/qemu-guest-agent/fsfreeze-hook | 2 +- scripts/systemtap/conf.d/qemu_kvm.conf | 4 + scripts/systemtap/script.d/qemu_kvm.stp | 1 + ui/vnc-auth-sasl.c | 2 +- 16 files changed, 5612 insertions(+), 7 deletions(-) create mode 100644 .distro/Makefile create mode 100644 .distro/Makefile.common create mode 100644 .distro/README.tests create mode 100644 .distro/modules-load.conf create mode 100644 .distro/qemu-kvm.spec.template create mode 100644 README.systemtap create mode 100644 scripts/systemtap/conf.d/qemu_kvm.conf create mode 100644 scripts/systemtap/script.d/qemu_kvm.stp diff --git a/README.systemtap b/README.systemtap new file mode 100644 index 0000000000..ad913fc990 --- /dev/null +++ b/README.systemtap @@ -0,0 +1,43 @@ +QEMU tracing using systemtap-initscript +--------------------------------------- + +You can capture QEMU trace data all the time using systemtap-initscript. This +uses SystemTap's flight recorder mode to trace all running guests to a +fixed-size buffer on the host. Old trace entries are overwritten by new +entries when the buffer size wraps. + +1. Install the systemtap-initscript package: + # yum install systemtap-initscript + +2. Install the systemtap scripts and the conf file: + # cp /usr/share/qemu-kvm/systemtap/script.d/qemu_kvm.stp /etc/systemtap/script.d/ + # cp /usr/share/qemu-kvm/systemtap/conf.d/qemu_kvm.conf /etc/systemtap/conf.d/ + +The set of trace events to enable is given in qemu_kvm.stp. This SystemTap +script can be customized to add or remove trace events provided in +/usr/share/systemtap/tapset/qemu-kvm-simpletrace.stp. + +SystemTap customizations can be made to qemu_kvm.conf to control the flight +recorder buffer size and whether to store traces in memory only or disk too. +See stap(1) for option documentation. + +3. Start the systemtap service. + # service systemtap start qemu_kvm + +4. Make the service start at boot time. + # chkconfig systemtap on + +5. Confirm that the service works. + # service systemtap status qemu_kvm + qemu_kvm is running... + +When you want to inspect the trace buffer, perform the following steps: + +1. Dump the trace buffer. + # staprun -A qemu_kvm >/tmp/trace.log + +2. Start the systemtap service because the preceding step stops the service. + # service systemtap start qemu_kvm + +3. Translate the trace record to readable format. + # /usr/share/qemu-kvm/simpletrace.py --no-header /usr/share/qemu-kvm/trace-events /tmp/trace.log diff --git a/scripts/qemu-guest-agent/fsfreeze-hook b/scripts/qemu-guest-agent/fsfreeze-hook index 13aafd4845..e9b84ec028 100755 --- a/scripts/qemu-guest-agent/fsfreeze-hook +++ b/scripts/qemu-guest-agent/fsfreeze-hook @@ -8,7 +8,7 @@ # request, it is issued with "thaw" argument after filesystem is thawed. LOGFILE=/var/log/qga-fsfreeze-hook.log -FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d +FSFREEZE_D=$(dirname -- "$(realpath $0)")/fsfreeze-hook.d # Check whether file $1 is a backup or rpm-generated file and should be ignored is_ignored_file() { diff --git a/scripts/systemtap/conf.d/qemu_kvm.conf b/scripts/systemtap/conf.d/qemu_kvm.conf new file mode 100644 index 0000000000..372d8160a4 --- /dev/null +++ b/scripts/systemtap/conf.d/qemu_kvm.conf @@ -0,0 +1,4 @@ +# Force load uprobes (see BZ#1118352) +stap -e 'probe process("/usr/libexec/qemu-kvm").function("main") { printf("") }' -c true + +qemu_kvm_OPT="-s4" # per-CPU buffer size, in megabytes diff --git a/scripts/systemtap/script.d/qemu_kvm.stp b/scripts/systemtap/script.d/qemu_kvm.stp new file mode 100644 index 0000000000..c04abf9449 --- /dev/null +++ b/scripts/systemtap/script.d/qemu_kvm.stp @@ -0,0 +1 @@ +probe qemu.kvm.simpletrace.handle_qmp_command,qemu.kvm.simpletrace.monitor_protocol_*,qemu.kvm.simpletrace.migrate_set_state {} diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c index 47fdae5b21..2a950caa2a 100644 --- a/ui/vnc-auth-sasl.c +++ b/ui/vnc-auth-sasl.c @@ -42,7 +42,7 @@ bool vnc_sasl_server_init(Error **errp) { - int saslErr = sasl_server_init(NULL, "qemu"); + int saslErr = sasl_server_init(NULL, "qemu-kvm"); if (saslErr != SASL_OK) { error_setg(errp, "Failed to initialize SASL auth: %s", -- 2.39.3