diff --git a/.gitignore b/.gitignore index 793c8ea..e46378c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ /qemu-2.12.0-rc2.tar.xz /qemu-2.12.0-rc3.tar.xz /qemu-2.12.0.tar.xz +/qemu-3.0.0-rc3.tar.xz +/qemu-3.0.0.tar.xz diff --git a/50-kvm-s390x.conf b/50-kvm-s390x.conf deleted file mode 100644 index 0df7f0d..0000000 --- a/50-kvm-s390x.conf +++ /dev/null @@ -1,3 +0,0 @@ -# KVM S390 VM creation fails without this set -# https://www.mail-archive.com/kvm@vger.kernel.org/msg115576.html -vm.allocate_pgste = 1 diff --git a/ksm.service b/ksm.service deleted file mode 100644 index 42d67d9..0000000 --- a/ksm.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Kernel Samepage Merging -ConditionPathExists=/sys/kernel/mm/ksm -ConditionVirtualization=no - -[Service] -Type=oneshot -RemainAfterExit=yes -EnvironmentFile=-/etc/sysconfig/ksm -ExecStart=/usr/libexec/ksmctl start -ExecStop=/usr/libexec/ksmctl stop - -[Install] -WantedBy=multi-user.target diff --git a/ksm.sysconfig b/ksm.sysconfig deleted file mode 100644 index d99656d..0000000 --- a/ksm.sysconfig +++ /dev/null @@ -1,4 +0,0 @@ -# The maximum number of unswappable kernel pages -# which may be allocated by ksm (0 for unlimited) -# If unset, defaults to half of total memory -# KSM_MAX_KERNEL_PAGES= diff --git a/ksmctl.c b/ksmctl.c deleted file mode 100644 index af39591..0000000 --- a/ksmctl.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Start/stop KSM, for systemd. - * Copyright (C) 2009, 2011 Red Hat, Inc. - * Written by Paolo Bonzini . - * Based on the original sysvinit script by Dan Kenigsberg - * This file is distributed under the GNU General Public License, version 2 - * or later. */ - -#include -#include -#include -#include -#include -#include - -#define KSM_MAX_KERNEL_PAGES_FILE "/sys/kernel/mm/ksm/max_kernel_pages" -#define KSM_RUN_FILE "/sys/kernel/mm/ksm/run" - -char *program_name; - -int usage(void) -{ - fprintf(stderr, "Usage: %s {start|stop}\n", program_name); - return 1; -} - -int write_value(uint64_t value, char *filename) -{ - FILE *fp; - if (!(fp = fopen(filename, "w")) || - fprintf(fp, "%llu\n", (unsigned long long) value) == EOF || - fflush(fp) == EOF || - fclose(fp) == EOF) - return 1; - - return 0; -} - -uint64_t ksm_max_kernel_pages() -{ - char *var = getenv("KSM_MAX_KERNEL_PAGES"); - char *endptr; - uint64_t value; - if (var && *var) { - value = strtoll(var, &endptr, 0); - if (value < LLONG_MAX && !*endptr) - return value; - } - /* Unless KSM_MAX_KERNEL_PAGES is set, let KSM munch up to half of - * total memory. */ - return sysconf(_SC_PHYS_PAGES) / 2; -} - -int start(void) -{ - if (access(KSM_MAX_KERNEL_PAGES_FILE, R_OK) >= 0) - write_value(ksm_max_kernel_pages(), KSM_MAX_KERNEL_PAGES_FILE); - return write_value(1, KSM_RUN_FILE); -} - -int stop(void) -{ - return write_value(0, KSM_RUN_FILE); -} - -int main(int argc, char **argv) -{ - program_name = argv[0]; - if (argc < 2) { - return usage(); - } else if (!strcmp(argv[1], "start")) { - return start(); - } else if (!strcmp(argv[1], "stop")) { - return stop(); - } else { - return usage(); - } -} diff --git a/ksmtuned b/ksmtuned deleted file mode 100644 index 7bc5743..0000000 --- a/ksmtuned +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/bash -# -# Copyright 2009 Red Hat, Inc. and/or its affiliates. -# Released under the GPL -# -# Author: Dan Kenigsberg -# -# ksmtuned - a simple script that controls whether (and with what vigor) ksm -# should search for duplicated pages. -# -# starts ksm when memory commited to qemu processes exceeds a threshold, and -# make ksm work harder and harder untill memory load falls below that -# threshold. -# -# send SIGUSR1 to this process right after a new qemu process is started, or -# following its death, to retune ksm accordingly -# -# needs testing and ironing. contact danken@redhat.com if something breaks. - -if [ -f /etc/ksmtuned.conf ]; then - . /etc/ksmtuned.conf -fi - -debug() { - if [ -n "$DEBUG" ]; then - s="`/bin/date`: $*" - [ -n "$LOGFILE" ] && echo "$s" >> "$LOGFILE" || echo "$s" - fi -} - - -KSM_MONITOR_INTERVAL=${KSM_MONITOR_INTERVAL:-60} -KSM_NPAGES_BOOST=${KSM_NPAGES_BOOST:-300} -KSM_NPAGES_DECAY=${KSM_NPAGES_DECAY:--50} - -KSM_NPAGES_MIN=${KSM_NPAGES_MIN:-64} -KSM_NPAGES_MAX=${KSM_NPAGES_MAX:-1250} -# millisecond sleep between ksm scans for 16Gb server. Smaller servers sleep -# more, bigger sleep less. -KSM_SLEEP_MSEC=${KSM_SLEEP_MSEC:-10} - -KSM_THRES_COEF=${KSM_THRES_COEF:-20} -KSM_THRES_CONST=${KSM_THRES_CONST:-2048} - -total=`awk '/^MemTotal:/ {print $2}' /proc/meminfo` -debug total $total - -npages=0 -sleep=$[KSM_SLEEP_MSEC * 16 * 1024 * 1024 / total] -[ $sleep -le 10 ] && sleep=10 -debug sleep $sleep -thres=$[total * KSM_THRES_COEF / 100] -if [ $KSM_THRES_CONST -gt $thres ]; then - thres=$KSM_THRES_CONST -fi -debug thres $thres - -KSMCTL () { - case x$1 in - xstop) - echo 0 > /sys/kernel/mm/ksm/run - ;; - xstart) - echo $2 > /sys/kernel/mm/ksm/pages_to_scan - echo $3 > /sys/kernel/mm/ksm/sleep_millisecs - echo 1 > /sys/kernel/mm/ksm/run - ;; - esac -} - -committed_memory () { - # calculate how much memory is committed to running qemu processes - local pidlist - pidlist=$(pgrep -d ' ' -- '^qemu(-(kvm|system-.+)|:.{1,11})$') - if [ -n "$pidlist" ]; then - ps -p "$pidlist" -o rsz= - fi | awk '{ sum += $1 }; END { print 0+sum }' -} - -free_memory () { - awk '/^(MemFree|Buffers|Cached):/ {free += $2}; END {print free}' \ - /proc/meminfo -} - -increase_npages() { - local delta - delta=${1:-0} - npages=$[npages + delta] - if [ $npages -lt $KSM_NPAGES_MIN ]; then - npages=$KSM_NPAGES_MIN - elif [ $npages -gt $KSM_NPAGES_MAX ]; then - npages=$KSM_NPAGES_MAX - fi - echo $npages -} - - -adjust () { - local free committed - free=`free_memory` - committed=`committed_memory` - debug committed $committed free $free - if [ $[committed + thres] -lt $total -a $free -gt $thres ]; then - KSMCTL stop - debug "$[committed + thres] < $total and free > $thres, stop ksm" - return 1 - fi - debug "$[committed + thres] > $total, start ksm" - if [ $free -lt $thres ]; then - npages=`increase_npages $KSM_NPAGES_BOOST` - debug "$free < $thres, boost" - else - npages=`increase_npages $KSM_NPAGES_DECAY` - debug "$free > $thres, decay" - fi - KSMCTL start $npages $sleep - debug "KSMCTL start $npages $sleep" - return 0 -} - -function nothing () { - : -} - -loop () { - trap nothing SIGUSR1 - while true - do - sleep $KSM_MONITOR_INTERVAL & - wait $! - adjust - done -} - -PIDFILE=${PIDFILE-/var/run/ksmtune.pid} -if touch "$PIDFILE"; then - loop & - echo $! > "$PIDFILE" -fi diff --git a/ksmtuned.conf b/ksmtuned.conf deleted file mode 100644 index fc4518c..0000000 --- a/ksmtuned.conf +++ /dev/null @@ -1,21 +0,0 @@ -# Configuration file for ksmtuned. - -# How long ksmtuned should sleep between tuning adjustments -# KSM_MONITOR_INTERVAL=60 - -# Millisecond sleep between ksm scans for 16Gb server. -# Smaller servers sleep more, bigger sleep less. -# KSM_SLEEP_MSEC=10 - -# KSM_NPAGES_BOOST=300 -# KSM_NPAGES_DECAY=-50 -# KSM_NPAGES_MIN=64 -# KSM_NPAGES_MAX=1250 - -# KSM_THRES_COEF=20 -# KSM_THRES_CONST=2048 - -# uncomment the following if you want ksmtuned debug info - -# LOGFILE=/var/log/ksmtuned -# DEBUG=1 diff --git a/ksmtuned.service b/ksmtuned.service deleted file mode 100644 index 09dffa1..0000000 --- a/ksmtuned.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Kernel Samepage Merging (KSM) Tuning Daemon -After=ksm.service -Requires=ksm.service -ConditionVirtualization=no - -[Service] -ExecStart=/usr/sbin/ksmtuned -ExecReload=/bin/kill -USR1 $MAINPID -Type=forking - -[Install] -WantedBy=multi-user.target diff --git a/kvm.conf b/kvm-x86.modprobe.conf similarity index 100% rename from kvm.conf rename to kvm-x86.modprobe.conf diff --git a/qemu.spec b/qemu.spec index 8aae785..eac8b93 100644 --- a/qemu.spec +++ b/qemu.spec @@ -84,6 +84,7 @@ Requires: %{name}-block-gluster = %{epoch}:%{version}-%{release} \ Requires: %{name}-block-iscsi = %{epoch}:%{version}-%{release} \ Requires: %{name}-block-nfs = %{epoch}:%{version}-%{release} \ Requires: %{name}-block-rbd = %{epoch}:%{version}-%{release} \ +Requires: %{name}-block-ssh = %{epoch}:%{version}-%{release} \ Requires: %{name}-audio-alsa = %{epoch}:%{version}-%{release} \ Requires: %{name}-audio-oss = %{epoch}:%{version}-%{release} \ Requires: %{name}-audio-pa = %{epoch}:%{version}-%{release} \ @@ -103,21 +104,14 @@ Requires: %{name}-ui-sdl = %{epoch}:%{version}-%{release} Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 2.12.0 -Release: 1%{?rcrel}.2.riscv64%{?dist} +Version: 3.0.0 +Release: 1%{?rcrel}.0.riscv64%{?dist} Epoch: 2 License: GPLv2 and BSD and MIT and CC-BY URL: http://www.qemu.org/ Source0: http://wiki.qemu-project.org/download/%{name}-%{version}%{?rcstr}.tar.xz -# KSM control scripts -Source4: ksm.service -Source5: ksm.sysconfig -Source6: ksmctl.c -Source7: ksmtuned.service -Source8: ksmtuned -Source9: ksmtuned.conf # guest agent service Source10: qemu-guest-agent.service Source17: qemu-ga.sysconfig @@ -130,12 +124,12 @@ Source13: qemu-kvm.sh # PR manager service Source14: qemu-pr-helper.service Source15: qemu-pr-helper.socket -# /etc/modprobe.d/kvm.conf -Source20: kvm.conf -# /etc/sysctl.d/50-kvm-s390x.conf -Source21: 50-kvm-s390x.conf +# /etc/modprobe.d/kvm.conf, for x86 +Source20: kvm-x86.modprobe.conf # /etc/security/limits.d/95-kvm-ppc64-memlock.conf -Source22: 95-kvm-ppc64-memlock.conf +Source21: 95-kvm-ppc64-memlock.conf + + # riscv backend # Source: https://github.com/riscv/riscv-qemu/commit/0805ad337785f0cce29ecf162bad9e1c477051f3.patch @@ -330,17 +324,6 @@ Requires(postun): systemd-units This package provides the common files needed by all QEMU targets -%package -n ksm -Summary: Kernel Samepage Merging services -Requires(post): systemd-units -Requires(postun): systemd-units -%description -n ksm -Kernel Samepage Merging (KSM) is a memory-saving de-duplication feature, -that merges anonymous (private) pages (not pagecache ones). - -This package provides service files for disabling and tuning KSM. - - %package guest-agent Summary: QEMU guest agent Requires(post): systemd-units @@ -884,9 +867,9 @@ run_configure() { --prefix=%{_prefix} \ --libdir=%{_libdir} \ --sysconfdir=%{_sysconfdir} \ - --interp-prefix=%{_prefix}/qemu-%%M \ --localstatedir=%{_localstatedir} \ --libexecdir=%{_libexecdir} \ + --interp-prefix=%{_prefix}/qemu-%%M \ --with-pkgversion=%{name}-%{version}-%{release} \ --disable-strip \ --disable-werror \ @@ -962,8 +945,6 @@ make V=1 %{?_smp_mflags} $buildldflags popd %endif -gcc %{_sourcedir}/ksmctl.c $RPM_OPT_FLAGS $RPM_LD_FLAGS -o ksmctl - %install @@ -974,19 +955,9 @@ mkdir -p %{buildroot}%{_udevdir} mkdir -p %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{_sysconfdir}/qemu -install -D -p -m 0644 %{_sourcedir}/ksm.service %{buildroot}%{_unitdir} -install -D -p -m 0644 %{_sourcedir}/ksm.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/ksm -install -D -p -m 0755 ksmctl %{buildroot}%{_libexecdir}/ksmctl - -install -D -p -m 0644 %{_sourcedir}/ksmtuned.service %{buildroot}%{_unitdir} -install -D -p -m 0755 %{_sourcedir}/ksmtuned %{buildroot}%{_sbindir}/ksmtuned -install -D -p -m 0644 %{_sourcedir}/ksmtuned.conf %{buildroot}%{_sysconfdir}/ksmtuned.conf - -install -D -p -m 0644 %{_sourcedir}/kvm.conf %{buildroot}%{_sysconfdir}/modprobe.d/kvm.conf - # Install qemu-guest-agent service and udev rules -install -m 0644 %{_sourcedir}/qemu-guest-agent.service %{buildroot}%{_unitdir} -install -m 0644 %{_sourcedir}/qemu-ga.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/qemu-ga +install -p -m 0644 %{_sourcedir}/qemu-guest-agent.service %{buildroot}%{_unitdir} +install -D -p -m 0644 %{_sourcedir}/qemu-ga.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/qemu-ga install -m 0644 %{_sourcedir}/99-qemu-guest-agent.rules %{buildroot}%{_udevdir} mkdir -p %{buildroot}%{_sysconfdir}/qemu-ga/fsfreeze-hook.d @@ -999,11 +970,6 @@ touch %{buildroot}%{_localstatedir}/log/qga-fsfreeze-hook.log install -m 0644 %{_sourcedir}/qemu-pr-helper.service %{buildroot}%{_unitdir} install -m 0644 %{_sourcedir}/qemu-pr-helper.socket %{buildroot}%{_unitdir} -%ifarch s390x -install -d %{buildroot}%{_sysconfdir}/sysctl.d -install -m 0644 %{_sourcedir}/50-kvm-s390x.conf %{buildroot}%{_sysconfdir}/sysctl.d -%endif - %ifarch %{power64} install -d %{buildroot}%{_sysconfdir}/security/limits.d install -m 0644 %{_sourcedir}/95-kvm-ppc64-memlock.conf %{buildroot}%{_sysconfdir}/security/limits.d @@ -1053,6 +1019,7 @@ done %if 0%{?need_qemu_kvm} install -m 0755 %{_sourcedir}/qemu-kvm.sh %{buildroot}%{_bindir}/qemu-kvm ln -sf qemu.1.gz %{buildroot}%{_mandir}/man1/qemu-kvm.1.gz +install -D -p -m 0644 %{_sourcedir}/kvm-x86.modprobe.conf %{buildroot}%{_sysconfdir}/modprobe.d/kvm.conf %endif install -D -p -m 0644 qemu.sasl %{buildroot}%{_sysconfdir}/sasl2/qemu.conf @@ -1175,15 +1142,6 @@ qemu-sanity-check --qemu=%{?hostqemu} ||: popd -%if %{have_kvm} -%post %{kvm_package} - -%ifarch s390x -%sysctl_apply 50-kvm-s390x.conf -%endif -%endif - - %post common getent group kvm >/dev/null || groupadd -g 36 -r kvm getent group qemu >/dev/null || groupadd -g 107 -r qemu @@ -1192,17 +1150,6 @@ getent passwd qemu >/dev/null || \ -c "qemu user" qemu -%post -n ksm -%systemd_post ksm.service -%systemd_post ksmtuned.service -%preun -n ksm -%systemd_preun ksm.service -%systemd_preun ksmtuned.service -%postun -n ksm -%systemd_postun_with_restart ksm.service -%systemd_postun_with_restart ksmtuned.service - - %post user-binfmt /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || : %postun user-binfmt @@ -1280,21 +1227,11 @@ getent passwd qemu >/dev/null || \ %{_unitdir}/qemu-pr-helper.socket %attr(4755, root, root) %{_libexecdir}/qemu-bridge-helper %config(noreplace) %{_sysconfdir}/sasl2/qemu.conf -%config(noreplace) %{_sysconfdir}/modprobe.d/kvm.conf %dir %{_sysconfdir}/qemu %config(noreplace) %{_sysconfdir}/qemu/bridge.conf %dir %{_libdir}/qemu -%files -n ksm -%{_libexecdir}/ksmctl -%{_sbindir}/ksmtuned -%{_unitdir}/ksmtuned.service -%{_unitdir}/ksm.service -%config(noreplace) %{_sysconfdir}/ksmtuned.conf -%config(noreplace) %{_sysconfdir}/sysconfig/ksm - - %files guest-agent %{_bindir}/qemu-ga %{_mandir}/man8/qemu-ga.8* @@ -1614,9 +1551,6 @@ getent passwd qemu >/dev/null || \ %{_mandir}/man1/qemu-system-s390x.1* %{_datadir}/%{name}/s390-ccw.img %{_datadir}/%{name}/s390-netboot.img -%ifarch s390x -%{_sysconfdir}/sysctl.d/50-kvm-s390x.conf -%endif %files system-sh4 @@ -1671,6 +1605,7 @@ getent passwd qemu >/dev/null || \ %if 0%{?need_qemu_kvm} %{_bindir}/qemu-kvm %{_mandir}/man1/qemu-kvm.1* +%config(noreplace) %{_sysconfdir}/modprobe.d/kvm.conf %endif @@ -1684,15 +1619,29 @@ getent passwd qemu >/dev/null || \ %changelog -* Thu May 10 2018 David Abdurachmanov - 2:2.12.0-1.2.riscv64 -- Re-enable systemtap (stap) for riscv64 - -* Thu May 10 2018 David Abdurachmanov - 2:2.12.0-1.1.riscv64 -- Add BuildRequires: libatomic-static for riscv64 - -* Wed May 09 2018 David Abdurachmanov - 2:2.12.0-1.0.riscv64 +* Mon Sep 10 2018 David Abdurachmanov - 2:3.0.0-1.0.riscv64 - Enable riscv64 as host +* Wed Aug 15 2018 Cole Robinson - 2:3.0.0-1 +- Rebase to qemu-3.0.0 GA + +* Mon Aug 13 2018 Cole Robinson - 2:3.0.0-0.2.rc3 +- Drop ksm package, moved to ksmtuned srpm + +* Tue Jul 31 2018 Cole Robinson - 2:3.0.0-0.1.rc3 +- Rebase to qemu-3.0.0-rc3 +- Drop now unneeded s390x conf (bz #1609706) +- Only install modprobe kvm.conf on x86 (bz #1517989) + +* Fri Jul 13 2018 Peter Robinson 2:2.12.0-4 +- Rebuild for Xen 4.11 + +* Mon Jun 18 2018 Daniel P. Berrangé - 2:2.12.0-3 +- New CPU features for speculative store bypass (CVE-2018-3639) + +* Tue Jun 05 2018 Cole Robinson - 2:2.12.0-2 +- Fix qxl memslot_get_virt crashes (bz #1565354) + * Mon Apr 30 2018 Cole Robinson - 2:2.12.0-1 - Update to qemu-2.12.0 GA diff --git a/sources b/sources index 4cc5147..c7b3cb2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (qemu-2.12.0.tar.xz) = dda057c52cf5fe460b029448049266ace061d21fb5f1cf71a6a37f67b3b7fc3350f6712bf22803fc38fa91f0bd438896ba01b5817b3b94ba9b6925aeaae053b7 +SHA512 (qemu-3.0.0.tar.xz) = a764302f50b9aca4134bbbc1f361b98e71240cdc7b25600dfe733bf4cf17bd86000bd28357697b08f3b656899dceb9e459350b8d55557817444ed5d7fa380a5a