From: "Jose R. Ziviani" <jziviani@suse.de>
To: qemu-devel@nongnu.org
Cc: thuth@redhat.com, "Jose R. Ziviani" <jziviani@suse.de>,
richard.henderson@linaro.org, kraxel@redhat.com,
pbonzini@redhat.com, cfontana@suse.de
Subject: [PATCH 1/1] modules: Option to build native TCG with --enable-modules
Date: Tue, 20 Jul 2021 19:13:51 -0300 [thread overview]
Message-ID: <20210720221351.13354-2-jziviani@suse.de> (raw)
In-Reply-To: <20210720221351.13354-1-jziviani@suse.de>
Adds an option (--enable-tcg-builtin) to build TCG natively when
--enable-modules argument is passed to the build system. It gives
the opportunity to have this important accelerator built-in and
still take advantage of the new modular system.
Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
---
configure | 12 ++++++++++--
meson.build | 11 ++++++++++-
meson_options.txt | 2 ++
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index 232c54dcc1..64d7a909ce 100755
--- a/configure
+++ b/configure
@@ -345,6 +345,7 @@ tsan="no"
fortify_source="$default_feature"
strip_opt="yes"
tcg_interpreter="false"
+tcg_builtin="false"
bigendian="no"
mingw32="no"
gcov="no"
@@ -1120,6 +1121,8 @@ for opt do
;;
--enable-tcg) tcg="enabled"
;;
+ --enable-tcg-builtin) tcg_builtin="true"
+ ;;
--disable-malloc-trim) malloc_trim="disabled"
;;
--enable-malloc-trim) malloc_trim="enabled"
@@ -1817,6 +1820,7 @@ Advanced options (experts only):
Default:trace-<pid>
--disable-slirp disable SLIRP userspace network connectivity
--enable-tcg-interpreter enable TCI (TCG with bytecode interpreter, experimental and slow)
+ --enable-tcg-builtin force TCG builtin even with --enable-modules
--enable-malloc-trim enable libc malloc_trim() for memory optimization
--oss-lib path to OSS library
--cpu=CPU Build for host CPU [$cpu]
@@ -2318,7 +2322,11 @@ if test "$solaris" = "yes" ; then
fi
fi
-if test "$tcg" = "enabled"; then
+if test "$tcg" = "disabled"; then
+ debug_tcg="no"
+ tcg_interpreter="false"
+ tcg_builtin="false"
+else
git_submodules="$git_submodules tests/fp/berkeley-testfloat-3"
git_submodules="$git_submodules tests/fp/berkeley-softfloat-3"
fi
@@ -5229,7 +5237,7 @@ if test "$skip_meson" = no; then
-Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
$(if test "$default_features" = no; then echo "-Dauto_features=disabled"; fi) \
- -Dtcg_interpreter=$tcg_interpreter \
+ -Dtcg_interpreter=$tcg_interpreter -Dtcg_builtin=$tcg_builtin \
$cross_arg \
"$PWD" "$source_path"
diff --git a/meson.build b/meson.build
index 2f377098d7..2909043aab 100644
--- a/meson.build
+++ b/meson.build
@@ -93,9 +93,13 @@ if cpu in ['x86', 'x86_64']
endif
modular_tcg = []
+is_tcg_modular = false
# Darwin does not support references to thread-local variables in modules
if targetos != 'darwin'
modular_tcg = ['i386-softmmu', 'x86_64-softmmu']
+ is_tcg_modular = config_host.has_key('CONFIG_MODULES') \
+ and get_option('tcg').enabled() \
+ and not get_option('tcg_builtin')
endif
edk2_targets = [ 'arm-softmmu', 'aarch64-softmmu', 'i386-softmmu', 'x86_64-softmmu' ]
@@ -279,6 +283,9 @@ if not get_option('tcg').disabled()
accelerators += 'CONFIG_TCG'
config_host += { 'CONFIG_TCG': 'y' }
+ if is_tcg_modular
+ config_host += { 'CONFIG_TCG_MODULAR': 'y' }
+ endif
endif
if 'CONFIG_KVM' not in accelerators and get_option('kvm').enabled()
@@ -1567,7 +1574,7 @@ foreach target : target_dirs
elif sym == 'CONFIG_XEN' and have_xen_pci_passthrough
config_target += { 'CONFIG_XEN_PCI_PASSTHROUGH': 'y' }
endif
- if target in modular_tcg
+ if target in modular_tcg and is_tcg_modular
config_target += { 'CONFIG_TCG_MODULAR': 'y' }
else
config_target += { 'CONFIG_TCG_BUILTIN': 'y' }
@@ -2976,6 +2983,8 @@ summary_info += {'TCG support': config_all.has_key('CONFIG_TCG')}
if config_all.has_key('CONFIG_TCG')
if get_option('tcg_interpreter')
summary_info += {'TCG backend': 'TCI (TCG with bytecode interpreter, experimental and slow)'}
+ elif is_tcg_modular
+ summary_info += {'TCG backend': 'module (@0@)'.format(cpu)}
else
summary_info += {'TCG backend': 'native (@0@)'.format(cpu)}
endif
diff --git a/meson_options.txt b/meson_options.txt
index a9a9b8f4c6..c27749b864 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -43,6 +43,8 @@ option('tcg', type: 'feature', value: 'auto',
description: 'TCG support')
option('tcg_interpreter', type: 'boolean', value: false,
description: 'TCG with bytecode interpreter (experimental and slow)')
+option('tcg_builtin', type: 'boolean', value: 'false',
+ description: 'Force TCG builtin')
option('cfi', type: 'boolean', value: 'false',
description: 'Control-Flow Integrity (CFI)')
option('cfi_debug', type: 'boolean', value: 'false',
--
2.32.0
next prev parent reply other threads:[~2021-07-20 22:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 22:13 [PATCH 0/1] Jose R. Ziviani
2021-07-20 22:13 ` Jose R. Ziviani [this message]
2021-07-21 5:24 ` Thomas Huth
2021-07-21 13:34 ` Jose R. Ziviani
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210720221351.13354-2-jziviani@suse.de \
--to=jziviani@suse.de \
--cc=cfontana@suse.de \
--cc=kraxel@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).