Dario Faggioli
d58941a9c7
- Runs of the test-suite seem much more stable now, in this version of QEMU. (bsc#1203610) We are also fine re-enabling running them in parallel. - Switch QEMU Linux user to emulate the same CPU as the one of the host by default. This is a bit conrtoversial and tricky, when thinking about system emulation/virtualization. But for linux-user, it should be just fine. (bsc#1203684) * Patches added: linux-user-use-max-as-default-CPU-model-.patch - Be less verbose when packaging documentation. In fact, with just a couple of (minor) re-arrangements, we can get rid of having to list all the files all the time - Package /etc/qemu/bridge.conf as '%config(noreplace). Next step will probably be to move it to /usr/etc/qemu (bsc#1201944) - Switch to %autosetup for all products (this required some changes in update_git.sh) - Run check-qtest sequentially, as it's more reliable, when in OBS - Build with libbpf, fdt and capstone support - Drop the patch adding our support document, and deal with that in the spec file directly * Patches dropped: doc-add-our-support-doc-to-the-main-proj.patch - Updated to latest upstream version 7.1 * https://wiki.qemu.org/ChangeLog/7.1 Be sure to also check the following pages: * https://qemu-project.gitlab.io/qemu/about/removed-features.html * https://qemu-project.gitlab.io/qemu/about/deprecated.html Some notable changes: * [x86] Support for architectural LBRs on KVM virtual machines * [x86] The libopcode-based disassembler has been removed. Use Capstone instead * [LoongArch] Add initial support for the LoongArch64 architecture. * [ARM] The emulated SMMUv3 now advertises support for SMMUv3.2-BBML2 * [ARM] The xlnx-zynqmp SoC model now implements the 4 TTC timers * [ARM] The versal machine now models the Cortex-R5s in the Real-Time Processing Unit (RPU) subsystem * [ARM] The virt board now supports emulation of the GICv4.0 * [ARM] New emulated CPU types: Cortex-A76, Neoverse-N1 * [HPPA] Fix serial port pass-through from host to guest * [HPPA] Lots of general code improvements and tidy-ups * [RISC-V] RISC-V * [RISC-V] Add support for privileged spec version 1.12.0 * [RISC-V] Use privileged spec version 1.12.0 for virt machine by default * [RISC-V] Allow software access to MIP SEIP * [RISC-V] Add initial support for the Sdtrig extension * [RISC-V] Optimisations and improvements for the vector extension * [VFIO] Experimental support for exposing emulated PCI devices over the new vfio-user protocol (a vfio-user client is not yet available in QEMU, though) * [QMP] The on-cbw-error option for copy-before-write filter, to specify behavior on CBW (copy before write) operation failure. * [QMP] The cbw-timeout option for copy-before-write filter, to specify timeout for CBW operation. * [QMP] New commands query-stats and query-stats-schema to retrieve statistics from various QEMU subsystems (right now only from KVM). * [QMP] The PanicAction can now be configured to report an exit-failure (useful for automated testing) * [Networking] QEMU can be compiled with the system slirp library even when using CFI. This requires libslirp 4.7. * [Migration] Support for zero-copy-send on Linux, which reduces CPU usage on the source host. Note that locked memory is needed to support this * Patches added: Revert-tests-qtest-enable-more-vhost-use.patch meson-remove-pkgversion-from-CONFIG_STAM.patch * Patches dropped: AIO-Reduce-number-of-threads-for-32bit-h.patch Makefile-Don-t-check-pc-bios-as-pre-requ.patch Revert-8dcb404bff6d9147765d7dd3e9c849337.patch Revert-qht-constify-qht_statistics_init.patch XXX-dont-dump-core-on-sigabort.patch acpi_piix4-Fix-migration-from-SLE11-SP2.patch configure-only-populate-roms-if-softmmu.patch configure-remove-pkgversion-from-CONFIG_.patch coroutine-ucontext-use-QEMU_DEFINE_STATI.patch coroutine-use-QEMU_DEFINE_STATIC_CO_TLS.patch coroutine-win32-use-QEMU_DEFINE_STATIC_C.patch hostmem-default-the-amount-of-prealloc-t.patch hw-usb-hcd-ehci-fix-writeback-order.patch i8254-Fix-migration-from-SLE11-SP2.patch intc-exynos4210_gic-replace-snprintf-wit.patch modules-generates-per-target-modinfo.patch modules-introduces-module_kconfig-direct.patch pc-bios-s390-ccw-net-avoid-warning-about.patch pci-fix-overflow-in-snprintf-string-form.patch qemu-cvs-gettimeofday.patch qemu-cvs-ioctl_debug.patch qemu-cvs-ioctl_nodirection.patch qht-Revert-some-constification-in-qht.c.patch qom-handle-case-of-chardev-spice-module-.patch scsi-lsi53c895a-fix-use-after-free-in-ls.patch scsi-lsi53c895a-really-fix-use-after-fre.patch softmmu-Always-initialize-xlat-in-addres.patch sphinx-change-default-language-to-en.patch test-add-mapping-from-arch-of-i686-to-qe.patch tests-Fix-block-tests-to-be-compatible-w.patch tests-qtest-Move-the-fuzz-tests-to-x86-o.patch usb-Help-compiler-out-to-avoid-a-warning.patch OBS-URL: https://build.opensuse.org/request/show/1006734 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=732
68 lines
2.8 KiB
Diff
68 lines
2.8 KiB
Diff
From: Dario Faggioli <dfaggioli@suse.com>
|
|
Date: Wed, 28 Sep 2022 13:13:08 +0200
|
|
Subject: linux-user: use "max" as default CPU model, to deal with x86_64-v2
|
|
binaries
|
|
|
|
Git-commit: 0000000000000000000000000000000000000000
|
|
References: bsc#1203684
|
|
|
|
The old "qemu64" model cannot run binaries compiled for, e.g.,
|
|
x86_64-v2. This could be a problem because a couple of major
|
|
distribution are switching to that as their baseline. In fact, errors
|
|
like this one can be observed (if 'ls' is such a binary):
|
|
|
|
x86_64-linux-user/qemu-x86_64 /usr/bin/ls
|
|
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
|
|
|
|
Instead, using "max" as the CPU model, everything (of course) works:
|
|
|
|
export QEMU_CPU=max
|
|
x86_64-linux-user/qemu-x86_64 /usr/bin/ls
|
|
|
|
This has been and is being discussed in several places, e.g.:
|
|
https://lore.kernel.org/qemu-devel/20210607135843.196595-1-berrange@redhat.com/
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2079915
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=2080133
|
|
http:s//github.com/containers/podman/issues/14314
|
|
|
|
However, these are all about system-emulation/virtualization, which is
|
|
indeed quite tricky. In fact, what would be a good alternative default
|
|
CPU model to pick, in that case? At the same time, however, it's also
|
|
less problematic. In fact, people using QEMU for that purpose are likely
|
|
in one of the following two situations already:
|
|
1) they're starting QEMU manually, with a long and complex command line,
|
|
for whatever specific reason. In that case, adding '-cpu host' (or
|
|
whatever) to such long and complex command line, isn't a big deal;
|
|
2) they're using QEMU via libvirt, which has its own fancy and
|
|
convenient ways of determining the best CPU model, and the default
|
|
"qemu64" one is pretty much never being used.
|
|
|
|
The case of Linux user emulation, however, it's a bit more tricky, as
|
|
it's less convenient to actually pass any parameter to QEMU at all, in
|
|
this scenario, so having to add one might be complicated. The same goes
|
|
for having to define the QEMU_CPU environment variable. When doing Linux
|
|
userspace emulation, though, a lot of the downsides of just using '-cpu
|
|
host' as the default are non-issue (e.g., we do not need to think about
|
|
migration!).
|
|
|
|
Therefore, while the topic remain complex and unsolved for system
|
|
emulation, for Linux user, let's just switch and be happy.
|
|
|
|
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
|
---
|
|
linux-user/x86_64/target_elf.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h
|
|
index 7b76a90de8805a84b4983f3b2bb9..3f628f8d66197faae698cbec4e24 100644
|
|
--- a/linux-user/x86_64/target_elf.h
|
|
+++ b/linux-user/x86_64/target_elf.h
|
|
@@ -9,6 +9,6 @@
|
|
#define X86_64_TARGET_ELF_H
|
|
static inline const char *cpu_get_model(uint32_t eflags)
|
|
{
|
|
- return "qemu64";
|
|
+ return "max";
|
|
}
|
|
#endif
|