From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Daniel Hoffman <dhoff749@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Eduardo Habkost <eduardo@habkost.net>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Subject: [PULL 11/15] hw/i386: fix short-circuit logic with non-optimizing builds
Date: Fri, 1 Dec 2023 12:15:36 -0500 [thread overview]
Message-ID: <74b665da374aa1462fe3067415ffe167621fccc7.1701450838.git.mst@redhat.com> (raw)
In-Reply-To: <cover.1701450838.git.mst@redhat.com>
From: Daniel Hoffman <dhoff749@gmail.com>
`kvm_enabled()` is compiled down to `0` and short-circuit logic is
used to remove references to undefined symbols at the compile stage.
Some build configurations with some compilers don't attempt to
simplify this logic down in some cases (the pattern appears to be
that the literal false must be the first term) and this was causing
some builds to emit references to undefined symbols.
An example of such a configuration is clang 16.0.6 with the following
configure: ./configure --enable-debug --without-default-features
--target-list=x86_64-softmmu --enable-tcg-interpreter
Signed-off-by: Daniel Hoffman <dhoff749@gmail.com>
Message-Id: <20231119203116.3027230-1-dhoff749@gmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/i386/x86.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/hw/i386/x86.c b/hw/i386/x86.c
index b3d054889b..2b6291ad8d 100644
--- a/hw/i386/x86.c
+++ b/hw/i386/x86.c
@@ -131,8 +131,12 @@ void x86_cpus_init(X86MachineState *x86ms, int default_cpu_version)
/*
* Can we support APIC ID 255 or higher? With KVM, that requires
* both in-kernel lapic and X2APIC userspace API.
+ *
+ * kvm_enabled() must go first to ensure that kvm_* references are
+ * not emitted for the linker to consume (kvm_enabled() is
+ * a literal `0` in configurations where kvm_* aren't defined)
*/
- if (x86ms->apic_id_limit > 255 && kvm_enabled() &&
+ if (kvm_enabled() && x86ms->apic_id_limit > 255 &&
(!kvm_irqchip_in_kernel() || !kvm_enable_x2apic())) {
error_report("current -smp configuration requires kernel "
"irqchip and X2APIC API support.");
@@ -418,8 +422,13 @@ void x86_cpu_pre_plug(HotplugHandler *hotplug_dev,
}
cpu->thread_id = topo_ids.smt_id;
- if (hyperv_feat_enabled(cpu, HYPERV_FEAT_VPINDEX) &&
- kvm_enabled() && !kvm_hv_vpindex_settable()) {
+ /*
+ * kvm_enabled() must go first to ensure that kvm_* references are
+ * not emitted for the linker to consume (kvm_enabled() is
+ * a literal `0` in configurations where kvm_* aren't defined)
+ */
+ if (kvm_enabled() && hyperv_feat_enabled(cpu, HYPERV_FEAT_VPINDEX) &&
+ !kvm_hv_vpindex_settable()) {
error_setg(errp, "kernel doesn't allow setting HyperV VP_INDEX");
return;
}
--
MST
next prev parent reply other threads:[~2023-12-01 17:18 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-01 17:15 [PULL 00/15] virtio,pc,pci: fixes Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 01/15] osdep: add getloadavg Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 02/15] netdev: set timeout depending on loadavg Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 03/15] tests/acpi/bios-tables-test: do not write new blobs unless there are changes Michael S. Tsirkin
2023-12-01 17:27 ` Ani Sinha
2023-12-02 20:59 ` Michael S. Tsirkin
2024-01-24 8:58 ` Igor Mammedov
2024-01-24 9:47 ` Ani Sinha
2023-12-01 17:15 ` [PULL 04/15] hw/audio/virtio-snd-pci: fix the PCI class code Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 05/15] hw/audio/hda-codec: fix multiplication overflow Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 06/15] hw/audio/hda-codec: reenable the audio mixer Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 07/15] virtio-snd: check AUD_register_card return value Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 08/15] virtio-sound: add realize() error cleanup path Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 09/15] pcie_sriov: Remove g_new assertion Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 10/15] hw/acpi/erst: Do not ignore Error* in realize handler Michael S. Tsirkin
2023-12-01 17:15 ` Michael S. Tsirkin [this message]
2023-12-01 17:15 ` [PULL 12/15] virtio-iommu: Remove useless !sdev check in virtio_iommu_probe() Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 13/15] msix: unset PCIDevice::msix_vector_poll_notifier in rollback Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 14/15] vhost-user: fix the reconnect error Michael S. Tsirkin
2023-12-01 17:15 ` [PULL 15/15] vhost-user-scsi: free the inflight area when reset Michael S. Tsirkin
2023-12-02 20:58 ` [PULL 00/15] virtio,pc,pci: fixes Michael S. Tsirkin
2023-12-04 14:45 ` Stefan Hajnoczi
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=74b665da374aa1462fe3067415ffe167621fccc7.1701450838.git.mst@redhat.com \
--to=mst@redhat.com \
--cc=dhoff749@gmail.com \
--cc=eduardo@habkost.net \
--cc=marcel.apfelbaum@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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).