From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>, Kevin Wolf <kwolf@redhat.com>
Cc: "Stefan Hajnoczi" <stefanha@redhat.com>,
qemu-devel@nongnu.org, "Michael Tokarev" <mjt@tls.msk.ru>,
"Daniel P. Berrangé" <berrange@redhat.com>
Subject: Re: [PULL 00/51] Build system, i386 changes for 2023-09-07
Date: Mon, 11 Sep 2023 16:18:20 +0200 [thread overview]
Message-ID: <730af37f-fd3a-a5ce-7090-f8cbd6e6fc9d@linaro.org> (raw)
In-Reply-To: <ec32b24d-9ca1-3436-0c7b-5e3ce1ee27da@linaro.org>
On 11/9/23 12:11, Philippe Mathieu-Daudé wrote:
> On 8/9/23 21:21, Paolo Bonzini wrote:
>> On Fri, Sep 8, 2023 at 7:28 PM Kevin Wolf <kwolf@redhat.com> wrote:
>>> Maybe the calls aren't eliminated because --enable-debug implies -O0?
>>
>> My experience is that it will still fold simple dead code like "0 &&
>> foo()" or even "if (0) { ... }", but maybe it's a GCC vs. clang
>> difference. Philippe, I take it that you are looking at it?
FTR preprocessed code is indeed:
# 5682 "../../target/i386/cpu.c"
uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
_Bool migratable_only)
{
FeatureWordInfo *wi = &feature_word_info[w];
uint64_t r = 0;
if ((0)) {
switch (wi->type) {
case CPUID_FEATURE_WORD:
r = kvm_arch_get_supported_cpuid(kvm_state, wi->cpuid.eax,
wi->cpuid.ecx,
wi->cpuid.reg);
break;
case MSR_FEATURE_WORD:
r = kvm_arch_get_supported_msr_feature(kvm_state,
wi->msr.index);
break;
}
} else if (0) {
if (wi->type != CPUID_FEATURE_WORD) {
return 0;
}
r = 0;
} else if ((tcg_allowed)) {
r = wi->tcg_features;
} else {
return ~0;
}
# 5725 "../../target/i386/cpu.c"
if (migratable_only) {
r &= x86_cpu_get_migratable_flags(w);
}
return r;
}
static void x86_cpu_get_supported_cpuid(uint32_t func, uint32_t index,
uint32_t *eax, uint32_t *ebx,
uint32_t *ecx, uint32_t *edx)
{
if ((0)) {
*eax = kvm_arch_get_supported_cpuid(kvm_state, func, index, R_EAX);
*ebx = kvm_arch_get_supported_cpuid(kvm_state, func, index, R_EBX);
*ecx = kvm_arch_get_supported_cpuid(kvm_state, func, index, R_ECX);
*edx = kvm_arch_get_supported_cpuid(kvm_state, func, index, R_EDX);
} else if (0) {
*eax = 0;
*ebx = 0;
*ecx = 0;
*edx = 0;
} else {
*eax = 0;
*ebx = 0;
*ecx = 0;
*edx = 0;
}
}
Which made me wonder about this sysemu code use from useremu,
in particular because the link failure comes from
libqemu-x86_64-linux-user.fa.p. This pair of #ifdef'ry to
restrict system-specific code seems sufficient to link:
-- >8 --
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 24ee67b42d..83914d5d1b 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6163,6 +6163,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t
index, uint32_t count,
}
*edx = env->features[FEAT_7_0_EDX]; /* Feature flags */
+#ifndef CONFIG_USER_ONLY
/*
* SGX cannot be emulated in software. If hardware does not
* support enabling SGX and/or SGX flexible launch control,
@@ -6181,6 +6182,7 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t
index, uint32_t count,
CPUID_7_0_ECX_SGX_LC))) {
*ecx &= ~CPUID_7_0_ECX_SGX_LC;
}
+#endif
} else if (count == 1) {
*eax = env->features[FEAT_7_1_EAX];
*edx = env->features[FEAT_7_1_EDX];
@@ -7152,6 +7154,7 @@ static void x86_cpu_filter_features(X86CPU *cpu,
bool verbose)
mark_unavailable_features(cpu, w, unavailable_features, prefix);
}
+#ifndef CONFIG_USER_ONLY
if ((env->features[FEAT_7_0_EBX] & CPUID_7_0_EBX_INTEL_PT) &&
kvm_enabled()) {
KVMState *s = CPU(cpu)->kvm_state;
@@ -7179,6 +7182,7 @@ static void x86_cpu_filter_features(X86CPU *cpu,
bool verbose)
mark_unavailable_features(cpu, FEAT_7_0_EBX,
CPUID_7_0_EBX_INTEL_PT, prefix);
}
}
+#endif
}
---
So I'll send a v3.
next prev parent reply other threads:[~2023-09-11 14:19 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-07 12:59 [PULL 00/51] Build system, i386 changes for 2023-09-07 Paolo Bonzini
2023-09-07 12:59 ` [PULL 01/51] linux-user, bsd-user: disable on unsupported host architectures Paolo Bonzini
2023-09-07 12:59 ` [PULL 02/51] target/i386: raise FERR interrupt with iothread locked Paolo Bonzini
2023-09-07 12:59 ` [PULL 03/51] target/i386: generalize operand size "ph" for use in CVTPS2PD Paolo Bonzini
2023-09-07 12:59 ` [PULL 04/51] target/i386: fix memory operand size for CVTPS2PD Paolo Bonzini
2023-09-07 12:59 ` [PULL 05/51] target/i386: Add support for AMX-COMPLEX in CPUID enumeration Paolo Bonzini
2023-09-07 12:59 ` [PULL 06/51] include/sysemu/os-posix.h: move *daemonize* declarations together Paolo Bonzini
2023-09-07 12:59 ` [PULL 07/51] os-posix.c: create and export os_set_runas() Paolo Bonzini
2023-09-07 12:59 ` [PULL 08/51] os-posix.c: create and export os_set_chroot() Paolo Bonzini
2023-09-07 12:59 ` [PULL 09/51] os-posix.c, softmmu/vl.c: move os_parse_cmd_args() into qemu_init() Paolo Bonzini
2023-09-07 12:59 ` [PULL 10/51] os-posix.c: move code around Paolo Bonzini
2023-09-07 12:59 ` [PULL 11/51] os-posix.c: remove unneeded #includes Paolo Bonzini
2023-09-07 12:59 ` [PULL 12/51] softmmu/vl.c: inline include/qemu/qemu-options.h into vl.c Paolo Bonzini
2023-09-07 12:59 ` [PULL 13/51] util/async-teardown.c: move to softmmu/, only build it when system build is requested Paolo Bonzini
2023-09-07 12:59 ` [PULL 14/51] contrib/plugins: remove -soname argument Paolo Bonzini
2023-09-07 12:59 ` [PULL 15/51] contrib/plugins/cache: Fix string format Paolo Bonzini
2023-09-07 12:59 ` [PULL 16/51] contrib/plugins/drcov: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 17/51] contrib/plugins/howvec: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 18/51] contrib/plugins/lockstep: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 19/51] contrib/plugins: add Darwin support Paolo Bonzini
2023-09-07 12:59 ` [PULL 20/51] meson: do not unnecessarily use cmake for dependencies Paolo Bonzini
2023-09-07 12:59 ` [PULL 21/51] meson: update unsupported host/CPU messages Paolo Bonzini
2023-09-07 12:59 ` [PULL 22/51] configure: remove HOST_CC Paolo Bonzini
2023-09-07 12:59 ` [PULL 23/51] configure: create native file with contents of $host_cc Paolo Bonzini
2023-09-07 12:59 ` [PULL 24/51] meson: compile bundled device trees Paolo Bonzini
2023-09-08 16:27 ` Philippe Mathieu-Daudé
2023-09-08 17:20 ` Michael Tokarev
2023-09-08 19:21 ` BALATON Zoltan
2023-09-08 19:40 ` Michael Tokarev
2023-09-08 20:07 ` BALATON Zoltan
2023-09-11 14:48 ` Philippe Mathieu-Daudé
2023-09-11 15:16 ` Peter Maydell
2023-09-07 12:59 ` [PULL 25/51] configure: remove boolean variables for targets Paolo Bonzini
2023-09-07 12:59 ` [PULL 26/51] configure: move --enable-debug-tcg to meson Paolo Bonzini
2023-09-07 12:59 ` [PULL 27/51] contrib/plugins: use an independent makefile Paolo Bonzini
2023-09-07 12:59 ` [PULL 28/51] configure: unify recursion into sub-Makefiles Paolo Bonzini
2023-09-07 12:59 ` [PULL 29/51] configure, meson: move --enable-plugins to meson Paolo Bonzini
2023-09-07 12:59 ` [PULL 30/51] configure, meson: remove CONFIG_SOLARIS from config-host.mak Paolo Bonzini
2023-09-07 12:59 ` [PULL 31/51] configure, meson: remove target OS symbols " Paolo Bonzini
2023-09-07 12:59 ` [PULL 32/51] meson: list leftover CONFIG_* symbols Paolo Bonzini
2023-09-07 12:59 ` [PULL 33/51] configure: remove dead code Paolo Bonzini
2023-09-07 12:59 ` [PULL 34/51] Python: Drop support for Python 3.7 Paolo Bonzini
2023-09-07 12:59 ` [PULL 35/51] mkvenv: assume presence of importlib.metadata Paolo Bonzini
2023-09-07 12:59 ` [PULL 36/51] Revert "mkvenv: work around broken pip installations on Debian 10" Paolo Bonzini
2023-09-07 12:59 ` [PULL 37/51] hw/i386/pc: Include missing 'sysemu/tcg.h' header Paolo Bonzini
2023-09-07 12:59 ` [PULL 38/51] hw/i386/pc: Include missing 'cpu.h' header Paolo Bonzini
2023-09-07 12:59 ` [PULL 39/51] hw/i386/fw_cfg: " Paolo Bonzini
2023-09-07 12:59 ` [PULL 40/51] target/i386/helper: Restrict KVM declarations to system emulation Paolo Bonzini
2023-09-07 12:59 ` [PULL 41/51] target/i386/cpu-sysemu: Inline kvm_apic_in_kernel() Paolo Bonzini
2023-09-07 12:59 ` [PULL 42/51] target/i386: Remove unused KVM stubs Paolo Bonzini
2023-09-07 12:59 ` [PULL 43/51] target/i386: Allow elision of kvm_enable_x2apic() Paolo Bonzini
2023-09-07 12:59 ` [PULL 44/51] target/i386: Allow elision of kvm_hv_vpindex_settable() Paolo Bonzini
2023-09-07 12:59 ` [PULL 45/51] target/i386: Restrict declarations specific to CONFIG_KVM Paolo Bonzini
2023-09-07 12:59 ` [PULL 46/51] sysemu/kvm: Restrict kvm_arch_get_supported_cpuid/msr() to x86 targets Paolo Bonzini
2023-09-07 12:59 ` [PULL 47/51] sysemu/kvm: Restrict kvm_get_apic_state() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 48/51] sysemu/kvm: Restrict kvm_has_pit_state2() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 49/51] sysemu/kvm: Restrict kvm_pc_setup_irq_routing() " Paolo Bonzini
2023-09-07 12:59 ` [PULL 50/51] subprojects: add wrap file for libblkio Paolo Bonzini
2023-10-11 5:35 ` Philippe Mathieu-Daudé
2023-10-11 8:47 ` Daniel P. Berrangé
2023-10-11 20:58 ` Stefan Hajnoczi
2023-10-12 7:14 ` Daniel P. Berrangé
2023-09-07 13:00 ` [PULL 51/51] docs/system/replay: do not show removed command line option Paolo Bonzini
2023-09-07 15:44 ` [PULL 00/51] Build system, i386 changes for 2023-09-07 Stefan Hajnoczi
2023-09-08 15:01 ` Kevin Wolf
2023-09-08 15:47 ` Stefan Hajnoczi
2023-09-11 10:10 ` Philippe Mathieu-Daudé
2023-09-11 10:22 ` Philippe Mathieu-Daudé
2023-09-11 12:12 ` Kevin Wolf
2023-09-11 11:06 ` Stefan Hajnoczi
2023-09-11 12:40 ` Thomas Huth
2023-09-08 16:11 ` Philippe Mathieu-Daudé
2023-09-08 17:16 ` Kevin Wolf
2023-09-08 17:22 ` Daniel P. Berrangé
2023-09-08 17:28 ` Michael Tokarev
2023-09-08 17:28 ` Kevin Wolf
2023-09-08 19:21 ` Paolo Bonzini
2023-09-11 10:11 ` Philippe Mathieu-Daudé
2023-09-11 14:18 ` Philippe Mathieu-Daudé [this message]
2023-09-11 10:41 ` Michael Tokarev
2023-09-11 10:44 ` Michael Tokarev
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=730af37f-fd3a-a5ce-7090-f8cbd6e6fc9d@linaro.org \
--to=philmd@linaro.org \
--cc=berrange@redhat.com \
--cc=kwolf@redhat.com \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@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).