mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging
* only build util/async-teardown.c when system build is requested * target/i386: fix BQL handling of the legacy FERR interrupts * target/i386: fix memory operand size for CVTPS2PD * target/i386: Add support for AMX-COMPLEX in CPUID enumeration * compile plugins on Darwin * configure and meson cleanups * drop mkvenv support for Python 3.7 and Debian10 * add wrap file for libblkio * tweak KVM stubs # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmT5t6UUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroMmjwf+MpvVuq+nn+3PqGUXgnzJx5ccA5ne # O9Xy8+1GdlQPzBw/tPovxXDSKn3HQtBfxObn2CCE1tu/4uHWpBA1Vksn++NHdUf2 # P0yoHxGskJu5iYYTtIcNw5cH2i+AizdiXuEjhfNjqD5Y234cFoHnUApt9e3zBvVO # cwGD7WpPuSb4g38hHkV6nKcx72o7b4ejDToqUVZJ2N+RkddSqB03fSdrOru0hR7x # V+lay0DYdFszNDFm05LJzfDbcrHuSryGA91wtty7Fzj6QhR/HBHQCUZJxMB5PI7F # Zy4Zdpu60zxtSxUqeKgIi7UhNFgMcax2Hf9QEqdc/B4ARoBbboh4q4u8kQ== # =dH7/ # -----END PGP SIGNATURE----- # gpg: Signature made Thu 07 Sep 2023 07:44:37 EDT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (51 commits) docs/system/replay: do not show removed command line option subprojects: add wrap file for libblkio sysemu/kvm: Restrict kvm_pc_setup_irq_routing() to x86 targets sysemu/kvm: Restrict kvm_has_pit_state2() to x86 targets sysemu/kvm: Restrict kvm_get_apic_state() to x86 targets sysemu/kvm: Restrict kvm_arch_get_supported_cpuid/msr() to x86 targets target/i386: Restrict declarations specific to CONFIG_KVM target/i386: Allow elision of kvm_hv_vpindex_settable() target/i386: Allow elision of kvm_enable_x2apic() target/i386: Remove unused KVM stubs target/i386/cpu-sysemu: Inline kvm_apic_in_kernel() target/i386/helper: Restrict KVM declarations to system emulation hw/i386/fw_cfg: Include missing 'cpu.h' header hw/i386/pc: Include missing 'cpu.h' header hw/i386/pc: Include missing 'sysemu/tcg.h' header Revert "mkvenv: work around broken pip installations on Debian 10" mkvenv: assume presence of importlib.metadata Python: Drop support for Python 3.7 configure: remove dead code meson: list leftover CONFIG_* symbols ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
@@ -164,14 +164,6 @@ ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_PLUGIN),y)
|
||||
.PHONY: plugins
|
||||
plugins:
|
||||
$(call quiet-command,\
|
||||
$(MAKE) $(SUBDIR_MAKEFLAGS) -C contrib/plugins V="$(V)", \
|
||||
"BUILD", "example plugins")
|
||||
endif # $(CONFIG_PLUGIN)
|
||||
|
||||
else # config-host.mak does not exist
|
||||
ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fail))
|
||||
$(error Please call configure before running make)
|
||||
@@ -184,15 +176,20 @@ include $(SRC_PATH)/tests/Makefile.include
|
||||
|
||||
all: recurse-all
|
||||
|
||||
ROMS_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(ROMS)))
|
||||
.PHONY: $(ROMS_RULES)
|
||||
$(ROMS_RULES):
|
||||
SUBDIR_RULES=$(foreach t, all clean distclean, $(addsuffix /$(t), $(SUBDIRS)))
|
||||
.PHONY: $(SUBDIR_RULES)
|
||||
$(SUBDIR_RULES):
|
||||
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),)
|
||||
|
||||
ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
|
||||
.PHONY: plugins
|
||||
plugins: contrib/plugins/all
|
||||
endif
|
||||
|
||||
.PHONY: recurse-all recurse-clean
|
||||
recurse-all: $(addsuffix /all, $(ROMS))
|
||||
recurse-clean: $(addsuffix /clean, $(ROMS))
|
||||
recurse-distclean: $(addsuffix /distclean, $(ROMS))
|
||||
recurse-all: $(addsuffix /all, $(SUBDIRS))
|
||||
recurse-clean: $(addsuffix /clean, $(SUBDIRS))
|
||||
recurse-distclean: $(addsuffix /distclean, $(SUBDIRS))
|
||||
|
||||
######################################################################
|
||||
|
||||
@@ -296,7 +293,7 @@ help:
|
||||
$(call print-help,cscope,Generate cscope index)
|
||||
$(call print-help,sparse,Run sparse on the QEMU source)
|
||||
@echo ''
|
||||
ifeq ($(CONFIG_PLUGIN),y)
|
||||
ifneq ($(filter contrib/plugins, $(SUBDIRS)),)
|
||||
@echo 'Plugin targets:'
|
||||
$(call print-help,plugins,Build the example TCG plugins)
|
||||
@echo ''
|
||||
@@ -316,7 +313,7 @@ endif
|
||||
@echo 'Documentation targets:'
|
||||
$(call print-help,html man,Build documentation in specified format)
|
||||
@echo ''
|
||||
ifdef CONFIG_WIN32
|
||||
ifneq ($(filter msi, $(ninja-targets)),)
|
||||
@echo 'Windows targets:'
|
||||
$(call print-help,installer,Build NSIS-based installer for QEMU)
|
||||
$(call print-help,msi,Build MSI-based installer for qemu-ga)
|
||||
|
||||
@@ -11,7 +11,9 @@ tcg_ss.add(files(
|
||||
))
|
||||
tcg_ss.add(when: 'CONFIG_USER_ONLY', if_true: files('user-exec.c'))
|
||||
tcg_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_false: files('user-exec-stub.c'))
|
||||
tcg_ss.add(when: 'CONFIG_PLUGIN', if_true: [files('plugin-gen.c')])
|
||||
if get_option('plugins')
|
||||
tcg_ss.add(files('plugin-gen.c'))
|
||||
endif
|
||||
tcg_ss.add(when: libdw, if_true: files('debuginfo.c'))
|
||||
tcg_ss.add(when: 'CONFIG_LINUX', if_true: files('perf.c'))
|
||||
specific_ss.add_all(when: 'CONFIG_TCG', if_true: tcg_ss)
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ chardev_ss.add(when: 'CONFIG_WIN32', if_true: files(
|
||||
'char-win.c',
|
||||
))
|
||||
|
||||
chardev_ss = chardev_ss.apply(config_host, strict: false)
|
||||
chardev_ss = chardev_ss.apply(config_targetos, strict: false)
|
||||
|
||||
system_ss.add(files(
|
||||
'char-hmp-cmds.c',
|
||||
|
||||
@@ -245,10 +245,9 @@ for opt do
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
default_cflags='-O2 -g'
|
||||
git_submodules_action="update"
|
||||
git="git"
|
||||
debug_tcg="no"
|
||||
docs="auto"
|
||||
EXESUF=""
|
||||
prefix="/usr/local"
|
||||
@@ -257,6 +256,7 @@ softmmu="yes"
|
||||
linux_user=""
|
||||
bsd_user=""
|
||||
plugins="$default_feature"
|
||||
subdirs=""
|
||||
ninja=""
|
||||
python=
|
||||
download="enabled"
|
||||
@@ -288,7 +288,7 @@ static="no"
|
||||
# ${cross_prefix}gcc (if cross-prefix specified)
|
||||
# system compiler
|
||||
if test -z "${CC}${cross_prefix}"; then
|
||||
cc="$host_cc"
|
||||
cc="cc"
|
||||
else
|
||||
cc="${CC-${cross_prefix}gcc}"
|
||||
fi
|
||||
@@ -374,45 +374,14 @@ fi
|
||||
|
||||
# OS specific
|
||||
|
||||
mingw32="no"
|
||||
bsd="no"
|
||||
linux="no"
|
||||
solaris="no"
|
||||
case $targetos in
|
||||
windows)
|
||||
mingw32="yes"
|
||||
plugins="no"
|
||||
pie="no"
|
||||
;;
|
||||
gnu/kfreebsd)
|
||||
bsd="yes"
|
||||
;;
|
||||
freebsd)
|
||||
bsd="yes"
|
||||
# needed for kinfo_getvmmap(3) in libutil.h
|
||||
;;
|
||||
dragonfly)
|
||||
bsd="yes"
|
||||
;;
|
||||
netbsd)
|
||||
bsd="yes"
|
||||
;;
|
||||
openbsd)
|
||||
bsd="yes"
|
||||
;;
|
||||
darwin)
|
||||
bsd="yes"
|
||||
darwin="yes"
|
||||
;;
|
||||
sunos)
|
||||
solaris="yes"
|
||||
;;
|
||||
haiku)
|
||||
pie="no"
|
||||
;;
|
||||
linux)
|
||||
linux="yes"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test ! -z "$cpu" ; then
|
||||
@@ -583,16 +552,16 @@ if test -n "$linux_arch" && ! test -d "$source_path/linux-headers/asm-$linux_arc
|
||||
fi
|
||||
|
||||
check_py_version() {
|
||||
# We require python >= 3.7.
|
||||
# We require python >= 3.8.
|
||||
# NB: a True python conditional creates a non-zero return code (Failure)
|
||||
"$1" -c 'import sys; sys.exit(sys.version_info < (3,7))'
|
||||
"$1" -c 'import sys; sys.exit(sys.version_info < (3,8))'
|
||||
}
|
||||
|
||||
first_python=
|
||||
if test -z "${PYTHON}"; then
|
||||
# A bare 'python' is traditionally python 2.x, but some distros
|
||||
# have it as python 3.x, so check in both places.
|
||||
for binary in python3 python python3.11 python3.10 python3.9 python3.8 python3.7; do
|
||||
for binary in python3 python python3.11 python3.10 python3.9 python3.8; do
|
||||
if has "$binary"; then
|
||||
python=$(command -v "$binary")
|
||||
if check_py_version "$python"; then
|
||||
@@ -627,7 +596,7 @@ do
|
||||
fi
|
||||
done
|
||||
|
||||
if test "$mingw32" = "yes" ; then
|
||||
if test "$targetos" = "windows" ; then
|
||||
EXESUF=".exe"
|
||||
prefix="/qemu"
|
||||
bindir=""
|
||||
@@ -758,16 +727,13 @@ for opt do
|
||||
# configure to be used by RPM and similar macros that set
|
||||
# lots of directory switches by default.
|
||||
;;
|
||||
--enable-debug-tcg) debug_tcg="yes"
|
||||
;;
|
||||
--disable-debug-tcg) debug_tcg="no"
|
||||
;;
|
||||
--enable-debug)
|
||||
# Enable debugging options that aren't excessively noisy
|
||||
debug_tcg="yes"
|
||||
meson_option_parse --enable-debug-tcg ""
|
||||
meson_option_parse --enable-debug-graph-lock ""
|
||||
meson_option_parse --enable-debug-mutex ""
|
||||
meson_option_add -Doptimization=0
|
||||
default_cflags='-O0 -g'
|
||||
;;
|
||||
--disable-tcg) tcg="disabled"
|
||||
plugins="no"
|
||||
@@ -809,7 +775,7 @@ for opt do
|
||||
;;
|
||||
--enable-download) download="enabled"; git_submodules_action=update;
|
||||
;;
|
||||
--enable-plugins) if test "$mingw32" = "yes"; then
|
||||
--enable-plugins) if test "$targetos" = "windows"; then
|
||||
error_exit "TCG plugins not currently supported on Windows platforms"
|
||||
else
|
||||
plugins="yes"
|
||||
@@ -871,30 +837,36 @@ fi
|
||||
default_target_list=""
|
||||
mak_wilds=""
|
||||
|
||||
if [ "$linux_user" != no ]; then
|
||||
if [ "$targetos" = linux ] && [ -n "$host_arch" ]; then
|
||||
linux_user=yes
|
||||
elif [ "$linux_user" = yes ]; then
|
||||
error_exit "linux-user not supported on this architecture"
|
||||
if [ -n "$host_arch" ] && [ -d "$source_path/common-user/host/$host_arch" ]; then
|
||||
if [ "$linux_user" != no ]; then
|
||||
if [ "$targetos" = linux ]; then
|
||||
linux_user=yes
|
||||
elif [ "$linux_user" = yes ]; then
|
||||
error_exit "linux-user not supported on this architecture"
|
||||
fi
|
||||
if [ "$linux_user" = "yes" ]; then
|
||||
mak_wilds="${mak_wilds} $source_path/configs/targets/*-linux-user.mak"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ "$bsd_user" != no ]; then
|
||||
if [ "$bsd_user" = "" ]; then
|
||||
test $targetos = freebsd && bsd_user=yes
|
||||
if [ "$bsd_user" != no ]; then
|
||||
if [ "$bsd_user" = "" ]; then
|
||||
test $targetos = freebsd && bsd_user=yes
|
||||
fi
|
||||
if [ "$bsd_user" = yes ] && ! [ -d "$source_path/bsd-user/$targetos" ]; then
|
||||
error_exit "bsd-user not supported on this host OS"
|
||||
fi
|
||||
if [ "$bsd_user" = "yes" ]; then
|
||||
mak_wilds="${mak_wilds} $source_path/configs/targets/*-bsd-user.mak"
|
||||
fi
|
||||
fi
|
||||
if [ "$bsd_user" = yes ] && ! [ -d "$source_path/bsd-user/$targetos" ]; then
|
||||
error_exit "bsd-user not supported on this host OS"
|
||||
else
|
||||
if [ "$linux_user" = yes ] || [ "$bsd_user" = yes ]; then
|
||||
error_exit "user mode emulation not supported on this architecture"
|
||||
fi
|
||||
fi
|
||||
if [ "$softmmu" = "yes" ]; then
|
||||
mak_wilds="${mak_wilds} $source_path/configs/targets/*-softmmu.mak"
|
||||
fi
|
||||
if [ "$linux_user" = "yes" ]; then
|
||||
mak_wilds="${mak_wilds} $source_path/configs/targets/*-linux-user.mak"
|
||||
fi
|
||||
if [ "$bsd_user" = "yes" ]; then
|
||||
mak_wilds="${mak_wilds} $source_path/configs/targets/*-bsd-user.mak"
|
||||
fi
|
||||
|
||||
for config in $mak_wilds; do
|
||||
target="$(basename "$config" .mak)"
|
||||
@@ -921,8 +893,8 @@ Advanced options (experts only):
|
||||
-Dmesonoptname=val passthrough option to meson unmodified
|
||||
--cross-prefix=PREFIX use PREFIX for compile tools, PREFIX can be blank [$cross_prefix]
|
||||
--cc=CC use C compiler CC [$cc]
|
||||
--host-cc=CC use C compiler CC [$host_cc] for code run at
|
||||
build time
|
||||
--host-cc=CC when cross compiling, use C compiler CC for code run
|
||||
at build time [$host_cc]
|
||||
--cxx=CXX use C++ compiler CXX [$cxx]
|
||||
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
|
||||
--extra-cflags=CFLAGS append extra C compiler flags CFLAGS
|
||||
@@ -958,7 +930,6 @@ cat << EOF
|
||||
linux-user all linux usermode emulation targets
|
||||
bsd-user all BSD usermode emulation targets
|
||||
pie Position Independent Executables
|
||||
debug-tcg TCG debugging (default is disabled)
|
||||
|
||||
NOTE: The object files are built at the place where configure is launched
|
||||
EOF
|
||||
@@ -981,7 +952,7 @@ then
|
||||
fi
|
||||
|
||||
if ! check_py_version "$python"; then
|
||||
error_exit "Cannot use '$python', Python >= 3.7 is required." \
|
||||
error_exit "Cannot use '$python', Python >= 3.8 is required." \
|
||||
"Use --python=/path/to/python to specify a supported Python." \
|
||||
"Maybe try:" \
|
||||
" openSUSE Leap 15.3+: zypper install python39" \
|
||||
@@ -1074,7 +1045,7 @@ fi
|
||||
# by default. Only enable by default for git builds
|
||||
if test -z "$werror" ; then
|
||||
if test -e "$source_path/.git" && \
|
||||
{ test "$linux" = "yes" || test "$mingw32" = "yes"; }; then
|
||||
{ test "$targetos" = linux || test "$targetos" = "windows"; }; then
|
||||
werror="yes"
|
||||
else
|
||||
werror="no"
|
||||
@@ -1097,6 +1068,9 @@ if test "$static" = "yes" ; then
|
||||
fi
|
||||
fi
|
||||
test "$plugins" = "" && plugins=yes
|
||||
if test "$plugins" = "yes"; then
|
||||
subdirs="$subdirs contrib/plugins"
|
||||
fi
|
||||
|
||||
cat > $TMPC << EOF
|
||||
|
||||
@@ -1152,14 +1126,6 @@ else
|
||||
done
|
||||
fi
|
||||
|
||||
# see if system emulation was really requested
|
||||
case " $target_list " in
|
||||
*"-softmmu "*) softmmu=yes
|
||||
;;
|
||||
*) softmmu=no
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$tcg" = "auto"; then
|
||||
if test -z "$target_list"; then
|
||||
tcg="disabled"
|
||||
@@ -1657,12 +1623,11 @@ done
|
||||
echo "# Automatically generated by configure - do not modify" > Makefile.prereqs
|
||||
|
||||
# Mac OS X ships with a broken assembler
|
||||
roms=
|
||||
if have_target i386-softmmu x86_64-softmmu && \
|
||||
test "$targetos" != "darwin" && test "$targetos" != "sunos" && \
|
||||
test "$targetos" != "haiku" && \
|
||||
probe_target_compiler i386-softmmu; then
|
||||
roms="pc-bios/optionrom"
|
||||
subdirs="$subdirs pc-bios/optionrom"
|
||||
config_mak=pc-bios/optionrom/config.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "TOPSRC_DIR=$source_path" >> $config_mak
|
||||
@@ -1671,7 +1636,7 @@ fi
|
||||
|
||||
if have_target ppc-softmmu ppc64-softmmu && \
|
||||
probe_target_compiler ppc-softmmu; then
|
||||
roms="$roms pc-bios/vof"
|
||||
subdirs="$subdirs pc-bios/vof"
|
||||
config_mak=pc-bios/vof/config.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "SRC_DIR=$source_path/pc-bios/vof" >> $config_mak
|
||||
@@ -1690,7 +1655,7 @@ if have_target s390x-softmmu && probe_target_compiler s390x-softmmu && \
|
||||
echo "WARNING: Your compiler does not support the z900!"
|
||||
echo " The s390-ccw bios will only work with guest CPUs >= z10."
|
||||
fi
|
||||
roms="$roms pc-bios/s390-ccw"
|
||||
subdirs="$subdirs pc-bios/s390-ccw"
|
||||
config_mak=pc-bios/s390-ccw/config-host.mak
|
||||
echo "# Automatically generated by configure - do not modify" > $config_mak
|
||||
echo "SRC_PATH=$source_path/pc-bios/s390-ccw" >> $config_mak
|
||||
@@ -1709,41 +1674,15 @@ echo >> $config_host_mak
|
||||
|
||||
echo all: >> $config_host_mak
|
||||
|
||||
if test "$debug_tcg" = "yes" ; then
|
||||
echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$mingw32" = "yes" ; then
|
||||
echo "CONFIG_WIN32=y" >> $config_host_mak
|
||||
if test "$targetos" = "windows"; then
|
||||
echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER-QEMU}" >> $config_host_mak
|
||||
echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO-Linux}" >> $config_host_mak
|
||||
echo "QEMU_GA_VERSION=${QEMU_GA_VERSION-$(cat "$source_path"/VERSION)}" >> $config_host_mak
|
||||
else
|
||||
echo "CONFIG_POSIX=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test "$linux" = "yes" ; then
|
||||
echo "CONFIG_LINUX=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test "$darwin" = "yes" ; then
|
||||
echo "CONFIG_DARWIN=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test "$solaris" = "yes" ; then
|
||||
echo "CONFIG_SOLARIS=y" >> $config_host_mak
|
||||
fi
|
||||
echo "SRC_PATH=$source_path" >> $config_host_mak
|
||||
echo "TARGET_DIRS=$target_list" >> $config_host_mak
|
||||
|
||||
# XXX: suppress that
|
||||
if [ "$bsd" = "yes" ] ; then
|
||||
echo "CONFIG_BSD=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test "$plugins" = "yes" ; then
|
||||
echo "CONFIG_PLUGIN=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
if test -n "$gdb_bin"; then
|
||||
gdb_version=$($gdb_bin --version | head -n 1)
|
||||
if version_ge ${gdb_version##* } 9.1; then
|
||||
@@ -1758,17 +1697,15 @@ if test "$container" != no; then
|
||||
echo "ENGINE=$container" >> $config_host_mak
|
||||
echo "RUNC=$runc" >> $config_host_mak
|
||||
fi
|
||||
echo "ROMS=$roms" >> $config_host_mak
|
||||
echo "SUBDIRS=$subdirs" >> $config_host_mak
|
||||
echo "PYTHON=$python" >> $config_host_mak
|
||||
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
|
||||
echo "MESON=$meson" >> $config_host_mak
|
||||
echo "NINJA=$ninja" >> $config_host_mak
|
||||
echo "PKG_CONFIG=${pkg_config}" >> $config_host_mak
|
||||
echo "CC=$cc" >> $config_host_mak
|
||||
echo "EXESUF=$EXESUF" >> $config_host_mak
|
||||
|
||||
# use included Linux headers for KVM architectures
|
||||
if test "$linux" = "yes" && test -n "$linux_arch"; then
|
||||
if test "$targetos" = "linux" && test -n "$linux_arch"; then
|
||||
symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
|
||||
fi
|
||||
|
||||
@@ -1789,12 +1726,21 @@ if test "$ccache_cpp2" = "yes"; then
|
||||
echo "export CCACHE_CPP2=y" >> $config_host_mak
|
||||
fi
|
||||
|
||||
# contrib/plugins configuration
|
||||
echo "# Automatically generated by configure - do not modify" > contrib/plugins/$config_host_mak
|
||||
echo "SRC_PATH=$source_path/contrib/plugins" >> contrib/plugins/$config_host_mak
|
||||
echo "PKG_CONFIG=${pkg_config}" >> contrib/plugins/$config_host_mak
|
||||
echo "CC=$cc $CPU_CFLAGS" >> contrib/plugins/$config_host_mak
|
||||
echo "CFLAGS=${CFLAGS-$default_cflags} $EXTRA_CFLAGS" >> contrib/plugins/$config_host_mak
|
||||
if test "$targetos" = darwin; then
|
||||
echo "CONFIG_DARWIN=y" >> contrib/plugins/$config_host_mak
|
||||
fi
|
||||
|
||||
# tests/tcg configuration
|
||||
(config_host_mak=tests/tcg/config-host.mak
|
||||
mkdir -p tests/tcg
|
||||
echo "# Automatically generated by configure - do not modify" > $config_host_mak
|
||||
echo "SRC_PATH=$source_path" >> $config_host_mak
|
||||
echo "HOST_CC=$host_cc" >> $config_host_mak
|
||||
|
||||
# versioned checked in the main config_host.mak above
|
||||
if test -n "$gdb_bin"; then
|
||||
@@ -1887,7 +1833,6 @@ if test "$skip_meson" = no; then
|
||||
echo "windres = [$(meson_quote $windres)]" >> $cross
|
||||
echo "windmc = [$(meson_quote $windmc)]" >> $cross
|
||||
if test "$cross_compile" = "yes"; then
|
||||
cross_arg="--cross-file config-meson.cross"
|
||||
echo "[host_machine]" >> $cross
|
||||
echo "system = '$targetos'" >> $cross
|
||||
case "$cpu" in
|
||||
@@ -1904,6 +1849,14 @@ if test "$skip_meson" = no; then
|
||||
else
|
||||
echo "endian = 'little'" >> $cross
|
||||
fi
|
||||
cross_arg="--cross-file config-meson.cross"
|
||||
|
||||
native="config-meson.native.new"
|
||||
echo "# Automatically generated by configure - do not modify" > $native
|
||||
echo "[binaries]" >> $native
|
||||
echo "c = [$(meson_quote $host_cc)]" >> $native
|
||||
mv $native config-meson.native
|
||||
cross_arg="$cross_arg --native-file config-meson.native"
|
||||
else
|
||||
cross_arg="--native-file config-meson.cross"
|
||||
fi
|
||||
@@ -1923,6 +1876,7 @@ if test "$skip_meson" = no; then
|
||||
test "$cfi" != false && meson_option_add "-Dcfi=$cfi"
|
||||
test "$docs" != auto && meson_option_add "-Ddocs=$docs"
|
||||
test -n "${LIB_FUZZING_ENGINE+xxx}" && meson_option_add "-Dfuzzing_engine=$LIB_FUZZING_ENGINE"
|
||||
test "$plugins" = yes && meson_option_add "-Dplugins=true"
|
||||
test "$qemu_suffix" != qemu && meson_option_add "-Dqemu_suffix=$qemu_suffix"
|
||||
test "$smbd" != '' && meson_option_add "-Dsmbd=$smbd"
|
||||
test "$tcg" != enabled && meson_option_add "-Dtcg=$tcg"
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
# programs that the main configure has already done for us.
|
||||
#
|
||||
|
||||
BUILD_DIR := $(CURDIR)/../..
|
||||
include config-host.mak
|
||||
|
||||
include $(BUILD_DIR)/config-host.mak
|
||||
TOP_SRC_PATH = $(SRC_PATH)/../..
|
||||
|
||||
VPATH += $(SRC_PATH)/contrib/plugins
|
||||
VPATH += $(SRC_PATH)
|
||||
|
||||
NAMES :=
|
||||
NAMES += execlog
|
||||
@@ -26,21 +26,25 @@ SONAMES := $(addsuffix .so,$(addprefix lib,$(NAMES)))
|
||||
|
||||
# The main QEMU uses Glib extensively so it's perfectly fine to use it
|
||||
# in plugins (which many example do).
|
||||
CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
||||
CFLAGS += -fPIC -Wall
|
||||
CFLAGS += $(if $(CONFIG_DEBUG_TCG), -ggdb -O0)
|
||||
CFLAGS += -I$(SRC_PATH)/include/qemu
|
||||
PLUGIN_CFLAGS := $(shell $(PKG_CONFIG) --cflags glib-2.0)
|
||||
PLUGIN_CFLAGS += -fPIC -Wall
|
||||
PLUGIN_CFLAGS += -I$(TOP_SRC_PATH)/include/qemu
|
||||
|
||||
all: $(SONAMES)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
$(CC) $(CFLAGS) $(PLUGIN_CFLAGS) -c -o $@ $<
|
||||
|
||||
lib%.so: %.o
|
||||
$(CC) -shared -Wl,-soname,$@ -o $@ $^ $(LDLIBS)
|
||||
ifeq ($(CONFIG_DARWIN),y)
|
||||
$(CC) -bundle -Wl,-undefined,dynamic_lookup -o $@ $^ $(LDLIBS)
|
||||
else
|
||||
$(CC) -shared -o $@ $^ $(LDLIBS)
|
||||
endif
|
||||
|
||||
clean:
|
||||
rm -f *.o *.so *.d
|
||||
rm -Rf .libs
|
||||
|
||||
.PHONY: all clean
|
||||
.SECONDARY:
|
||||
|
||||
+10
-9
@@ -545,8 +545,8 @@ static void append_stats_line(GString *line, uint64_t l1_daccess,
|
||||
l1_dmiss_rate = ((double) l1_dmisses) / (l1_daccess) * 100.0;
|
||||
l1_imiss_rate = ((double) l1_imisses) / (l1_iaccess) * 100.0;
|
||||
|
||||
g_string_append_printf(line, "%-14lu %-12lu %9.4lf%% %-14lu %-12lu"
|
||||
" %9.4lf%%",
|
||||
g_string_append_printf(line, "%-14" PRIu64 " %-12" PRIu64 " %9.4lf%%"
|
||||
" %-14" PRIu64 " %-12" PRIu64 " %9.4lf%%",
|
||||
l1_daccess,
|
||||
l1_dmisses,
|
||||
l1_daccess ? l1_dmiss_rate : 0.0,
|
||||
@@ -556,7 +556,8 @@ static void append_stats_line(GString *line, uint64_t l1_daccess,
|
||||
|
||||
if (use_l2) {
|
||||
l2_miss_rate = ((double) l2_misses) / (l2_access) * 100.0;
|
||||
g_string_append_printf(line, " %-12lu %-11lu %10.4lf%%",
|
||||
g_string_append_printf(line,
|
||||
" %-12" PRIu64 " %-11" PRIu64 " %10.4lf%%",
|
||||
l2_access,
|
||||
l2_misses,
|
||||
l2_access ? l2_miss_rate : 0.0);
|
||||
@@ -662,8 +663,8 @@ static void log_top_insns(void)
|
||||
if (insn->symbol) {
|
||||
g_string_append_printf(rep, " (%s)", insn->symbol);
|
||||
}
|
||||
g_string_append_printf(rep, ", %ld, %s\n", insn->l1_dmisses,
|
||||
insn->disas_str);
|
||||
g_string_append_printf(rep, ", %" PRId64 ", %s\n",
|
||||
insn->l1_dmisses, insn->disas_str);
|
||||
}
|
||||
|
||||
miss_insns = g_list_sort(miss_insns, icmp);
|
||||
@@ -675,8 +676,8 @@ static void log_top_insns(void)
|
||||
if (insn->symbol) {
|
||||
g_string_append_printf(rep, " (%s)", insn->symbol);
|
||||
}
|
||||
g_string_append_printf(rep, ", %ld, %s\n", insn->l1_imisses,
|
||||
insn->disas_str);
|
||||
g_string_append_printf(rep, ", %" PRId64 ", %s\n",
|
||||
insn->l1_imisses, insn->disas_str);
|
||||
}
|
||||
|
||||
if (!use_l2) {
|
||||
@@ -692,8 +693,8 @@ static void log_top_insns(void)
|
||||
if (insn->symbol) {
|
||||
g_string_append_printf(rep, " (%s)", insn->symbol);
|
||||
}
|
||||
g_string_append_printf(rep, ", %ld, %s\n", insn->l2_misses,
|
||||
insn->disas_str);
|
||||
g_string_append_printf(rep, ", %" PRId64 ", %s\n",
|
||||
insn->l2_misses, insn->disas_str);
|
||||
}
|
||||
|
||||
finish:
|
||||
|
||||
@@ -48,7 +48,7 @@ static void printf_header(unsigned long count)
|
||||
uint64_t start_code = qemu_plugin_start_code();
|
||||
uint64_t end_code = qemu_plugin_end_code();
|
||||
uint64_t entry = qemu_plugin_entry_code();
|
||||
fprintf(fp, "0, 0x%lx, 0x%lx, 0x%lx, %s\n",
|
||||
fprintf(fp, "0, 0x%" PRIx64 ", 0x%" PRIx64 ", 0x%" PRIx64 ", %s\n",
|
||||
start_code, end_code, entry, path);
|
||||
fprintf(fp, "BB Table: %ld bbs\n", count);
|
||||
}
|
||||
|
||||
@@ -181,7 +181,8 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
|
||||
switch (class->what) {
|
||||
case COUNT_CLASS:
|
||||
if (class->count || verbose) {
|
||||
g_string_append_printf(report, "Class: %-24s\t(%ld hits)\n",
|
||||
g_string_append_printf(report,
|
||||
"Class: %-24s\t(%" PRId64 " hits)\n",
|
||||
class->class,
|
||||
class->count);
|
||||
}
|
||||
@@ -208,7 +209,8 @@ static void plugin_exit(qemu_plugin_id_t id, void *p)
|
||||
i++, counts = g_list_next(counts)) {
|
||||
InsnExecCount *rec = (InsnExecCount *) counts->data;
|
||||
g_string_append_printf(report,
|
||||
"Instr: %-24s\t(%ld hits)\t(op=0x%08x/%s)\n",
|
||||
"Instr: %-24s\t(%" PRId64 " hits)"
|
||||
"\t(op=0x%08x/%s)\n",
|
||||
rec->insn,
|
||||
rec->count,
|
||||
rec->opcode,
|
||||
|
||||
@@ -134,7 +134,9 @@ static void report_divergance(ExecState *us, ExecState *them)
|
||||
|
||||
/* Output short log entry of going out of sync... */
|
||||
if (verbose || divrec.distance == 1 || diverged) {
|
||||
g_string_printf(out, "@ 0x%016lx vs 0x%016lx (%d/%d since last)\n",
|
||||
g_string_printf(out,
|
||||
"@ 0x%016" PRIx64 " vs 0x%016" PRIx64
|
||||
" (%d/%d since last)\n",
|
||||
us->pc, them->pc, g_slist_length(divergence_log),
|
||||
divrec.distance);
|
||||
qemu_plugin_outs(out->str);
|
||||
@@ -144,7 +146,9 @@ static void report_divergance(ExecState *us, ExecState *them)
|
||||
int i;
|
||||
GSList *entry;
|
||||
|
||||
g_string_printf(out, "Δ insn_count @ 0x%016lx (%ld) vs 0x%016lx (%ld)\n",
|
||||
g_string_printf(out,
|
||||
"Δ insn_count @ 0x%016" PRIx64
|
||||
" (%ld) vs 0x%016" PRIx64 " (%ld)\n",
|
||||
us->pc, us->insn_count, them->pc, them->insn_count);
|
||||
|
||||
for (entry = log, i = 0;
|
||||
@@ -152,7 +156,8 @@ static void report_divergance(ExecState *us, ExecState *them)
|
||||
entry = g_slist_next(entry), i++) {
|
||||
ExecInfo *prev = (ExecInfo *) entry->data;
|
||||
g_string_append_printf(out,
|
||||
" previously @ 0x%016lx/%ld (%ld insns)\n",
|
||||
" previously @ 0x%016" PRIx64 "/%" PRId64
|
||||
" (%ld insns)\n",
|
||||
prev->block->pc, prev->block->insns,
|
||||
prev->insn_count);
|
||||
}
|
||||
|
||||
@@ -460,17 +460,13 @@ Built by configure:
|
||||
|
||||
``config-host.mak``
|
||||
When configure has determined the characteristics of the build host it
|
||||
will write them to this file for use in ``Makefile`` and to a smaller
|
||||
extent ``meson.build``. These include the paths to various tools and a
|
||||
variety of ``CONFIG_*`` variables related to optionally enabled features.
|
||||
will write the paths to various tools to this file, for use in ``Makefile``
|
||||
and to a smaller extent ``meson.build``.
|
||||
|
||||
``config-host.mak`` is also used as a dependency checking mechanism. If make
|
||||
sees that the modification timestamp on configure is newer than that on
|
||||
``config-host.mak``, then configure will be re-run.
|
||||
|
||||
The variables defined here apply to all QEMU
|
||||
build outputs.
|
||||
|
||||
``config-meson.cross``
|
||||
|
||||
A Meson "cross file" (or native file) used to communicate the paths to
|
||||
|
||||
@@ -316,6 +316,6 @@ variable::
|
||||
|
||||
host_kconfig = \
|
||||
(have_tpm ? ['CONFIG_TPM=y'] : []) + \
|
||||
('CONFIG_LINUX' in config_host ? ['CONFIG_LINUX=y'] : []) + \
|
||||
(targetos == 'linux' ? ['CONFIG_LINUX=y'] : []) + \
|
||||
(have_ivshmem ? ['CONFIG_IVSHMEM=y'] : []) + \
|
||||
...
|
||||
|
||||
@@ -181,7 +181,7 @@ Audio data is recorded and replay automatically. The command line for recording
|
||||
and replaying must contain identical specifications of audio hardware, e.g.:
|
||||
|
||||
.. parsed-literal::
|
||||
-soundhw ac97
|
||||
-audio pa,model=ac97
|
||||
|
||||
Serial ports
|
||||
------------
|
||||
|
||||
+2
-2
@@ -14,8 +14,8 @@ gdb_system_ss = ss.source_set()
|
||||
gdb_user_ss.add(files('gdbstub.c', 'user.c'))
|
||||
gdb_system_ss.add(files('gdbstub.c', 'softmmu.c'))
|
||||
|
||||
gdb_user_ss = gdb_user_ss.apply(config_host, strict: false)
|
||||
gdb_system_ss = gdb_system_ss.apply(config_host, strict: false)
|
||||
gdb_user_ss = gdb_user_ss.apply(config_targetos, strict: false)
|
||||
gdb_system_ss = gdb_system_ss.apply(config_targetos, strict: false)
|
||||
|
||||
libgdb_user = static_library('gdb_user',
|
||||
gdb_user_ss.sources() + genh,
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "kvm/kvm_i386.h"
|
||||
#include "qapi/error.h"
|
||||
#include CONFIG_DEVICES
|
||||
#include "target/i386/cpu.h"
|
||||
|
||||
struct hpet_fw_config hpet_cfg = {.count = UINT8_MAX};
|
||||
|
||||
|
||||
@@ -4053,7 +4053,7 @@ static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
|
||||
error_setg(errp, "eim=on requires accel=kvm,kernel-irqchip=split");
|
||||
return false;
|
||||
}
|
||||
if (!kvm_enable_x2apic()) {
|
||||
if (kvm_enabled() && !kvm_enable_x2apic()) {
|
||||
error_setg(errp, "eim=on requires support on the KVM side"
|
||||
"(X2APIC_API, first shipped in v4.7)");
|
||||
return false;
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "hw/timer/i8254_internal.h"
|
||||
#include "hw/qdev-properties-system.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "target/i386/kvm/kvm_i386.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define KVM_PIT_REINJECT_BIT 0
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "hw/intc/ioapic_internal.h"
|
||||
#include "hw/intc/kvm_irqcount.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "kvm/kvm_i386.h"
|
||||
|
||||
/* PC Utility function */
|
||||
void kvm_pc_setup_irq_routing(bool pci_enabled)
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
#include "hw/mem/nvdimm.h"
|
||||
#include "hw/i386/acpi-build.h"
|
||||
#include "kvm/kvm-cpu.h"
|
||||
#include "target/i386/cpu.h"
|
||||
|
||||
#define MAX_IDE_BUS 2
|
||||
#define XEN_IOAPIC_NUM_PIRQS 128ULL
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "hw/loader.h"
|
||||
#include "hw/i2c/smbus_eeprom.h"
|
||||
#include "hw/rtc/mc146818rtc.h"
|
||||
#include "sysemu/tcg.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "hw/i386/kvm/clock.h"
|
||||
#include "hw/pci-host/q35.h"
|
||||
@@ -57,6 +58,7 @@
|
||||
#include "hw/hyperv/vmbus-bridge.h"
|
||||
#include "hw/mem/nvdimm.h"
|
||||
#include "hw/i386/acpi-build.h"
|
||||
#include "target/i386/cpu.h"
|
||||
|
||||
/* ICH9 AHCI has 6 ports */
|
||||
#define MAX_SATA_PORTS 6
|
||||
|
||||
+4
-7
@@ -129,13 +129,10 @@ void x86_cpus_init(X86MachineState *x86ms, int default_cpu_version)
|
||||
ms->smp.max_cpus - 1) + 1;
|
||||
|
||||
/*
|
||||
* Can we support APIC ID 255 or higher?
|
||||
*
|
||||
* Under Xen: yes.
|
||||
* With userspace emulated lapic: no
|
||||
* With KVM's in-kernel lapic: only if X2APIC API is enabled.
|
||||
* Can we support APIC ID 255 or higher? With KVM, that requires
|
||||
* both in-kernel lapic and X2APIC userspace API.
|
||||
*/
|
||||
if (x86ms->apic_id_limit > 255 && !xen_enabled() &&
|
||||
if (x86ms->apic_id_limit > 255 && kvm_enabled() &&
|
||||
(!kvm_irqchip_in_kernel() || !kvm_enable_x2apic())) {
|
||||
error_report("current -smp configuration requires kernel "
|
||||
"irqchip and X2APIC API support.");
|
||||
@@ -424,7 +421,7 @@ void x86_cpu_pre_plug(HotplugHandler *hotplug_dev,
|
||||
cpu->thread_id = topo_ids.smt_id;
|
||||
|
||||
if (hyperv_feat_enabled(cpu, HYPERV_FEAT_VPINDEX) &&
|
||||
!kvm_hv_vpindex_settable()) {
|
||||
kvm_enabled() && !kvm_hv_vpindex_settable()) {
|
||||
error_setg(errp, "kernel doesn't allow setting HyperV VP_INDEX");
|
||||
return;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user