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: 1684076 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7pR4QdWz1yqS for ; Thu, 29 Sep 2022 06:47:11 +1000 (AEST) Received: from localhost ([::1]:44184 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddxV-0006OR-Cr for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:47:09 -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+incoming=patchwork.ozlabs.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 From patchwork Wed Sep 28 20:27:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684060 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7c31LCXz1ypH for ; Thu, 29 Sep 2022 06:38:09 +1000 (AEST) Received: from localhost ([::1]:36878 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddoj-00033M-RH for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:38:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0007wS-8e for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:46 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:39067) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddei-0006N2-AU for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:45 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MLA2e-1ovr1l42xG-00IGQE; Wed, 28 Sep 2022 22:27:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Jameson Nash , Laurent Vivier Subject: [PULL 02/37] linux-user: fix readlinkat handling with magic exe symlink Date: Wed, 28 Sep 2022 22:27:02 +0200 Message-Id: <20220928202737.793171-3-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:y5LNxxin6TgZD2LbViOEQruAAyLh8MnkAu+bgNMdrQtyUWA4QAQ 3yBxqgOQoc7vtM91st7C3kaC6acwYUvRtiVb5LZTC4/lW4E9A9sH8obR34PToDq2SBWdsBN lcNkX9BqHneJxEcvYOfFNBe2LgjH3K4RFyxVMUMBGOH3Qig0FZiu/ggpLzR/fy0PFhi5cUB rf3N4huH0ikl8+CI0GWyQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:RJrbQmFocrQ=:RR6xWnaKt7KNvQizsDolR7 Kcxbxb0TEjCPS5cX363MpILIQMPFZLbQOTloAyyd1rTuHgP3P2jtLmJXZZYpwAQbJ0HuO6IWs BgIzoNlH8PnrlQHE91fOs5uL/tWjvLD4FO3mh6XKxs1qH1yZk4WLreFqN9DY5Ss7aWW75l1zh OUBHSqu+0bfYZrCQU4+vCkfbXrOOLg4UIWV3Woch35xB5x8S5OF8oaz588mgz/L32Iv54jhDz cq4AW5/iR4K5I9XaQzimm8daAr4CYFMXF8dDplMLBIcASil9r1UA0K7yylLYqMPXI9+mF63vd /LtDcQNuupIBtQkgKDI4T7vQcZT+7gI3VgaIMpoQNhgPmhttD/vltUuwjoyj+zlff6aLZHFCV 4OgvM8BRkpdljTVxSftgsRbDuxr309DOWB4qcxZorPeji70hyz2oDkcERsVnQGGrpdgsTW6Yd GbmI2M/KAwWurhbuBzmsXpdqk7OBO80NQPv7LNt989TVKwTPumK7Xjd9mduAaxfKemkPtNA/2 AyzokmguYX6f8UIwbPGv1Xp77sj3Gi7UDKWVed0dRN/aHPrtvi8vPtsMV+FPcnl0afGDmrzIo nQ+kfzJpDuI12Ek8OgRIdEi3HJYkyFAHMVlxYKp7OfbPQzNIEuo3oUf52E+GzlqOt05NXt3Ds LbN6mNbWrKvlarsE8KmHobtjTOXOv7zxLBUEPjkMhI1v1TJusUOXbghTlyq/brZo4/QNNXUk6 Op0Oykv6I+p7srXwG80hvjPAg+ZbcpPC71IB9ni9WJjTZ+iS13PhMUIy4VH/EPsoJf1Q/gdkD 2dCvHEC Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Jameson Nash Exactly the same as f17f4989fa193fa8279474c5462289a3cfe69aea before was for readlink. I suppose this was simply missed at the time. Signed-off-by: Jameson Nash Reviewed-by: Laurent Vivier Message-Id: <20220808190727.875155-1-vtjnash@gmail.com> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index f4091212027c..abf82bab2a18 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9912,11 +9912,22 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, p2 = lock_user(VERIFY_WRITE, arg3, arg4, 0); if (!p || !p2) { ret = -TARGET_EFAULT; + } else if (!arg4) { + /* Short circuit this for the magic exe check. */ + ret = -TARGET_EINVAL; } else if (is_proc_myself((const char *)p, "exe")) { char real[PATH_MAX], *temp; temp = realpath(exec_path, real); - ret = temp == NULL ? get_errno(-1) : strlen(real) ; - snprintf((char *)p2, arg4, "%s", real); + /* Return value is # of bytes that we wrote to the buffer. */ + if (temp == NULL) { + ret = get_errno(-1); + } else { + /* Don't worry about sign mismatch as earlier mapping + * logic would have thrown a bad address error. */ + ret = MIN(strlen(real), arg4); + /* We cannot NUL terminate the string. */ + memcpy(p2, real, ret); + } } else { ret = get_errno(readlinkat(arg1, path(p), p2, arg4)); } From patchwork Wed Sep 28 20:27:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684052 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7Nn6QPqz1ypH for ; Thu, 29 Sep 2022 06:28:25 +1000 (AEST) Received: from localhost ([::1]:46872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddfL-00080l-PK for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:28:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0007ww-Ea for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:46 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:46731) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddei-0006Mt-Ab for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:46 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MK3a4-1owwQE1ZiY-00LYD0; Wed, 28 Sep 2022 22:27:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 03/37] linux-user: Add missing signals in strace output Date: Wed, 28 Sep 2022 22:27:03 +0200 Message-Id: <20220928202737.793171-4-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:n5+Z0huhsflpMEKFzJAv42WA7f+6fMAqUi4MQ5Usr7PvWT93wZG By/RWi6xaul+7WmJCUR/5wSvxUqOauBxpUDdtX2b87rv1LsJTAaPVFeI8U838PU3SaGyhX2 zbzh7hce9NYN0ALn/2eivfKDbA5M1+lgk/i9OLUNslRNPtn6hDGXkwgAkBEOLEk1TW/fy25 Va0f7bmk4yP2tJrjZ7c8w== X-UI-Out-Filterresults: notjunk:1;V03:K0:Swb5jqbKdQs=:mgKqPtVG40HLKBw2d3fAHz ZPKjCChbygY6BUv6vgt3wI9zhxRmcbIYoXzzgodrZu7rx8YPPX2DfPxg+Pe6qrEELHbmmn54e qs1ZhXS8mxdrmvYPwRX9wSVQYDuDWoQ+hy8lR7ijYvKNqDmNypysSJFHuFHpAq21CdLMwuqOd Vv3ouktxW/04TDWNWNX3eF8GAj7Kd3ZvPvhH6jcu7Ru0Y0qVefNysCW/I0dptcsuZOpPcN6y4 BlNEHDNaIJuJHjjH+ATn+ny9nnyTp2qu+JE0rH94tUFaUkNikeFuve6buwCHOZa9340FaFnrT LJcdbyuBgpTCYOenfMFPBDtJAhXxjFF9fznpjrSqiFoZLSVkD4oi/0UeQo7hGvU2C+iEd59kW b7w8AWZboNipAf46JldqBY3m6bdwnrtfb3hEBVPAgSZcwVCWTIqaE19TO+2Buud8+4rE0o36z n/rg3Tza+IbjYwrccFa9BnjThgxdtRlHTO8kyFGY5mE7R29PR3iJWceygoM6elVDUoXOf/oVS LoLXk5okPunJY/aT2a/MBZSVKW0Pd69O/DcglB7XkizVYglZYD8icKo5YRAz0qgCaeCY524bU 1dQsvIN2RxF1FD+HDk8m4QoZRU9lwZvlJB5H3ktejH2iA9glI5+d32gOIZ6qLheiwZkTbm+F7 YMxUx5V/C4bnaq61ummxnCUHL57yALDhhEGmS0Q681oLt6trTOTJjUA4UV0WDHRW/tTYn+UPX rw8CPUejf3NkCMKYV4/pmcOpsv3S8H/DAcb3r9YWnrM+Dux41eDjCEIaQ15FGGq5dfT9sdIOT TfCV6Ce Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Some of the guest signal numbers are currently not converted to their representative names in the strace output, e.g. SIGVTALRM. This patch introduces a smart way to generate and keep in sync the host-to-guest and guest-to-host signal conversion tables for usage in the qemu signal and strace code. This ensures that any signals will now show up in both tables. There is no functional change in this patch - with the exception that yet missing signal names now show up in the strace code too. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-2-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/signal-common.h | 46 ++++++++++++++++++++++++++++++++++++++ linux-user/signal.c | 37 +++--------------------------- linux-user/strace.c | 30 +++++++++---------------- 3 files changed, 60 insertions(+), 53 deletions(-) diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h index 6a7e4a93fc13..3e2dc604c2fb 100644 --- a/linux-user/signal-common.h +++ b/linux-user/signal-common.h @@ -118,4 +118,50 @@ static inline void finish_sigsuspend_mask(int ret) } } +#if defined(SIGSTKFLT) && defined(TARGET_SIGSTKFLT) +#define MAKE_SIG_ENTRY_SIGSTKFLT MAKE_SIG_ENTRY(SIGSTKFLT) +#else +#define MAKE_SIG_ENTRY_SIGSTKFLT +#endif + +#if defined(SIGIOT) && defined(TARGET_SIGIOT) +#define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT) +#else +#define MAKE_SIG_ENTRY_SIGIOT +#endif + +#define MAKE_SIGNAL_LIST \ + MAKE_SIG_ENTRY(SIGHUP) \ + MAKE_SIG_ENTRY(SIGINT) \ + MAKE_SIG_ENTRY(SIGQUIT) \ + MAKE_SIG_ENTRY(SIGILL) \ + MAKE_SIG_ENTRY(SIGTRAP) \ + MAKE_SIG_ENTRY(SIGABRT) \ + MAKE_SIG_ENTRY(SIGBUS) \ + MAKE_SIG_ENTRY(SIGFPE) \ + MAKE_SIG_ENTRY(SIGKILL) \ + MAKE_SIG_ENTRY(SIGUSR1) \ + MAKE_SIG_ENTRY(SIGSEGV) \ + MAKE_SIG_ENTRY(SIGUSR2) \ + MAKE_SIG_ENTRY(SIGPIPE) \ + MAKE_SIG_ENTRY(SIGALRM) \ + MAKE_SIG_ENTRY(SIGTERM) \ + MAKE_SIG_ENTRY(SIGCHLD) \ + MAKE_SIG_ENTRY(SIGCONT) \ + MAKE_SIG_ENTRY(SIGSTOP) \ + MAKE_SIG_ENTRY(SIGTSTP) \ + MAKE_SIG_ENTRY(SIGTTIN) \ + MAKE_SIG_ENTRY(SIGTTOU) \ + MAKE_SIG_ENTRY(SIGURG) \ + MAKE_SIG_ENTRY(SIGXCPU) \ + MAKE_SIG_ENTRY(SIGXFSZ) \ + MAKE_SIG_ENTRY(SIGVTALRM) \ + MAKE_SIG_ENTRY(SIGPROF) \ + MAKE_SIG_ENTRY(SIGWINCH) \ + MAKE_SIG_ENTRY(SIGIO) \ + MAKE_SIG_ENTRY(SIGPWR) \ + MAKE_SIG_ENTRY(SIGSYS) \ + MAKE_SIG_ENTRY_SIGSTKFLT \ + MAKE_SIG_ENTRY_SIGIOT + #endif diff --git a/linux-user/signal.c b/linux-user/signal.c index 8d29bfaa6b5c..61c6fa3fcf12 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -53,40 +53,9 @@ abi_ulong default_rt_sigreturn; QEMU_BUILD_BUG_ON(__SIGRTMAX + 1 != _NSIG); #endif static uint8_t host_to_target_signal_table[_NSIG] = { - [SIGHUP] = TARGET_SIGHUP, - [SIGINT] = TARGET_SIGINT, - [SIGQUIT] = TARGET_SIGQUIT, - [SIGILL] = TARGET_SIGILL, - [SIGTRAP] = TARGET_SIGTRAP, - [SIGABRT] = TARGET_SIGABRT, -/* [SIGIOT] = TARGET_SIGIOT,*/ - [SIGBUS] = TARGET_SIGBUS, - [SIGFPE] = TARGET_SIGFPE, - [SIGKILL] = TARGET_SIGKILL, - [SIGUSR1] = TARGET_SIGUSR1, - [SIGSEGV] = TARGET_SIGSEGV, - [SIGUSR2] = TARGET_SIGUSR2, - [SIGPIPE] = TARGET_SIGPIPE, - [SIGALRM] = TARGET_SIGALRM, - [SIGTERM] = TARGET_SIGTERM, -#ifdef SIGSTKFLT - [SIGSTKFLT] = TARGET_SIGSTKFLT, -#endif - [SIGCHLD] = TARGET_SIGCHLD, - [SIGCONT] = TARGET_SIGCONT, - [SIGSTOP] = TARGET_SIGSTOP, - [SIGTSTP] = TARGET_SIGTSTP, - [SIGTTIN] = TARGET_SIGTTIN, - [SIGTTOU] = TARGET_SIGTTOU, - [SIGURG] = TARGET_SIGURG, - [SIGXCPU] = TARGET_SIGXCPU, - [SIGXFSZ] = TARGET_SIGXFSZ, - [SIGVTALRM] = TARGET_SIGVTALRM, - [SIGPROF] = TARGET_SIGPROF, - [SIGWINCH] = TARGET_SIGWINCH, - [SIGIO] = TARGET_SIGIO, - [SIGPWR] = TARGET_SIGPWR, - [SIGSYS] = TARGET_SIGSYS, +#define MAKE_SIG_ENTRY(sig) [sig] = TARGET_##sig, + MAKE_SIGNAL_LIST +#undef MAKE_SIG_ENTRY /* next signals stay the same */ }; diff --git a/linux-user/strace.c b/linux-user/strace.c index 7d882526da03..a4eeef7ae1ca 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -17,6 +17,7 @@ #include "qemu.h" #include "user-internals.h" #include "strace.h" +#include "signal-common.h" struct syscallname { int nr; @@ -141,30 +142,21 @@ if( cmd == val ) { \ qemu_log("%d", cmd); } +static const char * const target_signal_name[] = { +#define MAKE_SIG_ENTRY(sig) [TARGET_##sig] = #sig, + MAKE_SIGNAL_LIST +#undef MAKE_SIG_ENTRY +}; + static void print_signal(abi_ulong arg, int last) { const char *signal_name = NULL; - switch(arg) { - case TARGET_SIGHUP: signal_name = "SIGHUP"; break; - case TARGET_SIGINT: signal_name = "SIGINT"; break; - case TARGET_SIGQUIT: signal_name = "SIGQUIT"; break; - case TARGET_SIGILL: signal_name = "SIGILL"; break; - case TARGET_SIGABRT: signal_name = "SIGABRT"; break; - case TARGET_SIGFPE: signal_name = "SIGFPE"; break; - case TARGET_SIGKILL: signal_name = "SIGKILL"; break; - case TARGET_SIGSEGV: signal_name = "SIGSEGV"; break; - case TARGET_SIGPIPE: signal_name = "SIGPIPE"; break; - case TARGET_SIGALRM: signal_name = "SIGALRM"; break; - case TARGET_SIGTERM: signal_name = "SIGTERM"; break; - case TARGET_SIGUSR1: signal_name = "SIGUSR1"; break; - case TARGET_SIGUSR2: signal_name = "SIGUSR2"; break; - case TARGET_SIGCHLD: signal_name = "SIGCHLD"; break; - case TARGET_SIGCONT: signal_name = "SIGCONT"; break; - case TARGET_SIGSTOP: signal_name = "SIGSTOP"; break; - case TARGET_SIGTTIN: signal_name = "SIGTTIN"; break; - case TARGET_SIGTTOU: signal_name = "SIGTTOU"; break; + + if (arg < ARRAY_SIZE(target_signal_name)) { + signal_name = target_signal_name[arg]; } + if (signal_name == NULL) { print_raw_param("%ld", arg, last); return; From patchwork Wed Sep 28 20:27:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684055 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7TF70Wbz1yq7 for ; Thu, 29 Sep 2022 06:32:17 +1000 (AEST) Received: from localhost ([::1]:48312 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddj5-0005Uh-R4 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:32:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0007wI-7B for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:46 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:43941) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddei-0006Mu-4Y for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:45 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MuDTn-1pVjLF3U1l-00ucB3; Wed, 28 Sep 2022 22:27:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 04/37] linux-user: Add missing clock_gettime64() syscall strace Date: Wed, 28 Sep 2022 22:27:04 +0200 Message-Id: <20220928202737.793171-5-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:GIW8ynZGiXfnZktLTdPEs/LQDSNBJPXQhZyfu6tzVnC3HmGNp82 YkHDxojOEqOZFLl2vm3gTXBtrYOfilnqPUaEX9LYLEfFODyqmXym+9MGeGgdIh2wHDX+lDi n1WwjIsRlsW6w0VRr+08m/a734f3hi9RyVuhov53/1tmIAB05fgF4TFHKr8+YZYUkeRmPVa f0TCEzN3Uu/l6Bt58dVwA== X-UI-Out-Filterresults: notjunk:1;V03:K0:vkYEw0vDZ6M=:LMP4TO9yJlWRIkQeNXxsUj Fx/VMfsxKkgYwBLl0wEZ2yKCfYtQFnr8PegYtny9wNmF5SkRynriGOFWqKvvfY2aE37NQSFLU vMr7rnp6se4y22sdPioJJwjSoMiU/kyGo6Mfz10xbAnLYkggk2+W6Iwv8PD/MQRIKiO64ug3v e2zrLg6b9nKLFi4AwFXbCW07s+kb6G2SLdtEr00YB4J8iTJgf4j8dCQ79vrk5c/4dhwaeUx+v UMSAgH836XYXlTgQmJ4buf+T94OH+k0E4YKk2Id1IDsqexRmb5MUO/uBwudqMpBDbjDfis4Gq mYTV4gMHXlMbs0c/p+peVZqz5MtSTgMd9kBQW1nnB85HXBAM2dr5TXm+lEhs/Mic+mYjuZ5ZC eqsvsKAKd53FghKMj+KV79zCYPIPRva+pbbpMhWFlswevJPKYLyfl4Rg/GPSb0hWBlBzi1zwT 6KAiEDvUkV0BOWOSWQs81KAsUHEgkwaWPbFoq1JWCWYEXlGdqwWxGtnbr1lptoNcNN9Dbe4bf u8KnJgpIRvjjv6BLuGJIetj8XMr6hA/rY18rbPzHgAQ80vMdIhVG4uHJvoKYFu0gfhqES8zak Ri/rrmK6z6K5+tA1brgys8oTNkqtlPNScb6CAYOlnNvL2hEiGGaBkTHuwQDIRD/0xISDq5HD0 hD5tyqnZ0BnYYgb6EWhKlvXBnj8SkNOZ1alKK1mXk12FAuWr2aZGCTZSANMOyBSuO5/Vd3qob OppTkw4ToK/Te0JEX9S/NHYmAUcka61DD6Jihx1LfTY+S4hFE8qyaqx9QsDBBYM7g5nVqDC2f ++lYfkS Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Allow linux-user to strace the clock_gettime64() syscall. This syscall is used a lot on 32-bit guest architectures which use newer glibc versions. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-3-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 53 ++++++++++++++++++++++++++++++++++++++++++ linux-user/strace.list | 4 ++++ 2 files changed, 57 insertions(+) diff --git a/linux-user/strace.c b/linux-user/strace.c index a4eeef7ae1ca..816e67999539 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -82,6 +82,7 @@ UNUSED static void print_buf(abi_long addr, abi_long len, int last); UNUSED static void print_raw_param(const char *, abi_long, int); UNUSED static void print_timeval(abi_ulong, int); UNUSED static void print_timespec(abi_ulong, int); +UNUSED static void print_timespec64(abi_ulong, int); UNUSED static void print_timezone(abi_ulong, int); UNUSED static void print_itimerval(abi_ulong, int); UNUSED static void print_number(abi_long, int); @@ -795,6 +796,24 @@ print_syscall_ret_clock_gettime(CPUArchState *cpu_env, const struct syscallname #define print_syscall_ret_clock_getres print_syscall_ret_clock_gettime #endif +#if defined(TARGET_NR_clock_gettime64) +static void +print_syscall_ret_clock_gettime64(CPUArchState *cpu_env, const struct syscallname *name, + abi_long ret, abi_long arg0, abi_long arg1, + abi_long arg2, abi_long arg3, abi_long arg4, + abi_long arg5) +{ + if (!print_syscall_err(ret)) { + qemu_log(TARGET_ABI_FMT_ld, ret); + qemu_log(" ("); + print_timespec64(arg1, 1); + qemu_log(")"); + } + + qemu_log("\n"); +} +#endif + #ifdef TARGET_NR_gettimeofday static void print_syscall_ret_gettimeofday(CPUArchState *cpu_env, const struct syscallname *name, @@ -1652,6 +1671,27 @@ print_timespec(abi_ulong ts_addr, int last) } } +static void +print_timespec64(abi_ulong ts_addr, int last) +{ + if (ts_addr) { + struct target__kernel_timespec *ts; + + ts = lock_user(VERIFY_READ, ts_addr, sizeof(*ts), 1); + if (!ts) { + print_pointer(ts_addr, last); + return; + } + qemu_log("{tv_sec = %lld" + ",tv_nsec = %lld}%s", + (long long)tswap64(ts->tv_sec), (long long)tswap64(ts->tv_nsec), + get_comma(last)); + unlock_user(ts, ts_addr, 0); + } else { + qemu_log("NULL%s", get_comma(last)); + } +} + static void print_timezone(abi_ulong tz_addr, int last) { @@ -2267,6 +2307,19 @@ print_clock_gettime(CPUArchState *cpu_env, const struct syscallname *name, #define print_clock_getres print_clock_gettime #endif +#if defined(TARGET_NR_clock_gettime64) +static void +print_clock_gettime64(CPUArchState *cpu_env, const struct syscallname *name, + abi_long arg0, abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4, abi_long arg5) +{ + print_syscall_prologue(name); + print_enums(clockids, arg0, 0); + print_pointer(arg1, 1); + print_syscall_epilogue(name); +} +#endif + #ifdef TARGET_NR_clock_settime static void print_clock_settime(CPUArchState *cpu_env, const struct syscallname *name, diff --git a/linux-user/strace.list b/linux-user/strace.list index 72e17b1acf00..a78cdf3cdfef 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -1676,3 +1676,7 @@ #ifdef TARGET_NR_copy_file_range { TARGET_NR_copy_file_range, "copy_file_range", "%s(%d,%p,%d,%p,"TARGET_ABI_FMT_lu",%u)", NULL, NULL }, #endif +#ifdef TARGET_NR_clock_gettime64 +{ TARGET_NR_clock_gettime64, "clock_gettime64" , NULL, print_clock_gettime64, + print_syscall_ret_clock_gettime64 }, +#endif From patchwork Wed Sep 28 20:27:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684051 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7Nl1tpHz1ypH for ; Thu, 29 Sep 2022 06:28:23 +1000 (AEST) Received: from localhost ([::1]:46870 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddfJ-0007vZ-4J for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:28:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddei-0007u0-RV for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:44 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:44405) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeh-0006MQ-1p for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:44 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mirb8-1p7DEv15hU-00etgK; Wed, 28 Sep 2022 22:27:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 05/37] linux-user: Add pidfd_open(), pidfd_send_signal() and pidfd_getfd() syscalls Date: Wed, 28 Sep 2022 22:27:05 +0200 Message-Id: <20220928202737.793171-6-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:CZNab/SaSwFIk+e1+nEbEBympse6t7XjYQN4lD+8PB1TsNU10HT HxSdw9PrBUmWVHVYngvsFzno9myTHOnuf8cxFOWQmlo5gjpNoON2mNv/If3MOi1HdpoizBg SFYYveA12VeWUQI0noqjUaogR0ervdEHlSlMydyeoxGfg7BElsPLddNHoDOpddBxoOS/Kr7 HxfKGDhbN7kzMWmmkOV1w== X-UI-Out-Filterresults: notjunk:1;V03:K0:0fO/qyTfghM=:83VGdksul+S0Qa+2CwpByX h3KCnVqy2UQDLMqFVoNH4F7ZTzKPhbtP/nsokUEdwStc578ZXdihCKTl2h+fObjN2A1Eq1uXV TpElyJMwN7Pq40QH1NHS4n1NLeb2BwVhk+JDgsSak8qlLkWSVsABBw6PtGuE6JU1+EdoW7i6n Wd5//QSzRuZUzq39VBDLLZnjvbhbCj7kfeWiQ09fO8y1526w/jeUnTo+eXDVnjwwIiTgJ4pDf 7ZnexmcfnWWcGnpy1qPrxgxJUp7ipeWsyXFtsEtY7BNtVQvtehLiLPA6YK/AafycG661FxZgj OFgA+fd7YGGkj3KPmNuGny/nu6A5CLQmmi3ih0mOoLGKjR3S9N8cAwn2ZHi7SpVNozIv3ysQ/ BoCfMjXe7qmS7wxd+f0G2lrvEdN4qBkyKbtGxqYpm+FZA+IPkdOTU0/JYlOQSX0TvLpucK2ZU HX/H5RLye2SKSaaevDp6EB2ECWsycHZmDrGKkndFlQ9cQ++xrPGMGdQ6NOqs0DzKg4djb4YWI mBUfYoTiNiDovYgpJbEgVUB1gB01rNtLVVq6qWahdI8CCF6AMHlGlU/C7fK9rifauQqgfYm+F AYaNeybEqxHQQ1jTJptqlLMMV6vIoNGC7Du1EgP1zuBfVEF3H6iJSKIprhDDGqfU9m4owZpgQ IWb7INY+kjeJDjHYIWBA2e9Cw9FTgnDZDv4OkFLq2DffykuQUm9cKJP1NUi/gFyj8UOz0kNPa X5ZzghUgSJwg+I3L3RHqqhdYxTRQsC5Q8w1XU3P5W+GFdAhq6KZNmr6OwOf861cV5AH2VcHUt eMMuY5U Received-SPF: none client-ip=212.227.17.10; 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller I noticed those were missing when running the glib2.0 testsuite. Add the syscalls including the strace output. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-4-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 28 ++++++++++++++++++++++++++++ linux-user/strace.list | 9 +++++++++ linux-user/syscall.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/linux-user/strace.c b/linux-user/strace.c index 816e67999539..5ac64df02b85 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3317,6 +3317,34 @@ print_openat(CPUArchState *cpu_env, const struct syscallname *name, } #endif +#ifdef TARGET_NR_pidfd_send_signal +static void +print_pidfd_send_signal(CPUArchState *cpu_env, const struct syscallname *name, + abi_long arg0, abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4, abi_long arg5) +{ + void *p; + target_siginfo_t uinfo; + + print_syscall_prologue(name); + print_raw_param("%d", arg0, 0); + print_signal(arg1, 0); + + p = lock_user(VERIFY_READ, arg2, sizeof(target_siginfo_t), 1); + if (p) { + get_target_siginfo(&uinfo, p); + print_siginfo(&uinfo); + + unlock_user(p, arg2, 0); + } else { + print_pointer(arg2, 1); + } + + print_raw_param("%u", arg3, 0); + print_syscall_epilogue(name); +} +#endif + #ifdef TARGET_NR_mq_unlink static void print_mq_unlink(CPUArchState *cpu_env, const struct syscallname *name, diff --git a/linux-user/strace.list b/linux-user/strace.list index a78cdf3cdfef..4d8b7f6a5e0c 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -1664,6 +1664,15 @@ #ifdef TARGET_NR_pipe2 { TARGET_NR_pipe2, "pipe2", NULL, NULL, NULL }, #endif +#ifdef TARGET_NR_pidfd_open +{ TARGET_NR_pidfd_open, "pidfd_open", "%s(%d,%u)", NULL, NULL }, +#endif +#ifdef TARGET_NR_pidfd_send_signal +{ TARGET_NR_pidfd_send_signal, "pidfd_send_signal", NULL, print_pidfd_send_signal, NULL }, +#endif +#ifdef TARGET_NR_pidfd_getfd +{ TARGET_NR_pidfd_getfd, "pidfd_getfd", "%s(%d,%d,%u)", NULL, NULL }, +#endif #ifdef TARGET_NR_atomic_cmpxchg_32 { TARGET_NR_atomic_cmpxchg_32, "atomic_cmpxchg_32", NULL, NULL, NULL }, #endif diff --git a/linux-user/syscall.c b/linux-user/syscall.c index abf82bab2a18..850410c9b553 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -346,6 +346,16 @@ _syscall6(int,sys_futex,int *,uaddr,int,op,int,val, _syscall6(int,sys_futex_time64,int *,uaddr,int,op,int,val, const struct timespec *,timeout,int *,uaddr2,int,val3) #endif +#if defined(__NR_pidfd_open) && defined(TARGET_NR_pidfd_open) +_syscall2(int, pidfd_open, pid_t, pid, unsigned int, flags); +#endif +#if defined(__NR_pidfd_send_signal) && defined(TARGET_NR_pidfd_send_signal) +_syscall4(int, pidfd_send_signal, int, pidfd, int, sig, siginfo_t *, info, + unsigned int, flags); +#endif +#if defined(__NR_pidfd_getfd) && defined(TARGET_NR_pidfd_getfd) +_syscall3(int, pidfd_getfd, int, pidfd, int, targetfd, unsigned int, flags); +#endif #define __NR_sys_sched_getaffinity __NR_sched_getaffinity _syscall3(int, sys_sched_getaffinity, pid_t, pid, unsigned int, len, unsigned long *, user_mask_ptr); @@ -8683,6 +8693,30 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, ret = do_open_by_handle_at(arg1, arg2, arg3); fd_trans_unregister(ret); return ret; +#endif +#if defined(__NR_pidfd_open) && defined(TARGET_NR_pidfd_open) + case TARGET_NR_pidfd_open: + return get_errno(pidfd_open(arg1, arg2)); +#endif +#if defined(__NR_pidfd_send_signal) && defined(TARGET_NR_pidfd_send_signal) + case TARGET_NR_pidfd_send_signal: + { + siginfo_t uinfo; + + p = lock_user(VERIFY_READ, arg3, sizeof(target_siginfo_t), 1); + if (!p) { + return -TARGET_EFAULT; + } + target_to_host_siginfo(&uinfo, p); + unlock_user(p, arg3, 0); + ret = get_errno(pidfd_send_signal(arg1, target_to_host_signal(arg2), + &uinfo, arg4)); + } + return ret; +#endif +#if defined(__NR_pidfd_getfd) && defined(TARGET_NR_pidfd_getfd) + case TARGET_NR_pidfd_getfd: + return get_errno(pidfd_getfd(arg1, arg2, arg3)); #endif case TARGET_NR_close: fd_trans_unregister(arg1); From patchwork Wed Sep 28 20:27:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684085 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7xj5f0gz1ypH for ; Thu, 29 Sep 2022 06:53:29 +1000 (AEST) Received: from localhost ([::1]:39896 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode3b-0004C8-I0 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:53:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60036) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odden-00083z-JL for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:59753) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0006OR-De 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 1Mo73N-1p2Uw237Nb-00pa8B; Wed, 28 Sep 2022 22:27:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 06/37] linux-user: Log failing executable in EXCP_DUMP() Date: Wed, 28 Sep 2022 22:27:06 +0200 Message-Id: <20220928202737.793171-7-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:QKz51L2dLExlrD4+UolF2jfX3cQlIVLYiM6BW3rURTH7pyrI0P1 pLe7m94cJGbj65rLd0xfM8xAHyL6nalSztk6Mcg44yexOiUPlWtHaNRDYGQM4ncd0rAKnSM dR9uOFuPZWf2ywvO/5SwXptbQ7frOD2Ezr1IOKYDIqAClYvMj7DndMnpYJkb1OAMHp7A7Om vXEaBpQML+jzPajwj7Waw== X-UI-Out-Filterresults: notjunk:1;V03:K0:jORduZTM7Bc=:CzXuDWFUWrNDok1SUZbNb0 EOH5HKiwAWD7h2rhKbNN4I3VsFIszGSAh0na3uwTMGxc2g23jlbY8YTmXnbhN9D6CV/yCF29f FFB/5zOIFQZZW6p1luTFMdzkOj/7eX/nLCrj7YV1cxq23Rev4p49Lm3SEbmmctxdqqlZ3hWFw EzWTCsDbL5ssMvJOaUrQYwepjJsRdMqlP/B3SrhsCWg697+VGKBcPdiTJAR5JQOF0tyvBOj95 nQjBDrXZVfVh2YVjloUkw9mJI3ZVPlg8iAMnC3Yj+Nqo3maOdVo9DtIl8rh0x6RCOTMAKqnoP Yni8isnXZIyBqiONqsmskbrmSXmkJ6n1TEJPhPz/oMt4RGyp/rCacR+kObrbgXVFSFrOS7cTH V0TlVo9BTF/YrZGT13Xpyzn7Ncs8tesyEd2QEDtoGtWtWU8oMDWj2rZsYHHy9m+jk2TCBtv6X yFayoUuWNAqVr/MEP9/catYLx76r5AclNPAZxFXiQBnqOnL6MHZ8y4rQI4ZU65WO2DmspsTlu UydoYpxbpFk65D5Uxe1kQ6l9hlu/AD+r7zM08ALDC48j8OYw3qXgKpFSom2Z5ZWsLwdwAmCMO jjnLO8La0Gi/KN5ekHKaYuOY5U7yuxzlQrwtE/swWYq8RnEXW5WdwnE8eReA6cB1uySaFQmxP t1urOLM0vEOkKHmE89fAIi+Lv4bHBe1iLYjhqRsaiB2yNBnqd1BgNI85WMaeCa1oPOqkPCuj1 T3dDT8H2OYssSrc5g09wx0vWvXzKVY6Foj0c/GMlUhkXPDJenVzPJ9brP0negcsy5J4kWSGiS erfCmPu Received-SPF: none client-ip=217.72.192.75; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Enhance the EXCP_DUMP() macro to print out the failing program too. During debugging it's sometimes hard to track down the actual failing program if you are e.g. building a whole debian package. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20220918194555.83535-5-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/cpu_loop-common.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux-user/cpu_loop-common.h b/linux-user/cpu_loop-common.h index dc0042e4de35..36ff5b14f2a7 100644 --- a/linux-user/cpu_loop-common.h +++ b/linux-user/cpu_loop-common.h @@ -27,9 +27,11 @@ do { \ CPUState *cs = env_cpu(env); \ fprintf(stderr, fmt , ## __VA_ARGS__); \ + fprintf(stderr, "Failing executable: %s\n", exec_path); \ cpu_dump_state(cs, stderr, 0); \ if (qemu_log_separate()) { \ qemu_log(fmt, ## __VA_ARGS__); \ + qemu_log("Failing executable: %s\n", exec_path); \ log_cpu_state(cs, 0); \ } \ } while (0) From patchwork Wed Sep 28 20:27:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684056 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7TH0hzKz1yq7 for ; Thu, 29 Sep 2022 06:32:18 +1000 (AEST) Received: from localhost ([::1]:48316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddj6-0005Yy-Qi for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:32:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60018) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0007wM-7s for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:46 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:45875) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddei-0006Mx-7N for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:45 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mdvua-1pC8vQ0laI-00b1nK; Wed, 28 Sep 2022 22:27:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 07/37] linux-user/hppa: Use EXCP_DUMP() to show enhanced debug info Date: Wed, 28 Sep 2022 22:27:07 +0200 Message-Id: <20220928202737.793171-8-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:eVOKsC8xzl0ZnPNrXBuA0/GkPZkVucxxWiWq3qPY07w9W90+izW CaFfncV53HSuT6G+/ajDVuutTfUZq3JXdBiU+DH3gDlMCdGvGFL0QfAj9z0AgcIfTc6GWYN vpPbawx6s10NSMLuIR0qxbatNtMCIvEuMWYB5YqtRIm3pQhLUJNitEXmAhmsGVHxf74WgRG oUsTP2yNSrN/jGmb1hsdA== X-UI-Out-Filterresults: notjunk:1;V03:K0:DaR3/sLLs4Q=:8HprY/+FlU/SzxaasSwa1U tBRaV9M9F/Kw74bOSlVSUr2aRDTjCbwUhLUJ8YwvkgxZb9uCL7p3drurqlk6OPqjB+Ew6Q9sZ HiHvvvQBvvJnu9Ehm1S3weIGvAc3mLRly97ZSSgyXs4jjQocp+kyaHeXzDVzxm6kZ3bD6SZf+ /2nbQS8E94p7JujmR2IfSxmT83EPrXTNdplx+4x7t52uC3XZhPOS6IpOXpB/oq49BilOxPjoW M2wC9n1DF671o9wJFAzqjMbylSJ/niCEUtrkU12cpS4sjxW8MgNVnp+p/j4K/Y6SJTASF+4hC Oo0tAqa4vsObt3UmaYRyzmHFWz/kTtvfhj6i9zU8wHaPXX5CaqU3aUXsrE/sYQwbyweThYihE +dORFFA10v3bYQNfB6VvvtrJUsxeLQrPHEIhuosWiDaz0MkvHnYowyLCbnQXQwxFMLXtlEDwQ e017fy895B6FpQTa3dPelTXCCxAMLcfr55rT0X1TvJpOmnFCGPT8t4STAB/7MgWBhG3X4m5mB RzrcnMVKRHLW/PhwaCLHdbdMhoVlglsbEZ1NQzZ07e9RsfWnkhcgV2/EEWGtNrdSGXZcgXCRW I3+0LFEShhpL1EeYAlGRARPaiKIELkJjv0VF4Alxc5L6H59sUSGTYeQ8teOPI3awOec3dB8jl 2koAxSbKlo2O3KYrLNoqBRPEE+fd9OahPWT5PAam2UHCcNdrRaWmihAXUFoUssjP9IuRrl6ds pDZaY0Cquw1S44By1aAF/Ky6dDZfeJC67SIIru6tP6n2M9SLTV0lu3I2swA0DVJaMuDYimyzR YB0qgcn Received-SPF: none client-ip=212.227.17.24; 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Enhance the hppa linux-user cpu_loop() to show more debugging info on hard errors. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-6-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/hppa/cpu_loop.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 64263c3dc406..1ef3b461911c 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -147,12 +147,15 @@ void cpu_loop(CPUHPPAState *env) force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR, env->iaoq_f); break; case EXCP_ILL: + EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", trapnr); force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPN, env->iaoq_f); break; case EXCP_PRIV_OPR: + EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", trapnr); force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->iaoq_f); break; case EXCP_PRIV_REG: + EXCP_DUMP(env, "qemu: got CPU exception 0x%x - aborting\n", trapnr); force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVREG, env->iaoq_f); break; case EXCP_OVERFLOW: @@ -171,7 +174,8 @@ void cpu_loop(CPUHPPAState *env) /* just indicate that signals should be handled asap */ break; default: - g_assert_not_reached(); + EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr); + abort(); } process_pending_signals(env); } From patchwork Wed Sep 28 20:27:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684054 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7TC4Z97z1yq7 for ; Thu, 29 Sep 2022 06:32:13 +1000 (AEST) Received: from localhost ([::1]:45824 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddiz-0005BW-ST for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:32:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60040) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odden-000844-Jw for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:56621) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0006Ob-T9 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 1MA7Om-1oXXls2mZ0-00BYLS; Wed, 28 Sep 2022 22:27:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 08/37] linux-user/hppa: Dump IIR on register dump Date: Wed, 28 Sep 2022 22:27:08 +0200 Message-Id: <20220928202737.793171-9-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:itUyI87B0gxUie31z7pYd2Ek5piM5mJghePvOMLo3/zy9mgZUtn C3gLT28aUxe5WVCQCB9bFZo4KVnLXRXg6L5agdkLfJJS1MaMFSMyo2SZeNOMEwwURWvv6F2 oJbCESq2elEq5yws7Ji5XWSBcTQKTOrwUCZKladUgAOFKM+1AWTmoWMsPq86FzE1TNZAQvT Ir8Blb9scfDmvY21iexWA== X-UI-Out-Filterresults: notjunk:1;V03:K0:408QV7yPtow=:vnCjXM42olOPu1fzxbdpDE U+2V35eG9Qgtu1FqlZX16LgAGZ9dTSnjvjmxdOsIWpWkak7sKZ5CWzVgt3z9Asd9mZNtJcwJi G4zYdW640R0zEQrRmFvCy94PbOA1tyOHJtfY9BZq23HazOySE1BY6z112f2GkrJSLyRcyN/6s 3AIH26KxjzH7y7QIAEugm2jEizHqBADrZ78zQDZbWc5XMdAyArFDxh/d1olRdcWkH0Y+bqecZ X55C9TKcXRjYzWJblClzNoLhN3PSh+2bUwhGhBB2u5LDnWHQHn7MvZMyeSsuoJz6XmtiQ3LUG qhmy2uNUAMXxQcsGmKbPU8o6l9G6CaYp14RWK6yYZ31A+yfQOd/vnqUJhK9NaXlHX8Hrzp1ns yURFz3+J+CKoxOudCIK3yELxODI9DS+AjS6BP4wWeYBN+xuingWwe+TTlOiiWebo1+lbOZI5A k+0oBqZPav1SS5oANo+oZgzf+qrx0h+bQYY1FR7XmBn1XUXJRDDsfqTX7iGSacN+rin/FxF1f YU1n2Y4GmmzQGkKTTq1EWhLKHf8FDLbEhJ0rnmSU+zCzpCWTB6+A9T7UH4W2XG3wQa/ihjvo8 19dPo2zbKuzDMmEjg67Hbjs5D1lobSJ1xHQc9bHrPH2cLL7QmNfKx0PP30+wgvC36NDIlWVWJ 7sEkCd3m3hjJKw9N7TcOdNOVymohoT7IsNlv3V0Yr5zTegVr+Y7HIk+tyLoeu2B0bJEMhrxKK /MVrMetFA5+rcCtcFX0/qQidtJj2EVdNHGzmSOPRcUqWz/0NjRTkakgTdYUgQB52PbNrSHI8i uOLA7w6 Received-SPF: none client-ip=217.72.192.74; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Include the IIR register (which holds the opcode of the failing instruction) when dumping the hppa registers. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20220918194555.83535-7-deller@gmx.de> Signed-off-by: Laurent Vivier --- target/hppa/helper.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/hppa/helper.c b/target/hppa/helper.c index e2758d8df380..74b8747083f9 100644 --- a/target/hppa/helper.c +++ b/target/hppa/helper.c @@ -85,9 +85,11 @@ void hppa_cpu_dump_state(CPUState *cs, FILE *f, int flags) char psw_c[20]; int i; - qemu_fprintf(f, "IA_F " TARGET_FMT_lx " IA_B " TARGET_FMT_lx "\n", + qemu_fprintf(f, "IA_F " TARGET_FMT_lx " IA_B " TARGET_FMT_lx + " IIR " TREG_FMT_lx "\n", hppa_form_gva_psw(psw, env->iasq_f, env->iaoq_f), - hppa_form_gva_psw(psw, env->iasq_b, env->iaoq_b)); + hppa_form_gva_psw(psw, env->iasq_b, env->iaoq_b), + env->cr[CR_IIR]); psw_c[0] = (psw & PSW_W ? 'W' : '-'); psw_c[1] = (psw & PSW_E ? 'E' : '-'); From patchwork Wed Sep 28 20:27:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684053 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7Nr2mC5z1ypH for ; Thu, 29 Sep 2022 06:28:28 +1000 (AEST) Received: from localhost ([::1]:46874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddfO-00088t-9A for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:28:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60038) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odden-000843-KI for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:50529) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddel-0006Os-4v 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 1Mf0FY-1pB3WX0hC6-00gXZa; Wed, 28 Sep 2022 22:27:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 09/37] linux-user: Fix strace of chmod() if mode == 0 Date: Wed, 28 Sep 2022 22:27:09 +0200 Message-Id: <20220928202737.793171-10-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:e5bRlx8cncNGHpvCdrDtM95Fynmc9/5QCWFaTr+tmRn4+vqvvcu mbyUHnH1yvu9AImxDeg/dmlmv+f/E4E8zusAqvlcs60RfTz5Rlul2/Z6U14SKYIZcLCen/M QwFFrdX8X0pdS5d6L2qtgjLLiUdQaOutqiNEMVKxcLhfhw4apZU6C0FEp36RuVimgPzBZqi Uj4TkY4vHcSAO72TZPr8Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:CMoZQqLatBI=:Oc5s0/qlk1osiy7LpG6hs5 sFoBx0U6b+cjfpjTijJ15ISCbBRH6ARrXctEWcSC1gmtE+/ttcpLVzA7mWQmQZwRfUmHKAZje /iuoThEB4GGykzAAGBAGYA1DxwxzbGJ5iKc7s68lOscXvfeEqnZ9IsilAMdP9WIFgFvOJbc8D espnjAsIo1pOk+DdvrqE+fmTKOTGFiZvJ8uQEe8P0ndLpaPzzvikuHzt4EDuhhqLjYHkJuczq uJcex2FO6BWYdNa9++QOt9okAZnE3ldjvrq/mFnIDzk+rTQV4LDb4U2Kna8//lW1YGN/af558 BkeqwQNEM3Y136Qv+XqWed5ykn67cfH1W+6fJJS3mIkAzMlaff04adfTn0I9uHOdxAsuIrlUo 1qC1Vy6oZlP8EBD2nkFCtUzUkqF+ipCakhyKGk0y8liG/lbnyvPE61Yo4a/abtFrRIK9zTVUt GsF+43wQPogZWjYjxIvLK9EGpukrkpi8X+K0+7E4BQKxbIica0m/goNjRPZBBlR9sQ0EpfDxR 5oRJjUA9FXndzHgsBvgyN3bCvXPVVAOF799kQmAyiZiUZG9kqKKY71FJJ0L6e7NX97ufSAzM3 uTyv3ExV9gd+TDwr5g0MswmoZZtvJMFN0LEEUS5KvNA9V+KZYhSII1GpO22wXyxq7ae3Hhcbr 2PvDxYt+5hX3hBQEPALKXujaYmNjDlK1WZcLTt+CtV2BhqAExFVDjdXj/vaDmZg3BUJB+9F+J oSV+r5UY7AhUZo5PhDtBsbf71WkJ6u6KC4Iy3s6+6LQKzby5Ou4epDzqv4G6gEjyq9hs9sPzy Sa0iOvr Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller If the mode parameter of chmod() is zero, this value isn't shown when stracing a program: chmod("filename",) This patch fixes it up to show the zero-value as well: chmod("filename",000) Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20220918194555.83535-8-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/strace.c b/linux-user/strace.c index 5ac64df02b85..2f539845bb90 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -1505,6 +1505,11 @@ print_file_mode(abi_long mode, int last) const char *sep = ""; const struct flags *m; + if (mode == 0) { + qemu_log("000%s", get_comma(last)); + return; + } + for (m = &mode_flags[0]; m->f_string != NULL; m++) { if ((m->f_value & mode) == m->f_value) { qemu_log("%s%s", m->f_string, sep); From patchwork Wed Sep 28 20:27:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684064 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7hQ5xl2z1yql for ; Thu, 29 Sep 2022 06:41:58 +1000 (AEST) Received: from localhost ([::1]:44874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddsS-0000RR-NQ for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:41:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60026) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddel-0007zI-C8 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:47 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:52737) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddej-0006NW-Bt for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:47 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MdNPq-1pChQN2Y08-00ZNto; Wed, 28 Sep 2022 22:27:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 10/37] linux-user/hppa: Set TASK_UNMAPPED_BASE to 0xfa000000 for hppa arch Date: Wed, 28 Sep 2022 22:27:10 +0200 Message-Id: <20220928202737.793171-11-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:cKcCZW6qZdTYScJOBP+nv5g7E36cM2agAakTwnH3f+wCiXJ8UJ7 664AKzDC14KYsT2MM/PuM+NotjGeHebIMIoQqxfYqnLDBAim558btGEGdUPByUrXPGtG1EA qBMqY3Is6LUPHbdrFkQQ0z15wkGSg9a1WAazg+Nlq7YaLqgv8PMKro90SscqeWpuEB4RuFJ KTmCFmW3OzHBByyBDSLyQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:N8ms75257Oo=:cSuDqrlyqkgThQl1j8wW/t bHeTDlXgymRU3+cBM7Gw2AzGeOWPq7OfLXazPcwBBy2TR2wH/khmMC1KQZUQI+4QDXExFDdv6 rZcUVqccO+EbXvsg99gRCV0+Kyo4hcG21eDqyhKKg2XsRg/I/86l73K+ErwZrKGpGRpNUtR/s FBnJM80vsX9ZLNBqxUx/2okdi72uAN+UATpf87KsUHGsaMkuDg+oFdnLTfLOt+EBKUTlYEkhu qunkIQI0WuvX0UvNAMCQa5yWxUWLJtxwFPuzQaDB4RBT3j1TdwklewNCqt8OM2ZLe20z2bPtk T1TkH6OAFertVTZCCy1iZXv+w6jJNNDDrDngHa1YXE9H7pb0a8i3vLcp2tJu+UtffFC5QQf9L MnO+6aH4Y7DZbLOQiJ8pE15WMlEl1cobFQL3O/dl5nB2TX7CRKQixFa/Qw0pcfPE1ieRYldFj SbHRo1ET2cqh67ubzFa5iZMcOHmFht9cP2kOu3lP5kYcvfONPiGQtfEPZetbnqcYrg7DsE+cR DG4nyoOBVNHFbP/6p87YAEp8C3knQ/8YUF4uALOVi1KcSyZ+FAS7iyQV3N/DPavi/Vq/w8Cbb wI38Puv7duUgpxkLVjZyL+bOseqoQnqpO9J4kXmusUSjBFHqZooEf+1T2Jafl7sjIWAI4Pva6 XM/TPCtrZNGf6CxSC7k96xXPA3OvbrGwWVVHI48JXM9taPSR3xZHUAStnSPa5bx4g5FIZ5SZx +eN9ruIRP43dVOfX8LiBMpeWtgVqJwGWJdyA1THmecvQAhneJuLIWL+/Q3EVnprDz2SzPCN3s hhw4HVm Received-SPF: none client-ip=217.72.192.75; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller On the parisc architecture the stack grows upwards. Move the TASK_UNMAPPED_BASE to high memory area as it's done by the kernel on physical machines. Signed-off-by: Helge Deller Message-Id: <20220918194555.83535-9-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/mmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 6a828e8418a7..83fdae7034ea 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -253,8 +253,12 @@ static int mmap_frag(abi_ulong real_start, # define TASK_UNMAPPED_BASE (1ul << 38) #endif #else +#ifdef TARGET_HPPA +# define TASK_UNMAPPED_BASE 0xfa000000 +#else # define TASK_UNMAPPED_BASE 0x40000000 #endif +#endif abi_ulong mmap_next_start = TASK_UNMAPPED_BASE; unsigned long last_brk; From patchwork Wed Sep 28 20:27:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684057 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7TZ6h3wz1yq7 for ; Thu, 29 Sep 2022 06:32:34 +1000 (AEST) Received: from localhost ([::1]:33536 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddjM-0005n2-Pk for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:32:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60030) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odden-00082i-3t for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:49 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:50989) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0006Nr-Qc for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:48 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCsHm-1oUny40AfA-008oWW; Wed, 28 Sep 2022 22:27:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 11/37] linux-user: Add strace for clock_nanosleep() Date: Wed, 28 Sep 2022 22:27:11 +0200 Message-Id: <20220928202737.793171-12-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:uxe/ig7xPkgNaE3XrHmpD7iNNdAZ18vuUtPQBODcaLPpdTfNuAy S7GHvwflmPQ9HMHnRZ4GAnjUqclsy0g/YfZswFdkSr+H3faBi+zB5Mx1k5k8o8u0yT2L6no jZDGjnDKHTE8afhlIf21EZ8HC09iCi3Lx8bRfhchJVQxIJ0yKNNL6Gveh7OHQ/+g25HlG1Z ngCB7Iwy1nkoHs00fdHow== X-UI-Out-Filterresults: notjunk:1;V03:K0:SamJgTClsRI=:vKRxqBYmXzOFFIxmdVDVu7 WoVsfUfXy/Y+IPopHduDgThTOXpXaXc2W6KLrQgFg+8I1tOI7nO8x985lBIGa1ZlR8B4KOQSo tgCw8kLoDky+N8JVA5/qSRCb87yORw/IbJGHpjmcd1lkMzkWk5lSZvcyQLH17PbUSwca7RMYj WQ3GSXhfozuMqbos3ruMAcUHiL2YqusOEkuOJUqxxP3XtnvfeoKRcyxz2iWp/8tozNLY4kYIw V/klhcs/MptQKKMv2vdoMq0ffcX9yruXwizrs6bAMhP2BlzRbPP5tPm41dEnEHkHFjYXX8+bq OEAo3B0A0T5qAiJIaZiABEYcoFKN5Gzpz4AWVMqhQ7DQfakF/NsDMrYVBRL352yQtH+MB8iRi QxSiewUMtGIZ8weEIKuf+O00IItO0KWAMCJRoq5Wys35lW5GQbffJMsvYSbNqkQVJzU9D38/e ohk/F2DrURUNjErYn+EbXwlS1MRKupOoSELN8Cff0O7k1t0QkOd3EFsGeI1zyhVMYnZZPSAEx LJnV5QHbbYn6gC8KwKIUMMFhcfkx6ACVcfo9Cam8fx5J5l1lb/5Hqxwdxe7n5FYc0yoj1qegJ NZRqPn6GkSrgaT7+/2Haownoj6E99BK1/Pyw2vabilTqIvzHHCBLvvuem3HqukDjflBb/vP7/ 9qAEzOS665laPsnU87OGqVe5fY+7LPfnFBhfnf2nMCVizOjZbM6ympHxgMsXJYzY1aVv2P0q+ 94q3e41h4uMSD4EOTeMoHQwgawFRi/3fCz9f4S1iZZt/K9/YEiHHyoUm78tLYA1f0nLjGrPOT 8FdJMhf Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-10-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 15 +++++++++++++++ linux-user/strace.list | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 2f539845bb90..6f818212d529 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3567,6 +3567,21 @@ print_unshare(CPUArchState *cpu_env, const struct syscallname *name, } #endif +#ifdef TARGET_NR_clock_nanosleep +static void +print_clock_nanosleep(CPUArchState *cpu_env, const struct syscallname *name, + abi_long arg0, abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4, abi_long arg5) +{ + print_syscall_prologue(name); + print_enums(clockids, arg0, 0); + print_raw_param("%d", arg1, 0); + print_timespec(arg2, 0); + print_timespec(arg3, 1); + print_syscall_epilogue(name); +} +#endif + #ifdef TARGET_NR_utime static void print_utime(CPUArchState *cpu_env, const struct syscallname *name, diff --git a/linux-user/strace.list b/linux-user/strace.list index 4d8b7f6a5e0c..215d971b2aea 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -91,7 +91,8 @@ print_syscall_ret_clock_gettime }, #endif #ifdef TARGET_NR_clock_nanosleep -{ TARGET_NR_clock_nanosleep, "clock_nanosleep" , NULL, NULL, NULL }, +{ TARGET_NR_clock_nanosleep, "clock_nanosleep" , NULL, print_clock_nanosleep, + NULL }, #endif #ifdef TARGET_NR_clock_settime { TARGET_NR_clock_settime, "clock_settime" , NULL, print_clock_settime, NULL }, From patchwork Wed Sep 28 20:27:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684061 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7c31zgzz20Vm for ; Thu, 29 Sep 2022 06:38:09 +1000 (AEST) Received: from localhost ([::1]:36876 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddoj-00033K-FD for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:38:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddel-00080g-Sd for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:47 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:52071) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddek-0006OE-7m for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:47 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Md6ZB-1pDWVP1xVT-00aCyp; Wed, 28 Sep 2022 22:27:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 12/37] linux-user: Show timespec on strace for futex() Date: Wed, 28 Sep 2022 22:27:12 +0200 Message-Id: <20220928202737.793171-13-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:CRsGxHjD+1wbbLQz8YsRXOrJHO1nG1zFk9F88yHWDwrgcAkN/Jv XlVy6iSr8yVq6PPUtNw/wQxWcYEd85L+YrWsgEDhijtrvOvVC75QpX4KvNhvnpP2cGCaLYq LX8hIm34qmOOgqkOWvdlDhk+/ICO465RP1VtL5ODs4WyNRpzI22u5xZ57d9PTjGqBJItc4L zmz+zIp7HKJcjgxpwMvWQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:CNOo1p2LRNk=:dv4MzYLA+x12H8GRUCEIq2 lYkaEf3RJlfcGlDkmB7JgTELPDsdAGunqczayRNSjgbRtxUg+OHwic0T+raQVY9wMme40UwfU hwV+BCwtwkZ/959Hhb+UPJn6qmOzPSF7nL2LRp9g1/zfGU8LzRmByyjmO0w8fT3JphAb6yP02 4UwwozSSF+0hqsIop7WOHnYGjjJ5te9NEqJuRMq5/xezcTSR/ZU/e9dCUnZ7vgPS5dezUZkZZ LPSUzeibbOc+s1AcO/waC8fj9ROaLdNWtn3kleungrUWC1l9KRq1P8u6h0It7lCQOuUgHLMi0 pxyq1X6qlSJ009xe06f5ItHO0ZE8mADbU6uo/P9ZP/dg3inFC6Md0cOOHk4Ru9dfkVFXRcGkc 7Wev9awAjbsj6KuWiWPzaJAUTEE18Wnt72DtYiWxEJ2Nek8nZgNp8eGbGbZsmMI/vkvmzyRFZ fboaDEyY6Fg79spJvP/s0iJLAWc7IAz29skbTGQytaKNIaVMgFIVlg9cSHaTsj0lEJGdphMuS q0EE75HeDcJbDhy3hCE6dp7fciCcEAWDSx9uP/OhaY1gBiMxN5oOLMy/A1Zaiuk9hykxTHfw1 m9CQ5ctqN3GjBpxdcmVhJH/SBIVladuRK+88RJmXhbGSp9pSEAHjWVggryzYMrs1eD+CDiXME 6e3SJ4f6IbBPgae/FBpNf3jeJ05dDAV36l+acSVTS9iRG+Tx30FtJCStFI2iKzFAKrJLOwoCs OgmSbSOrTy3E7P4v3Yo4bsnPXrnwl25fnBJJcGdn1ukg+0oDYx39ve1uG4GswOKuDPCO56T33 zk4Rw6r Received-SPF: none client-ip=217.72.192.73; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220918194555.83535-11-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 6f818212d529..b6b9abaea466 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3714,11 +3714,20 @@ print_futex(CPUArchState *cpu_env, const struct syscallname *name, abi_long arg0, abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5) { + abi_long op = arg1 & FUTEX_CMD_MASK; print_syscall_prologue(name); print_pointer(arg0, 0); print_futex_op(arg1, 0); print_raw_param(",%d", arg2, 0); - print_pointer(arg3, 0); /* struct timespec */ + switch (op) { + case FUTEX_WAIT: + case FUTEX_WAIT_BITSET: + print_timespec(arg3, 0); + break; + default: + print_pointer(arg3, 0); + break; + } print_pointer(arg4, 0); print_raw_param("%d", arg4, 1); print_syscall_epilogue(name); From patchwork Wed Sep 28 20:27:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684086 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7xr0H05z1ypH for ; Thu, 29 Sep 2022 06:53:35 +1000 (AEST) Received: from localhost ([::1]:59646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode3h-0004Xe-N2 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:53:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33346) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeu-0008QB-GT for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:56 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:42605) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeq-0006So-P5 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:55 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MN5aF-1ouTgc09sD-00J5VF; Wed, 28 Sep 2022 22:27:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 13/37] linux-user: Provide MADV_* definitions Date: Wed, 28 Sep 2022 22:27:13 +0200 Message-Id: <20220928202737.793171-14-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:NCOMx4w4ocrFe6TZtP2SUsA6vRMvBuVILb7FC493lWMeFcOp9Jr 2bQiHPO3bYXle6W1JTOoc58JPap/moJUQlgu1CEkeNnFgIEccWol92gosF7cekrsEwiEeDe KSozDoTmrB6Xr3FzGL1WkUjw25qU4RZJdw7tdl68pN4Q3UNZJtnbGLY5JpF3/iKmrIraGnE KoWawya703CugvY7BXzwg== X-UI-Out-Filterresults: notjunk:1;V03:K0:+GnstxPQhhQ=:xNJNSY4ezzZWml5s/q0cHu Ha/oS6xpDXEc7k09XbAYBiWkBWUJ+oIHgcPcZuU5AX2q94V8/TSzjcIGjiFeb606WrqfJgUQ8 6219Y+YfLWfVOjGTpst4EjevHj/zFX4b0xJyU7dH99NdnIZ4Ju3gVgHaYXf2mFn16Sdq4Vcqk OQ2K/q4SFIDVSKHHnqQth0NFktzY6zG7YpjaBsM1L2MyX4+qOXmvEFW5W3mDHm42PUxP9ak1o FY89zhwJCgECjHCjLZ9b5RYpURmftjXV0DPuFC9U9fy9AG7gnuFd5/p94w3UHqSYAF+ZIH4Ch YDmSKYOJvV1hn9kS64bFULnkuEAIwwMRDGcnTU54KScS95ZcLV6phiQIoOF05KRE6fqS0X3nn CZjhL8huSzC+LKw7EEZ7jtbvlGa9/81OOBb850T5oSOc3ntoEZMo9V0Hb77rCA1vkHo/UaPJW 0hjIBcp7LgoIo47b0uHjI8wskRrJFPF5ciayq9LHXL6YziNA+6mcXVQmXO3DypnS6f/3POPUJ JFkEbB++Ilp7Uh70R3ZQuuN1/cqFTFZLYIAkFxk5CnIvgM372XzqQKoPpk8W6grobC4BxEfRL CJ3BlYywZCsrsC2eUsAU8hrY/B7RH8Y2BPbz91MrWEJL3aMHxJiOeewh23LR8g+T5pGy7Qtvv YC95aPrl+TNCEOubhYOdUBIUra617oQagNp59GwhjIapDfG2vhG61l9Z/4TKUuGiCn0RENVkD 2VY6hNKs7yaC7BZ2M8BYnt+k/9l8bF24+YWagI+R4gdP73lRnZvJubSmoHuDfjssCBVsoO1Or 5OE5vdA Received-SPF: none client-ip=217.72.192.75; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich Provide MADV_* definitions using target_mman.h header, similar to what kernel does. Most architectures use the same values, with the exception of alpha and hppa. Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220906000839.1672934-2-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- linux-user/aarch64/target_mman.h | 1 + linux-user/alpha/target_mman.h | 8 +++ linux-user/arm/target_mman.h | 1 + linux-user/cris/target_mman.h | 1 + linux-user/generic/target_mman.h | 92 ++++++++++++++++++++++++++++ linux-user/hexagon/target_mman.h | 1 + linux-user/hppa/target_mman.h | 15 +++++ linux-user/i386/target_mman.h | 1 + linux-user/loongarch64/target_mman.h | 1 + linux-user/m68k/target_mman.h | 1 + linux-user/microblaze/target_mman.h | 1 + linux-user/mips/target_mman.h | 1 + linux-user/mips64/target_mman.h | 1 + linux-user/nios2/target_mman.h | 1 + linux-user/openrisc/target_mman.h | 1 + linux-user/ppc/target_mman.h | 1 + linux-user/riscv/target_mman.h | 1 + linux-user/s390x/target_mman.h | 1 + linux-user/sh4/target_mman.h | 1 + linux-user/sparc/target_mman.h | 1 + linux-user/x86_64/target_mman.h | 1 + linux-user/xtensa/target_mman.h | 1 + 22 files changed, 134 insertions(+) create mode 100644 linux-user/aarch64/target_mman.h create mode 100644 linux-user/alpha/target_mman.h create mode 100644 linux-user/arm/target_mman.h create mode 100644 linux-user/cris/target_mman.h create mode 100644 linux-user/generic/target_mman.h create mode 100644 linux-user/hexagon/target_mman.h create mode 100644 linux-user/hppa/target_mman.h create mode 100644 linux-user/i386/target_mman.h create mode 100644 linux-user/loongarch64/target_mman.h create mode 100644 linux-user/m68k/target_mman.h create mode 100644 linux-user/microblaze/target_mman.h create mode 100644 linux-user/mips/target_mman.h create mode 100644 linux-user/mips64/target_mman.h create mode 100644 linux-user/nios2/target_mman.h create mode 100644 linux-user/openrisc/target_mman.h create mode 100644 linux-user/ppc/target_mman.h create mode 100644 linux-user/riscv/target_mman.h create mode 100644 linux-user/s390x/target_mman.h create mode 100644 linux-user/sh4/target_mman.h create mode 100644 linux-user/sparc/target_mman.h create mode 100644 linux-user/x86_64/target_mman.h create mode 100644 linux-user/xtensa/target_mman.h diff --git a/linux-user/aarch64/target_mman.h b/linux-user/aarch64/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/aarch64/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/alpha/target_mman.h b/linux-user/alpha/target_mman.h new file mode 100644 index 000000000000..cd6e3d70a604 --- /dev/null +++ b/linux-user/alpha/target_mman.h @@ -0,0 +1,8 @@ +#ifndef ALPHA_TARGET_MMAN_H +#define ALPHA_TARGET_MMAN_H + +#define TARGET_MADV_DONTNEED 6 + +#include "../generic/target_mman.h" + +#endif diff --git a/linux-user/arm/target_mman.h b/linux-user/arm/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/arm/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/cris/target_mman.h b/linux-user/cris/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/cris/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/generic/target_mman.h b/linux-user/generic/target_mman.h new file mode 100644 index 000000000000..1436a3c54308 --- /dev/null +++ b/linux-user/generic/target_mman.h @@ -0,0 +1,92 @@ +#ifndef LINUX_USER_TARGET_MMAN_H +#define LINUX_USER_TARGET_MMAN_H + +#ifndef TARGET_MADV_NORMAL +#define TARGET_MADV_NORMAL 0 +#endif + +#ifndef TARGET_MADV_RANDOM +#define TARGET_MADV_RANDOM 1 +#endif + +#ifndef TARGET_MADV_SEQUENTIAL +#define TARGET_MADV_SEQUENTIAL 2 +#endif + +#ifndef TARGET_MADV_WILLNEED +#define TARGET_MADV_WILLNEED 3 +#endif + +#ifndef TARGET_MADV_DONTNEED +#define TARGET_MADV_DONTNEED 4 +#endif + +#ifndef TARGET_MADV_FREE +#define TARGET_MADV_FREE 8 +#endif + +#ifndef TARGET_MADV_REMOVE +#define TARGET_MADV_REMOVE 9 +#endif + +#ifndef TARGET_MADV_DONTFORK +#define TARGET_MADV_DONTFORK 10 +#endif + +#ifndef TARGET_MADV_DOFORK +#define TARGET_MADV_DOFORK 11 +#endif + +#ifndef TARGET_MADV_MERGEABLE +#define TARGET_MADV_MERGEABLE 12 +#endif + +#ifndef TARGET_MADV_UNMERGEABLE +#define TARGET_MADV_UNMERGEABLE 13 +#endif + +#ifndef TARGET_MADV_HUGEPAGE +#define TARGET_MADV_HUGEPAGE 14 +#endif + +#ifndef TARGET_MADV_NOHUGEPAGE +#define TARGET_MADV_NOHUGEPAGE 15 +#endif + +#ifndef TARGET_MADV_DONTDUMP +#define TARGET_MADV_DONTDUMP 16 +#endif + +#ifndef TARGET_MADV_DODUMP +#define TARGET_MADV_DODUMP 17 +#endif + +#ifndef TARGET_MADV_WIPEONFORK +#define TARGET_MADV_WIPEONFORK 18 +#endif + +#ifndef TARGET_MADV_KEEPONFORK +#define TARGET_MADV_KEEPONFORK 19 +#endif + +#ifndef TARGET_MADV_COLD +#define TARGET_MADV_COLD 20 +#endif + +#ifndef TARGET_MADV_PAGEOUT +#define TARGET_MADV_PAGEOUT 21 +#endif + +#ifndef TARGET_MADV_POPULATE_READ +#define TARGET_MADV_POPULATE_READ 22 +#endif + +#ifndef TARGET_MADV_POPULATE_WRITE +#define TARGET_MADV_POPULATE_WRITE 23 +#endif + +#ifndef TARGET_MADV_DONTNEED_LOCKED +#define TARGET_MADV_DONTNEED_LOCKED 24 +#endif + +#endif diff --git a/linux-user/hexagon/target_mman.h b/linux-user/hexagon/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/hexagon/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/hppa/target_mman.h b/linux-user/hppa/target_mman.h new file mode 100644 index 000000000000..66dd9f79414e --- /dev/null +++ b/linux-user/hppa/target_mman.h @@ -0,0 +1,15 @@ +#ifndef HPPA_TARGET_MMAN_H +#define HPPA_TARGET_MMAN_H + +#define TARGET_MADV_MERGEABLE 65 +#define TARGET_MADV_UNMERGEABLE 66 +#define TARGET_MADV_HUGEPAGE 67 +#define TARGET_MADV_NOHUGEPAGE 68 +#define TARGET_MADV_DONTDUMP 69 +#define TARGET_MADV_DODUMP 70 +#define TARGET_MADV_WIPEONFORK 71 +#define TARGET_MADV_KEEPONFORK 72 + +#include "../generic/target_mman.h" + +#endif diff --git a/linux-user/i386/target_mman.h b/linux-user/i386/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/i386/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/loongarch64/target_mman.h b/linux-user/loongarch64/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/loongarch64/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/m68k/target_mman.h b/linux-user/m68k/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/m68k/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/microblaze/target_mman.h b/linux-user/microblaze/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/microblaze/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/mips/target_mman.h b/linux-user/mips/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/mips/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/mips64/target_mman.h b/linux-user/mips64/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/mips64/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/nios2/target_mman.h b/linux-user/nios2/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/nios2/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/openrisc/target_mman.h b/linux-user/openrisc/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/openrisc/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/ppc/target_mman.h b/linux-user/ppc/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/ppc/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/riscv/target_mman.h b/linux-user/riscv/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/riscv/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/s390x/target_mman.h b/linux-user/s390x/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/s390x/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/sh4/target_mman.h b/linux-user/sh4/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/sh4/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/sparc/target_mman.h b/linux-user/sparc/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/sparc/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/x86_64/target_mman.h b/linux-user/x86_64/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/x86_64/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" diff --git a/linux-user/xtensa/target_mman.h b/linux-user/xtensa/target_mman.h new file mode 100644 index 000000000000..e7ba6070fe7c --- /dev/null +++ b/linux-user/xtensa/target_mman.h @@ -0,0 +1 @@ +#include "../generic/target_mman.h" From patchwork Wed Sep 28 20:27:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684065 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7j04G5Qz1yql for ; Thu, 29 Sep 2022 06:42:28 +1000 (AEST) Received: from localhost ([::1]:58516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddsw-0000Tm-FT for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:42:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60048) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odder-0008Gw-Mh for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:53 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:50197) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeq-0006T0-3A for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:53 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MulyX-1pVBse2o8R-00rsM7; Wed, 28 Sep 2022 22:27:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 14/37] linux-user: Fix madvise(MADV_DONTNEED) on alpha Date: Wed, 28 Sep 2022 22:27:14 +0200 Message-Id: <20220928202737.793171-15-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:i0yr5EFEWA1ZQqz3PDG77k6jJS2MM3v1x3uqNeFMNAlhJOHEzdD Xdzf2ofk2tIQjY2yP3IhDs99Vjwjq2itNzam5PKBR0k++tGgFHLKuds1hu/zOdwN2j/RMh1 U0FGhxd91MHak+76W2mCTOs0M1g3iQ5Uv3YpUlEK1W96UDjAcBUKjTeyCXSB3VvN01fzyMo rbFM9F7qP87ADJlXQRjfw== X-UI-Out-Filterresults: notjunk:1;V03:K0:8cTgGsrrg28=:d21UEtRTAekW5x3SdirhkY 5LZuEapYPNRjiLiW8NOFzD7van3mg3ITREPy/1+2etQvdgw7ZgCOVi+L2kE8X2nATOr8sr5ZE 08251sm+EQddvVf1Rpgybe6qoQyklpOvmgU0/03tkAcFMPoommqdjz8eks0Y0W9qc5RVMjibR QFhDhGEkWkyPQ3Z8mk95oiLJI9Slvk7gD89CdP8MWL4KsBk6xnEO+eryxx5VHD9B0qbBUUFEy LyIRy18oIv0x9e+NnKtx0YF6C/a3Kvdgz2mgWFYL5X4hzC8h0Xy8EEQpm60GEQpieh6GISzLr bkxO0IML5iaNKzwi2qdvtpbJmHir0eyF74XKhU711cGX84Qy5J+UokEkZB1VjExbEEc6vju65 GuqibE9USQS7UpATpJeQFaS8OBz6OUqWsBiezZQDE7RbwDZQZFV5/sjT7NvpMzAh4mI7bH6uk uJzgtEyr/+sb7m2pdvV/1s4V6hp8wQcy4ASN23I0cj756G3m6pfyI9Vfx3Mn2OsNM4Beu/Uad 2bag5zFqUb8x9BBnOiVHToI4ZMOs0SEa1uRVDAslX0ZH2Pf3ZvX/0o20Mp0/FCSabfKZ2MRsF C8UXbpOKU6trPIJKkobnls9dJR8d5pMwEHsSPKQGTaPWW7po4zCJqTZfVLR+9lQNcdhYO6rap fn05AgyLT4K5NdujI1CqSoUZJNHWH2YI7l+mjkID02kHN/Yd2cV/+XsHkpLwEBx3nTeeV7iNV Ggs/geDGxGeWEFmx0/i3UdU/IOnT4q8NxWgvNfMB0knNuASmEt8W/9dEOe9ja5Zb+0GCcAY9+ xM1qlVt Received-SPF: none client-ip=212.227.17.24; 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich MADV_DONTNEED has a different value on alpha, compared to all the other architectures. Fix by using TARGET_MADV_DONTNEED instead of MADV_DONTNEED. Fixes: 892a4f6a750a ("linux-user: Add partial support for MADV_DONTNEED") Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220906000839.1672934-3-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- linux-user/mmap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 83fdae7034ea..942bec7e8528 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -22,6 +22,7 @@ #include "qemu.h" #include "user-internals.h" #include "user-mmap.h" +#include "target_mman.h" static pthread_mutex_t mmap_mutex = PTHREAD_MUTEX_INITIALIZER; static __thread int mmap_lock_count; @@ -897,7 +898,7 @@ abi_long target_madvise(abi_ulong start, abi_ulong len_in, int advice) * anonymous mappings. In this case passthrough is safe, so do it. */ mmap_lock(); - if (advice == MADV_DONTNEED && + if (advice == TARGET_MADV_DONTNEED && can_passthrough_madv_dontneed(start, end)) { ret = get_errno(madvise(g2h_untagged(start), len, MADV_DONTNEED)); if (ret == 0) { From patchwork Wed Sep 28 20:27:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684077 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7pc1C3pz1yqS for ; Thu, 29 Sep 2022 06:47:20 +1000 (AEST) Received: from localhost ([::1]:48130 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddxe-0006pW-23 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:47:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33344) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeu-0008Ps-Fo for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:56 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:44625) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odder-0006TI-Om for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:55 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MK3a4-1owwOY1FwE-00LYD0; Wed, 28 Sep 2022 22:27:48 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 15/37] linux-user: Implement stracing madvise() Date: Wed, 28 Sep 2022 22:27:15 +0200 Message-Id: <20220928202737.793171-16-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:V9SPzMlnxE+LItb7b8Q32tnKbAG1gH/sEylIPbA+cn8FMcx6zli urJNIMUoEkrZRgAu10Q+BZpDgO868xpPWIkI8OnbMggnnAkXZfW0hOrrzL2LAZ4802Yr0ha r9vI5ajTvHKJLrYaAMa8JHI4YirF4kPGJh53thSc8CER65k4Q+NPZbvjQD5sFAtzGYo8Vtr WC7TG1c0ixmXrIp5FiYTw== X-UI-Out-Filterresults: notjunk:1;V03:K0:WMIK7whjTD8=:X1ubLesyOgXINhqRnvFtia xcHLtTD2AvVK9b3eT4oS49OcmGJWmDOF2+Zw5axAjuB0mOyaHsAkItkuuCdrMR+vWU58/yfQa 9KVNrA3A7Qw/R8+tZxBbN4O8wpWqGT84onjLuQQiGQB4SqoXtyMLNSoSVDdNP9Crf+fKx/xj7 rXSJcYkWB351kkG09FGVNxmgjlFwdsnEuDUtPGFZDwRi6JB00qjVNuDktQ4Hy/AnDKZOprtDX j1/rg0/3lRebOQh90n6jSnImdaHfQ+6IIKlH79JZtEODzS4vHQ1+TOlArYeMla6GHlOYicSSA hSfYykEnHWAGFPBXt77vxs/rCzPC15aGFfD2lh/G1Eh3isRrME6kMM+2gmezff3HL8UiDNKD3 sxDbpyh64pMI7GfoNMqGFgkqq+SuIKhe2u5up4HX/96CloEVoQn6P1uhCIKl+4LKci+G2sWUA 99Qq6t2/pGQTJ38dQ3/C8U8IIkVh//3oNb4tttdPDHT9Ei/qOV2eQredGcSAu6NFn+uIF2PRU lLnwrGMO6SgegRQaaxzf5JnB3XxNVDWb8ML28bipl8xeacmcvGpAIlep43pMdeGSEad4eYdoG AzU05lbFCEQW11Sin+8AK/x6rzLrLB7UF5V9HOpZ9+H7CVuKl8lBNDIL5v8MNAyX/ph2k+S0c elzOt589ebA6RlgPVrb2GU2Yaz8r+vidAZnWPqllyhgcmsWVd3hWhnWAtAFRcCItUeXSal0Fr LzMNV11AiQ+I6F4AT3xYu/q599WGjoUwlFxfEr46+jO+9Ab8YdoeJ8juTuHHwJct2lqWNmGNh KeVNh0c Received-SPF: none client-ip=212.227.17.10; 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich The default implementation has several problems: the first argument is not displayed as a pointer, making it harder to grep; the third argument is not symbolized; and there are several extra unused arguments. Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220906000839.1672934-4-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 41 +++++++++++++++++++++++++++++++++++++++++ linux-user/strace.list | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index b6b9abaea466..2deb84a2c106 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -18,6 +18,7 @@ #include "user-internals.h" #include "strace.h" #include "signal-common.h" +#include "target_mman.h" struct syscallname { int nr; @@ -3019,6 +3020,46 @@ print_stat(CPUArchState *cpu_env, const struct syscallname *name, #define print_lstat64 print_stat #endif +#if defined(TARGET_NR_madvise) +static struct enums madvise_advice[] = { + ENUM_TARGET(MADV_NORMAL), + ENUM_TARGET(MADV_RANDOM), + ENUM_TARGET(MADV_SEQUENTIAL), + ENUM_TARGET(MADV_WILLNEED), + ENUM_TARGET(MADV_DONTNEED), + ENUM_TARGET(MADV_FREE), + ENUM_TARGET(MADV_REMOVE), + ENUM_TARGET(MADV_DONTFORK), + ENUM_TARGET(MADV_DOFORK), + ENUM_TARGET(MADV_MERGEABLE), + ENUM_TARGET(MADV_UNMERGEABLE), + ENUM_TARGET(MADV_HUGEPAGE), + ENUM_TARGET(MADV_NOHUGEPAGE), + ENUM_TARGET(MADV_DONTDUMP), + ENUM_TARGET(MADV_DODUMP), + ENUM_TARGET(MADV_WIPEONFORK), + ENUM_TARGET(MADV_KEEPONFORK), + ENUM_TARGET(MADV_COLD), + ENUM_TARGET(MADV_PAGEOUT), + ENUM_TARGET(MADV_POPULATE_READ), + ENUM_TARGET(MADV_POPULATE_WRITE), + ENUM_TARGET(MADV_DONTNEED_LOCKED), + ENUM_END, +}; + +static void +print_madvise(CPUArchState *cpu_env, const struct syscallname *name, + abi_long arg0, abi_long arg1, abi_long arg2, + abi_long arg3, abi_long arg4, abi_long arg5) +{ + print_syscall_prologue(name); + print_pointer(arg0, 0); + print_raw_param("%d", arg1, 0); + print_enums(madvise_advice, arg2, 1); + print_syscall_epilogue(name); +} +#endif + #if defined(TARGET_NR_fstat) || defined(TARGET_NR_fstat64) static void print_fstat(CPUArchState *cpu_env, const struct syscallname *name, diff --git a/linux-user/strace.list b/linux-user/strace.list index 215d971b2aea..c6f748505a9e 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -542,7 +542,7 @@ { TARGET_NR_lstat64, "lstat64" , NULL, print_lstat64, NULL }, #endif #ifdef TARGET_NR_madvise -{ TARGET_NR_madvise, "madvise" , NULL, NULL, NULL }, +{ TARGET_NR_madvise, "madvise" , NULL, print_madvise, NULL }, #endif #ifdef TARGET_NR_madvise1 { TARGET_NR_madvise1, "madvise1" , NULL, NULL, NULL }, From patchwork Wed Sep 28 20:27:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684089 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md81X2yfhz1yql for ; Thu, 29 Sep 2022 06:56:48 +1000 (AEST) Received: from localhost ([::1]:38488 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode6o-0001pw-9e for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:56:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33350) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0008Ux-Gk for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:57 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:48811) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddet-0006Th-2O for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:57 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MO9vD-1otOIO0ptx-00ObHV; Wed, 28 Sep 2022 22:27:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 16/37] linux-user: Passthrough MADV_DONTNEED for certain file mappings Date: Wed, 28 Sep 2022 22:27:16 +0200 Message-Id: <20220928202737.793171-17-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:9j/9cvNf9CzPK9v5Lw6ejSm3B0TyF0+wOV93MTN+RNM9vXaKI/k vhhIsbSDIDtFWqhNr9az7nBbwGRODFwnWxMLf2ksOomnH7hUFCJ1KSUfh/aMH1HsMSpqnJU fiBrc1uUL1GzGxW24kkmVpwyRbs0T6PrmCclD1oHxoBbjJDi+SZIgRIu9R3bcQN/QDsuVDH WYyHxCaYLJYjfPxlW9lMA== X-UI-Out-Filterresults: notjunk:1;V03:K0:vi1r5Wh2IU8=:ugxUKS6qt9EcSyZDl0wAG+ uGo4EF2pKXGvluL1ULgPhDwGsnK105cFS7e2jtXH4PuCthZy5V6Ff0jU7hTnJBqnL0b/bPFxa NDw3jYzR0GX/6F+5AKUOgKCjRgZ2Ppd/T/LkToScb755DkiNUpQfo+BNXN9bPHKzgxzQICUDS A2cVAx3h5fs7iTVE3MQtGOMohgIytJp9w27dL6nJwP99WSbsg0EQ/grHT6nCX0znJG80E3s++ NnmRV12BdREUas4H2wRB4lEDcZnvmqqoSzItqsra2Du3V+6gL76Mn4PA3zbnlTym64iGbfmIa XViZmDKURxbfdri6ciu+InGSaTLchC861t2yjF40+Wkiv9+zk2lK7AofZApFceU/LmvupOy9Y twvvkp6KqbReQuO0YZR2T/9vOkzHT66c+GTEJio4etIHZWKAXR26YeIH+ZBB7gqg8Y9bTZb6+ O3uWCJB4SMHpkIxyfVnt6gvVCQ1mKK8dlcxTUzwzBquGDl1cPXQD/S8COy06+QrcV5p6mgsTh GrHKgHjwQIqio3LBy1/HZT067dUkoCB3ihPP6Q9EMH4s5WTzZSdIAQGsIBGU5fpzs5YehSXtA FdW6UERmrjGQvG44m4WNkhEVFw908c4Af61L9LATH130ZLTUJ5WKX9emRbdy9U04R00/Bc3mr En69SxmT2Jae8EBRlF1ETciHt9kvBgHOlrIiGniSHyc+qWT7dSPd+LL4EpQJ1alAs/5O0Oxee bWD2Qcu9Mq3gpUUAl7JRuyufE3CslHpReRC2Ihn01iZaqhDS0grdbTF6AAyZD7Jd8zk2rr6y5 jnkgc1i Received-SPF: none client-ip=212.227.17.10; 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich This is a follow-up for commit 892a4f6a750a ("linux-user: Add partial support for MADV_DONTNEED"), which added passthrough for anonymous mappings. File mappings can be handled in a similar manner. In order to do that, mark pages, for which mmap() was passed through, with PAGE_PASSTHROUGH, and then allow madvise() passthrough for these pages. Drop the explicit PAGE_ANON check, since anonymous mappings are expected to have PAGE_PASSTHROUGH anyway. Add PAGE_PASSTHROUGH to PAGE_STICKY in order to keep it on mprotect(). Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220725125043.43048-1-iii@linux.ibm.com> Message-Id: <20220906000839.1672934-5-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- accel/tcg/translate-all.c | 2 +- include/exec/cpu-all.h | 6 ++++++ linux-user/mmap.c | 27 ++++++++++++++++++++++----- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c index f5e8592d4a47..d71d04d338db 100644 --- a/accel/tcg/translate-all.c +++ b/accel/tcg/translate-all.c @@ -2258,7 +2258,7 @@ int page_get_flags(target_ulong address) #ifndef PAGE_TARGET_STICKY #define PAGE_TARGET_STICKY 0 #endif -#define PAGE_STICKY (PAGE_ANON | PAGE_TARGET_STICKY) +#define PAGE_STICKY (PAGE_ANON | PAGE_PASSTHROUGH | PAGE_TARGET_STICKY) /* Modify the flags of a page and invalidate the code if necessary. The flag PAGE_WRITE_ORG is positioned automatically depending diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index 491629b9ba7a..16b7df41bf5e 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -262,6 +262,12 @@ extern const TargetPageBits target_page; #define PAGE_TARGET_1 0x0200 #define PAGE_TARGET_2 0x0400 +/* + * For linux-user, indicates that the page is mapped with the same semantics + * in both guest and host. + */ +#define PAGE_PASSTHROUGH 0x0800 + #if defined(CONFIG_USER_ONLY) void page_dump(FILE *f); diff --git a/linux-user/mmap.c b/linux-user/mmap.c index 942bec7e8528..e557f3626e5d 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -431,7 +431,8 @@ abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size, abi_ulong align) abi_long target_mmap(abi_ulong start, abi_ulong len, int target_prot, int flags, int fd, abi_ulong offset) { - abi_ulong ret, end, real_start, real_end, retaddr, host_offset, host_len; + abi_ulong ret, end, real_start, real_end, retaddr, host_offset, host_len, + passthrough_start = -1, passthrough_end = -1; int page_flags, host_prot; mmap_lock(); @@ -544,6 +545,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int target_prot, host_start += offset - host_offset; } start = h2g(host_start); + passthrough_start = start; + passthrough_end = start + len; } else { if (start & ~TARGET_PAGE_MASK) { errno = EINVAL; @@ -626,6 +629,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int target_prot, host_prot, flags, fd, offset1); if (p == MAP_FAILED) goto fail; + passthrough_start = real_start; + passthrough_end = real_end; } } the_end1: @@ -633,7 +638,18 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int target_prot, page_flags |= PAGE_ANON; } page_flags |= PAGE_RESET; - page_set_flags(start, start + len, page_flags); + if (passthrough_start == passthrough_end) { + page_set_flags(start, start + len, page_flags); + } else { + if (start < passthrough_start) { + page_set_flags(start, passthrough_start, page_flags); + } + page_set_flags(passthrough_start, passthrough_end, + page_flags | PAGE_PASSTHROUGH); + if (passthrough_end < start + len) { + page_set_flags(passthrough_end, start + len, page_flags); + } + } the_end: trace_target_mmap_complete(start); if (qemu_loglevel_mask(CPU_LOG_PAGE)) { @@ -852,7 +868,7 @@ static bool can_passthrough_madv_dontneed(abi_ulong start, abi_ulong end) } for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { - if (!(page_get_flags(addr) & PAGE_ANON)) { + if (!(page_get_flags(addr) & PAGE_PASSTHROUGH)) { return false; } } @@ -894,8 +910,9 @@ abi_long target_madvise(abi_ulong start, abi_ulong len_in, int advice) * This is a hint, so ignoring and returning success is ok. * * This breaks MADV_DONTNEED, completely implementing which is quite - * complicated. However, there is one low-hanging fruit: host-page-aligned - * anonymous mappings. In this case passthrough is safe, so do it. + * complicated. However, there is one low-hanging fruit: mappings that are + * known to have the same semantics in the host and the guest. In this case + * passthrough is safe, so do it. */ mmap_lock(); if (advice == TARGET_MADV_DONTNEED && From patchwork Wed Sep 28 20:27:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684063 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7cZ3rsNz1ypH for ; Thu, 29 Sep 2022 06:38:38 +1000 (AEST) Received: from localhost ([::1]:33878 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddpE-0004eW-C2 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:38:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33356) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddew-00008D-99 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:58 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:53401) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddeu-0006Tm-0B for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:57 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MWiUg-1okHUc0XrU-00X5bk; Wed, 28 Sep 2022 22:27:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 17/37] tests/tcg/linux-test: Add linux-madvise test Date: Wed, 28 Sep 2022 22:27:17 +0200 Message-Id: <20220928202737.793171-18-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:sLhE1jHBWhwzx9HMMIERxBXqUJ8/+Kl+2YQ75OD34bil9poM/Yd XMrzvgj8m5fGIUjZeivOc34eMlPl7XTKWkX0SwYzDiwOe4JY98dfxOXcHhQvdpPWsUHA/0C XqM6YMU5Gr0EB6Yns7RQwGoE4eZAxd+ALsSGG+ve/5wt/40hv9p5lWDRxJP4XQofRQfCLZC pKqIa0wzWMRBke0ZpvV5g== X-UI-Out-Filterresults: notjunk:1;V03:K0:jsivJO/CqeA=:NlN91AY+Q7qgGmQUxLfrAo H/R3nVrBziw0w/r8FOb09e2CtNhPSTZiChgxMKGKEl4XXSz8mmd4mREJ+625XK16CPl6SMEOz ZetM2QH0V6QvtvuxFUJjYIiLIwJ4IryWSBhOPJy9xURlNolAh/SufQYC/SutR9IpuXCLXhrrr U1VNUk2QQ0WIaaDQkxL4u3f/gX6qdfiVvNk830Sc+MnbJRvpoR6x2uNpMXWfh1ZJ/08A2f8H2 aOBMosgWwn1WVFQ4Nplp1SCN1/WwFhj7AHc6Q0NdprJkTEAQHYGt5HEPLY82/lPnsbzEIPvkr P15wWD6rPoR0Qiv0KIxumsUaolv3QswVdsVNfhv0c842Lhn8zHrGc5ELWT7ZJ31GqsOcC4fLE mRj5PJd7uaUkiaZkKKgsc4AvssQLwvUua5S25Uy1Nre6E5Kn7A5e+T5ZZYONchJZUkqvttbGq /kuEdWwZTVx8cLfRn8lmUfKe6Z0NdlfImfEaPDpmnpDfXDk/MZu8iBQthZTvpBuIpejZF1V1e Ue4iRD8m98KTyfGs/6b4BGhK92zW2k3NdVztBs/HP35JpWekt+xl09nVdTsvBTTDZk9Nb2670 4iIVcVQjbwtXcPRecyXOiPiRCP/Ij6sbd/yMUWmndUiKGxO+RJRWeCHQpdtjZ6U6+eL7a8vHQ gi9FP/U8hdDjB6Jguft6rFaDeEDxbtW0JjI8zLOD3sC4S4DIJU9iIHOXbYIXKgeiBqaBpbHUj d2fQwCCgEv/dfnAKzfqS6b1vyvplwF/tElSwUoM11SYtkqQa3lBxUm7swJIPytyW1f3l1ri8h t2DUDKv Received-SPF: none client-ip=212.227.17.24; 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich Add a test that checks madvise(MADV_DONTNEED) behavior with anonymous and file mappings in order to prevent regressions. Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220906000839.1672934-6-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- tests/tcg/multiarch/linux/linux-madvise.c | 70 +++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tests/tcg/multiarch/linux/linux-madvise.c diff --git a/tests/tcg/multiarch/linux/linux-madvise.c b/tests/tcg/multiarch/linux/linux-madvise.c new file mode 100644 index 000000000000..29d0997e687c --- /dev/null +++ b/tests/tcg/multiarch/linux/linux-madvise.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include + +static void test_anonymous(void) +{ + int pagesize = getpagesize(); + char *page; + int ret; + + page = mmap(NULL, pagesize, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); + assert(page != MAP_FAILED); + + /* Check that mprotect() does not interfere with MADV_DONTNEED. */ + ret = mprotect(page, pagesize, PROT_READ | PROT_WRITE); + assert(ret == 0); + + /* Check that MADV_DONTNEED clears the page. */ + *page = 42; + ret = madvise(page, pagesize, MADV_DONTNEED); + assert(ret == 0); + assert(*page == 0); + + ret = munmap(page, pagesize); + assert(ret == 0); +} + +static void test_file(void) +{ + char tempname[] = "/tmp/.cmadviseXXXXXX"; + int pagesize = getpagesize(); + ssize_t written; + char c = 42; + char *page; + int ret; + int fd; + + fd = mkstemp(tempname); + assert(fd != -1); + ret = unlink(tempname); + assert(ret == 0); + written = write(fd, &c, sizeof(c)); + assert(written == sizeof(c)); + page = mmap(NULL, pagesize, PROT_READ, MAP_PRIVATE, fd, 0); + assert(page != MAP_FAILED); + + /* Check that mprotect() does not interfere with MADV_DONTNEED. */ + ret = mprotect(page, pagesize, PROT_READ | PROT_WRITE); + assert(ret == 0); + + /* Check that MADV_DONTNEED resets the page. */ + *page = 0; + ret = madvise(page, pagesize, MADV_DONTNEED); + assert(ret == 0); + assert(*page == c); + + ret = munmap(page, pagesize); + assert(ret == 0); + ret = close(fd); + assert(ret == 0); +} + +int main(void) +{ + test_anonymous(); + test_file(); + + return EXIT_SUCCESS; +} From patchwork Wed Sep 28 20:27:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684088 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md81K2KRtz1yql for ; Thu, 29 Sep 2022 06:56:37 +1000 (AEST) Received: from localhost ([::1]:57518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode6d-0001RS-7L for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:56:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60052) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddet-0008MW-T2 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:55 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:48195) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1odder-0006T6-Bq for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:54 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEV7U-1oTA562rhC-00FyCI; Wed, 28 Sep 2022 22:27:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 18/37] linux-user: Fix TARGET_PROT_SEM for XTENSA Date: Wed, 28 Sep 2022 22:27:18 +0200 Message-Id: <20220928202737.793171-19-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:A1/nH2+PkP1GnT42Sg7sSlRZaoyRH4CLQaeOzJNv00dS+QmhJxZ eQ6GqEQ0ZI12408qhDAv/9KBxQjqc60FCqIn+sX/URsvDNgeUa9uLogQTZgJ6iT4ztHXxji IZyOEkbYeFONJBScNzzN/oHmuYbGRQQcti2qy0DHmZXiHckQ6P/oroyx7kPoKd5Z2CUtIeL S08RNX2MoqgGP9OaKHRMg== X-UI-Out-Filterresults: notjunk:1;V03:K0:ClgR7nEbAks=:kEZJT5bFAoCoR5Pmd5oJXK wU6gHh08lfZJdu8eWJuW+Cck2le0CB07uy8iu5b/NFurjuRUGoNWRk3BfMeTC8m0DSsHNVONm GXxsifGf9obNnLCqCKr9mO5IyyFoczzbL+t2b5gpbv1VhRNtpFU+Gp7emJLyepnZOPGENVj1S Vamu1MsPRKNN4lHIM9KTpI8Te8mqHzxRcEI2aCLq2rVy1J1+8vEWol0/xjQGflqsPGbHecJUz MmggEUuQlRc50M6wLu2djtszT+cY9ucfDi0BMuv+sPgxAOzigQwlghWNCztEh5TIEKzOMGpJ1 1bj/pCTFCSx8BNCVKvsT8nU9ribilvpbT9Y9rcHj0ojxcciUIOa1eXyU0Wvd6h0kTdrNd11Fr 63CBBK6njxynDHMrhTo0vP+tcfIK7d0cSnZbWnPSMVN+hNZsP8g7AxAj6BIIwibAlTcTAw++5 aIgWCSnrRDezmqxlUzK3R4J6uoseM7Ac7tg4CNs+hMHgJim/w7oYwBq1ytS4K1heoaxSLh5Gp YmjnOEilT6jQTHX3Iw7Y/njQZXq1Xv1pVC/mrl3CKn2TAwc94SI+x58ulqfIt9EDDzxovqiHh IJ/VzOcz9wOnq+c1U+9isZT9v4cSe7QmweUrWFKGiIqP1/kV0SeZi2gHmeeInhSVuTNvOLY4y OxQGGMv4FAh+dQAtXReGh0PBYtBmVKqSdPeZo1EtvBA++ZK3JIxwYuREb2LZfq3EhPhRl1s06 vRgyhrm+8XU7jcUVSoi3vXXGfXgopOhc1CvvToZSse2YGTygrYIvzwRLXUlAlUp5M11lhlPcX kSBZPWT Received-SPF: none client-ip=217.72.192.75; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller The xtensa platform has a value of 0x10 for PROT_SEM. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220924114501.21767-2-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/syscall_defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 85b0f33e91d7..1e3577bfa56f 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -1246,7 +1246,7 @@ struct target_winsize { #include "termbits.h" -#if defined(TARGET_MIPS) +#if defined(TARGET_MIPS) || defined(TARGET_XTENSA) #define TARGET_PROT_SEM 0x10 #else #define TARGET_PROT_SEM 0x08 From patchwork Wed Sep 28 20:27:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684062 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7c42PVjz1ypH for ; Thu, 29 Sep 2022 06:38:12 +1000 (AEST) Received: from localhost ([::1]:53336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddoo-0003Jd-89 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:38:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37008) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0000a6-67 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:42867) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddes-0006TQ-HN for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:05 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MVMqF-1omBxv2uIx-00SLHh; Wed, 28 Sep 2022 22:27:52 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 19/37] linux-user: Add proper strace format strings for getdents()/getdents64() Date: Wed, 28 Sep 2022 22:27:19 +0200 Message-Id: <20220928202737.793171-20-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:GpWvH71Ha/BJ7QQ7uKIqke2HySaH4TAbweugJIVzvZyFI8KXAVL 8naTb6lvOry51pk5q37AWmizGTaO2r7uRutiVZ+o+XuGmofaya1ROX+8OPaCa5SKzQUSGVu VG2YnPwf5LvU92FYqY4BYxEpl/q5IijAGSoQBLhkfyVsyjOSISb+EgGlrkh36uak9415DxR s8bFzgK5z7m7N2IGF/XUQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:zC4kfa0MKzY=:3OoKZ2PJ1AnaCBoh/4VEi8 lz+riJkmj2KVKi1IcQfIEJDkxCVvh9rttys7/RStGCQWgJ3IRcz88ed5QodIUExyFyKyU7Fh+ H6Ho0BKOOCLnN/beicLUZKD8b4JuPZ+KzyqWkNQzKT69xx/6dr9WUdHoccuhL/HGwPLpUt/9r yb5IlPr2xUOY1Uplg4np+s2YrCoHvtSDnDvxVx+eeS6EmB8GMBZ61YUnpANj9/DAcXKpMiUNs 9xjYWAn05dkm7PygOaNH+DeMfOxIx8LkfBKI4MS9W7KeSCuPWe85bSyMyJH5jNmuQaCAjBH9w ggGQz3NnRd3rgqUWpfiijJR2bxOCzdgDfW8qzh8DHb3dtqdzMSVNEapkSPFEjwVtJ15k86GNh QLy91muqG9qoKD6uViLiiHT8oTMxnoG2+5gUE06py4hzuq540ufXC7+W3mCmknSjRUhGvj4Vi MSwPVXN/aqCZLftXFzJV4Twpm5IeuBhwUz3RkBcgF8tBQmpJB1YTj5KfA3bDX8mJhFw0kcX1b 4QndahgSJrr2UoDEe6oN099eODEZXuFuNEf1suWvfnPhH0raUcuXgXxVjawLYDbDs+EZf++H5 HJh3topzcFtGYAX7B0DYJnboP9dOG0zjtXQ24y6C9CTOTBtiiE0rCu0TuIdeic5okZ4hdzYKj Dri2oLhhRM29xE/xQQ9sD5reVrLxmVcxFuar5UtROZ6rJ4HIWvasTFMCG84j7AFTCOqYRt+8t iK17Gvvj0HyNBsBWjBM6fFSZCUCSK6OFOGfJ+lKtDMHjn6YFLoFb73YxMJNUHjRjaGonj58hr P9QaNBD Received-SPF: none client-ip=212.227.126.131; 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, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-3-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.list | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/strace.list b/linux-user/strace.list index c6f748505a9e..f8a771b4f256 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -279,10 +279,10 @@ { TARGET_NR_getcwd, "getcwd" , "%s(%p,%d)", NULL, NULL }, #endif #ifdef TARGET_NR_getdents -{ TARGET_NR_getdents, "getdents" , NULL, NULL, NULL }, +{ TARGET_NR_getdents, "getdents" , "%s(%d,%p,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_getdents64 -{ TARGET_NR_getdents64, "getdents64" , NULL, NULL, NULL }, +{ TARGET_NR_getdents64, "getdents64" , "%s(%d,%p,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_getdomainname { TARGET_NR_getdomainname, "getdomainname" , NULL, NULL, NULL }, From patchwork Wed Sep 28 20:27:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684108 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8BG1GCqz1yqS for ; Thu, 29 Sep 2022 07:04:22 +1000 (AEST) Received: from localhost ([::1]:38200 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeE8-0004gi-13 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:04:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33364) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddex-0000Cn-Kl for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:53573) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0006U7-Be for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MMoOy-1ouCZZ1V7U-00Ikd4; Wed, 28 Sep 2022 22:27:53 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 20/37] linux-user/hppa: Add signal trampoline for hppa target Date: Wed, 28 Sep 2022 22:27:20 +0200 Message-Id: <20220928202737.793171-21-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:GBK6QYDPd7J6IsdTi0b62Ai0RJc2j5XF6l8jc/qzLyef69mnFEz oUisye0WwUpifiHJMmtLc5ZL+F+eK/YxYcgsubfMn7p4ws7xSVDGkhLfm9S6crldJS4rc/3 bHb9Etk/9dtqTD8eD8YxTNcBRCI7aRWzt7oFc6g8NBwfSZpTOdMGNzmCsrYni34+bOl1ytj 4K8pYzQw4FVBsmyMzI6Ew== X-UI-Out-Filterresults: notjunk:1;V03:K0:dir/g86Mt6E=:R9tIj70TBVMkirhJxTLtLS d3b0TBTA3mjmLqJ1VNbebh78vZdCSs6hNXEOTOc9hNPyBYeGWj9zePVuIiVDojmtXGNUnYcHN s6LeOsnETIQLV2X5YFA1mpcYo2CmIOxeM2bocyTq15j4PzTwSZ5+vbQWiMur/ikVDBzQRdm9r rBxS8JJDPKh5DA5sUxzg1Cf5qnBUjP5V6eWOIUHJf3qQPRiHB4Mx/DrhT7cgcuce4pvdiyor7 MoOXooiu4DuZIm7BqcM1jXmtHbe9jcY0bYpaGekVNwg/Umc3ccfWKnnTu6mBm++iwJyRf9Lkw AkQXdPc/Gy0lQuNKj8h10hTBN5NbW5sSm/cySdtBqPOIs+cqcsza1kUBf/VX6weNyxcQ3xDve ft7KznZ/prPv58uWQMzYeJHD07ZuWY4fhesRjegTPQtbUHAGQ0iX0s/a0UXQvU3EEAST5dvHS 1nWsQvS7QQtI6KN40LP/+qlvOQvAs9y909tyj6HRbYqKhPOG5Fdz0R5E84XcsVWW/POCWuTQx TSkF0figQzAr3gK2mYs/cBpDB9WrE9jSQrsKPe/TmJFbUFSGTNis1C30TQxFqCBeeK2vNRXGr 8FOIunzQL/LpPYzc+GKpkmXh3XePZsb4AWcyjcndii0MsdxfAlAAMchgU+8TrTmOu9ehtIF62 ym6sBYWKFCmrmwibhtqCTgc0MOPXqNi0fajIje4IrKYIxI7JNjTSqhqKFFq+h1CDPIgXDuLty 0n7/oLE7Cu3ZkbMBWP/esJQzB7sX2FnzIhqGlCcbLJtKzaqMGKpmsiIW0hEo/F52kArD4JJhg kFs4QVd Received-SPF: none client-ip=212.227.126.134; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller In Linux kernel v5.18 the vDSO for signal trampoline was added. This code mimiks the bare minimum of this vDSO and thus avoids that the parisc emulation needs executable stacks. Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-4-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/hppa/signal.c | 41 +++++++++++++++++++++++++-------- linux-user/hppa/target_signal.h | 14 +---------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c index 962f551c0429..396e310dc92d 100644 --- a/linux-user/hppa/signal.c +++ b/linux-user/hppa/signal.c @@ -41,7 +41,7 @@ struct target_ucontext { }; struct target_rt_sigframe { - abi_uint tramp[9]; + abi_uint tramp[2]; /* syscall restart return address */ target_siginfo_t info; struct target_ucontext uc; /* hidden location of upper halves of pa2.0 64-bit gregs */ @@ -101,9 +101,15 @@ static void restore_sigcontext(CPUArchState *env, struct target_sigcontext *sc) __get_user(env->cr[CR_SAR], &sc->sc_sar); } -/* No, this doesn't look right, but it's copied straight from the kernel. */ +#if TARGET_ABI_BITS == 32 +#define SIGFRAME 64 +#define FUNCTIONCALLFRAME 48 +#else +#define SIGFRAME 128 +#define FUNCTIONCALLFRAME 96 +#endif #define PARISC_RT_SIGFRAME_SIZE32 \ - ((sizeof(struct target_rt_sigframe) + 48 + 64) & -64) + ((sizeof(struct target_rt_sigframe) + FUNCTIONCALLFRAME + SIGFRAME) & -SIGFRAME) void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, @@ -118,7 +124,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, if ((ka->sa_flags & TARGET_SA_ONSTACK) && !sas_ss_flags(sp)) { sp = (ts->sigaltstack_used.ss_sp + 0x7f) & ~0x3f; } - frame_addr = QEMU_ALIGN_UP(sp, 64); + frame_addr = QEMU_ALIGN_UP(sp, SIGFRAME); sp = frame_addr + PARISC_RT_SIGFRAME_SIZE32; trace_user_setup_rt_frame(env, frame_addr); @@ -139,14 +145,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, setup_sigcontext(&frame->uc.tuc_mcontext, env); - __put_user(0x34190000, frame->tramp + 0); /* ldi 0,%r25 */ - __put_user(0x3414015a, frame->tramp + 1); /* ldi __NR_rt_sigreturn,%r20 */ - __put_user(0xe4008200, frame->tramp + 2); /* be,l 0x100(%sr2,%r0) */ - __put_user(0x08000240, frame->tramp + 3); /* nop */ - unlock_user_struct(frame, frame_addr, 1); - env->gr[2] = h2g(frame->tramp); + env->gr[2] = default_rt_sigreturn; env->gr[30] = sp; env->gr[26] = sig; env->gr[25] = h2g(&frame->info); @@ -197,3 +198,23 @@ long do_rt_sigreturn(CPUArchState *env) force_sig(TARGET_SIGSEGV); return -QEMU_ESIGRETURN; } + +void setup_sigtramp(abi_ulong sigtramp_page) +{ + uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 6*4, 0); + abi_ulong SIGFRAME_CONTEXT_REGS32; + assert(tramp != NULL); + + SIGFRAME_CONTEXT_REGS32 = offsetof(struct target_rt_sigframe, uc.tuc_mcontext); + SIGFRAME_CONTEXT_REGS32 -= PARISC_RT_SIGFRAME_SIZE32; + + __put_user(SIGFRAME_CONTEXT_REGS32, tramp + 0); + __put_user(0x08000240, tramp + 1); /* nop - b/c dwarf2 unwind routines */ + __put_user(0x34190000, tramp + 2); /* ldi 0, %r25 (in_syscall=0) */ + __put_user(0x3414015a, tramp + 3); /* ldi __NR_rt_sigreturn, %r20 */ + __put_user(0xe4008200, tramp + 4); /* ble 0x100(%sr2, %r0) */ + __put_user(0x08000240, tramp + 5); /* nop */ + + default_rt_sigreturn = (sigtramp_page + 8) | 3; + unlock_user(tramp, sigtramp_page, 6*4); +} diff --git a/linux-user/hppa/target_signal.h b/linux-user/hppa/target_signal.h index af6c2fce589d..190bb3d653b6 100644 --- a/linux-user/hppa/target_signal.h +++ b/linux-user/hppa/target_signal.h @@ -70,18 +70,6 @@ typedef struct target_sigaltstack { /* mask for all SS_xxx flags */ #define TARGET_SS_FLAG_BITS TARGET_SS_AUTODISARM -/* - * We cannot use a bare sigtramp page for hppa-linux. - * - * Unlike other guests where we use the instructions at PC to validate - * an offset from SP, the hppa libgcc signal frame fallback unwinding uses - * the PC address itself to find the frame. This is due to the fact that - * the hppa grows the stack upward, and the frame is of unknown size. - * - * TODO: We should be able to use a VDSO to address this, by providing - * proper unwind info for the sigtramp code, at which point the fallback - * unwinder will not be used. - */ -#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 0 +#define TARGET_ARCH_HAS_SIGTRAMP_PAGE 1 #endif /* HPPA_TARGET_SIGNAL_H */ From patchwork Wed Sep 28 20:27:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684092 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8600N2sz1yqS for ; Thu, 29 Sep 2022 07:00:40 +1000 (AEST) Received: from localhost ([::1]:60022 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeAX-0007wW-VV for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:00:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33360) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddex-0000AV-0c for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:37825) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0006U6-Bf for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:58 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1McXs5-1pE3wC43dl-00d2Qx; Wed, 28 Sep 2022 22:27:54 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 21/37] linux-user/hppa: Drop stack guard page on hppa target Date: Wed, 28 Sep 2022 22:27:21 +0200 Message-Id: <20220928202737.793171-22-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:5Y3lpqbSBbvfU+KgElufzVsDShBRX8RapRIfmeRnhhiK37PALjY Y2ruyLjSmUIF4tlt8QXWuB8xjaLZPRToJWNOIyItf5jk/P2rPsHkFAJfWClO0b9Wv9AlJ6Z O6iXSEa9lyIgfOFLoyQ3casHcdc+AyXpKtJOhV4r3PMG6TEFQshExWdM8/H9kANER2XiW9I SQYT6ZtCC4hRVbbsqWUmg== X-UI-Out-Filterresults: notjunk:1;V03:K0:1XursJTPiaM=:EDL0VUUdli0iRHD6j8LkH6 z6/qxH5gugHIA8LTD8RH+ghp8ycWWAAqfMGsA6sdpConVYyJ7qsBR1XVqbCH8/iZqq10YzInH xCZrHOAtQCjygUKiSzS19FIjcwIh1lTVC9PnAhmodai6jzKyPd4Uol4vxcdK6rYe9LiLOI3sj 8tm+p2shOaoiaFiMwIdNqKDpylLYuFlazmaKedGlb+HnU5OGmflwxlXyECccN28a9j1yT5YJB PJ5Fy4CxbOOLcT57rheg2sITr+Wo1gIRR8Zrz6tzlmF3b1UikSKNVhXkcF3GP7ZgX7j4BOsbV Z12ztklmiyGoD63dpJ1BBNq+v6Sj6FZGxEETGM+zXszOlRjXkOQW4FgMpU1lofRpnehp3quqG Wt2XxqVz9+bwtTkVXMhPuM4yLeJb6G60IguNvpU79pwtCFzSDZZMHZZr9IETW8gFVp7AjhiHr NDGH7E4lcpKyDNbUFDsGRmh834Zf6G55BXlu1bG83RmNIHL9XND7KFE+qb0kqjBsZZ2d0SB34 SW6qwuQoJ+GO8eLnYUAVopQQlQJkQgy/0OoMPsJHZE6jxWlhzENbdKsvSHwbx4ly9kgEs8cA9 h+aza4wgJUmCwGHC/nEnNJZHuqLZKKPGGWWjPHwOw0zHpvG48RwtC1uGfWON2HkPnQQnHqKhw +rE+iIqRUy9QEEvlVD/oQWCPkT39K0tXzfCAz+c0eozOXoubcHhywKDV/KxHDfD5JGJKmpgDt 596W42t1R92HGCo60/egNZ7gIIy4vYM8qVALriVT3Dnd78PqXknBFa9UP7oWS64okDtAKg8mh Zrt45g6 Received-SPF: none client-ip=212.227.126.134; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller The stack-overflow check when building the "grep" debian package fails on the debian hppa target. Reason is, that the guard page at the top of the stack (which is added by qemu) prevents the fault handler in the grep program to properly detect the stack overflow. The Linux kernel on a physical machine doesn't install a guard page either, so drop it and as such fix the build of "grep". Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-5-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/elfload.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index ba5c4c02e591..c7e3f1d47c16 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -2096,9 +2096,15 @@ static abi_ulong setup_arg_pages(struct linux_binprm *bprm, if (size < STACK_LOWER_LIMIT) { size = STACK_LOWER_LIMIT; } - guard = TARGET_PAGE_SIZE; - if (guard < qemu_real_host_page_size()) { - guard = qemu_real_host_page_size(); + + if (STACK_GROWS_DOWN) { + guard = TARGET_PAGE_SIZE; + if (guard < qemu_real_host_page_size()) { + guard = qemu_real_host_page_size(); + } + } else { + /* no guard page for hppa target where stack grows upwards. */ + guard = 0; } prot = PROT_READ | PROT_WRITE; @@ -2118,7 +2124,6 @@ static abi_ulong setup_arg_pages(struct linux_binprm *bprm, info->stack_limit = error + guard; return info->stack_limit + size - sizeof(void *); } else { - target_mprotect(error + size, guard, PROT_NONE); info->stack_limit = error + size; return error; } From patchwork Wed Sep 28 20:27:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684084 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7rg48hBz1yqS for ; Thu, 29 Sep 2022 06:49:06 +1000 (AEST) Received: from localhost ([::1]:59848 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddz6-0007z2-To for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:48:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33362) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddex-0000Ag-5O for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:60483) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0006U9-AN for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:58 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N7iT4-1pHhMm2KRe-014gps; Wed, 28 Sep 2022 22:27:54 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 22/37] linux-user/hppa: Increase guest stack size to 80MB for hppa target Date: Wed, 28 Sep 2022 22:27:22 +0200 Message-Id: <20220928202737.793171-23-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:W5SIn3QUq2yyQqKcxFvuKvFpVCdZj00ZF4YOmfS5fcCzOHbCRoB kBkHYM1sz0+wnEuA/C3qGJVrSgno1FeSa3PgLCW7CCQI0opw5dekGdupAWLuEU7j4UN0LTd bbJHt8AuE/QkWGAiBznInCM4byizksGFF+1/iT70O0cZ+MS7Y098cTtQH2wOKvpj7oIwaM0 +ydCsQbz9pbz/GX/h29Dw== X-UI-Out-Filterresults: notjunk:1;V03:K0:hQgp/74nSdI=:U+bLORNvdkEKlL5esDpHzI 3Lv4Mi64f8zru+/ZprlUuVG+gcirpOzBnzm6bgASYiI4fLowt9ZZgNAHuZYVzDtfVtoNs7tnq wCIFB3fnNVIWymEsYxHp4SZV0Az1Ur7WZeDPctlks+VxXnUc6jfYUgx64FbrNotejyIYR4imH d2lzkyMdyAGT0UKvUVCO7hPsBOqPrSWK8XrIT3hPJDKuk2qis4kiXoCVKXmP6c+aFb4k93EvA IMts9WBoMFFkLM/uy5P+n62onk+G+BEN49KaEB6APc+RkMgMNf2maM1AhV2b7ArvEPzuWbXhU +7tHE1BLBJBI2Eg//qc1BElzZ5lxvwYN5Tmd/2o7vPM4r+BsQeRkPCPNv+tc1tvqEFes3Plgy RrcMIhUHx8zMnt4BBo7Z06bjvEmSk18W6giOAGtjQOiH5owhXDq6BfpYwJxi9hc71VMc1KkSu jgJU4kooGyF6p5WDc7hPrKmYbliSCmseGm1JcL7zKTUAsM95a58S9WHMUPC0QQkQk/kztK88q mh9YRiPwEh0OCmR9aCr8TMB2/klbD5OoZUH63JatUn1RPui8zxX/uyntQKq4bwm07/sMM85ek zLpK2jJWYV2DNxApOpgZqqxURqAf5dGvSr9khh0yYwXxHGO4iLDrkecmuoWgpJPfLQAIEXkdb U1Rcshm1QZ5vN0/xHEJ+eFFD/1Y6OzxBpQUftTLo94VClm1zaublT8n74wCvt0n8UP8UlWAun myQCbKMq97TgKRqkvI1xSvdLr0b86uNJbBDuRTcF+x6v248v180qLSGwmzJe7cOwklQhx20vQ Oqx+6m9 Received-SPF: none client-ip=212.227.126.131; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller The hppa target requires a much bigger stack than many other targets, and the Linux kernel allocates 80 MB by default for it. This patch increases the guest stack for hppa to 80MB, and prevents that this default stack size gets reduced by a lower stack limit on the host. Since the stack grows upwards on hppa, the stack_limit value marks the upper boundary of the stack. Fix the output of /proc/self/maps (in the guest) to show the [stack] marker on the correct memory area. Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-6-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/hppa/target_syscall.h | 2 ++ linux-user/main.c | 9 +++++++-- linux-user/syscall.c | 4 ++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/linux-user/hppa/target_syscall.h b/linux-user/hppa/target_syscall.h index 4b382c1fcf4a..9a8f8ca62817 100644 --- a/linux-user/hppa/target_syscall.h +++ b/linux-user/hppa/target_syscall.h @@ -26,4 +26,6 @@ struct target_pt_regs { #define TARGET_MCL_FUTURE 2 #define TARGET_MCL_ONFAULT 4 +#define TARGET_DEFAULT_STACK_SIZE 80 * 1024 * 1024UL + #endif /* HPPA_TARGET_SYSCALL_H */ diff --git a/linux-user/main.c b/linux-user/main.c index e44bdb17b853..88fccfe26149 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -124,10 +124,14 @@ static void usage(int exitcode); static const char *interp_prefix = CONFIG_QEMU_INTERP_PREFIX; const char *qemu_uname_release; +#if !defined(TARGET_DEFAULT_STACK_SIZE) /* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so we allocate a bigger stack. Need a better solution, for example by remapping the process stack directly at the right place */ -unsigned long guest_stack_size = 8 * 1024 * 1024UL; +#define TARGET_DEFAULT_STACK_SIZE 8 * 1024 * 1024UL +#endif + +unsigned long guest_stack_size = TARGET_DEFAULT_STACK_SIZE; /***********************************************************/ /* Helper routines for implementing atomic operations. */ @@ -668,7 +672,8 @@ int main(int argc, char **argv, char **envp) struct rlimit lim; if (getrlimit(RLIMIT_STACK, &lim) == 0 && lim.rlim_cur != RLIM_INFINITY - && lim.rlim_cur == (target_long)lim.rlim_cur) { + && lim.rlim_cur == (target_long)lim.rlim_cur + && lim.rlim_cur > guest_stack_size) { guest_stack_size = lim.rlim_cur; } } diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 850410c9b553..f87b36b2491f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8036,7 +8036,11 @@ static int open_self_maps(CPUArchState *cpu_env, int fd) continue; } +#ifdef TARGET_HPPA + if (h2g(max) == ts->info->stack_limit) { +#else if (h2g(min) == ts->info->stack_limit) { +#endif path = "[stack]"; } else { path = e->path; From patchwork Wed Sep 28 20:27:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684068 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7k60KR9z1yql for ; Thu, 29 Sep 2022 06:43:24 +1000 (AEST) Received: from localhost ([::1]:42124 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddtp-00027Z-0E for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:43:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33358) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddew-0000AU-W8 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:59317) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0006U8-B3 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:58 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MfYgC-1pAVZT0uqW-00g3EY; Wed, 28 Sep 2022 22:27:55 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 23/37] linux-user/hppa: Allow PROT_GROWSUP and PROT_GROWSDOWN in mprotect() Date: Wed, 28 Sep 2022 22:27:23 +0200 Message-Id: <20220928202737.793171-24-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:JQwokNvUD7b2VSpAOHd0/9+115ORCZpjE036Pe6Iou/ZNhMUO9W 0N/Ty4udZHiNXuFYST9dggoSysDOaH+c6R2gV0Hu4XUs161Hwzd8U0onYpD6RL5e98BzYZL 4h4Sm/HjGeTyJCW3m82Ycri+shf5zM22ygsqFr/wpRTrP/SLfaDkwmGApJcwaGSOSrrIOjF mG36L7yJEULb6HAlXsTwQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:heRzsq3L3Sc=:pI3YmrcTpA35u6HpjK8kew 1AvlSMz5Bl+CfyUa9vkjKbgZDvctYdX0i0hJF6FErPqhjEzj7cjQbywDwC/35gMhTXU1++08f Mw329BZ6B931d0oujPHy0rR8FZaVp6et7VwxJOmbw1PVR8J7nuEgjnbQIdE7TcV+kv5xZYyqN bf+cXr1AXIjQsRl19+S5/9scn8k/ajHBdAPc7nijqGhUhd3MJhgqV4jsAeA832IqlIL0OLkOT 6M2K60mlh0XB/YR2UyYTNWlZ6A4rA4ANXgiPy8UcyDQ+HX+VhYk7HOkC0XnrzZ1iDEa+2k+jQ M6w3cClPJdD6jhVzCEGjzDmJtGvsQMaeQ/ngUraz2PsvUCoSjhCHnPMEs5qjQrW3QC4rojcYS AQjRu+B3X+VC90kpXevJaKyOmMKWUiGf9iZ7AQFq1MlrAwZiV07EerLkAH4LusZEM/7f70L8v QisdPpjzXiI//5OK1MBYuF3Y4bQ2keBOG8ljDh0IGIuFrfsqFwFbGO9Kd4Bvp4yC4jAdInGIY iKnf1bk3vhk+MBnf3XL3bEzbpUjp8CHahYyaIJ7Ln8gID5Td6457tl3ZVmzI2gOBwI0gXDV3a jhJgzAQyHepDQjSG8tRNmOzbXv0wEeOWveeRyz0lClxPZZh1bsvkV94IHNfmWMs9vsrCzzmig aJYW0StjTLqAulZm/0ElTh4u3pm++LPZ3tD0AAXiPtiTXFi4jxZEbbajZ8yNZaq/6WHngu7I7 T/3434hK+jsGmqagGFEX+jMqgWdF3lIR/kOo174vbVL88N57JgmzY/LFcUwnVoWwG+USTLTZt NqKE1i8 Received-SPF: none client-ip=212.227.126.134; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller The hppa platform uses an upwards-growing stack and required in Linux kernels < 5.18 an executable stack for signal processing. For that some executables and libraries are marked to have an executable stack, for which glibc uses the mprotect() syscall to mark the stack like this: mprotect(xfa000000,4096,PROT_EXEC|PROT_READ|PROT_WRITE|PROT_GROWSUP). Currently qemu will return -TARGET_EINVAL for this syscall because of the checks in validate_prot_to_pageflags(), which doesn't allow the PROT_GROWSUP or PROT_GROWSDOWN flags and thus triggers this error in the guest: error while loading shared libraries: libc.so.6: cannot enable executable stack as shared object requires: Invalid argument Allow mprotect() to handle both flags and thus fix the guest. The glibc tst-execstack testcase can be used to reproduce the issue. Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-7-deller@gmx.de> [lvivier: s/elif TARGET_HPPA/elif defined(TARGET_HPPA)/] Signed-off-by: Laurent Vivier --- linux-user/mmap.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index e557f3626e5d..28f3bc85ed45 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -106,6 +106,8 @@ static int validate_prot_to_pageflags(int *host_prot, int prot) page_flags |= PAGE_MTE; } } +#elif defined(TARGET_HPPA) + valid |= PROT_GROWSDOWN | PROT_GROWSUP; #endif return prot & ~valid ? 0 : page_flags; From patchwork Wed Sep 28 20:27:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684091 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md85s4Q8Jz1yqS for ; Thu, 29 Sep 2022 07:00:33 +1000 (AEST) Received: from localhost ([::1]:57798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeAR-0007Zv-2S for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:00:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33366) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddey-0000F8-0n for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:00 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:46017) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddev-0006UI-MA for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:27:59 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MFsER-1oSKjU3oy7-00HP4H; Wed, 28 Sep 2022 22:27:56 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 24/37] linux-user/hppa: Fix setup_sigcontext() Date: Wed, 28 Sep 2022 22:27:24 +0200 Message-Id: <20220928202737.793171-25-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:Yl7synyoCd73u0n8oevPC8QAPPUlz3/TwiMxB6Gg3S/464KYySd wJiie6BdYeO0j0am4hmoLnUNR+6kox/jAcVTcWfjxS+EmQXUzDp8qSaW09+z1OHuvmRTVov JvBWeeX39gRaVCNQ04a33zt0RPZ3FABf5khg0Szl35+QWTcHY24E8aUsFVJ4VnGNkAk29K6 YCkf0XpE/77kfXl8t10GQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:4skR7yT3VWI=:+u2f8y1U6s952sFINklm4F pMIUhkig4k08epDSYE2ZFBBkJXJi7Pq91CCpfXY8QF86W/bPZnTW4CcS7aJxBVw9mrB6TrPnV y0GCPqFOKqZ64xDS1FJEdSBPprWGCFDGVizgETILxxm9MVeTXKh53nGJaI5yR2pOoSGA7ycwY wvDIlInV/cU9gBAtbqtuDuu98xGukvBUKuqQ6akvVO4wyM9aBCRSlXQNC+Z/gKrV8+K8JqS9C kzZNVNmZNayo9BAympZUnd/npx21vWW6Tb4ZXoCdcB947jxXblo1tlNHZZi4Nrb5mqh4mjDn4 nqUGtwNsDHGflftl9io7L8fYhT2ZOYs098JAFwpHBkg4b5nh51CqYF3E5majk094cy13WPznx nSZIGDg4pyRojC4qRgjehzV9WsKtn+MzJ3GuDaGPno/ooXQFLej+vaaiXrGay5F1bhjhIwYyq oASwrstd7NGiEJT8HbeWvxx4rGcChSf+CqVmV2J04AzFvid8J1Z2h5L+Erf6TKBufCCjpOa5J ZPkbXe/7ibII9vrkw7PZkNc38ibP+SVvUcSYUovuAlPRAzhNU6g1Sn1XwEYsBGuWK/eq7Ett5 M5urstprdzPjI3AO2iaFT/PWQ58zZ2pJkZUaTnSNHNGbtVXJvmD+XWVkYt0u0bEsGIRu3EsvW RfD7enRqyeytrPmVjUihhQp4mhRpOxsAwwq5UH9I6VsBLaxQ/iCkl1gyKM1KXsTqmihENZaMT gT5hSQchGCVNdlmwSH7lPJpGE3WqlmUQKfx3w1bzzCrGWDEctuJAP7jmsjEgEGNDaDiH8VeKG dZkfyc7 Received-SPF: none client-ip=212.227.126.131; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller We don't emulate a preemptive kernel on this level, and the hppa architecture doesn't allow context switches on the gateway page. So we always have to return to sc_iaoq[] and not to gr[31]. This fixes the remaining random segfaults which still occured. Signed-off-by: Helge Deller Message-Id: <20220924114501.21767-8-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/hppa/signal.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c index 396e310dc92d..f253a1586461 100644 --- a/linux-user/hppa/signal.c +++ b/linux-user/hppa/signal.c @@ -49,23 +49,13 @@ struct target_rt_sigframe { static void setup_sigcontext(struct target_sigcontext *sc, CPUArchState *env) { - int flags = 0; int i; - /* ??? if on_sig_stack, flags |= 1 (PARISC_SC_FLAG_ONSTACK). */ - - if (env->iaoq_f < TARGET_PAGE_SIZE) { - /* In the gateway page, executing a syscall. */ - flags |= 2; /* PARISC_SC_FLAG_IN_SYSCALL */ - __put_user(env->gr[31], &sc->sc_iaoq[0]); - __put_user(env->gr[31] + 4, &sc->sc_iaoq[1]); - } else { - __put_user(env->iaoq_f, &sc->sc_iaoq[0]); - __put_user(env->iaoq_b, &sc->sc_iaoq[1]); - } + __put_user(env->iaoq_f, &sc->sc_iaoq[0]); + __put_user(env->iaoq_b, &sc->sc_iaoq[1]); __put_user(0, &sc->sc_iasq[0]); __put_user(0, &sc->sc_iasq[1]); - __put_user(flags, &sc->sc_flags); + __put_user(0, &sc->sc_flags); __put_user(cpu_hppa_get_psw(env), &sc->sc_gr[0]); for (i = 1; i < 32; ++i) { From patchwork Wed Sep 28 20:27:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684125 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8G05YBqz1ypH for ; Thu, 29 Sep 2022 07:07:35 +1000 (AEST) Received: from localhost ([::1]:35784 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeHD-0000j1-Vq for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:07:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37026) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf7-0000nT-PA for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:46113) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf5-0006Z7-KV for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M1YtP-1ogeb041sJ-0039yz; Wed, 28 Sep 2022 22:27:58 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: fanwenjie , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Laurent Vivier Subject: [PULL 25/37] linux-user: fix bug about missing signum convert of sigqueue Date: Wed, 28 Sep 2022 22:27:25 +0200 Message-Id: <20220928202737.793171-26-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:s5SAW0hs2SybUInGuPJA1fbqKcvhWzjEVdsnvqmOTXiT+n0dtX7 fsZaFCu8Yx2FPGKuxNdcb8H/0FU39G4M9wwjVvX2Ez+FlylZ4YUEiqn9wl/7adV+q0IuAOW ASarrUf8eApowYByfbQskM8EVMAOu+k3JPVBjc4GCNu/9+3hpC78jYVSzc8kVvRFAlkqt0b KOUtS1UNVVakaD+8lCFmQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:H5dY6hbiJP8=:npkvyoQKKaHZBnC3GsOA64 xq0YFh8jfMpUSJ5eiV7Tjj6lO2dNNxenpdp/KzPWE6EQBSE5coybKSMSn3o7sTMpYriBiXIVT GjSEEE7EBmz2HypmOsmFgC0fTrTGYes6cFZ+gR8PuO3wldyUv0R6jE4FIFs25n38g/ERbIlYf JvS/04q9EKhBaD6YuDGujMLE0DvSaJDc6jpaVo5531V0wPSrFdQWOCk3TW3VwaTDrJAaqfR2O 9ap/WUHu+a4V684WiCEIynLX/mHNXZEAwCezHI1TnohZAo/FECwnucXFRbbqi3/CFc0zpR8n5 mAFcIj19bb9tAk81M8SkLOB0uxkthgm1LJyXVCg4BZ3t3Z1E1BM6yTOiub2N50MOo9VSHT9Jq X626fjcxpRqW64FivYJEqtPANby2OITIusrrtyLBqaQpm6EfBUIzG/+CeLzGD50Q+DH3HI8v2 vbC6eUWFgIeJzD1lNyXWDTD/ykCVomNV57qwltlNP7KyK1B0+9/p+0XykPhdaStG/8P8AN7Hb rhNLbfFUPB15KoUwmehra98Tl8feG1puKmqLOJKt1An+LRghiyxzoYrhLZADdmiTUXcB9/6Mu g0m1V9H/WfEwH0Y3tZGTDDHO/pJApiw2CahgPDbSUgudPhETLcq0Z22ls5NXc2fmTyRt3bZrE wTM++PujtYWIEgrMLygEuwz3p6QldXafklwwdnIC0xIJIbUwsnvlKrp1aI1zrHN5I5Ju2xPT4 GmAxfaUZAKFL94ehQnZoIk8Q7RkgB7EAeKNvH+lYjZSNJrfg8hFi14Ujt8It7qMV9MmzJgHW4 FgZVG49 Received-SPF: none client-ip=212.227.126.134; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: fanwenjie Fixes: 66fb9763af ("basic signal handling") Fixes: cf8b8bfc50 ("linux-user: add support for rt_tgsigqueueinfo() system call") Signed-off-by: fanwenjie Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index f87b36b2491f..54b29f3b406a 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9728,7 +9728,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, } target_to_host_siginfo(&uinfo, p); unlock_user(p, arg3, 0); - ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo)); + ret = get_errno(sys_rt_sigqueueinfo(arg1, target_to_host_signal(arg2), &uinfo)); } return ret; case TARGET_NR_rt_tgsigqueueinfo: @@ -9741,7 +9741,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, } target_to_host_siginfo(&uinfo, p); unlock_user(p, arg4, 0); - ret = get_errno(sys_rt_tgsigqueueinfo(arg1, arg2, arg3, &uinfo)); + ret = get_errno(sys_rt_tgsigqueueinfo(arg1, arg2, target_to_host_signal(arg3), &uinfo)); } return ret; #ifdef TARGET_NR_sigreturn From patchwork Wed Sep 28 20:27:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684087 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7yF5Kg4z1ypH for ; Thu, 29 Sep 2022 06:53:57 +1000 (AEST) Received: from localhost ([::1]:40446 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode43-0005hi-El for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:53:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf1-0000Qo-BA for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:03 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:60277) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddez-0006WM-Ip for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:03 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M7am5-1oacSJ2MzF-0085OZ; Wed, 28 Sep 2022 22:27:58 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Peter Maydell , Jon Alduan , Laurent Vivier Subject: [PULL 26/37] linux-user: Don't assume 0 is not a valid host timer_t value Date: Wed, 28 Sep 2022 22:27:26 +0200 Message-Id: <20220928202737.793171-27-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:d0MrNzFRlhOdVfypNKkFitcF4YU1Y03IDUrK9VzxoFo39+aDiGu h35Mmo6dx8QqbtVPyGbkbM76Q75e6bD9xi7GmtO9YCSsKVlIVnmKGuCzrtKW7IU11lM9eGP RNIe+FyeZGXmu1qOMgHMjmlgcLNDlxDfPIvWVlVsdEFSRQAN+4h3JS7Yair452Vei+mnJAh pi17WHv70hKoFc7IBHX2A== X-UI-Out-Filterresults: notjunk:1;V03:K0:YAvLgBDKtRQ=:trvDAzaxeCI0LIO3SJy/1Z 5ch1fNVpADcikPEZT6kUkcTPXyY8j2u09QG4Z7viC+p9Jgm119xEzKj2fG8KY5Ld5SbIaotk0 tRdZOPfZRC01IAOu425BQzWnO+clO1eHFdgGpsbkML8ZR59iQSdXWwg40QQEbeC91OsMwgM0g c31MNhJJENIdo42OnHnzXYud1arrJJZTe51j4HLycWveIAZOp62AY3B8xzvjHuEjpfLJY1Ma4 sy33XYszirkbPPW7DN7Dt3zCn2/XFtun4yVqOG8qk9l2BegpS/YYzB/3Vn+hubCKT12/ull8x qYK4Sdx7fK4YhmeFW1k2f9rU1NP2sVkaen+iL5AcsEL+9v3D0A3WpSOGHc6z+jDnddxEG+giK 1uSZlzgXvqEqtBZeoXm+kgzHEcJ6j7/AHeRLDKSlCQ6NiDW8m9jxvGFTlPuZ3zMfT0LoYORsD K9p5JvlsmsNZgjZTic9ceqPkKvfF4610+WPjWJpBvI9mh6b3MRpXJ/F9fYcCGFvApGy6QbJuD CtHjMsXXxc0cKw1U76eWp38mgnNnWpCtv56jiDDckYkdeOkPYZvavI4O8qtlMt5gj3mlENxAQ +g+XgJnaf86OmEuwCZyqab7pQrTBQYF3XAQ30OOQIrD5atqoA2+HexKmKktALpMOc1+n+Gy0Q xD85Gj3RL7bNnkLQ39rnyHqbOmBEDhLybjTmDlZGfFRnZXcO5GxR81nOSr/9/RknTOGkndpWj e/6gWJ5GcF80nSUwUtZtTRK4kBjqRuY8G/TJiY91kojLl0i5rWba5/x5TAhoQxGVYwdI59SDK pyRMZMH Received-SPF: none client-ip=212.227.126.131; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell For handling guest POSIX timers, we currently use an array g_posix_timers[], whose entries are a host timer_t value, or 0 for "this slot is unused". When the guest calls the timer_create syscall we look through the array for a slot containing 0, and use that for the new timer. This scheme assumes that host timer_t values can never be zero. This is unfortunately not a valid assumption -- for some host libc versions, timer_t values are simply indexes starting at 0. When using this kind of host libc, the effect is that the first and second timers end up sharing a slot, and so when the guest tries to operate on the first timer it changes the second timer instead. Rework the timer allocation code, so that: * the 'slot in use' indication uses a separate array from the host timer_t array * we grab the free slot atomically, to avoid races when multiple threads call timer_create simultaneously * releasing an allocated slot is abstracted out into a new free_host_timer_slot() function called in the correct places This fixes: * problems on hosts where timer_t 0 is valid * the FIXME in next_free_host_timer() about locking * bugs in the error paths in timer_create where we forgot to release the slot we grabbed, or forgot to free the host timer Reported-by: Jon Alduan Signed-off-by: Peter Maydell Message-Id: <20220725110035.1273441-1-peter.maydell@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 54b29f3b406a..e0e0f058121f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -525,20 +525,25 @@ _syscall4(int, sys_prlimit64, pid_t, pid, int, resource, #if defined(TARGET_NR_timer_create) /* Maximum of 32 active POSIX timers allowed at any one time. */ -static timer_t g_posix_timers[32] = { 0, } ; +#define GUEST_TIMER_MAX 32 +static timer_t g_posix_timers[GUEST_TIMER_MAX]; +static int g_posix_timer_allocated[GUEST_TIMER_MAX]; static inline int next_free_host_timer(void) { - int k ; - /* FIXME: Does finding the next free slot require a lock? */ - for (k = 0; k < ARRAY_SIZE(g_posix_timers); k++) { - if (g_posix_timers[k] == 0) { - g_posix_timers[k] = (timer_t) 1; + int k; + for (k = 0; k < ARRAY_SIZE(g_posix_timer_allocated); k++) { + if (qatomic_xchg(g_posix_timer_allocated + k, 1) == 0) { return k; } } return -1; } + +static inline void free_host_timer_slot(int id) +{ + qatomic_store_release(g_posix_timer_allocated + id, 0); +} #endif static inline int host_to_target_errno(int host_errno) @@ -12896,15 +12901,18 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, phost_sevp = &host_sevp; ret = target_to_host_sigevent(phost_sevp, arg2); if (ret != 0) { + free_host_timer_slot(timer_index); return ret; } } ret = get_errno(timer_create(clkid, phost_sevp, phtimer)); if (ret) { - phtimer = NULL; + free_host_timer_slot(timer_index); } else { if (put_user(TIMER_MAGIC | timer_index, arg3, target_timer_t)) { + timer_delete(*phtimer); + free_host_timer_slot(timer_index); return -TARGET_EFAULT; } } @@ -13040,7 +13048,7 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, } else { timer_t htimer = g_posix_timers[timerid]; ret = get_errno(timer_delete(htimer)); - g_posix_timers[timerid] = 0; + free_host_timer_slot(timerid); } return ret; } From patchwork Wed Sep 28 20:27:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684090 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md82G6VqFz1yql for ; Thu, 29 Sep 2022 06:57:26 +1000 (AEST) Received: from localhost ([::1]:49202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ode7Q-0002xI-QE for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:57:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33374) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf3-0000Xr-AH for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:05 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:54091) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf1-0006XZ-QG for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:05 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MsqMq-1pWYf10ZLc-00tCN8; Wed, 28 Sep 2022 22:27:59 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , Laurent Vivier Subject: [PULL 27/37] linux-user/s390x: Save/restore fpc when handling a signal Date: Wed, 28 Sep 2022 22:27:27 +0200 Message-Id: <20220928202737.793171-28-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:jnnsk/uMhUG3yUw3SRxgr2/ekcHwOPllFlejO+8EvoL5fEl6yOx y9N0+ClfirnJPisjGcdv3aad9k00M/WY/pxLMxmHniX8kz0OxZaaVTMCQA2URHdzUMajw4F WCxM2o4/1xA9Oe8eg4ZpJnwD4s+919kzVUif7Q+TNO99KViCf7GkUx1Jdc3qMluDJ9DPP7U K9f1M/+Ds9X5MxGx3iyUQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:zjCLBIb8sGc=:TqJETjaSMAta6NE+QxUPEw rnJGUJgp0hZJQamOjSWvMSmYfxBoMdYl6+fro5Od5joN6x4DC8LXIj33d2A/IxVtLKht+nzvQ D0/N1ocnttUGg4DeZyqvxtuc5IPB1cziJWJ00EEBtjfCFoL3c/NBjVRd5oSfq5bFykVx0r1Ae 9aZRDTw/lRjdCRF6cstE+PP/i4+A9wtelKHuoaVFSZldIKiq2DOjyu3V4vu0ARCoUPFg/mlrE LUslaNE1LVwOFLtNe7lswyUDFaI1dfIx/TL7vy4ZdTYClT+cn9NOZEnUDDCSzUa7TjOPmgoNm dm7ab/WMZ+A/7rlXPPZyksbWtBlFYp/9TO+Reav8bzxugZiFU1GFM970d7e44xmhT+1CGzvUm e4ebXKPeP6bcECljpvqH6wsWpavZ8QMK4g5lxP+wzJnEm9x4q2pRFYChsDX2y1m1HypA7YX55 IZhmfMtEmq+FV7Y4iFrvgO9fs4Zj3hR95ubYsHw8dqE3pk0h90mXhicXv6yMUsKkB2JCXiUL+ wgFpGkFvXRl5BhmXTUOQufPFc4+K9LRpiGS/tH3SK5+5UrmaDrn7E/v58OkK9+mAY/mv4cDZ4 G8VaqVZOqC22bb9LAb57FTbjeHqkGwVJXmLzZalrtzdZtujZPGpTdTwAblICjmLkG//sVnkeC FkyHTFoKDMpTOFVxGSVx0Urnu2urYwMImMYK7LVwbbAb5+vW1ng9vzGSnqOQPcudnZ3mDFY4D dQ4Ed9Jo5Y77C6fMoa5cldsAI/mkOrCOO6ytgYwfc8zLsONtD1FTX0f7TqboQUGJF+dm6o6UA 6YgIMiH Received-SPF: none client-ip=212.227.126.187; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Ilya Leoshkevich Linux kernel does this in fpregs_store() and fpregs_load(), so qemu-user should do this as well. Found by running valgrind's none/tests/s390x/test_sig. Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20220817123902.585623-1-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 4979c4b01791..f72165576f3b 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -146,6 +146,7 @@ static void save_sigregs(CPUS390XState *env, target_sigregs *sregs) * We have to store the fp registers to current->thread.fp_regs * to merge them with the emulated registers. */ + __put_user(env->fpc, &sregs->fpregs.fpc); for (i = 0; i < 16; i++) { __put_user(*get_freg(env, i), &sregs->fpregs.fprs[i]); } @@ -331,6 +332,7 @@ static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) for (i = 0; i < 16; i++) { __get_user(env->aregs[i], &sc->regs.acrs[i]); } + __get_user(env->fpc, &sc->fpregs.fpc); for (i = 0; i < 16; i++) { __get_user(*get_freg(env, i), &sc->fpregs.fprs[i]); } From patchwork Wed Sep 28 20:27:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684066 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7j90VmXz1yql for ; Thu, 29 Sep 2022 06:42:37 +1000 (AEST) Received: from localhost ([::1]:32836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddt4-0000mc-SP for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:42:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf6-0000im-M8 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:34877) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0006Yc-TX for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MC2k1-1oWAUH0AKj-00CT7n; Wed, 28 Sep 2022 22:28:00 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Jiaxun Yang , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Laurent Vivier Subject: [PULL 28/37] linux-user: Introduce stubs for ELF AT_BASE_PLATFORM Date: Wed, 28 Sep 2022 22:27:28 +0200 Message-Id: <20220928202737.793171-29-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:/OO4VLwqwiO6rIelA5yLyGkMsge4uIk39rEbm/fg+RnW5TJt6ZQ qsNEkiNarMRzQcnLdHEZ+rZeX6XBLjysSbyD1nHMPGPDD6d6KTLwvHd40bdUj+IlfG5xYdk oW+TlEzYkpT5GaKsf0M4g582Kh+lGEQNnVnynG/83RwJ08QiXdOAiCqhf1r5KN/ztwnGohe RdI6LSXHfvqKQSHG2X4wg== X-UI-Out-Filterresults: notjunk:1;V03:K0:00sLbt8MqHA=:wNpFdlkTQkSUTZ9AbsXmiL bioJYG9u1B+pmICMEJEzN+IBbbMURsnS13Dvoms5QaiSm+LWEGh4aica5xUBTCH81ZaHYaKKs CzBWIeMv5izkPP0LYNHRi0YkNXm09ygYqCYVEwAIif9qILUbai92/yYUbEsAhFvA0Fkd1jT2P XSFVQ2Ikm1l1k5sBd0+AJ0oguZR+JOrmR8wHl+Z9PTo24KOpdBCVg7E4mA46eqnWm0GCDL6hX o9emNyqlt5QY3aX/ualS+PUovWRLzAd6NmfoAKSAq7GXUGCZReexCCQ1QUXltE3ABIremxVhL l9rZhV8gNAE/bjvzO8ZJGVF3zSjHZOcJ7pR2URGHrM/eP8ogigm/6EJKieD5RuZ3lriYsDCbq yKZ1Hz0Ixncfg+mkOqh9/LsSW7fJyeC5fC84aWhXbjsns0wyRqn2zN/T4grriuD29WHpyUB88 TiDkJNX2BOrhIe0ggyT78ojrC2DeaJn959PDpOrPcNbUkHOlk2ooBvsSNiiWAMp4DmCgBbaJd RARkAyx2VKBFAmpw7V67ZOVNktmGeUjP+TaWBxzLIGqXl1PVikV4nZoUMR8AHbl3DMnIkqfcB itZ4BVBKT7UW6/B1dIqCO4/YpO6LTi9o6g29GW2ySMYPoiNSvF7N5AWm4QaLHnahMoBYFrfh/ rv1hPINfLAQYZ04dnanZN9M6lBK9Cbc8zlaMNgORDI7+/3l0XU2DRGFVFqmb5kW/Douw7Jvlv fpOATiq0e58IQRxqDpONw1h+GbnnW9u8PEw+sUFYP5QwQ6vv2HsBdqjwG2it4wba+zUFRO1Sl JZA4Nqh Received-SPF: none client-ip=212.227.126.187; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Jiaxun Yang AT_BASE_PLATFORM is a elf auxiliary vector pointing to a string to pass some architecture information. See getauxval(3) man-page. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20220803103009.95972-2-jiaxun.yang@flygoat.com> Signed-off-by: Laurent Vivier --- linux-user/elfload.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index c7e3f1d47c16..581fbc858b48 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1776,6 +1776,10 @@ static inline void init_thread(struct target_pt_regs *regs, #endif /* TARGET_HEXAGON */ +#ifndef ELF_BASE_PLATFORM +#define ELF_BASE_PLATFORM (NULL) +#endif + #ifndef ELF_PLATFORM #define ELF_PLATFORM (NULL) #endif @@ -2220,8 +2224,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc, int i; abi_ulong u_rand_bytes; uint8_t k_rand_bytes[16]; - abi_ulong u_platform; - const char *k_platform; + abi_ulong u_platform, u_base_platform; + const char *k_platform, *k_base_platform; const int n = sizeof(elf_addr_t); sp = p; @@ -2243,6 +2247,22 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc, } } + u_base_platform = 0; + k_base_platform = ELF_BASE_PLATFORM; + if (k_base_platform) { + size_t len = strlen(k_base_platform) + 1; + if (STACK_GROWS_DOWN) { + sp -= (len + n - 1) & ~(n - 1); + u_base_platform = sp; + /* FIXME - check return value of memcpy_to_target() for failure */ + memcpy_to_target(sp, k_base_platform, len); + } else { + memcpy_to_target(sp, k_base_platform, len); + u_base_platform = sp; + sp += len + 1; + } + } + u_platform = 0; k_platform = ELF_PLATFORM; if (k_platform) { @@ -2284,6 +2304,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc, } size = (DLINFO_ITEMS + 1) * 2; + if (k_base_platform) + size += 2; if (k_platform) size += 2; #ifdef DLINFO_ARCH_ITEMS @@ -2361,6 +2383,9 @@ static abi_ulong create_elf_tables(abi_ulong p, int argc, int envc, NEW_AUX_ENT(AT_HWCAP2, (abi_ulong) ELF_HWCAP2); #endif + if (u_base_platform) { + NEW_AUX_ENT(AT_BASE_PLATFORM, u_base_platform); + } if (u_platform) { NEW_AUX_ENT(AT_PLATFORM, u_platform); } From patchwork Wed Sep 28 20:27:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684078 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md7pg0lL4z1yqS for ; Thu, 29 Sep 2022 06:47:23 +1000 (AEST) Received: from localhost ([::1]:33734 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oddxg-0006zW-V9 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 16:47:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37024) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf7-0000nQ-Oc for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:49503) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf5-0006Yz-J7 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MGzDv-1oRFKd3BTP-00E6DR; Wed, 28 Sep 2022 22:28:00 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Jiaxun Yang , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?q?=C3=A9?= , Laurent Vivier Subject: [PULL 29/37] linux-user: Set ELF_BASE_PLATFORM for MIPS Date: Wed, 28 Sep 2022 22:27:29 +0200 Message-Id: <20220928202737.793171-30-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:BaP8I+9To0VdoUT6VN1UoFC/nE8UF9sN4LEoPrLUsaDNazfjA/Z PvvcfD64krJFGYfcO8LsUqoG4uSskmDko0HbktlY9RhFFE0ThCF0moq9PfAO/lCoj491iZb 6+ddaMQZKWOV2Q7IwoiHdLVtolcxqd2KVm41NUjxs6OrXzjXRCu+VYa9z2mmFjp8GYKe2D1 kNPOUBhM/ltUHQpJmnpjw== X-UI-Out-Filterresults: notjunk:1;V03:K0:T53Ly6S6kx0=:CGvUBBRa5SBztbivxnfyJX SMlrg2yVReyzlg+uXtX9IbNmwk+upa8LI6fvarxQ87flpuWf181gmY+EPG0AxgSrtuDUgDs6d aWBqYfEpNb2SKYyLUXhTrnTNLLfyhp+hSl4twu5seRCo8J+lp7fi5sZsDl8HssMhqA+H9X8g9 vsqjPXVEMmin6LaKRdB/0XPlAZQJzOJKXdKeRhqbkSBzzeq8fdZdAGNMoVPwKoJBKY5x9NlWS NiaiSddVDhXTQZDWJmd3DGNrDDCZV34NyHdEug5P521ddCdisx+388KcsJ8HFBbsMql3xvvE8 93tm2UNsg4FIDua+IBIAFwnKuhSpge5vafKQ9dztk/HBDhFgO0crX1y1j0gTT0e61g2N0gQxl g3aZ0/ZajLDDnzMeNscNh/Cyri7pCVCPTdh2xsxUbzfdmjuT1Tl7YX5FRLeKPl2g0SDtV1+4G zoube5Zm1Ozqt76gzvfDaxA4ZaQ2Fx+82jORYwh6tUZ2Jk00GHepHFlZHEEfn8nX81gvsHA7A WLoaLHNW6R9TMH3CAG/GE6vJBlj4PNQTd/jdMARp9e9gK+ni9xanXtO6IRBR8zfVDUuWA7BB5 tsngYeqtpMix0n1kQ72ddgMFyOvDRDJ9os9UUe5TwsY6QTUpaK1IuDgnXY0u5SFphZ/vfhiRE iFWVjy6PksK1yPUBsJVSrH1w7KMGVA55CgWhm7WuN+cru6KRT2iOj/emkHhTyUctQ7o2QYEOY uHp76xls4m6/kDUCrKIc5kTIPE50PpSGVBa+NXvk436/67U+7PTJr08ad1YWNK3i2ZRbUL8YO tO0Ta3w Received-SPF: none client-ip=212.227.126.130; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Jiaxun Yang Match most appropriate base platform string based on insn_flags. Logic is aligned with aligned with set_isa() from arch/mips/kernel/cpu-probe.c in Linux kernel. Signed-off-by: Jiaxun Yang Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20220803103009.95972-3-jiaxun.yang@flygoat.com> Signed-off-by: Laurent Vivier --- linux-user/elfload.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 581fbc858b48..20894b633f58 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1080,6 +1080,37 @@ static uint32_t get_elf_hwcap(void) #define elf_check_abi(x) (!((x) & EF_MIPS_ABI2)) #endif +#define ELF_BASE_PLATFORM get_elf_base_platform() + +#define MATCH_PLATFORM_INSN(_flags, _base_platform) \ + do { if ((cpu->env.insn_flags & (_flags)) == _flags) \ + { return _base_platform; } } while (0) + +static const char *get_elf_base_platform(void) +{ + MIPSCPU *cpu = MIPS_CPU(thread_cpu); + + /* 64 bit ISAs goes first */ + MATCH_PLATFORM_INSN(CPU_MIPS64R6, "mips64r6"); + MATCH_PLATFORM_INSN(CPU_MIPS64R5, "mips64r5"); + MATCH_PLATFORM_INSN(CPU_MIPS64R2, "mips64r2"); + MATCH_PLATFORM_INSN(CPU_MIPS64R1, "mips64"); + MATCH_PLATFORM_INSN(CPU_MIPS5, "mips5"); + MATCH_PLATFORM_INSN(CPU_MIPS4, "mips4"); + MATCH_PLATFORM_INSN(CPU_MIPS3, "mips3"); + + /* 32 bit ISAs */ + MATCH_PLATFORM_INSN(CPU_MIPS32R6, "mips32r6"); + MATCH_PLATFORM_INSN(CPU_MIPS32R5, "mips32r5"); + MATCH_PLATFORM_INSN(CPU_MIPS32R2, "mips32r2"); + MATCH_PLATFORM_INSN(CPU_MIPS32R1, "mips32"); + MATCH_PLATFORM_INSN(CPU_MIPS2, "mips2"); + + /* Fallback */ + return "mips"; +} +#undef MATCH_PLATFORM_INSN + static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { From patchwork Wed Sep 28 20:27:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684126 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8G26FNrz1ypH for ; Thu, 29 Sep 2022 07:07:38 +1000 (AEST) Received: from localhost ([::1]:35786 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeHI-0000uQ-21 for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:07:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33372) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf3-0000XW-3l for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:05 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:37061) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf1-0006XU-Bi for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:04 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MYvse-1oi5cv1L4i-00Unr0; Wed, 28 Sep 2022 22:28:01 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 30/37] linux-user: Combine do_futex and do_futex_time64 Date: Wed, 28 Sep 2022 22:27:30 +0200 Message-Id: <20220928202737.793171-31-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:JzmsyS0Y7f03zx4SXYAFTBAFPn3GbPokU4K6X5Rhijd2sQXthY2 JPo3VSh+bzfg/QHrtxTJWqNxrvKqR39KRowWuFywsEpVRqR84HI8of2nFnsVuy3I5Zh7RNB 9pfKOuOTUyvbrmgLT1F2WKC9bIPImxUQuHTLbjeXXSfiHwia93tiseUOZwyNESUOF25gzuz n/U4Eid94ZpaREIVy5pVQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:xAdfGUoZHNQ=:bYPt78or1+RyMfd5MOLPns BnWJgZFBHyEoHfbAXAVN0UJ+wBOFbIGya3G/jG45HcKez+UlHkSiEnq07Ed3RmYEP46li/UUy woxbUHwfbeROjOBEoNO7pxO34nZmMLaZTRv84AnJqPsuZVsaRJg/EdEfrPj+/mOEKodC76/Al 2wyLG/mzR2QAW2upnG3AtpWC9KMQ6G0QjBm58SoRz3HSMaNIjqGz9zz/IkRAazZ2NMqeqgFs+ Jzrh2f5uxHGu8cyeOFGB77yo2yrT0TuPT+cXdxksFLMIZgzS7/BGHM930tol13Skh3y8b0AoG DvNwRGoIdOS93uyymNAaWks2nSBqrIYDIeytS0wSO4g+5lNgoHxB7/ZZPj2J3bHWViiWNFrn/ OUzIyboG+9OH1jVC0+L/R8GHcjMg1O9khAkf0q8jZl1cG4DukvYNwpSlxGtAyM4e38fkrr6QP eenDv4pCfL84Wr/C1uVuwCnEABtwp4acJhnrIIBD6sBpKrFYfaRgr8PGE65kBNAFRiD1/a8MZ 77OqNJ2EyPr7d3ZfQ8uFtWC8YY4iX076KHHXPh+gUsMyRDR80FwytRJXBh43WGAMJrRMbYFTc 8PB6sUgjDPEECn+w7HwiVE+jXWPY83T7DiQ+1Qv0le/DtrZTwc3snKStneD5bp0yyN0KTPPzn W8Bo0Pc7JmB1+Fv4/kPww5cwqWAxPuy3MRcSmDCl0DKnGR9HEsTc9gBS3nVz8z8lrtiuoefHx wuO4IMdNUkXv56ycst+3/FcFGe0wXAr2TOD+eGpDqmMFsA+NNCsnTclO6VsXuo5XgMZc2nca1 t2bYEZW Received-SPF: none client-ip=212.227.126.187; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Pass a boolean to select between time32 and time64. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 67 ++++++++------------------------------------ 1 file changed, 11 insertions(+), 56 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e0e0f058121f..af3a605fc458 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7768,9 +7768,10 @@ static int do_safe_futex(int *uaddr, int op, int val, futexes locally would make futexes shared between multiple processes tricky. However they're probably useless because guest atomic operations won't work either. */ -#if defined(TARGET_NR_futex) -static int do_futex(CPUState *cpu, target_ulong uaddr, int op, int val, - target_ulong timeout, target_ulong uaddr2, int val3) +#if defined(TARGET_NR_futex) || defined(TARGET_NR_futex_time64) +static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, + int op, int val, target_ulong timeout, + target_ulong uaddr2, int val3) { struct timespec ts, *pts; int base_op; @@ -7787,7 +7788,11 @@ static int do_futex(CPUState *cpu, target_ulong uaddr, int op, int val, case FUTEX_WAIT_BITSET: if (timeout) { pts = &ts; - target_to_host_timespec(pts, timeout); + if (time64 + ? target_to_host_timespec64(pts, timeout) + : target_to_host_timespec(pts, timeout)) { + return -TARGET_EFAULT; + } } else { pts = NULL; } @@ -7817,56 +7822,6 @@ static int do_futex(CPUState *cpu, target_ulong uaddr, int op, int val, } #endif -#if defined(TARGET_NR_futex_time64) -static int do_futex_time64(CPUState *cpu, target_ulong uaddr, int op, - int val, target_ulong timeout, - target_ulong uaddr2, int val3) -{ - struct timespec ts, *pts; - int base_op; - - /* ??? We assume FUTEX_* constants are the same on both host - and target. */ -#ifdef FUTEX_CMD_MASK - base_op = op & FUTEX_CMD_MASK; -#else - base_op = op; -#endif - switch (base_op) { - case FUTEX_WAIT: - case FUTEX_WAIT_BITSET: - if (timeout) { - pts = &ts; - if (target_to_host_timespec64(pts, timeout)) { - return -TARGET_EFAULT; - } - } else { - pts = NULL; - } - return do_safe_futex(g2h(cpu, uaddr), op, - tswap32(val), pts, NULL, val3); - case FUTEX_WAKE: - return do_safe_futex(g2h(cpu, uaddr), op, val, NULL, NULL, 0); - case FUTEX_FD: - return do_safe_futex(g2h(cpu, uaddr), op, val, NULL, NULL, 0); - case FUTEX_REQUEUE: - case FUTEX_CMP_REQUEUE: - case FUTEX_WAKE_OP: - /* For FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, and FUTEX_WAKE_OP, the - TIMEOUT parameter is interpreted as a uint32_t by the kernel. - But the prototype takes a `struct timespec *'; insert casts - to satisfy the compiler. We do not need to tswap TIMEOUT - since it's not compared to guest memory. */ - pts = (struct timespec *)(uintptr_t) timeout; - return do_safe_futex(g2h(cpu, uaddr), op, val, pts, g2h(cpu, uaddr2), - (base_op == FUTEX_CMP_REQUEUE - ? tswap32(val3) : val3)); - default: - return -TARGET_ENOSYS; - } -} -#endif - #if defined(TARGET_NR_name_to_handle_at) && defined(CONFIG_OPEN_BY_HANDLE) static abi_long do_name_to_handle_at(abi_long dirfd, abi_long pathname, abi_long handle, abi_long mount_id, @@ -12372,11 +12327,11 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, #endif #ifdef TARGET_NR_futex case TARGET_NR_futex: - return do_futex(cpu, arg1, arg2, arg3, arg4, arg5, arg6); + return do_futex(cpu, false, arg1, arg2, arg3, arg4, arg5, arg6); #endif #ifdef TARGET_NR_futex_time64 case TARGET_NR_futex_time64: - return do_futex_time64(cpu, arg1, arg2, arg3, arg4, arg5, arg6); + return do_futex(cpu, true, arg1, arg2, arg3, arg4, arg5, arg6); #endif #ifdef CONFIG_INOTIFY #if defined(TARGET_NR_inotify_init) From patchwork Wed Sep 28 20:27:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684099 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8800Pl0z1yqS for ; Thu, 29 Sep 2022 07:02:22 +1000 (AEST) Received: from localhost ([::1]:46138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeCB-0000tZ-6Z for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:02:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37012) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0000bS-Nt for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:45253) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf2-0006Xe-2G for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M7JnA-1oaLL348L6-007oPe; Wed, 28 Sep 2022 22:28:02 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 31/37] linux-user: Sink call to do_safe_futex Date: Wed, 28 Sep 2022 22:27:31 +0200 Message-Id: <20220928202737.793171-32-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:3Dsd8htV0Ts3QTvlCwAirljX2/FKlMrweXRllB2x8razXLD97+P tKSyEzY6naVsL7/VsZ1ql8zjfm5WtW7TPIlNXAAeyGXSWNu8MQhpbEQnyWNX2sZYDazTjLQ WdD/nWrjUC15bn6vhauj3wyVV7z69ZomCf/2VnaLBVegOtpwxZRm7OZXPxL6Uh0e3mrvhZN VP1lDkley9Ihi2bUkgRSg== X-UI-Out-Filterresults: notjunk:1;V03:K0:FKcYcn75Hsg=:Fo1Oq4HggXlxH7Ip9m7M1R lcAooG2HB7jze0gAJLzE3M4yuiCIuPxrC4DA5I51mjmOjak5gFphE/LCzthwwyx81xaJhJJ0n iIc+/1RmOSU0f2t2p3M7urp+AByYGJiRD0wE1GCMDQaWrUrkKpHudO2abYlVy+aC2ReT5cRq1 JqayIhIrDmJsjKKNdkukQHSeLn01jOL8i31EnKFT9rUEQ7eNzAUvRnL3hN4SGrXk46n2z49SP hNUSM46WZcMIPKtWuHKhnU6AOlq5n6gNrEhj+3KoK/mGlTUEy0kItYywiCvRa2tTlRdZ0C+DI wV68My3hdhZfWYddG6e6O3shOJquCOu7s96hO0bN04HcayPNVp8JNzKZr2bYD0oY4dbbznXMy qRTiAg/PBIrB0xlLXGwah6xsdL4g7BJqEu9ce7o/GpF6WtY3Mn+d/7s8b+yxvRANPVdwObH7l BocAS1A2Fz6t1ooWAHtKmYu23+cL7O6qnCS5hkKx5tXJSBZ/xizmmpxoHYOvVwN8QWVhisXPW 4wpFud7BQIX6gBxgXORrAOzeV5sLh7jGeBq1ZzQRCOAvAl7vdrUOjybpdXgjmvDgBgEn9Ap2b v/LiDsj+LrFVJE5l9NjybJDrR9InB7rcUrf2fJ0i+k5QzMdxJNK2+jUssmhblO+cWH1zOXtCs zFVRNzknyMGmnTU8vahogi3xoajLNGoFAaWmGgB2xrN8Kwb5A2ikhkgxjUdxVrty0fZGhiefE Lmx/+OqhcFEmt5C1EzTAREqvX5SKt5TlYXhDCY8fiwEaUJMWoAsl7xQkep3xl6NPoQssKjRau lwF9Wxz Received-SPF: none client-ip=212.227.126.130; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Leave only the argument adjustments within the shift, and sink the actual syscall to the end. Sink the timespec conversion as well, as there will be more users. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 60 +++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index af3a605fc458..17e17f480456 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7773,11 +7773,11 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, int op, int val, target_ulong timeout, target_ulong uaddr2, int val3) { - struct timespec ts, *pts; + struct timespec ts, *pts = NULL; + void *haddr2 = NULL; int base_op; - /* ??? We assume FUTEX_* constants are the same on both host - and target. */ + /* We assume FUTEX_* constants are the same on both host and target. */ #ifdef FUTEX_CMD_MASK base_op = op & FUTEX_CMD_MASK; #else @@ -7786,39 +7786,41 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, switch (base_op) { case FUTEX_WAIT: case FUTEX_WAIT_BITSET: - if (timeout) { - pts = &ts; - if (time64 - ? target_to_host_timespec64(pts, timeout) - : target_to_host_timespec(pts, timeout)) { - return -TARGET_EFAULT; - } - } else { - pts = NULL; - } - return do_safe_futex(g2h(cpu, uaddr), - op, tswap32(val), pts, NULL, val3); + val = tswap32(val); + break; case FUTEX_WAKE: - return do_safe_futex(g2h(cpu, uaddr), - op, val, NULL, NULL, 0); + timeout = 0; + break; case FUTEX_FD: - return do_safe_futex(g2h(cpu, uaddr), - op, val, NULL, NULL, 0); - case FUTEX_REQUEUE: + timeout = 0; + break; case FUTEX_CMP_REQUEUE: + val3 = tswap32(val3); + /* fall through */ + case FUTEX_REQUEUE: case FUTEX_WAKE_OP: - /* For FUTEX_REQUEUE, FUTEX_CMP_REQUEUE, and FUTEX_WAKE_OP, the - TIMEOUT parameter is interpreted as a uint32_t by the kernel. - But the prototype takes a `struct timespec *'; insert casts - to satisfy the compiler. We do not need to tswap TIMEOUT - since it's not compared to guest memory. */ - pts = (struct timespec *)(uintptr_t) timeout; - return do_safe_futex(g2h(cpu, uaddr), op, val, pts, g2h(cpu, uaddr2), - (base_op == FUTEX_CMP_REQUEUE - ? tswap32(val3) : val3)); + /* + * For these, the 4th argument is not TIMEOUT, but VAL2. + * But the prototype of do_safe_futex takes a pointer, so + * insert casts to satisfy the compiler. We do not need + * to tswap VAL2 since it's not compared to guest memory. + */ + pts = (struct timespec *)(uintptr_t)timeout; + timeout = 0; + haddr2 = g2h(cpu, uaddr2); + break; default: return -TARGET_ENOSYS; } + if (timeout) { + pts = &ts; + if (time64 + ? target_to_host_timespec64(pts, timeout) + : target_to_host_timespec(pts, timeout)) { + return -TARGET_EFAULT; + } + } + return do_safe_futex(g2h(cpu, uaddr), op, val, pts, haddr2, val3); } #endif From patchwork Wed Sep 28 20:27:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684131 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8MJ07zVz1yql for ; Thu, 29 Sep 2022 07:12:12 +1000 (AEST) Received: from localhost ([::1]:33246 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeLh-0006gP-3w for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:12:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37010) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0000aL-9X for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:37561) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf2-0006Xp-En for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:05 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MRT6b-1oq5yB1gmL-00NPKB; Wed, 28 Sep 2022 22:28:02 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 32/37] linux-user: Implement FUTEX_WAKE_BITSET Date: Wed, 28 Sep 2022 22:27:32 +0200 Message-Id: <20220928202737.793171-33-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:agDZ5w13uWTXRVud1+gyB8UI2xF8y6S1qbUxxTUhx7Qf4H0VeIe INTtSpmrYzmghA+z5CYN21MW+k4t6Luf6+6Jv1MvP8SrVos9hQMV3woJj9tnKRCKkuKOafT xgwbU2+tQ3Dmti60jl/k4mXoiKxn+HtqP4yDq1Zm14q9yGUzItb9igzcJaU8vvnKrPLOf+I DnG1ZqaNrd/gBBpadHb2A== X-UI-Out-Filterresults: notjunk:1;V03:K0:/BeXZgQ+A0M=:1ZTPUsNwlJGTtR6yzmEQ1a zlvzWATXOGFubmUu2vxYDG+V4p7AZ5c3MyhGoGEo3zJwzG7xrHwddkuGktG2GZZuwOHJzKDxp tUF1QlE5cLuiT7ljWsqT48ekWjskYtD0Nl5F7o32H2f/yv90ZHP7K0uXpxNq2nTaJwTO5SBrO 1W3hPeDbx++pNF1tS1cRt+C23PmDEHd0f4p/x/aWzUlAPlJJWH6IEDzqZeo4smzw82NkXKRf6 TcBoEez/2MrsrkBQgYHYtoh5NI7ZKmQWkJRmeKGtLUhb147STprFeOc05IZz9ZX6UuPtsJi/o JW39pga3f1ekUg+LadgWimZLusiKilq3n4VqRqfJhrhjqA6te+jYRzOyIXRnYnICwtMIzofpS 8rq1LTTINDvuP7kkLoCJFKzfZYbBWSoHUqZsnANcfcDzcr8eMsIUBmuW7XQb0z9yAZ9UPv38L QCRpDNzR2EDhcE1TJWENSyCYT72RD4A5559MkEEhKmgypCHHOBeS4S28GUDaORY8oHt9+vxOt ZNVWDL9lTu4MNGyerh8k4pLv5fCyOXJowNOUhRnkifHJMfR6NpHSnXaPP6cjI/nwxRPZ//2Ik oY3M3irP02V9O577e7YgPHi1rvJ+oS7a/clihqaVrbSPj+q1NcNxXPWVKl6mzqYC1TmoVLwIP DQNfJ6SQIuEJSqj1ALB2fYO0stE9NjOnDoT9UWiT5UNnX7dKWjaKSjluY802G4pGW2HLwZxOu wEg/1juswKTQdkjGEv2dC1oEjs5o5dMCW11sYEnhkHmfPFzSKEv21BvZhppmyZmfHcPNoTnS7 AkpCOSj Received-SPF: none client-ip=212.227.126.131; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 17e17f480456..e2b6b564e6cb 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7789,6 +7789,7 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, val = tswap32(val); break; case FUTEX_WAKE: + case FUTEX_WAKE_BITSET: timeout = 0; break; case FUTEX_FD: From patchwork Wed Sep 28 20:27:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684106 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8BC1prkz1yqS for ; Thu, 29 Sep 2022 07:04:19 +1000 (AEST) Received: from localhost ([::1]:38198 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeE4-0004ao-Dx for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:04:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37014) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0000bT-OO for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:36759) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf3-0006Y0-20 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:06 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N8oOk-1pGatp07OA-015mlY; Wed, 28 Sep 2022 22:28:03 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 33/37] linux-user: Convert signal number for FUTEX_FD Date: Wed, 28 Sep 2022 22:27:33 +0200 Message-Id: <20220928202737.793171-34-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:LrQ/4Fa8vgjiL1wbQ8E31IiRFOIh714S5n80a490IYN/Q9sVr0w 8SGRYi+XxfzOZTCwN3D5/+Nh6MT/9isFyCDIivTTwSuJ8CjLV0CqBIlW40gvhV46jlEzaG9 dJ4lAdxLrSUpiIA7DMNsYm6hNZ4HiZk9LqittnjmgMvKcdjR6aIzEWl94z+URvtae3kty27 j2VIvRGEXwINQGMuYGFIA== X-UI-Out-Filterresults: notjunk:1;V03:K0:wz9bXzUcxwc=:asapbxYxPYATZTBfRa6har 6SWslz4A70lnp3BemVDIHfK57UfDIGLSrz/po6cLi9h+Eh1nFTotezUxuOYG6ehOdVMdYLzVL FiRyFlzOJ4amrrI/b1WX6adJIn+JURLIOk/2EAZP0CsAtv/vL7BzfTwnxt2t5sM77smadCSS6 YIpDTeDkk61QSDOg+6pkvH92dzjE3OR46EGj3siezpx0QrZPMa/OWbyt5miVRsDxjS3Bc6ZDp VQFWOvXWZWXUFmMkxbFk8nCE3m6aqgUatgciDYQ7sIoJOFG8lBOfvima+9PNR6PwMebZ6ZtX8 8y/5L/aUAtY+zFJEtJ6SAyaMNZwVpKy652pt3Lic+w+JU4MdoOded0p0z/H67Y7wSJiy/c9Y4 DpTEfZHHGfhiGjs65D6NefMwhIOmP0D+XsLE6y77rkU3mgUud+F22DaJXAz4ZbTCuCQ/Bzwnw yYMN6bBSxcXj5SmrenplZev/ioeHakA8WzuXmuDI07GPxZHmgKIao1IozrLpO0DQSer8MZVc/ BkD4zRfYYS9OtiwcnRELlAm6BbEM52CKQBumM6KGnaDdUheYoX2Y7MGZvS+xjT64qxUK1uQmF T5uZCOh3GAoTpu+EDxWEWZL3IhQQ+13mv4acBR98O5c0LE0FthXnUtSFj7vChUfUt28zgROfK K9ZfPcvoJcOxKGJ1IMpCqxrVWAjo7brdMXoJ+FrEnT9Zeuz0/OggXZE9RdQ74a8zPtgwR7Gvz PB5s0HJ3REATScO5ylmNRknsBrtOYecYySkVwVilnAlgJs/CremLXd8c3QEdK2MOGNjL/K9Is VRhSVL+ Received-SPF: none client-ip=212.227.126.131; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The val argument to FUTEX_FD is a signal number. Convert to match the host, as it will be converted back when the signal is delivered. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e2b6b564e6cb..3f144e3c1f5d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7793,6 +7793,7 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, timeout = 0; break; case FUTEX_FD: + val = target_to_host_signal(val); timeout = 0; break; case FUTEX_CMP_REQUEUE: From patchwork Wed Sep 28 20:27:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684134 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8VP6ZhXz1yqS for ; Thu, 29 Sep 2022 07:18:21 +1000 (AEST) Received: from localhost ([::1]:54450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeRf-000464-4w for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:18:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf5-0000eD-ET for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:07 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:53173) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf3-0006YC-Ry for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:07 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MTzve-1on1JR2Pru-00QyN6; Wed, 28 Sep 2022 22:28:03 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 34/37] linux-user: Implement PI futexes Date: Wed, 28 Sep 2022 22:27:34 +0200 Message-Id: <20220928202737.793171-35-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:ZgvfdCGvrXdYFhC9TqX60aEUkAF5VzmrV0EUY4pGCK7Jn+si3LI oYNrom6aQ/3FjBTFpsRHD1CH2WDWU41lXCsOicOXyq+aapXYY6FyNml2akG8Y+PxRza5rUe htCvEW6IvqIgeO7ZlhAF8cMlq1WDdADskwKIn9t5J0Vi3L3OubN4lVOLQgK05W/sSMhUwH7 cSFJrpqjEyVi7zlhY4/UQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:dbf6zThDfDg=:WGnTVHEAs/DwGg8jGUYaqe kYO4mFBY4Uo23XB6UBxaIRhFOlGc+sao3vpguyhxeHHaI1LUnuZ9nVMtS4u5qc43dnQXM6d0v i5WFquLNKzfL75lcXu01xRSKW+Z3L0jyU5GonB2wU0jHWM26/jeSYgVDz8oeXt3xhPmT1RWfo 4iMggATj97A8zrUiFI8611aOq+qyOQruW04FWwSt5bEYF1es0iXzza0r+Assd1HStsafa4MDi O2Fyio6bkRsDMsVM4LqKCfBXRcRa01MfZlC4aT0FBpI1CvT6agK/tFNhLDoK1JvzWPjwZhfhQ QRHrfxRUkfb/t2Pr4YljTaPdAtjH1IKReaEFNgl3BgNKyJ8smn1mKwhyL6VvY8OD5IMtVXShc XQsv/UxLBwBjtTpikeO4fZaYrU2f6xInRDMK8xS4HfsUeTYEd78HP8iqrgoUz2zHvs6ZJzuW4 uiAMwkt9XrtnGn0PhmNXO2eF1YZY88zETsgjWkNclRt8YLTu0teXjIMFswER+HcJHZ9qBmUYu 1GzimwWyZuzxg5Z3pmmQUUPylK2I+fztCiynU81WAzL1nBokHsAyk/ex4G6LglSQSZwR1bf5a bEUmhHE/ZAjYMotSBRiHU06qcHHtdov9m+W17FZZcf+huzWhZHesDa3xi+raA5Sxjeg1jwhLO owbriQpNlIcjEaRpfrsBgPT2ZwkLAlC3Zg5/S00en+YbwvlKfniBSwWIEbkMXYKcvS/ZajHWX iiK6fk+3T8MgmYSpbpvMP/1mII+XCr5bckoAd0MqAJNQHClBF/vfJi08wAEbYPWWYmQ3nXYl+ ssFhHqz Received-SPF: none client-ip=212.227.126.135; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Define the missing FUTEX_* constants in syscall_defs.h Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 10 ++++++++++ linux-user/syscall_defs.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3f144e3c1f5d..2e954d8dbd9e 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7788,8 +7788,17 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, case FUTEX_WAIT_BITSET: val = tswap32(val); break; + case FUTEX_WAIT_REQUEUE_PI: + val = tswap32(val); + haddr2 = g2h(cpu, uaddr2); + break; + case FUTEX_LOCK_PI: + case FUTEX_LOCK_PI2: + break; case FUTEX_WAKE: case FUTEX_WAKE_BITSET: + case FUTEX_TRYLOCK_PI: + case FUTEX_UNLOCK_PI: timeout = 0; break; case FUTEX_FD: @@ -7797,6 +7806,7 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr, timeout = 0; break; case FUTEX_CMP_REQUEUE: + case FUTEX_CMP_REQUEUE_PI: val3 = tswap32(val3); /* fall through */ case FUTEX_REQUEUE: diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 1e3577bfa56f..01ee10a88fe0 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2699,6 +2699,9 @@ struct target_drm_i915_getparam { #define FUTEX_TRYLOCK_PI 8 #define FUTEX_WAIT_BITSET 9 #define FUTEX_WAKE_BITSET 10 +#define FUTEX_WAIT_REQUEUE_PI 11 +#define FUTEX_CMP_REQUEUE_PI 12 +#define FUTEX_LOCK_PI2 13 #define FUTEX_PRIVATE_FLAG 128 #define FUTEX_CLOCK_REALTIME 256 From patchwork Wed Sep 28 20:27:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684114 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8Ch2wcRz1ypH for ; Thu, 29 Sep 2022 07:05:36 +1000 (AEST) Received: from localhost ([::1]:49026 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeFK-0005Vp-Ah for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:05:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37018) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf6-0000hr-F6 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:49501) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf4-0006YX-Lq for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Myb09-1pRLb72Mpx-00ywzv; Wed, 28 Sep 2022 22:28:04 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 35/37] linux-user: Update print_futex_op Date: Wed, 28 Sep 2022 22:27:35 +0200 Message-Id: <20220928202737.793171-36-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:lIb77sB6JdUnv2GeVFDsdSEuAi4q+peZJJB3PjBOjCo6tQOking fXMbsdE7jYteSMdCkW44ykwNVcu0o5dQPP2llLR31S6gFLP965jUar7plfVETNGE6NvGmc2 sjLpFwGxHhG9kup301xVNX5uoyZ30fnzp4Lojsv57ff98JNPz3sJlGkRyK9QocC5hig37CL dvwOWJ7fxrA1I0hfBHHeg== X-UI-Out-Filterresults: notjunk:1;V03:K0:aqWYxsrcghQ=:a+GUDRSuQqGT+zbg/i+Bto 61QxKjGeA1aACl+wMpqyt5cpkWtcgyXLlYouSbzZ/imClwsFP34P7kwVN2AwmOeld8B8R2pbg bUupwKq3o/IDPnbNKb8SEF+a3kMn+SfMNGK9RVcjP1gi05UGkm0q/IISB//JZsUEjWh69VX+4 VqghXp8rroXwCuSq1pPTTMrYGXM+CImljAahA4RaMGfwg+kXlwwhQJeAEGA86QfuGETZq8upS jEgNYKcDU2FmlmWnjH/trs9I8kiL/y7oEIm3ohtyzsRmKx4F8L00VbMXAdb4KLx4+TU5KNUff 1wCCYGDupKQuXZwlIdXDgStZ4vuVRPKmN9zIwHyu6xZOsdzVcLhntqf0VbPxlC1D97JsE6V0x 6piibayqBrhpc0QdlgMqEG+oQNrm/fPWslUUY/UAu5HkkklFUfREg7G4g9JmduYRFNF0E9BSA CfwwYZ68eZ64wdc3FN9rtsMIrhG5ShoXcQjhgFXTRV/MJ8w5+eu378EpGUzX6c7lCazcyGbrn Pms14ZeZrPO6SWAJH4jpj+nQAgvk7GxN0/+GzNbsoTMj/Ja7Hzuv46ZB+sp4zOy/DDsTlHQ6m iVI/mjcZCzIcrq+iHQpfaEkeIbd9RXTkUv3PmLIN4/LQJ/zC6FROlUdbmPH0nMl6DVBCZQtH5 CP1FI/XzAkSj6KSOYFVjNEadFgGmgOaahl8S+b0pO4jdDOlUD9OcIU6/9xEpi3a5gIqQtfAjX 2MlzasBR5Rabn70eCfJSlTPwZmffo99aFdcbDGDgOSBRPmbUs6YzQ9BI14J/irGE8nXke/lZm hFOvFym Received-SPF: none client-ip=212.227.126.135; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Use a table for the names; print unknown values in hex, since the value contains flags. Signed-off-by: Richard Henderson Message-Id: <20220829021006.67305-7-richard.henderson@linaro.org> [lv: update print_futex() according to "linux-user: Show timespec on strace for futex()"] Signed-off-by: Laurent Vivier --- linux-user/strace.c | 70 +++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 2deb84a2c106..faa733125624 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3710,44 +3710,37 @@ print_munmap(CPUArchState *cpu_env, const struct syscallname *name, #endif #ifdef TARGET_NR_futex -static void print_futex_op(abi_long tflag, int last) -{ -#define print_op(val) \ -if( cmd == val ) { \ - qemu_log(#val); \ - return; \ -} - - int cmd = (int)tflag; -#ifdef FUTEX_PRIVATE_FLAG - if (cmd & FUTEX_PRIVATE_FLAG) { - qemu_log("FUTEX_PRIVATE_FLAG|"); - cmd &= ~FUTEX_PRIVATE_FLAG; - } -#endif -#ifdef FUTEX_CLOCK_REALTIME - if (cmd & FUTEX_CLOCK_REALTIME) { - qemu_log("FUTEX_CLOCK_REALTIME|"); - cmd &= ~FUTEX_CLOCK_REALTIME; +static void print_futex_op(int cmd, int last) +{ + static const char * const futex_names[] = { +#define NAME(X) [X] = #X + NAME(FUTEX_WAIT), + NAME(FUTEX_WAKE), + NAME(FUTEX_FD), + NAME(FUTEX_REQUEUE), + NAME(FUTEX_CMP_REQUEUE), + NAME(FUTEX_WAKE_OP), + NAME(FUTEX_LOCK_PI), + NAME(FUTEX_UNLOCK_PI), + NAME(FUTEX_TRYLOCK_PI), + NAME(FUTEX_WAIT_BITSET), + NAME(FUTEX_WAKE_BITSET), + NAME(FUTEX_WAIT_REQUEUE_PI), + NAME(FUTEX_CMP_REQUEUE_PI), + NAME(FUTEX_LOCK_PI2), +#undef NAME + }; + + unsigned base_cmd = cmd & FUTEX_CMD_MASK; + + if (base_cmd < ARRAY_SIZE(futex_names)) { + qemu_log("%s%s%s", + (cmd & FUTEX_PRIVATE_FLAG ? "FUTEX_PRIVATE_FLAG|" : ""), + (cmd & FUTEX_CLOCK_REALTIME ? "FUTEX_CLOCK_REALTIME|" : ""), + futex_names[base_cmd]); + } else { + qemu_log("0x%x", cmd); } -#endif - print_op(FUTEX_WAIT) - print_op(FUTEX_WAKE) - print_op(FUTEX_FD) - print_op(FUTEX_REQUEUE) - print_op(FUTEX_CMP_REQUEUE) - print_op(FUTEX_WAKE_OP) - print_op(FUTEX_LOCK_PI) - print_op(FUTEX_UNLOCK_PI) - print_op(FUTEX_TRYLOCK_PI) -#ifdef FUTEX_WAIT_BITSET - print_op(FUTEX_WAIT_BITSET) -#endif -#ifdef FUTEX_WAKE_BITSET - print_op(FUTEX_WAKE_BITSET) -#endif - /* unknown values */ - qemu_log("%d", cmd); } static void @@ -3763,6 +3756,9 @@ print_futex(CPUArchState *cpu_env, const struct syscallname *name, switch (op) { case FUTEX_WAIT: case FUTEX_WAIT_BITSET: + case FUTEX_LOCK_PI: + case FUTEX_LOCK_PI2: + case FUTEX_WAIT_REQUEUE_PI: print_timespec(arg3, 0); break; default: From patchwork Wed Sep 28 20:27:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1684132 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8Nw4Z32z1yql for ; Thu, 29 Sep 2022 07:13:36 +1000 (AEST) Received: from localhost ([::1]:36224 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeN4-0007mr-CO for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:13:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37028) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf7-0000nr-S3 for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:40413) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf5-0006Yq-9u for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:09 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MaInF-1ohGHQ0IwX-00WAlb; Wed, 28 Sep 2022 22:28:05 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 36/37] linux-user: Lock log around strace Date: Wed, 28 Sep 2022 22:27:36 +0200 Message-Id: <20220928202737.793171-37-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:ICkfNbLA3GARt9rmqMcZa7OiDge8auiR8jnvWVpmopwJz/D8/G7 o/kKuoe6V5kEysrqjZNXg8YP9SHUo2H84wQvCpMwu/EXAOIsyyeDcycXFAYuGGBMBWSMswU Fw9eO2RsOGg+E+KdRfutSOF50zVMhix/+BLwNtMqklSbd94weXAC+hvV9M9zKbXx3bFGTfD e6mi95iZcSruNwJvqi7zw== X-UI-Out-Filterresults: notjunk:1;V03:K0:7hhY9wMUQAU=:VEuOuG2sExr9lbVtUeJJrU 8g1PnfZfby/8Waq60zgT+I6+R6c8VXxAg2n1TNtSgmLDnhemSNG/LvS0pZBfrlPqpfRHkjwJd F6RSNWdoiQtEFbVgrmFxLyQYzymi5t8XU1MiHsdliaVhkil3u/SH5tXaL6LgufessOma167m1 ENEuq58Q8tuLegW3afDtm4ASNO79Y9BGJP9KqGuo1JfXy9IFRmG7hFHa8gEstEUD+PE3Zuyw2 ERlaKuCU0jaU+fXrZUvyOMISeVN6q7xMoiQKCUmbtnkAjtgCabm7q7od/g/8FY7eudIY+OcsD N21zVr/pdl4R5Vzwy/qBuSMSa5/LCr14+t6VgrmuwuRrXIj+grjKXqDZpKcqAHR/qM6OMYLMQ Ep3zVP83BW0tARegEjdJeFR9wLexTUgQWXFYk2l+6WlztOpAFxo0gRQQ4OVzJDl6AkRFDZahc 8nKJbqwljfyoY7kuwnyWm8o//dwqkbk9elH5H956W40/U51Hj0D6Lr6KXlk3kjyEf54bpaTJ0 JE3L/D56pxnyVfr3SJb8NiRmLfhr3Nm4nSR4lTKHh8JsObT7gB607IF3D5Ie9x7b3QKbqj30A KcF29xicxnQKM432tVj6zG3+uYl4sIIMREbUHVMoWfeq/MHQwSb/YsNhtrw3+sGgymUF78peL kfFFwuzBbftjChtPsmeJWfvTMfsSO0jZ6GY+bWQXN0ScbBWM99G6kJRlayYJCZ+zEq+x4jDEJ aot48RX84LN294U9N1pz0yiprz35hS4JvmI0v/8PIie3CCH/czmJFaOASPkDBjt6Okefqt5/1 yLt04ko Received-SPF: none client-ip=212.227.126.133; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Do not allow syscall arguments to be interleaved between threads. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier Message-Id: <20220829021006.67305-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/strace.c | 65 ++++++++++++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index faa733125624..37bc96df9bb6 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3919,26 +3919,37 @@ print_syscall(CPUArchState *cpu_env, int num, abi_long arg4, abi_long arg5, abi_long arg6) { int i; - const char *format="%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")"; + FILE *f; + const char *format = "%s(" TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," + TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld "," + TARGET_ABI_FMT_ld "," TARGET_ABI_FMT_ld ")"; - qemu_log("%d ", getpid()); + f = qemu_log_trylock(); + if (!f) { + return; + } + fprintf(f, "%d ", getpid()); - for(i=0;i X-Patchwork-Id: 1684129 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Md8Gj71dkz1ypH for ; Thu, 29 Sep 2022 07:08:13 +1000 (AEST) Received: from localhost ([::1]:59444 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1odeHr-0001q3-Qk for incoming@patchwork.ozlabs.org; Wed, 28 Sep 2022 17:08:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf6-0000jU-RA for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:50667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oddf5-0006Yp-6n for qemu-devel@nongnu.org; Wed, 28 Sep 2022 16:28:08 -0400 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N7Qgn-1pIVuS26zl-017iRL; Wed, 28 Sep 2022 22:28:05 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 37/37] linux-user: Add parameters of getrandom() syscall for strace Date: Wed, 28 Sep 2022 22:27:37 +0200 Message-Id: <20220928202737.793171-38-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:9fzG2n3z8VWjHmFaPbAcsEwMarqXpyLARRzEYqmeB/G0n6RuI8g OS3NzpNaxoLwRI3U+tLSvdoW8dJ3RWdQ5Q9vtiz+RjxudT89aB+4PhLxUGZXb6cYe0OXNiM W5DfYoCgOw6GYrlMhr9uTIHSEN6MWfvOC3T0ObP+460bLSHHf2zZyd6Oa2vIDTnfz7oY5oD /os1lncObT/0ON9yLHWfA== X-UI-Out-Filterresults: notjunk:1;V03:K0:Skd0xOzgYSQ=:nDseGLcmgLRYR3fcgoP2sO le17Jaea7v0LUzgmsieFSZegCpw/E16DjAK5pxoQ7qiQH8pM5V2lr7G2ZSTi76RqURWzpqI9L fvWxBJl9PsCA1uQ0xvzvpBSxA9gzYe3lYM3+UuJXVdYCSQu1AzdRaml/yymplJq6clElhZXKE SjvRTiIj90CUKeFpPfl38P31NDGQ4OUax33d/O0AKCv+ABLhcE1gGyI9wqXp5rXpKVZ5pvCC6 2zjHZ7VSd/eF7ZjVb4ZBgrOVAySyW+aofH/nUHwbfV+FslxpzxTfYyDCPbdw6nLiQs4DkQPOD KSp1Me8iLM5oVusPuWvmsqZS5KJKAdcPgxlNS/GxUY1fvFat2TGJC7ZZCsHjSes0H+kD/FAae D4LLruMCrc/RunlV4zc8y/KU8thJN401E35/671qmTRepdNzSUaQZsh5PLiczbqluKffatQj8 qcA8FWyHacgKjE0XNwdklFbfZUQ/l8J7Bc27tDvJejCFjS5xhSLAwQvxLh/cfG8ZhvLCpB1ZW vB3mB960gxMV5JD3gNVbqFNoRdZ5sWJTyLMzrI4miwZwV+3w4w6oHxEAFyojb7UFRqnyW5kkW la2yMpab2epx/ZlMP2Iue3d1Hq5eqMCGZ7O20jztqyR6FreZH9CW6aJuoODLQsylunMzoUwfE 29QWW65PjjXAe4VSAKQpTgScMV0ZaEY9JOs6ccwPrZs8vMUmaPE7DX5kh175UhUqTixHTR/F1 F2wDr+8l9fS5iBGhk7N4W1yH1M5hJb34yezNJ99AgWyMwkaJLwbu2INvAIKDPGLMWyjJbq1NR dM9d7GE Received-SPF: none client-ip=212.227.126.187; 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_DNSWL_NONE=-0.0001, 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Helge Deller Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20220927093538.8954-2-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/strace.list | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux-user/strace.list b/linux-user/strace.list index f8a771b4f256..a87415bf3d50 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -352,7 +352,7 @@ { TARGET_NR_getpriority, "getpriority", "%s(%#x,%#x)", NULL, NULL }, #endif #ifdef TARGET_NR_getrandom -{ TARGET_NR_getrandom, "getrandom", NULL, NULL, NULL }, +{ TARGET_NR_getrandom, "getrandom", "%s(%p,%u,%u)", NULL, NULL }, #endif #ifdef TARGET_NR_getresgid { TARGET_NR_getresgid, "getresgid" , NULL, NULL, NULL },