From patchwork Wed Sep 28 20:27:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 12992916 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0DD51C04A95 for ; Wed, 28 Sep 2022 20:49:29 +0000 (UTC) Received: from localhost ([::1]:55278 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddzk-0000kL-3n for qemu-devel@archiver.kernel.org; Wed, 28 Sep 2022 16:49:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60032) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odden-00082q-9j for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:44979) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0006OQ-E2 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M2OAi-1ofH0v2CKM-003spi; Wed, 28 Sep 2022 22:27:39 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 01/37] linux-user: use 'max' instead of 'qemu32' / 'qemu64' by default Date: Wed, 28 Sep 2022 22:27:01 +0200 Message-Id: <20220928202737.793171-2-laurent@vivier.eu> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220928202737.793171-1-laurent@vivier.eu> References: <20220928202737.793171-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:4yYHylcm/hicGnxdeGg3X1NBLIwRJnafR/8TYsdjipk3PW4p74y K1Ev2g8obI5aThYrDw+gy8Bt4T16Wt4IOQJNeYp2OMFhEbcwk4lRXlvIV9vUWiI3Bj3kglF EdKZSWX8t71huKExPXmALoriXV6NboxExxMOmFwXVw80IAFLndkkBT0NhaYjq1v6paisYhm RrwQy960c5DmR63sH08Kg== X-UI-Out-Filterresults: notjunk:1;V03:K0:09QB06vxIDE=:rTvy2gbN3gqgC/Zoqguf9i TFrgG5Ay2S7yRd82nucCGA/BaKA9e0IURLcfzntZEznAsBCEyqBcJjndxwYtuLHksYwAMAv/X dXDKNczDoCN2eyhs5/rK7jAdPktz8m+ZOG9H3XxU4BzkDM8O7z5FiVG6HNlO2GLJywItBMMuL 5p0XewEgvo5RqRopxK7An4HjvwqwmnpRe/VyETdGVX2FTugiVtGuIZjRe1jheF3ugdn8buWyy YoM0wS+t8H09t6SIPRVi6cbPrmxpxNTbEwSqI9pfpvJotEDC8RMn4lu/nbZxSvJdnNnog23Ql fpOmeeVro3xdehQK2Knay6OqosVAwuiMulqj8aTV14I+68+8JNTvk6Zaon2KylHBLDIaSGYz8 yvpxViEuqWKY3d+tcvl36JT7BBtNopTsfcETMHLJfPOSDwWuWgcLtMkEgtPmwRiV09YnRPq+l sSbUXCrwpkbg3ulFZV2V3Q0Vp/vyURtzBR3jTQFmmXf9Bkn7BhGldL9Fl7rBo59uI+gxp8n3C 8/GOfGDFvDebOEclhUkoJ+5yOpieWujb0cFIsYdbpNqqmLH/bcX+JRVVf2vtpQsjmtRd2DyQ/ F0D6Pb7BSlX+AfNty5UIijbRYsJRk6OMAdB/hHsDXEJgCVahhiAHQacMNYO81MtqPO+NpXLAx eMAB7r1Ehi/ksGckpOOBG93PpGzIHp+M5qY2T6vdd6YTCssG2b0KuMi6vtAVt3f5gnXHVNcdb VAXoDQwNqVqHKigklys70vcC0u25Ck2oWFxYUMQIZIK0TZoSRT56EaKwmijbfR4Kg7+y0TDQd wPEAWtv Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Daniel P. Berrangé The 'qemu64' CPU model implements the least featureful x86_64 CPU that's possible. Historically this hasn't been an issue since it was rare for OS distros to build with a higher mandatory CPU baseline. With RHEL-9, however, the entire distro is built for the x86_64-v2 ABI baseline: https://developers.redhat.com/blog/2021/01/05/building-red-hat-enterprise-linux-9-for-the-x86-64-v2-microarchitecture-level It is likely that other distros may take similar steps in the not too distant future. For example, it has been suggested for Fedora on a number of occasions. This new baseline is not compatible with the qemu64 CPU model though. While it is possible to pass a '-cpu xxx' flag to qemu-x86_64, the usage of QEMU doesn't always allow for this. For example, the args are typically controlled via binfmt rules that the user has no ability to change. This impacts users who are trying to use podman on aarch64 platforms, to run containers with x86_64 content. There's no arg to podman that can be used to change the qemu-x86_64 args, and a non-root user of podman can not change binfmt rules without elevating privileges: https://github.com/containers/podman/issues/15456#issuecomment-1228210973 Changing to the 'max' CPU model gives 'qemu-x86_64' maximum compatibility with binaries it is likely to encounter in the wild, and not likely to have a significant downside for existing usage. Most other architectures already use an 'any' CPU model, which is often mapped to 'max' (or similar) already, rather than the oldest possible CPU model. For the sake of consistency the 'i386' architecture is also changed from using 'qemu32' to 'max'. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Daniel P. Berrangé Message-Id: <20220923110413.70593-1-berrange@redhat.com> Signed-off-by: Laurent Vivier --- linux-user/i386/target_elf.h | 2 +- linux-user/x86_64/target_elf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h index 1c6142e7da0d..238a9aba738a 100644 --- a/linux-user/i386/target_elf.h +++ b/linux-user/i386/target_elf.h @@ -9,6 +9,6 @@ #define I386_TARGET_ELF_H static inline const char *cpu_get_model(uint32_t eflags) { - return "qemu32"; + return "max"; } #endif diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h index 7b76a90de880..3f628f8d6619 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