Merge remote-tracking branch 'gerrit/master' into f/centos76
Change-Id: I1c7d7adf054471ef8a00bdc9ce9193dba83025a6 Signed-off-by: Saul Wold <sgw@linux.intel.com>
This commit is contained in:
commit
2a170ad956
@ -1,6 +1,7 @@
|
||||
SRC_DIR="$CGCS_BASE/git/libvirt"
|
||||
COPY_LIST="\
|
||||
libvirt/* \
|
||||
libvirt/hooks/* \
|
||||
$CGCS_BASE/downloads/gnulib-ffc927e.tar.gz \
|
||||
$CGCS_BASE/downloads/keycodemapdb-16e5b07.tar.gz"
|
||||
TIS_BASE_SRCREV=ab58260efaa712650c63bb1917122f270070fa4b
|
||||
|
@ -16,7 +16,7 @@
|
||||
# Always run autoreconf
|
||||
%{!?enable_autotools:%global enable_autotools 1}
|
||||
|
||||
# WRS: Custom build config. Based on the R2/bitbake configure line.
|
||||
# STX: Custom build config. Based on the R2/bitbake configure line.
|
||||
%define _without_esx 1
|
||||
%define _without_hyperv 1
|
||||
%define _without_libxl 1
|
||||
@ -258,13 +258,14 @@ URL: https://libvirt.org/
|
||||
Source0: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
|
||||
#Source1: symlinks
|
||||
|
||||
# WRS
|
||||
# STX
|
||||
Source2: libvirt.logrotate
|
||||
Source3: libvirt.lxc
|
||||
Source4: libvirt.qemu
|
||||
Source5: libvirt.uml
|
||||
Source6: gnulib-ffc927e.tar.gz
|
||||
Source7: keycodemapdb-16e5b07.tar.gz
|
||||
Source8: qemu
|
||||
|
||||
Requires: libvirt-daemon = %{version}-%{release}
|
||||
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
||||
@ -461,9 +462,9 @@ BuildRequires: wireshark-devel >= 1.12.1
|
||||
BuildRequires: libssh-devel >= 0.7.0
|
||||
%endif
|
||||
|
||||
# WRS: For generating configure
|
||||
# STX: For generating configure
|
||||
BuildRequires: gnulib
|
||||
# WRS: Needed by bootstrap
|
||||
# STX: Needed by bootstrap
|
||||
BuildRequires: perl-XML-XPath
|
||||
|
||||
Provides: bundled(gnulib)
|
||||
@ -1304,7 +1305,7 @@ rm -rf .git
|
||||
|
||||
# place macros above and build commands below this comment
|
||||
|
||||
# WRS: Generate configure script. Default is to do a "git clone" of gnulib.
|
||||
# STX: Generate configure script. Default is to do a "git clone" of gnulib.
|
||||
# Use the tar ball gnulib tarball instead.
|
||||
tar zxf %{SOURCE6}
|
||||
./bootstrap --no-git --gnulib-srcdir=gnulib-ffc927e --copy
|
||||
@ -1379,7 +1380,7 @@ rm -f po/stamp-po
|
||||
--without-dtrace \
|
||||
%{arg_init_script}
|
||||
|
||||
#WRS: Avoid doing a 'config.status --recheck' (./configure executed twice).
|
||||
#STX: Avoid doing a 'config.status --recheck' (./configure executed twice).
|
||||
touch -r config.status configure
|
||||
|
||||
make %{?_smp_mflags}
|
||||
@ -1470,7 +1471,7 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.uml
|
||||
# Copied into libvirt-docs subpackage eventually
|
||||
mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} libvirt-docs
|
||||
|
||||
# WRS: Disable dtrace
|
||||
# STX: Disable dtrace
|
||||
# %ifarch %{power64} s390x x86_64 ia64 alpha sparc64
|
||||
# mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \
|
||||
# $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp
|
||||
@ -1478,7 +1479,7 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt-%{version} libvirt-docs
|
||||
# $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp
|
||||
# %endif
|
||||
|
||||
# WRS: Begin custom install
|
||||
# STX: Begin custom install
|
||||
## Enable syslog for libvirtd ( /var/log/libvirtd.log )
|
||||
echo "log_outputs=\"3:syslog:libvirtd\"" >> %{buildroot}/etc/libvirt/libvirtd.conf
|
||||
|
||||
@ -1493,12 +1494,15 @@ install -p -D -m 644 %{SOURCE2} %{buildroot}/etc/logrotate.d/libvirtd
|
||||
install -p -D -m 644 %{SOURCE3} %{buildroot}/etc/logrotate.d/libvirtd.lxc
|
||||
install -p -D -m 644 %{SOURCE4} %{buildroot}/etc/logrotate.d/libvirtd.qemu
|
||||
install -p -D -m 644 %{SOURCE5} %{buildroot}/etc/logrotate.d/libvirtd.uml
|
||||
# WRS: End custom install
|
||||
## Install hooks
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/libvirt/hooks
|
||||
install -m 0500 %{SOURCE8} $RPM_BUILD_ROOT/etc/libvirt/hooks/qemu
|
||||
# STX: End custom install
|
||||
|
||||
%clean
|
||||
rm -fr %{buildroot}
|
||||
|
||||
# WRS: We are not maintaining the unit tests.
|
||||
# STX: We are not maintaining the unit tests.
|
||||
# %check
|
||||
# cd tests
|
||||
# # These tests don't current work in a mock build root
|
||||
@ -1631,7 +1635,7 @@ if [ $1 -ge 1 ] ; then
|
||||
fi
|
||||
|
||||
%post daemon-config-network
|
||||
# WRS: The 'with_network' flag doesn't work properly. There are some packaging
|
||||
# STX: The 'with_network' flag doesn't work properly. There are some packaging
|
||||
# errors when using it. Disable default.xml manually ...
|
||||
# We don't want 'virbr0' and 'virbr0-nic' interfaces created.
|
||||
|
||||
@ -1777,11 +1781,11 @@ exit 0
|
||||
|
||||
%files
|
||||
|
||||
# WRS: Customization
|
||||
# STX: Customization
|
||||
%dir /data/images/
|
||||
|
||||
%files docs
|
||||
# TODO(WRS): NEWS is not present in git source repo.
|
||||
# TODO(STX): NEWS is not present in git source repo.
|
||||
%doc AUTHORS ChangeLog.gz README
|
||||
%doc libvirt-docs/*
|
||||
|
||||
@ -1874,8 +1878,9 @@ exit 0
|
||||
|
||||
%doc examples/polkit/*.rules
|
||||
|
||||
# WRS: Customization
|
||||
# STX: Customization
|
||||
/etc/logrotate.d/*
|
||||
/etc/libvirt/hooks/qemu
|
||||
|
||||
%files daemon-config-network
|
||||
%dir %{_datadir}/libvirt/networks/
|
||||
@ -2061,7 +2066,7 @@ exit 0
|
||||
%{_bindir}/virt-pki-validate
|
||||
%{_bindir}/virt-host-validate
|
||||
|
||||
# WRS: Disable dtrace
|
||||
# STX: Disable dtrace
|
||||
# %{_datadir}/systemtap/tapset/libvirt_probes*.stp
|
||||
# %{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp
|
||||
# %{_datadir}/systemtap/tapset/libvirt_functions.stp
|
||||
|
127
libvirt/libvirt/hooks/qemu
Executable file
127
libvirt/libvirt/hooks/qemu
Executable file
@ -0,0 +1,127 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2017 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# This script logs to user.log
|
||||
#
|
||||
# An instance with vTPM enable will have a QEMU config section in its XML file.
|
||||
# e.g.
|
||||
# <qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
|
||||
# <qemu:arg value="-device"/>
|
||||
# <qemu:arg value="tpm-tis,tpmdev=tpm-tpm0,id=tpm0"/>
|
||||
# <qemu:arg value="-bios"/>
|
||||
# <qemu:arg value="/guest/bios.bin"/>
|
||||
# <qemu:arg value="-tpmdev"/>
|
||||
# <qemu:arg value="cuse-tpm,id=tpm-tpm0,path=/dev/vtpm-instance-000001ad,cancel-path=/dev/null"/>
|
||||
# </qemu:commandline>
|
||||
#
|
||||
# For more information see the vTPM HLD in /folk/cgts/docs/security/
|
||||
#
|
||||
# The script is called with the following parameters
|
||||
# e.g. /etc/libvirt/hooks/qemu <guest_name> <operation>
|
||||
#
|
||||
|
||||
# Save the instance's XML. The guest qemu hook scrips are given the full XML description
|
||||
# on their stdin.
|
||||
XML_DATA=$(/bin/cat)
|
||||
|
||||
GUEST_NAME=$1
|
||||
|
||||
shift
|
||||
OPERATION=$*
|
||||
|
||||
logger -p info -t $0 "hook qemu file guest $GUEST_NAME with operation $OPERATION"
|
||||
|
||||
# CPU Low latency setup:
|
||||
#
|
||||
# A cpu is set to low latency when:
|
||||
# 1) host is set to subfunction=lowlatency in platform.conf and
|
||||
# 2) domain has dedicated pinning
|
||||
#
|
||||
# example of <cputune> section when domain has dedicated pinning:
|
||||
# <cputune>
|
||||
# <vcpupin vcpu='0' cpuset='5'/>
|
||||
# <vcpupin vcpu='1' cpuset='6'/>
|
||||
# <vcpupin vcpu='2' cpuset='7'/>
|
||||
# <emulatorpin cpuset='5'/>
|
||||
# </cputune>
|
||||
#
|
||||
# example of <cputune> section when domain has shared pinning:
|
||||
# <cputune>
|
||||
# <shares>4096</shares>
|
||||
# <vcpupin vcpu='0' cpuset='5-21'/>
|
||||
# <vcpupin vcpu='1' cpuset='5-21'/>
|
||||
# <vcpupin vcpu='2' cpuset='5-21'/>
|
||||
# <vcpupin vcpu='3' cpuset='5-21'/>
|
||||
# <emulatorpin cpuset='5-21'/>
|
||||
# </cputune>
|
||||
|
||||
if [ "${OPERATION}" == "prepare begin -" ] || [ "${OPERATION}" == "stopped end -" ]; then
|
||||
# verify this host is set as lowlatency
|
||||
lowlat=$(cat /etc/platform/platform.conf 2>/dev/null | grep -E 'subfunction.*lowlatency')
|
||||
if [ -n "${lowlat}" ]; then
|
||||
# grab the <cputune> settings and remove single quotes
|
||||
CPUTUNE=$(echo ${XML_DATA} | grep -oP '(?<=<cputune).*?(?=</cputune>)' | sed "s/'//g")
|
||||
|
||||
# grab all cpuset pinned to a unique CPU. Treat them as dedicated
|
||||
CPUSET=($(echo ${CPUTUNE} | grep -oP '(?<=cpuset=)[^/]+(?=.+emulator)' | grep -vP '[^0-9]'))
|
||||
if [ ${#CPUSET[@]} -ne 0 ]; then
|
||||
# convert to a comma separated list
|
||||
CPUS=$(IFS=, ; echo "${CPUSET[*]}")
|
||||
if [ "${OPERATION}" == "prepare begin -" ]; then
|
||||
/usr/bin/set-cpu-wakeup-latency.sh "low" "${CPUS}"
|
||||
else
|
||||
/usr/bin/set-cpu-wakeup-latency.sh "high" "${CPUS}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
VTPM_OPER=""
|
||||
|
||||
if [ "$OPERATION" == "prepare begin -" ]; then
|
||||
|
||||
# Get the instance's uuid
|
||||
UUID=$(echo $XML_DATA | grep -oP '(?<=<uuid>).*?(?=</uuid>)')
|
||||
if [ -z "$UUID" ]; then
|
||||
# This should not happen
|
||||
logger -p err -t $0 "Failed to retrieve uuid for guest $GUEST_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Grab the qemu line "<qemu:arg value='cuse-tpm ... "
|
||||
LINE=$(echo $XML_DATA | grep -oP "(?<=<qemu:arg value=')[^<]+" | grep cuse-tpm )
|
||||
if [ -z "$LINE" ]; then
|
||||
# We do not setup a vTPM but we need to check if this Guest has previous vTPM data
|
||||
# and if so delete it. This can happen when we Resize a Guest with a flavor that
|
||||
# does not contain the vTPM extra spec xml data.
|
||||
VTPM_OPER="clear"
|
||||
else
|
||||
# Extract the device name
|
||||
VTPM=$(echo $LINE | tail -n1 | grep -Po '(?<=,path=)[^ ]+' | cut -d ',' -f1)
|
||||
if [ -z "$VTPM" ]; then
|
||||
# This instance does not require a vTPM. See comment above regarding "clear".
|
||||
VTPM_OPER="clear"
|
||||
else
|
||||
logger -p info -t $0 "Found vTPM configuration for guest $GUEST_NAME"
|
||||
VTPM_OPER="setup"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Setup the vTPM device
|
||||
/etc/libvirt/setup_vtpm "$VTPM_OPER" "/dev/vtpm-$GUEST_NAME" "$UUID" 2>&1 > /dev/null
|
||||
rc=$?
|
||||
if [[ $rc != 0 ]]; then
|
||||
logger -p err -t $0 "setup_vtpm failed with return value $rc for device $VTPM and guest $UUID"
|
||||
# Do not return error if we were just doing a clear
|
||||
if [ "$VTPM_OPER" != "clear" ]; then
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user