a83cc2
From 431955e872aa010376b1f94665908c2ba8194b44 Mon Sep 17 00:00:00 2001
a83cc2
From: Miroslav Rezanina <mrezanin@redhat.com>
a83cc2
Date: Fri, 12 Oct 2018 07:31:11 +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
a83cc2
 - Change of app name for sasl_server_init in VNC code from qemu to qemu-kvm
a83cc2
  - As we use qemu-kvm as name in all places, this is updated to be consistent
a83cc2
 - Man page renamed from qemu to qemu-kvm
a83cc2
  - 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
a83cc2
This rebase is based on qemu-kvm-5.2.0-16.el9
a83cc2
a83cc2
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
a83cc2
a83cc2
Merged patches (6.0.0):
a83cc2
- 605758c902 Limit build on Power to qemu-img and qemu-ga only
a83cc2
---
a83cc2
 .gitignore                              |    1 +
a83cc2
 README.systemtap                        |   43 +
a83cc2
 configure                               |    5 -
a83cc2
 hw/remote/memory.c                      |    2 +-
a83cc2
 hw/remote/proxy.c                       |    2 +-
a83cc2
 meson.build                             |    8 +-
a83cc2
 redhat/Makefile                         |   90 +
a83cc2
 redhat/Makefile.common                  |   50 +
a83cc2
 redhat/README.tests                     |   39 +
a83cc2
 redhat/qemu-kvm.spec.template           | 3609 +++++++++++++++++++++++
a83cc2
 redhat/scripts/extract_build_cmd.py     |    5 +-
a83cc2
 redhat/scripts/process-patches.sh       |   20 +-
a83cc2
 redhat/udev-kvm-check.c                 |   19 +-
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 +
a83cc2
 ui/vnc.c                                |    2 +-
a83cc2
 18 files changed, 3860 insertions(+), 44 deletions(-)
a83cc2
 create mode 100644 README.systemtap
a83cc2
 create mode 100644 redhat/Makefile
a83cc2
 create mode 100644 redhat/Makefile.common
a83cc2
 create mode 100644 redhat/README.tests
a83cc2
 create mode 100644 redhat/qemu-kvm.spec.template
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
a83cc2
index 4f374b4889..53b2fa583a 100755
a83cc2
--- a/configure
a83cc2
+++ b/configure
a83cc2
@@ -6383,10 +6383,6 @@ fi
a83cc2
 mv $cross config-meson.cross
a83cc2
 
a83cc2
 rm -rf meson-private meson-info meson-logs
a83cc2
-unset staticpic
a83cc2
-if ! version_ge "$($meson --version)" 0.56.0; then
a83cc2
-  staticpic=$(if test "$pie" = yes; then echo true; else echo false; fi)
a83cc2
-fi
a83cc2
 NINJA=$ninja $meson setup \
a83cc2
         --prefix "$prefix" \
a83cc2
         --libdir "$libdir" \
a83cc2
@@ -6406,7 +6402,6 @@ NINJA=$ninja $meson setup \
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/hw/remote/memory.c b/hw/remote/memory.c
a83cc2
index 32085b1e05..bf0047a81b 100644
a83cc2
--- a/hw/remote/memory.c
a83cc2
+++ b/hw/remote/memory.c
a83cc2
@@ -43,7 +43,7 @@ void remote_sysmem_reconfig(MPQemuMsg *msg, Error **errp)
a83cc2
     remote_sysmem_reset();
a83cc2
 
a83cc2
     for (region = 0; region < msg->num_fds; region++) {
a83cc2
-        g_autofree char *name;
a83cc2
+        g_autofree char *name = NULL;
a83cc2
         subregion = g_new(MemoryRegion, 1);
a83cc2
         name = g_strdup_printf("remote-mem-%u", suffix++);
a83cc2
         memory_region_init_ram_from_fd(subregion, NULL,
a83cc2
diff --git a/hw/remote/proxy.c b/hw/remote/proxy.c
a83cc2
index 4fa4be079d..253c1aa7ec 100644
a83cc2
--- a/hw/remote/proxy.c
a83cc2
+++ b/hw/remote/proxy.c
a83cc2
@@ -347,7 +347,7 @@ static void probe_pci_info(PCIDevice *dev, Error **errp)
a83cc2
                    PCI_BASE_ADDRESS_SPACE_IO : PCI_BASE_ADDRESS_SPACE_MEMORY;
a83cc2
 
a83cc2
         if (size) {
a83cc2
-            g_autofree char *name;
a83cc2
+            g_autofree char *name = NULL;
a83cc2
             pdev->region[i].dev = pdev;
a83cc2
             pdev->region[i].present = true;
a83cc2
             if (type == PCI_BASE_ADDRESS_SPACE_MEMORY) {
a83cc2
diff --git a/meson.build b/meson.build
a83cc2
index c6f4b0cf5e..06c15bd6d2 100644
a83cc2
--- a/meson.build
a83cc2
+++ b/meson.build
a83cc2
@@ -1,6 +1,6 @@
a83cc2
 project('qemu', ['c'], meson_version: '>=0.55.0',
a83cc2
-        default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto'] +
a83cc2
-                         (meson.version().version_compare('>=0.56.0') ? [ 'b_staticpic=false' ] : []),
a83cc2
+        default_options: ['warning_level=1', 'c_std=gnu99', 'cpp_std=gnu++11', 'b_colorout=auto',
a83cc2
+                          'b_staticpic=false' ],
a83cc2
         version: run_command('head', meson.source_root() / 'VERSION').stdout().strip())
a83cc2
 
a83cc2
 not_found = dependency('', required: false)
a83cc2
@@ -1482,7 +1482,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
a83cc2
diff --git a/ui/vnc.c b/ui/vnc.c
a83cc2
index 456db47d71..97ae92b181 100644
a83cc2
--- a/ui/vnc.c
a83cc2
+++ b/ui/vnc.c
a83cc2
@@ -4146,7 +4146,7 @@ void vnc_display_open(const char *id, Error **errp)
a83cc2
 
a83cc2
 #ifdef CONFIG_VNC_SASL
a83cc2
     if (sasl) {
a83cc2
-        int saslErr = sasl_server_init(NULL, "qemu");
a83cc2
+        int saslErr = sasl_server_init(NULL, "qemu-kvm");
a83cc2
 
a83cc2
         if (saslErr != SASL_OK) {
a83cc2
             error_setg(errp, "Failed to initialize SASL auth: %s",
a83cc2
-- 
a83cc2
2.27.0
a83cc2