SHA256
1
0
forked from pool/qemu
qemu/linux-user-use-max-as-default-CPU-model-.patch

68 lines
2.8 KiB
Diff
Raw Permalink Normal View History

Accepting request 1006734 from home:dfaggioli:devel:Virtualization - 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
2022-09-29 08:46:40 +02:00
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