From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282447845268.0833003262617; Wed, 8 Mar 2023 05:34:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtqt-0001bg-9s; Wed, 08 Mar 2023 08:29:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqs-0001b8-AC for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:06 -0500 Received: from mout.kundenserver.de ([217.72.192.74]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqp-00063M-Ut for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:06 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MOAr1-1pu39w29wv-00OZtF; Wed, 08 Mar 2023 14:29:01 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 01/28] linux-user: Fix access to /proc/self/exe Date: Wed, 8 Mar 2023 14:28:30 +0100 Message-Id: <20230308132857.161793-2-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Va2nXUp8ccp8SmE7dnPBCF1RZ5p+gmFWYtw4vS7ZJMQwx7bUaRE f5WWpXRA2hZe9ICfQhLqcAj/db/aL6yp7B/lbe8SgDMSIg3dzsRQorEy408jyI8EvhoBmVM RMEy6gBvfAfvoL7efajSux+vXqzc423L/hHplNMM3BsCqznS9ziCisuADfRhpolgQNTjiFc Om66Lx0BDiksAymI6acqA== UI-OutboundReport: notjunk:1;M01:P0:P020ciQ7zR8=;rouxZB+9cUI2owhqnJdvqBNwUn7 HfBYrFKGISUaWB4qoLqIcrA9VLvHaadBUB+g5DKszKMEcD3ThQHQJS1jDJ+d0NH/JMu33bdYU WvK9OiHrg3k7EbYzR+FN5zrmj/M/1He/Z/n6p9tRpqrYMPTXyXeYPNV0Bbcz96DHJKBrGhJ5W nZw7iaQ01eTck/gqcQCKsQbD3gmGZ7TA0v7cOnxPuUIa1EI9ZZAI4krYDZqvqsVC+X9449mXE tSVqw69YoLgp6cg2fECrdaiSxBYUB0SzxFxvPLA1AqQjxP5xL/eSoFgxqCekSeJT614pFM5r7 R+o6apCqdxPI/Cc21VZu/oiZgH6XwTqGF+9Oh5dtMf9pc/BK2K51KhUw1UQm4xXeS4/+JlZSr YhDevQAtwu8RZRctbALNByEugnNCRjc+OODWGWXwgMFIrEWTEDhPrAu45aOOdOKnRSBlU/vP8 n8rmxfvzasNRLFLEspalAfuEFoclDqJYIF6Q8/AKUyPvevNirvhFlz7U2bEo8B1Lzess46FXt YuMnYa5NHo//1pRbCWXogta0eweFYev6XNlr5fDPQ+Q7NPCWpLsbsFeloo/4ynB6zYPdvdf0r Ro+eCrn58H6s33QQue7SiA3492oLPBiidCPS2FIXt5RUIYl/N+duHvCzFiGhwz6P9oRM4BqlR 8DixGjMC5Jj8iIXK6R+3I2YANJWipoar05pE0fTpPA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282449324100006 Content-Type: text/plain; charset="utf-8" From: Helge Deller When accsssing /proc/self/exe from a userspace program, linux-user tries to resolve the name via realpath(), which may fail if the process changed the working directory in the meantime. An example: - a userspace program ist started with ./testprogram - the program runs chdir("/tmp") - then the program calls readlink("/proc/self/exe") - linux-user tries to run realpath("./testprogram") which fails because ./testprogram isn't in /tmp - readlink() will return -ENOENT back to the program Avoid this issue by resolving the full path name of the started process at startup of linux-user and store it in real_exec_path[]. This then simplifies the emulation of readlink() and readlinkat() as well, because they can simply copy the path string to userspace. I noticed this bug because the testsuite of the debian package "pandoc" failed on linux-user while it succeeded on real hardware. The full log is here: https://buildd.debian.org/status/fetch.php?pkg=3Dpandoc&arch=3Dhppa&ver=3D2= .17.1.1-1.1%2Bb1&stamp=3D1670153210&raw=3D0 Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20221205113825.20615-1-deller@gmx.de> Signed-off-by: Laurent Vivier --- linux-user/main.c | 6 ++++++ linux-user/syscall.c | 34 ++++++++++------------------------ 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 4ff30ff98066..798fdc0bce8e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -65,6 +65,7 @@ #endif =20 char *exec_path; +char real_exec_path[PATH_MAX]; =20 int singlestep; static const char *argv0; @@ -739,6 +740,11 @@ int main(int argc, char **argv, char **envp) } } =20 + /* Resolve executable file name to full path name */ + if (realpath(exec_path, real_exec_path)) { + exec_path =3D real_exec_path; + } + /* * get binfmt_misc flags */ diff --git a/linux-user/syscall.c b/linux-user/syscall.c index a6c426d73cfe..6525a9c57a39 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9989,18 +9989,11 @@ static abi_long do_syscall1(CPUArchState *cpu_env, = int num, abi_long arg1, /* Short circuit this for the magic exe check. */ ret =3D -TARGET_EINVAL; } else if (is_proc_myself((const char *)p, "exe")) { - char real[PATH_MAX], *temp; - temp =3D realpath(exec_path, real); - /* Return value is # of bytes that we wrote to the buffer.= */ - if (temp =3D=3D NULL) { - ret =3D get_errno(-1); - } else { - /* Don't worry about sign mismatch as earlier mapping - * logic would have thrown a bad address error. */ - ret =3D MIN(strlen(real), arg3); - /* We cannot NUL terminate the string. */ - memcpy(p2, real, ret); - } + /* Don't worry about sign mismatch as earlier mapping + * logic would have thrown a bad address error. */ + ret =3D MIN(strlen(exec_path), arg3); + /* We cannot NUL terminate the string. */ + memcpy(p2, exec_path, ret); } else { ret =3D get_errno(readlink(path(p), p2, arg3)); } @@ -10021,18 +10014,11 @@ static abi_long do_syscall1(CPUArchState *cpu_env= , int num, abi_long arg1, /* Short circuit this for the magic exe check. */ ret =3D -TARGET_EINVAL; } else if (is_proc_myself((const char *)p, "exe")) { - char real[PATH_MAX], *temp; - temp =3D realpath(exec_path, real); - /* Return value is # of bytes that we wrote to the buffer.= */ - if (temp =3D=3D NULL) { - ret =3D get_errno(-1); - } else { - /* Don't worry about sign mismatch as earlier mapping - * logic would have thrown a bad address error. */ - ret =3D MIN(strlen(real), arg4); - /* We cannot NUL terminate the string. */ - memcpy(p2, real, ret); - } + /* Don't worry about sign mismatch as earlier mapping + * logic would have thrown a bad address error. */ + ret =3D MIN(strlen(exec_path), arg4); + /* We cannot NUL terminate the string. */ + memcpy(p2, exec_path, ret); } else { ret =3D get_errno(readlinkat(arg1, path(p), p2, arg4)); } --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282556046631.3540073337441; Wed, 8 Mar 2023 05:35:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrc-00020m-I6; Wed, 08 Mar 2023 08:29:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr1-0001k4-Vx for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([212.227.17.10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqw-00065e-83 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MbSXf-1q71br0um9-00brcT; Wed, 08 Mar 2023 14:29:02 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Mathis Marion , Laurent Vivier Subject: [PULL 02/28] linux-user: fix timerfd read endianness conversion Date: Wed, 8 Mar 2023 14:28:31 +0100 Message-Id: <20230308132857.161793-3-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:d12lBiK689hBH/JKKhwbKLB1xuDTnAabjs8sbWCHcqFa+nbMX9w ba7kmDddhKUJ42/cW+6KprINdDmGv/VtwBCSAOt29xYjte5vekkTqn9foXEcVQVE20OfWdH 8nhiAhr1OGLezw79ajBQIufhY0KAtQr+yg/l8ggLSBfwwe/JBz3nePduigPOVZ4AtVyNFvS 37xFZEMIyDrcVDVXnPEKw== UI-OutboundReport: notjunk:1;M01:P0:lpe0SdTvPmI=;0Lu7d3996+FsxCZtnwJB9IlM+XB ZbfiIR25oPi0gHaH80kSaiJJpYuH0cdtyjeHmHzWlezEhNqQEg8FHeuKjjfU4GDaMCHSS7HfQ lPm7VYYnCkDgcXSzE8oo1mKIsc4xbQ2iQyw04zUMtscLzNaG5UX6gCjroBwTmxmpLShZDWp1M 9iMkkq25SCfKD8fnXDrZTq3wz0a5I7/flKNt0RbHx8uDifa0fUGIIn/OUzFyIUQuJpAYHDjoE OIUINsHGTj6EwTeingiHdxlVbWEfS7Y/GZqNs413Rk+swzLcLx1XgBpMMZwBzGem3p/YL5pWV 4z3XNGuX4jSIUI5m688fwWR1QXqAs2/OhreA24NNVPzTQcB6rcP7y1mxrdnVSJOVDyF3aGLhz NVKPgzzWo/Tl6SHFETYK0GkKNwxaEWNSOo1Q6WT3CsMshKQuuzJeuPths72cT5cQB1XGekV7x dBd6Uv4akRTuHJq3z5SNvhAjNXZ9/SjCc2PfjVuFt+iqLfd/CP57EgWw4divOozNnfY5GIsZA fmwL0XNNrlytJkBpXzdgYeMGDk/NexmNG+Dr7rOCoVYXmAjwrLenW2nKxbHF+T4wUVBKehRVS qKRdCYQWpz5aVgno1QMI387hegBVFFAkaCsoxDAHBTCAGMeLDj2DSzgfnlpSaXasLrGWmVLxz 7bMlx9rH95wQZiWJIRTsCJ0CVSFClA4SV9cyywxNqA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282557801100003 Content-Type: text/plain; charset="utf-8" From: Mathis Marion When reading the expiration count from a timerfd, the endianness of the 64bit value read is the one of the host, just as for eventfds. Signed-off-by: Mathis Marion Reviewed-by: Laurent Vivier Message-Id: <20230220085822.626798-2-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier --- linux-user/fd-trans.c | 10 +++++++--- linux-user/fd-trans.h | 1 + linux-user/syscall.c | 8 ++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 7b25468d0208..146aaaafaa13 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -1622,7 +1622,7 @@ TargetFdTrans target_signalfd_trans =3D { .host_to_target_data =3D host_to_target_data_signalfd, }; =20 -static abi_long swap_data_eventfd(void *buf, size_t len) +static abi_long swap_data_u64(void *buf, size_t len) { uint64_t *counter =3D buf; int i; @@ -1640,8 +1640,12 @@ static abi_long swap_data_eventfd(void *buf, size_t = len) } =20 TargetFdTrans target_eventfd_trans =3D { - .host_to_target_data =3D swap_data_eventfd, - .target_to_host_data =3D swap_data_eventfd, + .host_to_target_data =3D swap_data_u64, + .target_to_host_data =3D swap_data_u64, +}; + +TargetFdTrans target_timerfd_trans =3D { + .host_to_target_data =3D swap_data_u64, }; =20 #if defined(CONFIG_INOTIFY) && (defined(TARGET_NR_inotify_init) || \ diff --git a/linux-user/fd-trans.h b/linux-user/fd-trans.h index 1b9fa2041c06..910faaf237cc 100644 --- a/linux-user/fd-trans.h +++ b/linux-user/fd-trans.h @@ -130,6 +130,7 @@ extern TargetFdTrans target_netlink_route_trans; extern TargetFdTrans target_netlink_audit_trans; extern TargetFdTrans target_signalfd_trans; extern TargetFdTrans target_eventfd_trans; +extern TargetFdTrans target_timerfd_trans; #if (defined(TARGET_NR_inotify_init) && defined(__NR_inotify_init)) || \ (defined(CONFIG_INOTIFY1) && defined(TARGET_NR_inotify_init1) && \ defined(__NR_inotify_init1)) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 6525a9c57a39..4f4c1fbc5b0f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -13104,8 +13104,12 @@ static abi_long do_syscall1(CPUArchState *cpu_env,= int num, abi_long arg1, =20 #if defined(TARGET_NR_timerfd_create) && defined(CONFIG_TIMERFD) case TARGET_NR_timerfd_create: - return get_errno(timerfd_create(arg1, - target_to_host_bitmask(arg2, fcntl_flags_tbl))); + ret =3D get_errno(timerfd_create(arg1, + target_to_host_bitmask(arg2, fcntl_flags_tbl))); + if (ret >=3D 0) { + fd_trans_register(ret, &target_timerfd_trans); + } + return ret; #endif =20 #if defined(TARGET_NR_timerfd_gettime) && defined(CONFIG_TIMERFD) --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282195869690.0153784903961; Wed, 8 Mar 2023 05:29:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrO-0001qm-8D; Wed, 08 Mar 2023 08:29:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqx-0001hO-Gb for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:12 -0500 Received: from mout.kundenserver.de ([217.72.192.74]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-00065Q-KC for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MIcux-1poWJG0Gaz-00EaXZ; Wed, 08 Mar 2023 14:29:03 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Mathis Marion , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 03/28] linux-user: add target to host netlink conversions Date: Wed, 8 Mar 2023 14:28:32 +0100 Message-Id: <20230308132857.161793-4-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:i5gUJ6oPAGMQEX0gig71wpEiPMxLOQs54tu2Vr7SbCFuEdMv9my nApk+dQPn41FFl0hUZ0OZsahpIrpLv8gm9iZq4YML5E63SAEH4jXDIyLNmyrSLOg8uw8T5H wVZoxjDyuVuxbQM2JEMPmJyS1DfrBXrpr4hXWGrHbNi626kNAGe2wBJ/8r5TQro1NrzSbxa MJQfGHHGd8aR6FMPsxK7w== UI-OutboundReport: notjunk:1;M01:P0:OARU35/Gy/Y=;9w0J/7QR0spQkli4x6uShH5JE4k XFWRRN2fnN2pr0XE/O5zB1xSVDIojqxYWEzt238ovYJpt0cwDPbEyPnWLOx48Z1Of4/40JLrx G/12lUGNPXXv/nVHumA7KiDt/35QM6eqdSiB5j4mlzhpF0njUbJZ3PTRGTrIj6KBXLMpk/Vud sVlEKLB62v4pO05kWJ5fwlp5zHuzJjIPpoHxvv9SdrkvPV+2dkI6c5cGcWU/3oGlz0b5q6Ilb WmC4zFI+CLiz/zG9QvFVQtJpBtwZt3Hj8wbK2gfXplQOaAKY4QmQJPjq9bAsFWjWq+nSC6dHx D7rZ5aPbzrauI6VokP0eJdxSRYO2DTBEUdpKtybmwbPbYIBduMwD2cepnZBdIcz3Y57qE07L7 2AUa3BdeQX5fXRXE0c4isONn/kjeL4auN7H9bUw7rXc3eCvXjhtVRnRxYGO6SYw3BWw/50sxp tOHzi3YCpWj7uLPMm6X2rErKa1qlyHaSNBpMnJPIcItnIsQxToYNGbRoo0T4NvaIJQiXEgUP0 gdXxkGpo6MMyArNLIRjI+gjOgRW1I5GUy5VBPHFAxpYVsEJQwfH8UD4+GXJePvAYYzYMmmF6m tXJGkyX6FD8U+oLWHlQYt6pzWYN1tL7lxcOjqa7cw494YslWM9c8YxKv9yyPwHN2nLbrfO9dx CYd5Gx6eaj3/ugcBoWiO9/2DlB41XVcMA4Hvc14D/Q== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282197685100008 From: Mathis Marion Added conversions for: - IFLA_MTU - IFLA_TXQLEN - IFLA_AF_SPEC AF_INET6 IFLA_INET6_ADDR_GEN_MODE These relate to the libnl functions rtnl_link_set_mtu, rtnl_link_set_txqlen, and rtnl_link_inet6_set_addr_gen_mode. Signed-off-by: Mathis Marion Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Laurent Vivier Message-Id: <20230220085822.626798-4-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier --- linux-user/fd-trans.c | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 146aaaafaa13..4852a75d9dcc 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -1284,6 +1284,49 @@ static inline abi_long host_to_target_nlmsg_route(st= ruct nlmsghdr *nlh, return host_to_target_for_each_nlmsg(nlh, len, host_to_target_data_rou= te); } =20 +static abi_long target_to_host_for_each_nlattr(struct nlattr *nlattr, + size_t len, + abi_long (*target_to_host_n= lattr) + (struct nlattr *)) +{ + unsigned short aligned_nla_len; + abi_long ret; + + while (len > sizeof(struct nlattr)) { + if (tswap16(nlattr->nla_len) < sizeof(struct rtattr) || + tswap16(nlattr->nla_len) > len) { + break; + } + nlattr->nla_len =3D tswap16(nlattr->nla_len); + nlattr->nla_type =3D tswap16(nlattr->nla_type); + ret =3D target_to_host_nlattr(nlattr); + if (ret < 0) { + return ret; + } + + aligned_nla_len =3D NLA_ALIGN(nlattr->nla_len); + if (aligned_nla_len >=3D len) { + break; + } + len -=3D aligned_nla_len; + nlattr =3D (struct nlattr *)(((char *)nlattr) + aligned_nla_len); + } + return 0; +} + +static abi_long target_to_host_data_inet6_nlattr(struct nlattr *nlattr) +{ + switch (nlattr->nla_type) { + /* uint8_t */ + case QEMU_IFLA_INET6_ADDR_GEN_MODE: + break; + default: + qemu_log_mask(LOG_UNIMP, "Unknown target AF_INET6 type: %d\n", + nlattr->nla_type); + } + return 0; +} + static abi_long target_to_host_for_each_rtattr(struct rtattr *rtattr, size_t len, abi_long (*target_to_host_r= tattr) @@ -1314,16 +1357,35 @@ static abi_long target_to_host_for_each_rtattr(stru= ct rtattr *rtattr, return 0; } =20 +static abi_long target_to_host_data_spec_nlattr(struct nlattr *nlattr) +{ + switch (nlattr->nla_type) { + case AF_INET6: + return target_to_host_for_each_nlattr(NLA_DATA(nlattr), nlattr->nl= a_len, + target_to_host_data_inet6_nl= attr); + default: + qemu_log_mask(LOG_UNIMP, "Unknown target AF_SPEC type: %d\n", + nlattr->nla_type); + break; + } + return 0; +} + static abi_long target_to_host_data_link_rtattr(struct rtattr *rtattr) { uint32_t *u32; =20 switch (rtattr->rta_type) { /* uint32_t */ + case QEMU_IFLA_MTU: + case QEMU_IFLA_TXQLEN: case QEMU_IFLA_EXT_MASK: u32 =3D RTA_DATA(rtattr); *u32 =3D tswap32(*u32); break; + case QEMU_IFLA_AF_SPEC: + return target_to_host_for_each_nlattr(RTA_DATA(rtattr), rtattr->rt= a_len, + target_to_host_data_spec_nla= ttr); default: qemu_log_mask(LOG_UNIMP, "Unknown target QEMU_IFLA type: %d\n", rtattr->rta_type); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282533682103.38296925465602; Wed, 8 Mar 2023 05:35:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZts8-0002r9-2j; Wed, 08 Mar 2023 08:30:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqx-0001gw-23 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-00065G-84 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:10 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MQMi7-1pwG5O2hqT-00MO1t; Wed, 08 Mar 2023 14:29:03 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Ilya Leoshkevich , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 04/28] linux-user: Fix unaligned memory access in prlimit64 syscall Date: Wed, 8 Mar 2023 14:28:33 +0100 Message-Id: <20230308132857.161793-5-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:sUWutYqfWYek1hkWk0oBR4I5Yu3UG5yw42sO7gDJL04/SlgDl9W 97BxcseTV3pj6GBaq7frIx1ptB2Lu0YbWnYD8roK64Rkof2TE05yGaRQ6owcPzSlyjuU2hK XeVGnqkJ38m/Vci56/BkLiJkbLPTXsCnnNsWNJ1zJs7p8TtnWZL3/wEZJSnplyx0hUGmMuG gCQov/X87NaGk+/2WyG6w== UI-OutboundReport: notjunk:1;M01:P0:pjWhoxv7Nsk=;YULxpLiT/i3ybt5AgfV9M7HKJtV 6aMImSMb5wwoCY5aGbVzN2VpnJgWu6wpNmABUPNtGT3Zr5zLFpHD5K40VmZDSjrbU1TQtz9Ae 7sOhODMJhKEK9xeBINgYRlfHYU27JioqgKMFUtai/d8fs60VLB1Z7OSIRr/kffPfHQYCmuXjq nF63NuhJlYUGxmQwiws4jnZKeR0MTSn+nq0xy74wQIeJYqZWsy4axrt/0g/+OyDlXE30v7inV iFJJ0F2UnVVXUJswNlm3ZUXzCaQyiSt7Tla/EriLpsv7yKP27O5BHTkCw8Mpt988RAKV0glWV Jp/h3GHy95q9fKpOB5wJnMBCPuEQaIMA9o+iCUTAyfr5YosusZR+eb/pwMpGm7mSwHq4J/ajA spaZHOG9iLWUTPF9wojzyOJPSs0nQ+K4JPnBVbBysnd7E4qyyY2vUROeLeI/WpzsIdO0hN+bC ZlyCum3C8JzmOc/lb0qj5Dpc8lOIG3o+r5ijmaq7ZqgJ9OmCYLKtRtaQSl0zhuT5uBVBUgBTN J16/NnbjA0s6CDJABXwMfENX1NbnFX7YKrBqDXhzJD8R7OkBhO65uafgeJqh3biOvEum6nZ9J VTqbQTYtzuCNR7+I3dRDO8QcYe2sffTXMMYR1mDYpKdSES1imFzm2ps+UWUv+nwtflAKi4ITP QxCBcM4LQMFU5ps2elnwCh3N57WlUuCARbe4OaUTdg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282535648100005 From: Ilya Leoshkevich target_rlimit64 contains uint64_t fields, so it's 8-byte aligned on some hosts, while some guests may align their respective type on a 4-byte boundary. This may lead to an unaligned access, which is an UB. Fix by defining the fields as abi_ullong. This makes the host alignment match that of the guest, and lets the compiler know that it should emit code that can deal with the guest alignment. While at it, also use __get_user() and __put_user() instead of tswap64(). Fixes: 163a05a8398b ("linux-user: Implement prlimit64 syscall") Reported-by: Richard Henderson Signed-off-by: Ilya Leoshkevich Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Laurent Vivier Message-Id: <20230224003907.263914-2-iii@linux.ibm.com> Signed-off-by: Laurent Vivier --- linux-user/generic/target_resource.h | 4 ++-- linux-user/syscall.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/linux-user/generic/target_resource.h b/linux-user/generic/targ= et_resource.h index 539d8c46772e..37d3eb09b3b3 100644 --- a/linux-user/generic/target_resource.h +++ b/linux-user/generic/target_resource.h @@ -12,8 +12,8 @@ struct target_rlimit { }; =20 struct target_rlimit64 { - uint64_t rlim_cur; - uint64_t rlim_max; + abi_ullong rlim_cur; + abi_ullong rlim_max; }; =20 #define TARGET_RLIM_INFINITY ((abi_ulong)-1) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 4f4c1fbc5b0f..db27c85abb8d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -12872,8 +12872,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, = int num, abi_long arg1, if (!lock_user_struct(VERIFY_READ, target_rnew, arg3, 1)) { return -TARGET_EFAULT; } - rnew.rlim_cur =3D tswap64(target_rnew->rlim_cur); - rnew.rlim_max =3D tswap64(target_rnew->rlim_max); + __get_user(rnew.rlim_cur, &target_rnew->rlim_cur); + __get_user(rnew.rlim_max, &target_rnew->rlim_max); unlock_user_struct(target_rnew, arg3, 0); rnewp =3D &rnew; } @@ -12883,8 +12883,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, = int num, abi_long arg1, if (!lock_user_struct(VERIFY_WRITE, target_rold, arg4, 1)) { return -TARGET_EFAULT; } - target_rold->rlim_cur =3D tswap64(rold.rlim_cur); - target_rold->rlim_max =3D tswap64(rold.rlim_max); + __put_user(rold.rlim_cur, &target_rold->rlim_cur); + __put_user(rold.rlim_max, &target_rold->rlim_max); unlock_user_struct(target_rold, arg4, 1); } return ret; --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16782821959459.646767444366105; Wed, 8 Mar 2023 05:29:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtqx-0001gW-Du; Wed, 08 Mar 2023 08:29:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqu-0001cD-77 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:08 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqs-00064T-Hs for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:07 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MRSdf-1pxM1d0OSj-00NUUT; Wed, 08 Mar 2023 14:29:04 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Max Filippov , Laurent Vivier Subject: [PULL 05/28] linux-user: add support for xtensa FDPIC Date: Wed, 8 Mar 2023 14:28:34 +0100 Message-Id: <20230308132857.161793-6-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:nFZixO7LBMEv975btAPm7kCQHI0Y9++A8uX2PfpieA8/yulWQ+5 1hkLBByYi57yWaCTctwkm7ve/yylRu0NpKr6SvlBCDiv8HEvhpCRqdBOBZGveH7j7fK7pjD FYqd+7FH870gLaD+LtQWhWbbYSBbOngYfJ8ZBfzKgjQsY0uTXa1vLBezthwL4vebf1QfMHX fiXvF2n2fQg4OeOx5vq6Q== UI-OutboundReport: notjunk:1;M01:P0:9v7rkzWnp7Q=;ois5yiRvCWQz0058nu1TCRlj6bn YqVSL0FFOZhMLe2yJ1NfzLptP7TYlO/DSWYZ1cySlZEmVFEyJchcZv2nsihcvMkjP1z+CK+ZA 7Q9VAxFPl8kU6xnkQ/PUWyL4H3v6TOREPaYCtFy8RrFb37bb6w5beN/B7Sa26V+x7i+RVeamW GN0EjRyO3mlHQHEoiaGv6VDPvR1geVquvShnNOvNTLpVqwMDG4uW4ri8TFis3OFoRQkbY3TaQ RLY21WdKkcltehfcfGJCnavuoPMSeqfPOc38Z9h78LaOBB+kuSSGinSLsTq9J/CArLz01DbDW wN+sAiSHPTSxhpyTmwuNPtVkROCKI1yCi84ZinIzXnmGgVWUy/eRLp6YiV2Y9gT1qTXFTsETz eaI6tC0Ri5jKwl4KV2w3aeG4wb6jkpYOt85M9Xu3kqDwKmRODOUkVjEOMDq4MkwpastSo00m6 RGY2SMhQsWzwr7l0ZgsI9mfItAQo1IG9U3u9BneZ0BWd3obkFRaoJ118Cp4hDz5A3j1Vc8RWC 6KlxcEGx4Tq3ZZsgfVyv9bKEosx0FZ/X7RFVK0yyn9jhA26Ej8mERG0Kx8Lq0g6SyQe617EH2 wvVl4yKkAMNfV8vZrLh9rK6P1BVPTOuSFFIOHSy/uxo02lorg1LljZN7r2X6mu9jgX7bJl2x4 dVQurhopnx2gAbG0ucXHIAXkhEwXSenAoZZsPLRBqQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282197744100012 Content-Type: text/plain; charset="utf-8" From: Max Filippov Define xtensa-specific info_is_fdpic and fill in FDPIC-specific registers in the xtensa version of init_thread. Signed-off-by: Max Filippov Message-Id: <20230205061230.544451-1-jcmvbkbc@gmail.com> Signed-off-by: Laurent Vivier --- include/elf.h | 1 + linux-user/elfload.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/include/elf.h b/include/elf.h index 8bf1e72720d5..e8bfe38a9fbd 100644 --- a/include/elf.h +++ b/include/elf.h @@ -1619,6 +1619,7 @@ typedef struct elf64_shdr { #define ELFOSABI_MODESTO 11 /* Novell Modesto. */ #define ELFOSABI_OPENBSD 12 /* OpenBSD. */ #define ELFOSABI_ARM_FDPIC 65 /* ARM FDPIC */ +#define ELFOSABI_XTENSA_FDPIC 65 /* Xtensa FDPIC */ #define ELFOSABI_ARM 97 /* ARM */ #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) applicati= on */ =20 diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 5928c14dfc97..150d1d450396 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1748,6 +1748,15 @@ static inline void init_thread(struct target_pt_regs= *regs, regs->windowstart =3D 1; regs->areg[1] =3D infop->start_stack; regs->pc =3D infop->entry; + if (info_is_fdpic(infop)) { + regs->areg[4] =3D infop->loadmap_addr; + regs->areg[5] =3D infop->interpreter_loadmap_addr; + if (infop->interpreter_loadmap_addr) { + regs->areg[6] =3D infop->interpreter_pt_dynamic_addr; + } else { + regs->areg[6] =3D infop->pt_dynamic_addr; + } + } } =20 /* See linux kernel: arch/xtensa/include/asm/elf.h. */ @@ -2207,11 +2216,16 @@ static void zero_bss(abi_ulong elf_bss, abi_ulong l= ast_bss, int prot) } } =20 -#ifdef TARGET_ARM +#if defined(TARGET_ARM) static int elf_is_fdpic(struct elfhdr *exec) { return exec->e_ident[EI_OSABI] =3D=3D ELFOSABI_ARM_FDPIC; } +#elif defined(TARGET_XTENSA) +static int elf_is_fdpic(struct elfhdr *exec) +{ + return exec->e_ident[EI_OSABI] =3D=3D ELFOSABI_XTENSA_FDPIC; +} #else /* Default implementation, always false. */ static int elf_is_fdpic(struct elfhdr *exec) --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282219141391.76067306446737; Wed, 8 Mar 2023 05:30:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtqz-0001iL-Ch; Wed, 08 Mar 2023 08:29:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-0001g2-LH for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqt-00064l-Gn for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N0nSN-1qWPjB2UUf-00wpJB; Wed, 08 Mar 2023 14:29:04 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Andreas Schwab , Laurent Vivier Subject: [PULL 06/28] linux-user: fill out task state in /proc/self/stat Date: Wed, 8 Mar 2023 14:28:35 +0100 Message-Id: <20230308132857.161793-7-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:wJcpOZDzv37yo1RPCyGKNPMIC1slVZhyjjeBqOACCWQgPoZxvzY qpML9Ow6cCcnIOP6xUabBkYREPmpVH/Vyr6zOJ88XREWDBJCaluR/ofImHHltbgtl63s8f6 Tja+ezSIaQYhSd++cCivkzFgpS9u+vYj2G6t+JPpD12u2aAqGre4pumDLo3LEtj/Pheqsoo mDbui/8jz+4FhAV/QgkQA== UI-OutboundReport: notjunk:1;M01:P0:/L1A22qWeaI=;5iuf+2nq8eLR6ojXGlENZIgnUYg VBTvovrNCoKtg540/QRBGgSD1Yr++D7d/QnaHvbBLu3cHn+BNah0HVN8E5HjFWLoXddAWa1Rs dzEyQtN2lnkm3u3l11YxojSOCQcLYbbFPYY3kUhyYRKazsHCKFY/hABm+0OJvz9WYqq7OdjtY jwGGAYObED9fNnT6AGpCty4hj2qDVIH5/T6Sq9mUuQ588Zn1PFddkNpPv16aVI7ZYJMLjrHgn j+yGoNl+QbXL/zSIGzp5dmcahmTpMXJtWgT2FLtFHYQAHgdVbmkxXzqht4U8zfU+I9ryb+Duk HaWzqkt2uYClrdCgdFUMfaQ2xLGiMdupcxTNp9cK2WwOeXsMnIXxFiGoqaz3g5sp71ngchoNl Rx4ySkn0sFC3Iv99eMW8s5dTVeeeEiGxPjcpp0hX2qiv4SFcZAdL+nx0vm37I2eBV5z4qUhKQ M+pzqYNLWooU0x7LwcXIwbtnoJiTYoUhyP9WLen6/hkhsItGtBFXdjoBP56XH/3FK83dqwXxa qGk6kNjRsYV1nYuYBz6RqSMfSKeVZeqF0hMFt8L/SXNr2eWb1Y9hwpdLBK3J9x9bsCzYs1qhk wq9CDfs6cHeX417xXQ1xyXDthhtOiExDLUUxAR284Z7xlpYp0MDLcMVxL/YSSGJ/uUL1E/qkV PNkD5EFDVaa+gD07MmXU1XGNPO+YUmpL53HRPYEPtg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282219808100001 Content-Type: text/plain; charset="utf-8" From: Andreas Schwab Some programs want to match an actual task state character. Signed-off-by: Andreas Schwab Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index db27c85abb8d..8ecad83f7f10 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8079,6 +8079,9 @@ static int open_self_stat(CPUArchState *cpu_env, int = fd) gchar *bin =3D g_strrstr(ts->bprm->argv[0], "/"); bin =3D bin ? bin + 1 : ts->bprm->argv[0]; g_string_printf(buf, "(%.15s) ", bin); + } else if (i =3D=3D 2) { + /* task state */ + g_string_assign(buf, "R "); /* we are running right now */ } else if (i =3D=3D 3) { /* ppid */ g_string_printf(buf, FMT_pid " ", getppid()); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282248809399.9770656556914; Wed, 8 Mar 2023 05:30:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrY-0001wa-74; Wed, 08 Mar 2023 08:29:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-0001gF-Od for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqt-00064a-Dp for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MMnnm-1psfBt07TY-00IpnM; Wed, 08 Mar 2023 14:29:05 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 07/28] linux-user: Fix brk() to release pages Date: Wed, 8 Mar 2023 14:28:36 +0100 Message-Id: <20230308132857.161793-8-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Kh6LtgykYZrVhsWK3/PZblP/4SMdjUOwC4wHsjJjXuVu1Otcnf0 52n1FCqGa97k3rbgbb+2JaVWkj73kfvoAmJxYgNpm9ccau1jCIxkGz6UcOpiG2Uj3TSreQZ zScYIZj1eYvpnL02QGyEFpqftFTIHRI8IGvAmITqqCn4W5SM3nznY67/JkshI83FUkBXN/X CTMphAt3hta6/4UQZ0b+A== UI-OutboundReport: notjunk:1;M01:P0:7mYccrsd3qU=;XIJv5NuuI543Ys+Eglxe2Z+aWRH EmtygRbOvBW8RElh+KyqmDIYpzKyIOQ5GHuHWVWyAqlfoNSAh+RFo1bf75C90TK2ytSFv/MwT AsGNtgmH1SNUwutE3cC9E0mHBMXSCahar+yzGNTf96ZCEqvxH6Dx077VjpcIj05GUlumWq7E9 Bp5+3l07UXYxnJN5BMQBBIaq4j8BncWr4vJjYAJFn8lxPksHTe8RYyQxMkRdLgPSDywqUbDjM A8mXz5p9ji5mKlG3d8YmNm8rMe2QgcgufYTOO6ka9aBSnU9nme6s6djiPAzxN+91pKFUimSD1 8XnzS0lT68r7v6QCxurrYxQ2qSkV5IPcACsC1X1uNjbf2Cy9NK7eAHek2k82I46v5QZsU6kKJ w+OhYEyuKwkcPJyMZMawb8Y/fZUlCO8n4vc+OI1QfTdJuPD4Q1FeIaEhXQWLLC+BtifNRfvKN S9gz5VF/DSDkA4G9gN0RXLPaWG0haA7RKyXV7o63ZVf7ENpRUPWxPSzyZG9gy0d/QPvNWY180 EP2eCxkzmg61SpbiuENOwS//CdvMf99YyZKxRzhO/cQRlgKAg8sV+wtrwlP5fWJ+rrBcjQNvA 9J+30I6E5ztsdZk3ktRrOMtLhdOdXYVYNaZPqniOQIDA1Csgg9dZSXrWvwMl60gKVmyP705Ra fL7rDWvHDEO8bdxXlHtOPIALMK6aQ9UbQWAJHPxfug== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282249996100003 Content-Type: text/plain; charset="utf-8" From: Helge Deller The current brk() implementation does not de-allocate pages if a lower address is given compared to earlier brk() calls. But according to the manpage, brk() shall deallocate memory in this case and currently it breaks a real-world application, specifically building the debian gcl package in qemu-user. Fix this issue by reworking the qemu brk() implementation. Tested with the C-code testcase included in qemu commit 4d1de87c750, and by building debian package of gcl in a hppa-linux guest on a x86-64 host. Signed-off-by: Helge Deller Message-Id: Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 69 ++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8ecad83f7f10..bcf409e134b4 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -795,49 +795,52 @@ static inline int host_to_target_sock_type(int host_t= ype) } =20 static abi_ulong target_brk; -static abi_ulong target_original_brk; static abi_ulong brk_page; =20 void target_set_brk(abi_ulong new_brk) { - target_original_brk =3D target_brk =3D HOST_PAGE_ALIGN(new_brk); + target_brk =3D new_brk; brk_page =3D HOST_PAGE_ALIGN(target_brk); } =20 -//#define DEBUGF_BRK(message, args...) do { fprintf(stderr, (message), ## = args); } while (0) -#define DEBUGF_BRK(message, args...) - /* do_brk() must return target values and target errnos. */ -abi_long do_brk(abi_ulong new_brk) +abi_long do_brk(abi_ulong brk_val) { abi_long mapped_addr; abi_ulong new_alloc_size; + abi_ulong new_brk, new_host_brk_page; =20 /* brk pointers are always untagged */ =20 - DEBUGF_BRK("do_brk(" TARGET_ABI_FMT_lx ") -> ", new_brk); - - if (!new_brk) { - DEBUGF_BRK(TARGET_ABI_FMT_lx " (!new_brk)\n", target_brk); + /* return old brk value if brk_val unchanged or zero */ + if (!brk_val || brk_val =3D=3D target_brk) { return target_brk; } - if (new_brk < target_original_brk) { - DEBUGF_BRK(TARGET_ABI_FMT_lx " (new_brk < target_original_brk)\n", - target_brk); + + new_brk =3D TARGET_PAGE_ALIGN(brk_val); + new_host_brk_page =3D HOST_PAGE_ALIGN(brk_val); + + /* brk_val and old target_brk might be on the same page */ + if (new_brk =3D=3D TARGET_PAGE_ALIGN(target_brk)) { + if (brk_val > target_brk) { + /* empty remaining bytes in (possibly larger) host page */ + memset(g2h_untagged(target_brk), 0, new_host_brk_page - target= _brk); + } + target_brk =3D brk_val; return target_brk; } =20 - /* If the new brk is less than the highest page reserved to the - * target heap allocation, set it and we're almost done... */ - if (new_brk <=3D brk_page) { - /* Heap contents are initialized to zero, as for anonymous - * mapped pages. */ - if (new_brk > target_brk) { - memset(g2h_untagged(target_brk), 0, new_brk - target_brk); - } - target_brk =3D new_brk; - DEBUGF_BRK(TARGET_ABI_FMT_lx " (new_brk <=3D brk_page)\n", target_= brk); - return target_brk; + /* Release heap if necesary */ + if (new_brk < target_brk) { + /* empty remaining bytes in (possibly larger) host page */ + memset(g2h_untagged(brk_val), 0, new_host_brk_page - brk_val); + + /* free unused host pages and set new brk_page */ + target_munmap(new_host_brk_page, brk_page - new_host_brk_page); + brk_page =3D new_host_brk_page; + + target_brk =3D brk_val; + return target_brk; } =20 /* We need to allocate more memory after the brk... Note that @@ -846,10 +849,14 @@ abi_long do_brk(abi_ulong new_brk) * itself); instead we treat "mapped but at wrong address" as * a failure and unmap again. */ - new_alloc_size =3D HOST_PAGE_ALIGN(new_brk - brk_page); - mapped_addr =3D get_errno(target_mmap(brk_page, new_alloc_size, + new_alloc_size =3D new_host_brk_page - brk_page; + if (new_alloc_size) { + mapped_addr =3D get_errno(target_mmap(brk_page, new_alloc_size, PROT_READ|PROT_WRITE, MAP_ANON|MAP_PRIVATE, 0, 0)); + } else { + mapped_addr =3D brk_page; + } =20 if (mapped_addr =3D=3D brk_page) { /* Heap contents are initialized to zero, as for anonymous @@ -861,10 +868,8 @@ abi_long do_brk(abi_ulong new_brk) * then shrunken). */ memset(g2h_untagged(target_brk), 0, brk_page - target_brk); =20 - target_brk =3D new_brk; - brk_page =3D HOST_PAGE_ALIGN(target_brk); - DEBUGF_BRK(TARGET_ABI_FMT_lx " (mapped_addr =3D=3D brk_page)\n", - target_brk); + target_brk =3D brk_val; + brk_page =3D new_host_brk_page; return target_brk; } else if (mapped_addr !=3D -1) { /* Mapped but at wrong address, meaning there wasn't actually @@ -872,10 +877,6 @@ abi_long do_brk(abi_ulong new_brk) */ target_munmap(mapped_addr, new_alloc_size); mapped_addr =3D -1; - DEBUGF_BRK(TARGET_ABI_FMT_lx " (mapped_addr !=3D -1)\n", target_br= k); - } - else { - DEBUGF_BRK(TARGET_ABI_FMT_lx " (otherwise)\n", target_brk); } =20 #if defined(TARGET_ALPHA) --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282195861822.4026038600927; Wed, 8 Mar 2023 05:29:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrB-0001l1-SC; Wed, 08 Mar 2023 08:29:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqu-0001cR-VG for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from mout.kundenserver.de ([212.227.17.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqt-00064i-5T for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:08 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mv2gw-1qQcxl207U-00r49U; Wed, 08 Mar 2023 14:29:05 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 08/28] linux-user: Provide print_raw_param64() for 64-bit values Date: Wed, 8 Mar 2023 14:28:37 +0100 Message-Id: <20230308132857.161793-9-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Dl2UHpk1T11Kv0NoMlfZjWuBvWbsFR6XxNrRGS7xmoBE63BOPcH XYdQOo4Sz0JJkhKmEfUsW4vCT7eweSs5m03Vfl0dkry/soalwWfE3pri95J+qDZK0oRamrg hpo6tQo0LZbTPQk7TgHf8qC8GVOf0EEe3idSkMlEp4Y5EShWc2DR7f9Q0BE4n6ZC/zUbjPb 9KEAAUC+1dKC1nUhzjiAQ== UI-OutboundReport: notjunk:1;M01:P0:PFYOmQFLlV0=;6BA3mvl0j/LqR5GdU0902RYzh7z w1zrtxR09xhmGjoBqCLqTWhqUcB0cov0FQ1NB7BCwrMgHxjBs/SgvxON0TDJs+r8LvF2f9Xn9 WnyqmfDcvAxttVJp/T/jIqi0U/jKl/yKrazLF82SDr//MP+wg7nfQSN0iuFj2qKbl0YpBu1Mb IksagNNXz5L5BrC7RVf2hTG9Q7ruwYGWFmMUZbGu2OejnHKDYZrPPCvpQM+Wv2B1krEPu30dQ cZjXq1ztVsVd4v1gMoFPvAjK45iVnHW9FTUoRj+Vt37WZcK8BnyYVcLjCfjFRiID9Fd5t2RI5 8mXmHdfg8ixlEjJ17lR871p+P53gWB/v5zmTSx9aKiZUX7nM3r4rLiiC7mHuzwZ+C6wbfHwwX f1ECfmY69uLFgqqoo0az5beaUnofaJQnURs9LKIFxoWBcQLvr3d1h1cz2/wgJS1xBiWipp40a e1t6W6oE8n+muRrWj9tHPRT82sxr46JvXelVscjRs5brwmm8aPcN+29t5Zz7KA4azYlHdGYD7 3DPIJ2EsToBIDgyWrbUfxCif0zLmejHPLltQkCkgSd4g49cL2o8yLu5JQwGkDQD5kqmJud3fm JmeYU8qAIifB+AFxYjM4DQu8I9wVYKQruPoVS4qIfA2Glcg29dpnJiPuJLAOlie4f7Y7VZy1g 75BY2QiTlQoZgMFh089G3ru3zRQBgv+1STR88FhPGQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282197717100011 Content-Type: text/plain; charset="utf-8" From: Helge Deller Add a new function print_raw_param64() to print 64-bit values in the same way as print_raw_param(). This prevents that qemu_log() is used to work around the problem that print_raw_param() can only print 32-bit values when compiled for 32-bit targets. Additionally convert the existing 64-bit users in print_timespec64(), print_rlimit64() and print_preadwrite64() over to this new function and drop some unneccessary spaces. Suggested-by: Laurent Vivier Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: [lvivier: remove print_preadwrite64 and print_rlimit64 part] Signed-off-by: Laurent Vivier --- linux-user/strace.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 340010661c4f..2cea93aec46e 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -81,6 +81,7 @@ UNUSED static void print_syscall_epilogue(const struct sy= scallname *); UNUSED static void print_string(abi_long, int); 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_raw_param64(const char *, long long, int last); UNUSED static void print_timeval(abi_ulong, int); UNUSED static void print_timespec(abi_ulong, int); UNUSED static void print_timespec64(abi_ulong, int); @@ -1642,6 +1643,19 @@ print_raw_param(const char *fmt, abi_long param, int= last) qemu_log(format, param); } =20 +/* + * Same as print_raw_param() but prints out raw 64-bit parameter. + */ +static void +print_raw_param64(const char *fmt, long long param, int last) +{ + char format[64]; + + (void) snprintf(format, sizeof (format), "%s%s", fmt, get_comma(last)); + qemu_log(format, param); +} + + static void print_pointer(abi_long p, int last) { @@ -1718,10 +1732,8 @@ print_timespec64(abi_ulong ts_addr, int last) print_pointer(ts_addr, last); return; } - qemu_log("{tv_sec =3D %lld" - ",tv_nsec =3D %lld}%s", - (long long)tswap64(ts->tv_sec), (long long)tswap64(ts->tv= _nsec), - get_comma(last)); + print_raw_param64("{tv_sec=3D%" PRId64, tswap64(ts->tv_sec), 0); + print_raw_param64("tv_nsec=3D%" PRId64 "}", tswap64(ts->tv_nsec), = last); unlock_user(ts, ts_addr, 0); } else { qemu_log("NULL%s", get_comma(last)); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282214230649.3149303600096; Wed, 8 Mar 2023 05:30:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrP-0001sS-9f; Wed, 08 Mar 2023 08:29:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-0001gE-OE for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqt-00064t-Oc for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:09 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MiIhU-1qF1ZH3r3W-00fQuo; Wed, 08 Mar 2023 14:29:06 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 09/28] linux-user: Add strace for prlimit64() syscall Date: Wed, 8 Mar 2023 14:28:38 +0100 Message-Id: <20230308132857.161793-10-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:6M5hVxpwRSnHBokNSUPrMKj6YJ0n90k3+RXU9cz0flvJVIc78tA yDpardP0hJOx9Lo6MVMcQRV+jicNxSYUU2dmREoYEEfPdK7oZmHS7NKGMW/j6ZQcEuqx7w+ 48yas+589J/SIf3syAqMwIX6KPvANYC/nQAavaOnYxX7WUryNm5f5Tx2TziOqlQFqUNU/wm oQp1ZdXbcdTOGIEFFJ96Q== UI-OutboundReport: notjunk:1;M01:P0:LDalLGHIaek=;0tOSvA2Si+/ET+g+YQnizkcByct flMenRVnYOcCcbnVe3KcJnb8BFHjrb5QaGR+zLxoDEBXIVCvEW+VY4kCWULw7ZS7P80wmY5Sv JQlsJ055enb40zgvNCG4LOdf0fwv2COJbRDFbBlpk6TryY0KjB0RCOnDQ24wz98Ki5SQ/9CPY 4TVjzlIEJQZ2Mm16WlgjL+QGVSauPmK9iUbmyHbbJVkRfJ3/F2+gw/WJEe7mhMiEzBeEYIrFS 2rPvBwDE6vBWSqm0NW9wNpBz9suZxmA8icMhGdmnIYctavwjOPYrx6JdCuopNHq2Ls/meFHAe eLkebMvZl35JeTnd3me96tu6f6MgjT6qcXVLOO/gFChhqACdlYFt3M5gpLn1S2p+GWpn7Q1hg WezGrwXceoeIFuSWn60s8Os93poFEer/UoTo7e7FqsEkflubxRJVoHQKh8l6UhmaJm/fyRCSf QxgFHRjeQ9wdrBDhsYpVQRAJ9mRGW/bX9LQQldQdwTCTl2BQnHKJVSKaSCXqZK8mHFFS+duQ+ UXD+hwGhdZ1VuxA/mrkqNnjoMxcOBlW6NQYpqHm3nzT+/3/RHBOExrFrTVAADTjiJ6bsPC1PG lcoj0KLSwnN7+Fv9f4XXvZeh2ZATKvawzMebrvqThTYhzcC+uMh8HTgzUoj53WxIsPJotZA2q OLSKkciXx8w8IIdjJdMNvN5y1ddzMDHRXnXTdAP9/A== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282215719100003 Content-Type: text/plain; charset="utf-8" From: Helge Deller Add proper prlimit64() strace output. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: <20221222190639.124078-1-deller@gmx.de> [lvivier: use print_raw_param64()] Signed-off-by: Laurent Vivier --- linux-user/strace.c | 88 ++++++++++++++++++++++++++++++++++++++++++ linux-user/strace.list | 3 +- 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index 2cea93aec46e..e9757ed9adee 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -3866,6 +3866,94 @@ print_futex(CPUArchState *cpu_env, const struct sysc= allname *name, } #endif =20 +#ifdef TARGET_NR_prlimit64 +static const char *target_ressource_string(abi_ulong r) +{ + #define RET_RES_ENTRY(res) case TARGET_##res: return #res; + switch (r) { + RET_RES_ENTRY(RLIMIT_AS); + RET_RES_ENTRY(RLIMIT_CORE); + RET_RES_ENTRY(RLIMIT_CPU); + RET_RES_ENTRY(RLIMIT_DATA); + RET_RES_ENTRY(RLIMIT_FSIZE); + RET_RES_ENTRY(RLIMIT_LOCKS); + RET_RES_ENTRY(RLIMIT_MEMLOCK); + RET_RES_ENTRY(RLIMIT_MSGQUEUE); + RET_RES_ENTRY(RLIMIT_NICE); + RET_RES_ENTRY(RLIMIT_NOFILE); + RET_RES_ENTRY(RLIMIT_NPROC); + RET_RES_ENTRY(RLIMIT_RSS); + RET_RES_ENTRY(RLIMIT_RTPRIO); +#ifdef RLIMIT_RTTIME + RET_RES_ENTRY(RLIMIT_RTTIME); +#endif + RET_RES_ENTRY(RLIMIT_SIGPENDING); + RET_RES_ENTRY(RLIMIT_STACK); + default: + return NULL; + } + #undef RET_RES_ENTRY +} + +static void +print_rlimit64(abi_ulong rlim_addr, int last) +{ + if (rlim_addr) { + struct target_rlimit64 *rl; + + rl =3D lock_user(VERIFY_READ, rlim_addr, sizeof(*rl), 1); + if (!rl) { + print_pointer(rlim_addr, last); + return; + } + print_raw_param64("{rlim_cur=3D%" PRId64, tswap64(rl->rlim_cur), 0= ); + print_raw_param64("rlim_max=3D%" PRId64 "}", tswap64(rl->rlim_max), + last); + unlock_user(rl, rlim_addr, 0); + } else { + qemu_log("NULL%s", get_comma(last)); + } +} + +static void +print_prlimit64(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) +{ + const char *rlim_name; + + print_syscall_prologue(name); + print_raw_param("%d", arg0, 0); + rlim_name =3D target_ressource_string(arg1); + if (rlim_name) { + qemu_log("%s,", rlim_name); + } else { + print_raw_param("%d", arg1, 0); + } + print_rlimit64(arg2, 0); + print_pointer(arg3, 1); + print_syscall_epilogue(name); +} + +static void +print_syscall_ret_prlimit64(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); + if (arg3) { + qemu_log(" ("); + print_rlimit64(arg3, 1); + qemu_log(")"); + } + } + qemu_log("\n"); +} +#endif + #ifdef TARGET_NR_kill static void print_kill(CPUArchState *cpu_env, const struct syscallname *name, diff --git a/linux-user/strace.list b/linux-user/strace.list index d8acbeec6093..f776c73fa04c 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -1074,7 +1074,8 @@ { TARGET_NR_preadv, "preadv" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_prlimit64 -{ TARGET_NR_prlimit64, "prlimit64" , NULL, NULL, NULL }, +{ TARGET_NR_prlimit64, "prlimit64" , NULL, print_prlimit64, + print_syscall_ret_prlimit64 }, #endif #ifdef TARGET_NR_process_vm_readv { TARGET_NR_process_vm_readv, "process_vm_readv" , NULL, NULL, NULL }, --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282389999762.3003156601305; Wed, 8 Mar 2023 05:33:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttZ-0004OL-J3; Wed, 08 Mar 2023 08:31:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr6-0001lC-Mm for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:22 -0500 Received: from mout.kundenserver.de ([212.227.17.10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-00066j-RH for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:20 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MQdI8-1pxdH21iVi-00NlTO; Wed, 08 Mar 2023 14:29:06 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Mathis Marion , Laurent Vivier , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 10/28] linux-user: fix sockaddr_in6 endianness Date: Wed, 8 Mar 2023 14:28:39 +0100 Message-Id: <20230308132857.161793-11-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Hy53xkBdeSLRXJ6pYxuYEEHOz9j/oWvZquYZC5qO8IouMOlyyiW TwCn8cilroAEizwUIbgaiErzZTCY7MzOSxXuG9u/DK5fxjCnWYKYqyYGx2rbVvs+ElOrDDK bNd6TvirFYymjbpdSlK9unSs6VXpKToyLzllQI/+9eIOjnYRmUphKYDsSfCGdsezjuQsuC7 /ipSY6S/IUzJuTey7psYw== UI-OutboundReport: notjunk:1;M01:P0:0yyqnfcbaH8=;E4Qkf3VIQeOuYl/Z0jMgAvq+E6Y ANBEXO2XPAwmnt1RGkfnP3ZygPq2etPqld+1SF8LmBB8192UiMxaK6OHnL3ztsWdkGKLhKjA6 tt1adLvYyE1x3to5MQb/HTUAMnzaSQEvTwJmtBu7xNQFIKkMhv3hTXszvmYd9bbg0qdwwWBqU 9rnkb54Cw7LB+GJ8aEG9Sz7PitjN3aVq6DTBgId8ws1voPmWAG6suVHTN/UT7/nXuTqYm7bvt sI1R7j5qP0MaJkAk9gYe7tJo80j6NyHFKFkD6+bruceb8BxoMdfWPGz0GI09aQDzZNd/7u8dL gsghJS9f8onDzqI3KpzaY7Us6JrIMbPt1eUo7RHDs22J0C5mEe7ysoUGkANWVIryzFOmcFAkR WC1YB8lFGO6d9OXVXVL2kVX8QrUpxpUcgTFfGToO3ML2E2Wq+QXAlAt0XDqOajsa4RSU4SPrk idlXkO3FPzNHXF7ALmWCunPKZO2gJ3WPrFG9j3je6GrC7saScX5dvOp1wONWRCybAmMfnkGej KeBWZcuDZC+1LeIv46q45N7W64vGfp5tP1EIcp+qFd/bgAOlhVGCGMLjeXhI/+N9/3HlQLn3q pjobkPjYPXAwl4h2i2SZYCNz0vNi0yxRiyCYG9J16CpCOU3+a3p6juqBNISINUmNpd1S4Oqkw rvy3+JT7ugGLloeChhFFSMcVzUycEchVdWy6z++q8A== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282390884100011 From: Mathis Marion The sin6_scope_id field uses the host byte order, so there is a conversion to be made when host and target endianness differ. Signed-off-by: Mathis Marion Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20230307154256.101528-2-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index bcf409e134b4..1f903dd67cba 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1714,6 +1714,11 @@ static inline abi_long target_to_host_sockaddr(int f= d, struct sockaddr *addr, lladdr =3D (struct target_sockaddr_ll *)addr; lladdr->sll_ifindex =3D tswap32(lladdr->sll_ifindex); lladdr->sll_hatype =3D tswap16(lladdr->sll_hatype); + } else if (sa_family =3D=3D AF_INET6) { + struct sockaddr_in6 *in6addr; + + in6addr =3D (struct sockaddr_in6 *)addr; + in6addr->sin6_scope_id =3D tswap32(in6addr->sin6_scope_id); } unlock_user(target_saddr, target_addr, 0); =20 --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282559470375.87803367491074; Wed, 8 Mar 2023 05:35:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsR-000360-03; Wed, 08 Mar 2023 08:30:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr4-0001kh-Pr for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([212.227.17.10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqz-00066Y-QT for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:17 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Miqvq-1qETKw3dCe-00eswy; Wed, 08 Mar 2023 14:29:07 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Mathis Marion , Laurent Vivier Subject: [PULL 11/28] linux-user: handle netlink flag NLA_F_NESTED Date: Wed, 8 Mar 2023 14:28:40 +0100 Message-Id: <20230308132857.161793-12-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:myyzQBA3S51OUodtii+2y2SRMVuCdOotEcp2Tvo+JQcolIFsSkY lsxRgw1AM7gnNZEa/6Au2clwn4SAqNeN+zVq/8wLudn02p1qjVy/Ex+Ru9xXRCpMRXj/p4e PEEezG7vKa52gA7l9KY4hlAFBgPNnXnIugZI6AowjhTBmhKMn38ZVyLsVhuHzGERPVxi/iu IKtIsHKiYaKmFm22V8NRw== UI-OutboundReport: notjunk:1;M01:P0:Otmvlndgk9c=;u96K7ceLKm/rbpWmydHntfJAIDz XpM/2VVSajR85DA1hVB/t/agV+ZirCeV1eGWFCUubCtTumUxzDb1TMVlGP1ZyQ0XGJKuuBKy2 EVF0cyA3oCGzQ5ZcNiVYkRsncFTh0h6XqfgyaDUOIiZ8wJJp434DOakFQkX8UgJx1HxZAuy7i 3B4nckJuRDBvWvvcuhabuhhJGgM4rKjdlv9LEY7m2/nXxEmIwAgRnepyfgC1eBfmHeGRKem1x OuH3VO7XMWfyrH2BcEzDGGExkuYg5T5m9lkUkI6vSRX+rMg80byrKBSlRmxX+8sbpYbaioQKo UAd227FJ8DBvRO2E/GgcmpoXr0rW1k2cj+2911PwgLnhoAno0tWDcsf0+0Z+1+NDjOLVseBxH oXwI+M1RO5EvVKZqDQ2lkTsOBaF3DYs0Ht69KLiKMshEjZ6iKzcqb4NJzvXX3+/rf5RAES8xC eETQMm1UEiKhboeSWyeNV3PSh7keOCcntpn5koLoQpm2qy2v86yG17lVR6esqEqKcz3hD0pQC yKQLKOuE9A6iBWTcUq1qp1K6/2CEehi+vgSDASCyUej5no4ZCiik8D5iKS/sZm6STXuRDMnN2 HUqBRIDJGXzu2/F5y70m8OoYKWQ2ibrFeeG8KmyUK08uYE+M0cYoijW42mpF5Oe/OIrTjnA07 OYEftS6G1CqAUJh8qZWaPFWzDKDd8lo3nxBbflJpww== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282559822100011 Content-Type: text/plain; charset="utf-8" From: Mathis Marion Newer kernel versions require this flag to be present contrary to older ones. Depending on the libnl version it is added or not. Typically when using rtnl_link_inet6_set_addr_gen_mode, the netlink packet generated may contain the following attribute: with libnl 3.4 {nla_len=3D16, nla_type=3DIFLA_AF_SPEC}, [ {nla_len=3D12, nla_type=3DAF_INET6}, [{nla_len=3D5, nla_type=3DIFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_= NONE] ] with libnl 3.7 {nla_len=3D16, nla_type=3DNLA_F_NESTED|IFLA_AF_SPEC}, [ {nla_len=3D12, nla_type=3DNLA_F_NESTED|AF_INET6}, [{nla_len=3D5, nla_type=3DIFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_= NONE]] ] Masking the type is likely needed in other places. Only the above cases are implemented in this patch. Signed-off-by: Mathis Marion Reviewed-by: Laurent Vivier Message-Id: <20230307154256.101528-3-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier --- linux-user/fd-trans.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 4852a75d9dcc..c04a97c73a31 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -1359,7 +1359,7 @@ static abi_long target_to_host_for_each_rtattr(struct= rtattr *rtattr, =20 static abi_long target_to_host_data_spec_nlattr(struct nlattr *nlattr) { - switch (nlattr->nla_type) { + switch (nlattr->nla_type & NLA_TYPE_MASK) { case AF_INET6: return target_to_host_for_each_nlattr(NLA_DATA(nlattr), nlattr->nl= a_len, target_to_host_data_inet6_nl= attr); @@ -1375,7 +1375,7 @@ static abi_long target_to_host_data_link_rtattr(struc= t rtattr *rtattr) { uint32_t *u32; =20 - switch (rtattr->rta_type) { + switch (rtattr->rta_type & NLA_TYPE_MASK) { /* uint32_t */ case QEMU_IFLA_MTU: case QEMU_IFLA_TXQLEN: --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167828253496367.29442610955459; Wed, 8 Mar 2023 05:35:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttq-0004Wt-6K; Wed, 08 Mar 2023 08:32:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqw-0001gv-RT for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-00065L-0w for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:10 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MXH7g-1q4G2X1I9G-00Yil8; Wed, 08 Mar 2023 14:29:07 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 12/28] linux-user: Add translation for argument of msync() Date: Wed, 8 Mar 2023 14:28:41 +0100 Message-Id: <20230308132857.161793-13-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:q20SVmdaVHOUR7GXeDl9sTUNf31LYkjg0VSPqOvcEl8wx19L2kD tRia6aq7lntHe2TY5K+4DoDjuX/ljermER/Hpq/EDgZOR4cgZuqy9OX4RIlsntV/zUuZlaQ SewEpDtm7Hqt1BHyRNmcfcYsG+FbeELuJ/V+hTzhsK22FiDo9tjueH3CixUtV7QYt8nbJcM y/Tcg/XWhrAgb6d3x0P7Q== UI-OutboundReport: notjunk:1;M01:P0:BRI9fYN4/tc=;ReggTbUj3kmSk4QbcWaLO7tMiBu OIpEL26JuNfqTD+0BkCpv6vjXHJf0T91Wh/2kOmqQlmGKjAppy4/ja7XxxKh3unNZgDJIsDok sitrDIA26UmRAekrnDiWuXaB4nfNubFuJZYny9qcrFqJyJpwdLEUvrrpc731zT87m5FcTgzXk mA19GHKcXduVpuhCfGG4OoCD5T+8GjcwBQkpLzxhqsdj8s6kxTH4yHXac1TomB9H0qSAg3Cem poTBBfOuaktr8WAEDx4hQbHAq7s9hnrn7VbxQjqZdwAIJfqGn9bJnU5zWVPWt0XEdmx4MDGzo 6nRxeKUUhIimZL9f7Nt5E0hjZPxIXW/sZ/DAcks62hNMtegFo9KKz00YWfgHj4vUlEmensaVT VO+AfRV9fXQ8jz3Ju+jhYjzie+DboFTWLylQ7u7rDl5w65pzimdjJjW+Bb66odmx05qHDOzIU phFAkUhqYOCMCy3Xfjz3pvO938UAOb1V2Rj62zZQss+hVqotNshp9CU4Urb5bSSnEI3+fj+Q9 l80IqcDuiWJrH7BfNc9LMotodeeD73vILpIbQDHe+/0xy3v7btTNET1Z5nMf0ZNTC8hOtugdX W3UKbQ+g1wdJfGe0BusF+gO0BMA+8SKuuDmV3tJP/SJsQnNj3/BMZkARYfUxSjZMkxCcpgpYz PD/5efNEGLePMzT69fU+OerORDg7eGeQFJhRJiDjuQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282535657100007 Content-Type: text/plain; charset="utf-8" From: Helge Deller msync() uses the flags MS_ASYNC, MS_INVALIDATE and MS_SYNC, which differ between platforms, specifcally on alpha and hppa. Add a target to host translation for those and wire up a nicer strace output. This fixes the testsuite of the macaulay2 debian package with a hppa-linux guest on a x86-64 host. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/alpha/target_mman.h | 4 ++++ linux-user/generic/target_mman.h | 13 +++++++++++++ linux-user/hppa/target_mman.h | 4 ++++ linux-user/strace.list | 2 +- linux-user/syscall.c | 12 +++++++++++- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/linux-user/alpha/target_mman.h b/linux-user/alpha/target_mman.h index cd6e3d70a604..051544f5abd8 100644 --- a/linux-user/alpha/target_mman.h +++ b/linux-user/alpha/target_mman.h @@ -3,6 +3,10 @@ =20 #define TARGET_MADV_DONTNEED 6 =20 +#define TARGET_MS_ASYNC 1 +#define TARGET_MS_SYNC 2 +#define TARGET_MS_INVALIDATE 4 + #include "../generic/target_mman.h" =20 #endif diff --git a/linux-user/generic/target_mman.h b/linux-user/generic/target_m= man.h index 1436a3c54308..32bf1a52d07e 100644 --- a/linux-user/generic/target_mman.h +++ b/linux-user/generic/target_mman.h @@ -89,4 +89,17 @@ #define TARGET_MADV_DONTNEED_LOCKED 24 #endif =20 + +#ifndef TARGET_MS_ASYNC +#define TARGET_MS_ASYNC 1 +#endif + +#ifndef TARGET_MS_INVALIDATE +#define TARGET_MS_INVALIDATE 2 +#endif + +#ifndef TARGET_MS_SYNC +#define TARGET_MS_SYNC 4 +#endif + #endif diff --git a/linux-user/hppa/target_mman.h b/linux-user/hppa/target_mman.h index 66dd9f79414e..f9b6b9703255 100644 --- a/linux-user/hppa/target_mman.h +++ b/linux-user/hppa/target_mman.h @@ -10,6 +10,10 @@ #define TARGET_MADV_WIPEONFORK 71 #define TARGET_MADV_KEEPONFORK 72 =20 +#define TARGET_MS_SYNC 1 +#define TARGET_MS_ASYNC 2 +#define TARGET_MS_INVALIDATE 4 + #include "../generic/target_mman.h" =20 #endif diff --git a/linux-user/strace.list b/linux-user/strace.list index f776c73fa04c..c7808ea118f9 100644 --- a/linux-user/strace.list +++ b/linux-user/strace.list @@ -656,7 +656,7 @@ { TARGET_NR_msgsnd, "msgsnd" , NULL, NULL, NULL }, #endif #ifdef TARGET_NR_msync -{ TARGET_NR_msync, "msync" , NULL, NULL, NULL }, +{ TARGET_NR_msync, "msync" , "%s(%p,%u,%d)", NULL, NULL }, #endif #ifdef TARGET_NR_multiplexer { TARGET_NR_multiplexer, "multiplexer" , NULL, NULL, NULL }, diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 1f903dd67cba..44498e9e8ac7 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -22,6 +22,7 @@ #include "qemu/path.h" #include "qemu/memfd.h" #include "qemu/queue.h" +#include "target_mman.h" #include #include #include @@ -7612,6 +7613,14 @@ static inline int target_to_host_mlockall_arg(int ar= g) } #endif =20 +static inline int target_to_host_msync_arg(abi_long arg) +{ + return ((arg & TARGET_MS_ASYNC) ? MS_ASYNC : 0) | + ((arg & TARGET_MS_INVALIDATE) ? MS_INVALIDATE : 0) | + ((arg & TARGET_MS_SYNC) ? MS_SYNC : 0) | + (arg & ~(TARGET_MS_ASYNC | TARGET_MS_INVALIDATE | TARGET_MS_SYN= C)); +} + #if (defined(TARGET_NR_stat64) || defined(TARGET_NR_lstat64) || \ defined(TARGET_NR_fstat64) || defined(TARGET_NR_fstatat64) || \ defined(TARGET_NR_newfstatat)) @@ -10124,7 +10133,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, = int num, abi_long arg1, /* ??? msync/mlock/munlock are broken for softmmu. */ #ifdef TARGET_NR_msync case TARGET_NR_msync: - return get_errno(msync(g2h(cpu, arg1), arg2, arg3)); + return get_errno(msync(g2h(cpu, arg1), arg2, + target_to_host_msync_arg(arg3))); #endif #ifdef TARGET_NR_mlock case TARGET_NR_mlock: --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 167828253793436.69413706342243; Wed, 8 Mar 2023 05:35:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsS-0003DD-Da; Wed, 08 Mar 2023 08:30:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqx-0001hW-NQ for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:12 -0500 Received: from mout.kundenserver.de ([212.227.17.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqv-00065X-OH for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mj831-1qEkJq36Iv-00f9vt; Wed, 08 Mar 2023 14:29:07 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Helge Deller , Laurent Vivier Subject: [PULL 13/28] linux-user: Emulate CLONE_PIDFD flag in clone() Date: Wed, 8 Mar 2023 14:28:42 +0100 Message-Id: <20230308132857.161793-14-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:vzTXupv3oZ6QX7fYicY4rF1TH7pIV4mYhUqwhARE5D6hskIBAtk bS5hl0nFB4uQaouWNZsuA+5vRJWOpaXqrg07GhNt+a/yn2nTrzLKzGMdVRdRMvdEhIhLBMK M2fXhiPbzYev7jB9t0vYH56WRZtkLoLb4juYH2ou46zX+C8j1j0x7xgQBWGFHUxWjKeM8RX xlTx3HR5UtXZZCd3dp+vA== UI-OutboundReport: notjunk:1;M01:P0:PdeuOIq5vd4=;tM/kwzGfOxKpIiTYz110UIN04yX cL84H4kiTHn1TpVqDda7a2HPf5UpgkRsc/IBdUq6Y31+3+oRufcAsTDvvGrLkofUN3r5z23Fw goGtr/bS/iKq6dTFEREyfNR2IXWsqCG5WmDb9dhPctMJZlxfWeIdfWaCfhWxoJMzJmyBaG6Od Lhafy+oGgei8pJFf+6gH9BspEFE0nM1Ad09oDTlgY1EPhGxeqErPQahIAzM0RpPiQJ5Ul3+te S/xfLKC1eNZ6GKVhqSXRUJbBVf7ovvTl0lLJZpJ+YFq6PPaBhWR0y5H53XiJu9aNWdrGket/Y umQmtxPv1KrHm97wHmPl8gqs497GAnH/geePS7sh1NRT5iJT30aD27qofu7xi4Z0Bw/Z3uQEn Mv7c38pBCWyVNnug+b8TzVVwgyYq9fc7Umceobmjo1as/cF4j+HzQwods8irsPSvvR5OC4O8a pX8k+0w3EJE3rxMhGZl6WMEde+Iwr4gEF8fIy4bt9W4y8NigphNI/OeNuzk2TCdnO4thKPk9n Zxu/QMqZE9TIjzb5oFNtrNPBrdv/cePZ1jBp07UpoPnCFrkbMd7NFVSlMJm5N/Cd+UlxMjea6 2VsH7RRzzSE4dFW8l/0e/8dsKBSpoCCuAMeJ7vINmiODaY/FacYF60d/yWY5Y8bDh5p2bE2gL 6Hs+SrrpoJh5lkhAxLBj2oMoi4kf7VJwCC/q5iuYuQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282539667100019 Content-Type: text/plain; charset="utf-8" From: Helge Deller Add emulation for the CLONE_PIDFD flag of the clone() syscall. This flag was added in Linux kernel 5.2. Successfully tested on a x86-64 Linux host with hppa-linux target. Can be verified by running the testsuite of the qcoro debian package, which breaks hard and kills the currently logged-in user without this patch. Signed-off-by: Helge Deller Reviewed-by: Laurent Vivier Message-Id: Signed-off-by: Laurent Vivier --- linux-user/strace.c | 1 + linux-user/syscall.c | 27 ++++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/linux-user/strace.c b/linux-user/strace.c index e9757ed9adee..5eff70d7727b 100644 --- a/linux-user/strace.c +++ b/linux-user/strace.c @@ -1116,6 +1116,7 @@ UNUSED static const struct flags clone_flags[] =3D { FLAG_GENERIC(CLONE_FS), FLAG_GENERIC(CLONE_FILES), FLAG_GENERIC(CLONE_SIGHAND), + FLAG_GENERIC(CLONE_PIDFD), FLAG_GENERIC(CLONE_PTRACE), FLAG_GENERIC(CLONE_VFORK), FLAG_GENERIC(CLONE_PARENT), diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 44498e9e8ac7..374e115dab13 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -171,7 +171,7 @@ =20 /* Flags for fork which we can implement within QEMU itself */ #define CLONE_OPTIONAL_FORK_FLAGS \ - (CLONE_SETTLS | CLONE_PARENT_SETTID | \ + (CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_PIDFD | \ CLONE_CHILD_CLEARTID | CLONE_CHILD_SETTID) =20 /* Flags for thread creation which we can implement within QEMU itself */ @@ -6730,6 +6730,17 @@ static int do_fork(CPUArchState *env, unsigned int f= lags, abi_ulong newsp, return -TARGET_EINVAL; } =20 +#if !defined(__NR_pidfd_open) || !defined(TARGET_NR_pidfd_open) + if (flags & CLONE_PIDFD) { + return -TARGET_EINVAL; + } +#endif + + /* Can not allow CLONE_PIDFD with CLONE_PARENT_SETTID */ + if ((flags & CLONE_PIDFD) && (flags & CLONE_PARENT_SETTID)) { + return -TARGET_EINVAL; + } + if (block_signals()) { return -QEMU_ERESTARTSYS; } @@ -6757,6 +6768,20 @@ static int do_fork(CPUArchState *env, unsigned int f= lags, abi_ulong newsp, ts->child_tidptr =3D child_tidptr; } else { cpu_clone_regs_parent(env, flags); + if (flags & CLONE_PIDFD) { + int pid_fd =3D 0; +#if defined(__NR_pidfd_open) && defined(TARGET_NR_pidfd_open) + int pid_child =3D ret; + pid_fd =3D pidfd_open(pid_child, 0); + if (pid_fd >=3D 0) { + fcntl(pid_fd, F_SETFD, fcntl(pid_fd, F_GETFL) + | FD_CLOEXEC); + } else { + pid_fd =3D 0; + } +#endif + put_user_u32(pid_fd, parent_tidptr); + } fork_end(0); } g_assert(!cpu_in_exclusive_context(cpu)); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282492731747.1837476719994; Wed, 8 Mar 2023 05:34:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZts7-0002pL-BG; Wed, 08 Mar 2023 08:30:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr1-0001k5-Vn for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:18 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqw-00065x-G1 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:11 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MvJo7-1qQtwj15ub-00rL8P; Wed, 08 Mar 2023 14:29:08 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 14/28] linux-user/sparc: Tidy syscall trap Date: Wed, 8 Mar 2023 14:28:43 +0100 Message-Id: <20230308132857.161793-15-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:74NF9BUavhkFdIHGsVoV/LB4EEsOrkxuu9jm+0mN+TtQvNYJdO0 AdDTp4IRSWxakLL15TyfcChNIFxhScQxo9a2sWjGE72hnId3CV+YeBcgQ7me1JwbJV4Wq6E RBJ1QeqYKSMsChr3raQX1cAYW8ADhVsF86DYnO0PSYuR6zc0nxjyZ/zoJTZCNmx7JqaW6FE fkhlVEkC+JzZp3tzRWkEg== UI-OutboundReport: notjunk:1;M01:P0:i4ILVZGdys8=;N2XPW5mi+T0BnvbfNue5zrMgars 642QsEqtcCvy9GanTFazO16beP63+WAqplExChsv1ikGNr/JFdw1jJDCcVyBUpdjtvR4CeW2p ofqAc+bmfjJNLxLT6K3pYxI5dNlCspFXyCjYf5b/HCz4nW7noJzVrk3Cxe1+F4SofSuVLFutu Otk3aLzD2aWOUEt/PjSR03/lTSQWfnF6ytsCt2qYD+If2qe5eWRklBBYRejsM01VAQ/G9snkI 2z8xiT3Z+FfS733YDjRfjfpaGmY6PS0lC4+N46+QB12bdNNVCudvDJ/8bFfvWJqL9VhgqerZn e02gpaGhyaY1ZBlq2pKLBVllyuZ1OSwd78tvcY8qWAffR10WbjnbTgjkxJROB0uBuIdohHkY9 /c5xyciPFTF4plLs0GTF/bdo1Q+K+zy+W/ub9tu1szAUmBc6h85HpXSaNs56TyDLxhGkKWyhd vzuNnyDPRt9smmMOLNN/xXB9iMGXIO3aQWMTcVsVTi1BoDjMKECoFe07HjWa4lHHe42/J975s RYVw2FfZ6kyURZxh2R9aorqEK2fxfykXcAJqlx+wEQb4xXgdo55Zx0ShwGSXsJ0zPhhNYtzEV ZtBKsEB8K/oQcvLcbzMFTQSxDBR2mi32l5HzhZ9sK445Ee/cVCJ9l10MmTALvnMMLuoeewJY4 XD3UXUrw0EcC53c3VppVTAN6la51f4ujc6Sc5eRZUQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282493538100003 From: Richard Henderson Use TT_TRAP. For sparc32, 0x88 is the "Slowaris" system call, currently BAD_TRAP in the kernel's ttable_32.S. For sparc64, 0x110 is tl0_linux32, the sparc32 trap, now folded into the TARGET_ABI32 case via TT_TRAP. For sparc64, there does still exist trap 0x111 as tl0_oldlinux64, which was replaced by 0x16d as tl0_linux64 in 1998. Since no one has noticed, don't bother implementing it now. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20230216054516.1267305-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index c120c422786a..d31ea057dba1 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -149,6 +149,12 @@ static void flush_windows(CPUSPARCState *env) #endif } =20 +#ifdef TARGET_ABI32 +#define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */ +#else +#define TARGET_TT_SYSCALL (TT_TRAP + 0x6d) /* tl0_linux64 */ +#endif + void cpu_loop (CPUSPARCState *env) { CPUState *cs =3D env_cpu(env); @@ -167,13 +173,7 @@ void cpu_loop (CPUSPARCState *env) } =20 switch (trapnr) { -#ifndef TARGET_SPARC64 - case 0x88: - case 0x90: -#else - case 0x110: - case 0x16d: -#endif + case TARGET_TT_SYSCALL: ret =3D do_syscall (env, env->gregs[1], env->regwptr[0], env->regwptr[1], env->regwptr[2], env->regwptr[3], --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282376834324.8848890660679; Wed, 8 Mar 2023 05:32:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsX-0003ai-Vg; Wed, 08 Mar 2023 08:30:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr1-0001k6-W3 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqw-00066B-On for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:12 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MNLVU-1puKQI2xIY-00OqsA; Wed, 08 Mar 2023 14:29:08 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 15/28] linux-user/sparc: Tidy syscall error return Date: Wed, 8 Mar 2023 14:28:44 +0100 Message-Id: <20230308132857.161793-16-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:1zYLFWVGtO4rrkiHHvdEeDaaS+AIk46JYu54xrsxI0kzDl8u0Fm Gz5zu1pwF6Hgjsz4vpTfI553Vf9kYOOx1/qth+iqgPhNKQzq69iP2skqhmEGs3ZOViyNO+m lb3kA4eySiHBWNLH9fPTXVmZEnltXwH4tRx5iWpY18v2AatH/qlFiVoFg9HuXcIgVoQOYwU VD6yeMcLwugqZlvwsWZ5w== UI-OutboundReport: notjunk:1;M01:P0:3AF6ejRiUeM=;UQDz40gRA8/+ZM6eb4RbUivwTpj vLeIhz5Hd4hWzLppNPQDdIZMBoHxP0fJWA1mj0s0iQWlDCa02uhPOfMXAJi06MdRXc7aAVVt2 uY1AWLVZoIMAbiAKZ2ZUW6DoKmXoQcL6Wld5RLnM0gR9+szKf/6lpz+26G7DkV2LHYKKiVbIj 5AqOKwJeaf84NowBGgyRBRV6GEPcmmQkRBhQHTrf+LSvPPAk4wI8pXrwGB0DaoEBfGABR1Pw0 E6Eyv2DUpxapyWE0Qvy8vwNUFoLUh0JKlSjIb5rSwr5QpEKyE+1j19GwTbk+TU2q7J2NUasmP 0S54R/zbvGumY3XkirK1Kof/Q31pX6a0yHkOD+5PW3Z1WaXcDV42CiXdMK1o224i9LEMukj6e CCcA7ECcBCsMoKIM39fyXTUrC0F4eDESxfgzfDAuK1UN4mkSYHTncGvDNhxQwgzGpaAEHdfst AO7NtUoO/542+luMQWuh91XptQ4JtXAVRN9veKNy1kfZhrxa9qqlenK77BbzehbWuEf7/yhay XQ2UYPIOR7rlqNY9XBqdHlsxwxCxPFEaZRwKR9sOJUrCVNTzpTFqdow9gzJWGEcomUaVk0N1o cCqg2ZMwkYnVsVju0CPPGRgo3DazAn4mAj0hEU0u5RRubZP8VOBJnXQzJ3ASslxWcmp4fCtUT IczCl/vBFAWlHJpj5cz/LBM4g4zPXKMiEkkF1ciqEg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282378868100005 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reduce ifdefs with #define syscall_cc. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index d31ea057dba1..051a292ce520 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -149,10 +149,13 @@ static void flush_windows(CPUSPARCState *env) #endif } =20 +/* Avoid ifdefs below for the abi32 and abi64 paths. */ #ifdef TARGET_ABI32 #define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */ +#define syscall_cc psr #else #define TARGET_TT_SYSCALL (TT_TRAP + 0x6d) /* tl0_linux64 */ +#define syscall_cc xcc #endif =20 void cpu_loop (CPUSPARCState *env) @@ -183,18 +186,10 @@ void cpu_loop (CPUSPARCState *env) break; } if ((abi_ulong)ret >=3D (abi_ulong)(-515)) { -#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) - env->xcc |=3D PSR_CARRY; -#else - env->psr |=3D PSR_CARRY; -#endif + env->syscall_cc |=3D PSR_CARRY; ret =3D -ret; } else { -#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) - env->xcc &=3D ~PSR_CARRY; -#else - env->psr &=3D ~PSR_CARRY; -#endif + env->syscall_cc &=3D ~PSR_CARRY; } env->regwptr[0] =3D ret; /* next instruction */ --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282483326740.4345759337541; Wed, 8 Mar 2023 05:34:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttP-0004JW-VL; Wed, 08 Mar 2023 08:31:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr1-0001k3-Vc for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:18 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqx-00066O-Aq for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:12 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MN4ux-1pswAi0qMX-00J6mH; Wed, 08 Mar 2023 14:29:09 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 16/28] linux-user/sparc: Use TT_TRAP for flush windows Date: Wed, 8 Mar 2023 14:28:45 +0100 Message-Id: <20230308132857.161793-17-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:qYeN/98GA+NYxRnwkmNYGUOlzKULnF6Rw0/ovNou3wr0X+3AO4h vlTKXRr3kKH80mPHPOHvkCpRkdwJcp6VcJKsP6RGtLbQI5zQgyTHsZg00/rksEeGbA2vUgf IAz1clgW2rGYZHfxljnPOBLQYQMJPEUZdweya6IIv77ag0fzErcp2ErddNcWG0KEcrJNqCe pc+EgkAGBMuVf8QFsv2FQ== UI-OutboundReport: notjunk:1;M01:P0:QjSPUjZxwFg=;hz/Ue82yjk/W9kIx5u83czCGIYs zN6DB8ZUr0Ps7IG1XkJHa1iwT5PhUI2UhHVMSvFduqtT+JsX2SZuS6VNISQDI6jge4stHNKih BvuKrd0ac4BRy+EZMVkx457FnCvmvzCRwtxYyExHaCuugK49FvJISo53uAUbgmGWD8+ibULS1 njhktL/V44/UQsxoyaMYqz8tFcF+cln598ZrZq6sl3Hc1aoUSDVsWKPEkKz9vBIQcVn8MO93j q5ubLOYJA3cxQz0UlNH5OzorPXvZVc3N1cis64rmVgJ+9M8vj5hXTxlcUdcGhVaS99iOf5K1g Wq7itVDgfMuyL495rnNg+tbNp66sRpcagFIqw/XZfDmoekFl0gv+sObSN4Ec5Ax+rpCgJVvf+ k2lwWenitTAFDIDeJz4vO8xJixcFSyot5aUBQ9p9IvTPHaimDg9rBVn61mfsz54qkTBswbg7r SjELpCLAJ0lf2q0Lwq8KnR21V8+oUyYBX5A/kuusgLcJrK463PLDdCDzjPRcxU61lTn93fUPc 4TNyLhSTO1ovZ3wv+GLgpUD322fSCxUfOaXalnZMHqCh1rYjbmeRVqNzl+PYP9vWuTaCJou54 hsyV5Nf5ymywt+AZd2PXZyBF09sM6BC3sr4P3k5YEmIbVHO93+yKIRUH/hEHSvg0ckxeyPc9h XkrVomcMmCAZlTi4oel+ra1ecG/EwEIILpLj1agVeg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282485468100007 From: Richard Henderson The v9 and pre-v9 code can be unified with this macro. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20230216054516.1267305-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 051a292ce520..e1d08ff2045c 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -196,15 +196,14 @@ void cpu_loop (CPUSPARCState *env) env->pc =3D env->npc; env->npc =3D env->npc + 4; break; - case 0x83: /* flush windows */ -#ifdef TARGET_ABI32 - case 0x103: -#endif + + case TT_TRAP + 0x03: /* flush windows */ flush_windows(env); /* next instruction */ env->pc =3D env->npc; env->npc =3D env->npc + 4; break; + #ifndef TARGET_SPARC64 case TT_WIN_OVF: /* window overflow */ save_window(env); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282465126257.97775551245627; Wed, 8 Mar 2023 05:34:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsX-0003Xp-MJ; Wed, 08 Mar 2023 08:30:49 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr5-0001kl-7F for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtqz-00066d-SO for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:18 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mbj7g-1q8OnD2xiA-00dF3y; Wed, 08 Mar 2023 14:29:09 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier Subject: [PULL 17/28] linux-user/sparc: Tidy window spill/fill traps Date: Wed, 8 Mar 2023 14:28:46 +0100 Message-Id: <20230308132857.161793-18-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:qF8BqfTZHyvBEz/BQyLZFKI+mzZylXNGIarDwpwSKTKkWOqV7bU uMKoYl430EjOjcxPUefjCFKFTpM0u0uJG3R3jTfzy2wWneoMzQxMblACjC3dVn7Mltq6bqX jslMOPwyei/B9KwtSxbOoAvDgzNJ6QxkJzHp1NjVBKgHWlSymWjg/9OJq97mYwAx28CUfnK m7ojPAJRRF33bFf5gRUkQ== UI-OutboundReport: notjunk:1;M01:P0:dt6hapDWLQI=;9ZejsjhzCDBV0tkNeTywNGh8PFv qmCStgz6qB1u0t8oLh8kyA4tMJI9Yk5/u04CHstU9KDlfwaOxSr6cg521yIcHrk6s65a5N6XO sQC1AicVFyMRG4vDsOCR3p9egb+RzADD2dDfkBoggGmW9UVdEl+qNvfmGYcjzIgUkwRH3XMAa mc1JG2X0GS41B6tLJRYzXeYEv+TamN2I1jtMBgMX2iB5OgVCfqcmWya+Ew4MHqHTN17oF2X9e bcbeVAXagMFLF/kkmEylFyM1XuTz8Ea5SpEoKhyQaVmHaql3iUvg7apXQqsnNDxaBG2qqZczK wW0c8vuCTRhIMq+dYoqAf5/3sx5KUyPqb5U8PVdcwGQkqUMAPYI6m0chjCWLCDQ2RnGtq7FKM MwUopPdzqX+3T8srPyuSnZhANFwlYoYB3XjspMaWojEyj9d9R2IkGr4gTy7AjGkVXCBdUw/UQ 6VhXOaU0Co/KNGFixwtsEYoSW4+n9Pwv4+jb9QEzfDnMUqfqSiNgANvQ8pruCShIfCLrqvUIy HB//AlxBU1keCUh1UeHl/JopSW8/jOXSrM+L3qtK2v0BT8b04ZN7T32m9pE5n/IOumzJVe7Fr HacfSVGiF7qRzLIbW7dgzGshAReATK/W0EHj5EfJIYQ2fwfxRnfR5dfUFQOYHdsLivh3qkpwn dcTjTUbCGG5GsgVzY9YI5Gg/Dk1FEw4QlV1MF56eDw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282467296100003 From: Richard Henderson Add some macros to localize the hw difference between v9 and pre-v9. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20230216054516.1267305-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index e1d08ff2045c..2bcf32590fa1 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -158,6 +158,15 @@ static void flush_windows(CPUSPARCState *env) #define syscall_cc xcc #endif =20 +/* Avoid ifdefs below for the v9 and pre-v9 hw traps. */ +#ifdef TARGET_SPARC64 +#define TARGET_TT_SPILL TT_SPILL +#define TARGET_TT_FILL TT_FILL +#else +#define TARGET_TT_SPILL TT_WIN_OVF +#define TARGET_TT_FILL TT_WIN_UNF +#endif + void cpu_loop (CPUSPARCState *env) { CPUState *cs =3D env_cpu(env); @@ -204,20 +213,14 @@ void cpu_loop (CPUSPARCState *env) env->npc =3D env->npc + 4; break; =20 -#ifndef TARGET_SPARC64 - case TT_WIN_OVF: /* window overflow */ - save_window(env); - break; - case TT_WIN_UNF: /* window underflow */ - restore_window(env); - break; -#else - case TT_SPILL: /* window overflow */ + case TARGET_TT_SPILL: /* window overflow */ save_window(env); break; - case TT_FILL: /* window underflow */ + case TARGET_TT_FILL: /* window underflow */ restore_window(env); break; + +#ifdef TARGET_SPARC64 #ifndef TARGET_ABI32 case 0x16e: flush_windows(env); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282536267289.85531945418666; Wed, 8 Mar 2023 05:35:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtre-00022u-CE; Wed, 08 Mar 2023 08:29:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr6-0001lF-OL for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:23 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-00066q-RT for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:20 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M894P-1pf8uz0etX-005GcR; Wed, 08 Mar 2023 14:29:10 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 18/28] linux-user/sparc: Fix sparc64_{get, set}_context traps Date: Wed, 8 Mar 2023 14:28:47 +0100 Message-Id: <20230308132857.161793-19-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:m843k0kBoCultNKsgrK6bnXtkmMQGCmOv1QB/g34Sv8iuQMvGRB SWYnF+dnwyE9gBCpMXTCt0nZsJYVWEtXsvWavmh/Xo6pcXdy3vH329cVo6zr/Mc0WqNDrHz kBvSRFlfQlg0Q1w2CznHktStY/EWNRO1RlAWgm4r9pNTGnXslhJKfnXOaxx0Db0qufx4RsJ /wntGnkMEdEDrD5k4SDrA== UI-OutboundReport: notjunk:1;M01:P0:b1LHRQgv+To=;Ptw+EZXMTftM3wPoynduOJOCDc6 yLbXgDbYs4Oye/X7xwtBSbP3qG5/wrCSbwtWGbJwkvTCHeKh/bX41aR5Qh+/3XFLX1Qm45Ysz AeO1UFDCURucmJ8ME0tolMbargEpYwXMy34uLj4xRi2xtKIG/1Z4CyoW99Vhm3qDsTyYl/4R5 3oKRf3RtqimtEW+3mbX/JPGo+7Biaj2CboEl85K0WQ5pn3+eyUDTXjxijJDugs6HhscDU9PuI 9OFDP50ckp6cX0vlm19ybmgQRNZut0j+jxGT5TPZ83Fi/8HdDVMHJQh2JxGts0tv+JK6t77lQ tc7pqRE77gHZbAe/uzhn2Ka4CeKQNqh3O9xFW1AjixEXahz6DwnDE73Xipf/ePhz213xaXTbq Bh9DVhmW3rW70UEDKsUbjkvYjmiWi2BcynT8rcOiM4iomfhRbj+xbkiEmtDUETr8BuCcAxLUM 2F+56GsFcG8O58yagV8eKysoHTDfH0qcWB4s4RYEOBaAJw4ltW850prkPqqzlhDnhlosZNV7g DJihmVhXu+qwAMcoWYTzq/VEVG/AlPtk6116jkk9D5wtTiCqQWzyOGFxlIRy9duSujyv/rzDU xapyPTP6A2vC5zKwd3WQUQSt4SJdgdycD1XOtZU8LnPBqBIvx8eBSBYN7N8YAKK5/lXLVMUGa PzznQpQ7dhWIEruxzzGVacwmeyud9ALCfIOIlTFgMQ== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282537648100015 Content-Type: text/plain; charset="utf-8" From: Richard Henderson These traps are present for sparc64 with ilp32, aka sparc32plus. Enabling them means adjusting the defines over in signal.c, and fixing an incorrect usage of abi_ulong when we really meant the full register, target_ulong. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-7-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 21 ++++++++++----------- linux-user/sparc/signal.c | 36 +++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 2bcf32590fa1..edbc4f3bdcbf 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -213,25 +213,24 @@ void cpu_loop (CPUSPARCState *env) env->npc =3D env->npc + 4; break; =20 - case TARGET_TT_SPILL: /* window overflow */ - save_window(env); - break; - case TARGET_TT_FILL: /* window underflow */ - restore_window(env); - break; - #ifdef TARGET_SPARC64 -#ifndef TARGET_ABI32 - case 0x16e: + case TT_TRAP + 0x6e: flush_windows(env); sparc64_get_context(env); break; - case 0x16f: + case TT_TRAP + 0x6f: flush_windows(env); sparc64_set_context(env); break; #endif -#endif + + case TARGET_TT_SPILL: /* window overflow */ + save_window(env); + break; + case TARGET_TT_FILL: /* window underflow */ + restore_window(env); + break; + case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index b501750fe0f1..2be9000b9e04 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -503,7 +503,23 @@ long do_rt_sigreturn(CPUSPARCState *env) return -QEMU_ESIGRETURN; } =20 -#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) +#ifdef TARGET_ABI32 +void setup_sigtramp(abi_ulong sigtramp_page) +{ + uint32_t *tramp =3D lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0); + assert(tramp !=3D NULL); + + default_sigreturn =3D sigtramp_page; + install_sigtramp(tramp, TARGET_NR_sigreturn); + + default_rt_sigreturn =3D sigtramp_page + 8; + install_sigtramp(tramp + 2, TARGET_NR_rt_sigreturn); + + unlock_user(tramp, sigtramp_page, 2 * 8); +} +#endif + +#ifdef TARGET_SPARC64 #define SPARC_MC_TSTATE 0 #define SPARC_MC_PC 1 #define SPARC_MC_NPC 2 @@ -575,7 +591,7 @@ void sparc64_set_context(CPUSPARCState *env) struct target_ucontext *ucp; target_mc_gregset_t *grp; target_mc_fpu_t *fpup; - abi_ulong pc, npc, tstate; + target_ulong pc, npc, tstate; unsigned int i; unsigned char fenab; =20 @@ -773,18 +789,4 @@ do_sigsegv: unlock_user_struct(ucp, ucp_addr, 1); force_sig(TARGET_SIGSEGV); } -#else -void setup_sigtramp(abi_ulong sigtramp_page) -{ - uint32_t *tramp =3D lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0); - assert(tramp !=3D NULL); - - default_sigreturn =3D sigtramp_page; - install_sigtramp(tramp, TARGET_NR_sigreturn); - - default_rt_sigreturn =3D sigtramp_page + 8; - install_sigtramp(tramp + 2, TARGET_NR_rt_sigreturn); - - unlock_user(tramp, sigtramp_page, 2 * 8); -} -#endif +#endif /* TARGET_SPARC64 */ --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282448107790.9420959556246; Wed, 8 Mar 2023 05:34:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtuQ-0004oE-CV; Wed, 08 Mar 2023 08:32:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrD-0001qi-OC for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:35 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr3-00067b-5v for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:21 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MJn4B-1ppdK23Qb3-00KCjf; Wed, 08 Mar 2023 14:29:12 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 19/28] linux-user/sparc: Handle software breakpoint trap Date: Wed, 8 Mar 2023 14:28:48 +0100 Message-Id: <20230308132857.161793-20-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:fjBjZoyqHCNl+BtvDE4YQ1hdwGAVI/hga55gLu4BFzIK1YmjYbu pxWR04QZ3RRbyXWpPtCZC4wzUK7HMfgRTWrhpB/jPhP7jw96OgQAztkMEDCZy8UTkOgdnyQ BFwp632Xm5UrRL9tldhJ1DevggeV8nc7gLdNBSJvkUMQwpwrZ2Gtkm6aNWvAXGaYuhW5oGv h+wk7yXxR5YEWgiuWWqIQ== UI-OutboundReport: notjunk:1;M01:P0:WQIRc56swgY=;hy6jrCoeqyfBxFVSav+JeJ0OnR5 3nywoACUmsrnRink8vj5W6+QT6nrB/CmsiArqk5FRVAERceNtG8OSefpxzx2Lw+l5HXA20+iL PhJ6IG8igfPr8qV9G/8mmQDN7I6dsN5OejLsKzdy4G0AXzW8bsI5Zu5g87JlkTYcuvfL1u0ts Eb+ilfYeOObxVuD+fAzpR+iZruxqpFtyqPyQqk1OVcDT9CNIJEgiYCxexzAGyIDyRfLh0nmJj bEtzKrDw552BD/9+UfAqsxCsp9eluQr8uBjCT4ODiRZ8sqhJ2di0aC0neFs0YNONd/miysxKJ 76gONd3e9iZYr/AgBYcSHwnnRuUOYpAbUknsa8hEWlhDa0UfhPeszzaBVTvg8He95U1hwz1w0 siPfDeWnTGer1DeZoqz+uQCwfElh5gqCCAdULAHd7LUxLhp9Hj/wDXxd7a7BIoCfdOAqIVaDk Bwq3LNccn6hfEcbR8W1ojVe4tL+25RAmqWSDZBLd8BXHV4fvDz8Om6L+r8p6vGSwbwAHEhZeu R0kyTPVylhfjO4gVgEQKR/6/QtNylyYNQZuL/SPOGVU5NfM76xtighxQ0jN2L21Leh7tgVMU5 bH43fJMkHG/1l2yxQ1Da0atJENQXfU+8HpgKjdM6q5C7PcmoiURfbCYgPUKOpxatAORbdj0Dr ChhcnSMzxpxLONifGXnGgN3o4xU1D1OYr+EJt8xldg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282449306100005 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This is 'ta 1' for both v9 and pre-v9. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index edbc4f3bdcbf..c14eaea16370 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -206,6 +206,11 @@ void cpu_loop (CPUSPARCState *env) env->npc =3D env->npc + 4; break; =20 + case TT_TRAP + 0x01: /* breakpoint */ + case EXCP_DEBUG: + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); + break; + case TT_TRAP + 0x03: /* flush windows */ flush_windows(env); /* next instruction */ @@ -237,9 +242,6 @@ void cpu_loop (CPUSPARCState *env) case TT_ILL_INSN: force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; - case EXCP_DEBUG: - force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); - break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282558096559.0816390374055; Wed, 8 Mar 2023 05:35:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtrc-00020l-H7; Wed, 08 Mar 2023 08:29:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr5-0001kj-6q for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-00067e-Oz for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:18 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M6VNX-1pcNlJ17X7-006v4Z; Wed, 08 Mar 2023 14:29:12 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 20/28] linux-user/sparc: Handle division by zero traps Date: Wed, 8 Mar 2023 14:28:49 +0100 Message-Id: <20230308132857.161793-21-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:jx1dbuJkZcVQm+wcO1oYS1zmFQF0plfgeovlw/wxXRh+LqtIiRK 92mEEnGmv7EiJ6e4DFVebex56auYdZHh37yg4iomlx7ETkq1FeKeI2pf31mmMiZT5B16UsE X4akwDl4rU2BwQLThUJ3/rO5OS77lRbv+NOOpOboFrJC9+X8X4jSv9O/67GlO1BwGxHpSTR 45Q/Vqo3qHgS4k/RQ407g== UI-OutboundReport: notjunk:1;M01:P0:UOBA8DhajhQ=;nTlcw1TbnJvITwKeuoHlkmM1ZIk FYsL8QvJi3d29MukFcwKiNCfHh/P3hKnITbu3Md7b1QVJZ0H/iNQWMM/5Q/X8kGksi1bjVQjd Woc9XLgXvG8oVbVz8ChKMppDpsQMVJVRcMsLjKLIPpwJb2G7EXbz8b8spay7npN2MKkNbjX9G 4xSi3mZWiiGDHWKgaHdavAVTXZeEYQIoXYE32j6r6InEn2BSGWW0Hnz2sEzL/iJZidUP7kO1V Ld50oTnjWQ9v3dg+PCgr0lHDA708y8myBJubyEZ9F3MymIfmCxd9S7d+IGUQB76hnpVjUZRtp iirzFYFMVen7OFs7Qkg19eNVMkW/LyPwYCYlPziz4+yiSg0qy/+y01s6AXc7fY2hdT6WL+K2B cV/kfkLk3Aqbram2S4dvK220jvoHCBbs0panfiJ0IhAbs0OtcIW721QgAeFp3r5zJTx5eCQRa L2xCf0tnCYJlsunQZpCsawpp8nw+58y9HL3E1UT2DjsvQLqbiPj26Xubyx6+e0sE8JqMfzYV/ KvaKthX0QhhfzqTJtcDaBZepKqbG7ffLFvrOvel/jCIeP/tydAj45DcF3xycAgInyZKwmW1qh nZ20vaq1BptPg1bPrRk76zru/7oYAF09K2ELiT8oe0ptC0np+ZABBQOcn6YU8+tD0r1EsgReF 6Rk1Rv8/UEnnNHBbjexkyKb6bCiNb9WovjVQmYJiXw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282559795100009 Content-Type: text/plain; charset="utf-8" From: Richard Henderson In addition to the hw trap vector, there is a software trap assigned for older sparc without hw division instructions. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-9-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index c14eaea16370..e04c84286769 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -211,6 +211,11 @@ void cpu_loop (CPUSPARCState *env) force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc); break; =20 + case TT_TRAP + 0x02: /* div0 */ + case TT_DIV_ZERO: + force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc); + break; + case TT_TRAP + 0x03: /* flush windows */ flush_windows(env); /* next instruction */ --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282387490935.3662304116187; Wed, 8 Mar 2023 05:33:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttO-0004Ii-Ij; Wed, 08 Mar 2023 08:31:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr5-0001ks-Dx for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:21 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-000683-OH for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MzyAy-1qWgyk2vbC-00x5iS; Wed, 08 Mar 2023 14:29:12 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 21/28] linux-user/sparc: Handle getcc, setcc, getpsr traps Date: Wed, 8 Mar 2023 14:28:50 +0100 Message-Id: <20230308132857.161793-22-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:eHalJmY8rD8wOf1IC4sz+QHbX4m89J/lQVnkR+6/eBXHlq3zCKR sub+U5ODxaJBaVRAaOeYHKFzqdYqtjNyCAa/BWcxr2Gg7c3/URN4ewkKJh7cbtEhqrBNnrd vd0Kij7922yYycxxOisj/vH+RtNLb+eRQnmkt6qhOfEqV3hJwGzHV6Vfx4YAWxB3AiGuXN/ qjbEM4lczd1d26+PYOOGQ== UI-OutboundReport: notjunk:1;M01:P0:nwc34GiXmyw=;HBT6wV9vyfEdwANIOnFm7oCYbKz lirTj/z7xtqo+2gPWmnGziF2eMppa5bkKGp1hy4HBdhCGQDjsnOtc+LGCpE40T7AOJHAIApRp 9dzHhNtqsp7TNzEmHwXHZrcPz3UQ4EkAA5Wtl73eKPGXBD7mSbAhM5+d0DUd762VsRKOlh1HG c81+8w6+AxSWsX8sGr2LAenMSKX6Vk9ogwzv42a8CUqUtmggE1kbh38PErw8Jtiiy8Vk5g0xt 8qtX+6ad38JR3YdFF1lLbZAVOCzhrAVAZaWlOfBYVigZBP47+Pl4idvKQn2diUWxEpxO3TyTz WoDRZrCcRcSF2PGC49KDiuSAKgQTsAT0h6htcMNjodRqLbs2xy51KMt0sd+mSHCY59krqupR+ pFkf8k8WtbARW4A3oJQVsOoYzHzKVH9i5EK2Fj+dI8pjARBpX/OMhF32u2DKsqKT/0xsK2eoe iABAxLHcy+lkcpSfhNYlso2OVYsW0GFJe8pPUnA/nIIReMcGAj3/oAEAJ/iz5FCRvUjf2yYcx EiXxuPTnEDtf4a4KtwKEtrM+zClf6BKIVm4Qca38tgO3jtvN5BYWh0pZkzf5tYjfZRGwa8KKG 9m00X99fJ49pl6CZgchBxYmgFgiZl9tsCVFNwuIM4VOGZESToJZKOrsH3e7DsufFA2MfSFPW/ ANobOTGv+n0/pv6Zzv7Lg22XIvMtOOJtiH2U6FXQAw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282388893100007 Content-Type: text/plain; charset="utf-8" From: Richard Henderson These are really only meaningful for sparc32, but they're still present for backward compatibility for sparc64. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-10-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 62 +++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index e04c84286769..a3edb353f6fd 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -149,6 +149,51 @@ static void flush_windows(CPUSPARCState *env) #endif } =20 +static void next_instruction(CPUSPARCState *env) +{ + env->pc =3D env->npc; + env->npc =3D env->npc + 4; +} + +static uint32_t do_getcc(CPUSPARCState *env) +{ +#ifdef TARGET_SPARC64 + return cpu_get_ccr(env) & 0xf; +#else + return extract32(cpu_get_psr(env), 20, 4); +#endif +} + +static void do_setcc(CPUSPARCState *env, uint32_t icc) +{ +#ifdef TARGET_SPARC64 + cpu_put_ccr(env, (cpu_get_ccr(env) & 0xf0) | (icc & 0xf)); +#else + cpu_put_psr(env, deposit32(cpu_get_psr(env), 20, 4, icc)); +#endif +} + +static uint32_t do_getpsr(CPUSPARCState *env) +{ +#ifdef TARGET_SPARC64 + const uint64_t TSTATE_CWP =3D 0x1f; + const uint64_t TSTATE_ICC =3D 0xfull << 32; + const uint64_t TSTATE_XCC =3D 0xfull << 36; + const uint32_t PSR_S =3D 0x00000080u; + const uint32_t PSR_V8PLUS =3D 0xff000000u; + uint64_t tstate =3D sparc64_tstate(env); + + /* See , tstate_to_psr. */ + return ((tstate & TSTATE_CWP) | + PSR_S | + ((tstate & TSTATE_ICC) >> 12) | + ((tstate & TSTATE_XCC) >> 20) | + PSR_V8PLUS); +#else + return (cpu_get_psr(env) & (PSR_ICC | PSR_CWP)) | PSR_S; +#endif +} + /* Avoid ifdefs below for the abi32 and abi64 paths. */ #ifdef TARGET_ABI32 #define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */ @@ -218,9 +263,20 @@ void cpu_loop (CPUSPARCState *env) =20 case TT_TRAP + 0x03: /* flush windows */ flush_windows(env); - /* next instruction */ - env->pc =3D env->npc; - env->npc =3D env->npc + 4; + next_instruction(env); + break; + + case TT_TRAP + 0x20: /* getcc */ + env->gregs[1] =3D do_getcc(env); + next_instruction(env); + break; + case TT_TRAP + 0x21: /* setcc */ + do_setcc(env, env->gregs[1]); + next_instruction(env); + break; + case TT_TRAP + 0x22: /* getpsr */ + env->gregs[1] =3D do_getpsr(env); + next_instruction(env); break; =20 #ifdef TARGET_SPARC64 --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282379081812.11165189832; Wed, 8 Mar 2023 05:32:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttZ-0004O3-D7; Wed, 08 Mar 2023 08:31:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrD-0001qf-MU for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:35 -0500 Received: from mout.kundenserver.de ([217.72.192.73]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr3-00068b-3Z for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:21 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MhCq4-1qDvdj0aX4-00eJsa; Wed, 08 Mar 2023 14:29:13 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 22/28] linux-user/sparc: Handle priviledged opcode trap Date: Wed, 8 Mar 2023 14:28:51 +0100 Message-Id: <20230308132857.161793-23-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:HRboGvqcF/pPfHWKzQAuCVU74wxe8LF0NMlPsEzCTP4q6CbS+Kg n19UtNTOfUdH69t44Fvarv2PR056e5829nVhyFZiVJXSlMkzd7dkEQbq+IXtBBxnHVIFccG N744Ke6wo3PYuBT6C4MpQcbJK5Ztr915dd9h+m6H54+HwBEqnNrDnfYb7Fj/iwcCXnlmtBx hm0l/s8zUkkNpKnr9dzIQ== UI-OutboundReport: notjunk:1;M01:P0:ylWKgJsOWKw=;aZh68si6M7wBPTfjZULHKEyNtNr soToCcdmEC/sNUQZiuIC6r+VrwJK+OWTKdGg+/JDG5XzuDEXMlkItSRzQ6R3s8DVTPcaGgEAN jrNAkquz99ZFV0LcgMehSrTyXqzNCGBaLXb4lQQ6lvnZtj9+IRslvehl7Y4d+/d9SIvPxLJqg 8If9yxzTumSTRZR0NszsCw8DKss66zNrbcLS5zJiNY/WASdhmFnOUNTL4wyuNjLIE5e+fas1j JOhXIwR0LjuefERV0ueTaD+LTIrETyvmKeqZbB9zqInce8E1dAsl9ibTS41AfjWi9YySbNy5G Cp9CYx+BXVA6CAgmzR0i96nkmElRnb3w8apYWEeJJoVNMRkuIhRi5DhnqcY2fHVnsGJ9/3m5A VODjTQNWjOOrVBR4Zt2hhfMcQiDGvSW1ooUy7/Et6MozD30NX7JmUujkKde5Wfp3Zqahw1ysu ZzVQKIyPcbaoqtEZmbBS5gqtH946L9U2TJwx/wAoEBnwP6ATutkZHVb0w/E3a8z6+5HpNow72 18SJ+GkqCRl05XZmjDaKEkMDci5VEe9SKGmJvqOLEjG+CjNMrUQkCq+cHJO5QAc02qanhFBoK Tdt+FAFOp6X3/NQTWHxooYHGo9PafLKWK97RnaB9C06o6AcnSl3G5wiILkGbXI6z9Cd/y/W6t bc/rNM/WxTPSG58yqHcDyICFGen7X1M9GrzOGwWBlg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282380822100011 Content-Type: text/plain; charset="utf-8" From: Richard Henderson For the most part priviledged opcodes are ifdefed out of the user-only sparc translator, which will then incorrectly produce illegal opcode traps. But there are some code paths that properly raise TT_PRIV_INSN, so we must handle it. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-11-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index a3edb353f6fd..61b6e81459be 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -303,6 +303,9 @@ void cpu_loop (CPUSPARCState *env) case TT_ILL_INSN: force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc); break; + case TT_PRIV_INSN: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); + break; case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282533995977.1512476708806; Wed, 8 Mar 2023 05:35:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsg-00040i-5L; Wed, 08 Mar 2023 08:30:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr6-0001lD-Mj for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:22 -0500 Received: from mout.kundenserver.de ([212.227.17.10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-00068h-NE for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:20 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKKlN-1prHTq2Wad-00LrA1; Wed, 08 Mar 2023 14:29:13 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 23/28] linux-user/sparc: Handle privilidged action trap Date: Wed, 8 Mar 2023 14:28:52 +0100 Message-Id: <20230308132857.161793-24-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:6RAAO4vQwXWGHOqmXZYgz20yoyV/pgSxbMb6vpaprBB/PEqb8cj 4BSVOdBA1uY9h7Ks+/Sij1xF5Lx2G/yT5Cg9NnbeDS3KUImoj9Ioj1pLNDp3vYEIo8FbwZQ GsH8fl4DOijGV7+PzfYe/U1gMVCZ7UTXSvCp9ZDNx3palNwjCuvGdGCeBMnxGDKaA5BzApm SZiPMmyaGcIUHJEOsESFw== UI-OutboundReport: notjunk:1;M01:P0:RWngCclXgUo=;HfFZrVHLYG7zei+NmJOWCSsWni2 jWyl95S/k89zFlIe/kPm154ZQWN/y34VnssnK7rtpmk4NyiyyViFGYNQsbEy3o14mY8P5GafP 5+cC/ETlJhR2r/9Kf4kXJJBHHEDSWWtHcs44V7kWTbHdmnL0WqapTfQ0GoiMk8I6rRMxfhRMW JIzzwqKxmc0RSxvWfI0T5qO+OCNxe54Xu9ybcFm5xAH9A6CkckyY0WPAVODHPYfmbsopAe30U tKVKxGSrx75F3xVDGEeTHE6LItoGof5Bs1NwS0ZpjcM3gwpUJbpcL7E932bz9lDvbVXlHI3E3 8lubIw725b5Czb6jT1cuh/Rtkoy6LUzaSUKWpVNj8mqNwShwzOyAnpbepvyWU59yl2OhsLPyu QqIw6E+ASBovOl3wPHJS4EV8oAk4Gshyjs46WcJypQ6A6Ecf7T6cMfU+C8tfDuFgnmSl24DPk uJUT+3ijr0ZIb/V+vKtxB3vsGOP7rMBiV3vldFrg2GLEtIqQXl3lfM0EdITmpZbEdQZP9qUnd dqxPfDnh+i4CtgqUAt7abdqstMsto+m9DajH5ooJFZKZHdQIci2HUpYhreuESCLkU7nMwoVkk FLx1pPpnhdwn8xLI2bQWERygJ4qHWnJx+DgOYu8nI5j/uCwevyXwW4A5aTfGr4+OQgpdgmqll HRs9LJm/u36SHDvQSMZbPmUsujCfoRt14u9ABTYmbg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282535648100006 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This is raised by using an %asi < 0x80 in user-mode. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-12-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 61b6e81459be..43f19fbd9141 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -306,6 +306,12 @@ void cpu_loop (CPUSPARCState *env) case TT_PRIV_INSN: force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); break; +#ifdef TARGET_SPARC64 + case TT_PRIV_ACT: + /* Note do_privact defers to do_privop. */ + force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); + break; +#endif case EXCP_ATOMIC: cpu_exec_step_atomic(cs); break; --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282382459168.86558898243402; Wed, 8 Mar 2023 05:33:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZts2-0002K6-2p; Wed, 08 Mar 2023 08:30:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr6-0001lE-Mw for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:23 -0500 Received: from mout.kundenserver.de ([212.227.17.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr3-00068u-1c for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:20 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MkYsS-1qHETk08li-00m0zo; Wed, 08 Mar 2023 14:29:14 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 24/28] linux-user/sparc: Handle coprocessor disabled trap Date: Wed, 8 Mar 2023 14:28:53 +0100 Message-Id: <20230308132857.161793-25-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:QjSEjlT2k3w0y9I6CZCQZy/QUbx6GQ5cyO+X8+G6+wmviEjBq+U 52XkN6F3W5eQze2vPB5f9N0CrrUHRveaiyhb1Sz5ZgEFf0BEerHiLkDAGiZFSWoWsDjd4yS ehaRvtXui0IMXj+/YbrIv+B4HmrHx3jBu/5tQSUbkYTswDvWIGTTFMPitHPKXys+xRE5yPN AepqqMztB/9OxewhxF4rA== UI-OutboundReport: notjunk:1;M01:P0:E5NAmAY5gBc=;V8Z3gfQXhWoSKY3pm3goizdME4c 4jCUdl2GnNIRpcD9yfvf4xyEsFgreezBGTpdpBXYPJfhASNcP2ll8/kOhTlYT64CDWa0W3pny wlir32dPbOj0N3LHDMKthD64ctrDVkAfjxLUmNTyCEDYzZzUjTaa7nu6CG3ve/nJhsucbF+E5 B6lhSYJtR9lL0gKbJkxDWOF4YWeV+AfU2CH2YJ+xytUYkn2U51y7/Igfngg3EKcwBBaIgO+vh oHlcaVGfjTngYY3VsuQ+TCyjpje+airZUK6w/4rTMd4ix5MuDTiIhcCj1BuWnMu2ItCUgdD+g If+JYMDrPMoKz3LMvoO5XtFQezRCbFFpRtQTRVldkAMZTV4hYpkTaVqKKqdjoMeVqkKTtGEp1 7x85Qce6mzmJztCHwR6wMHCtvbBncDYdVZ2ohOA4lKnR8baKdjkrxsZfMOo8J5gZBL5/HT8gJ IXCBpfrQlN/1oS9jZnpBOUM1JfNdzpQ+4mEh0xGkflodTdOjpzUXNDWQD92t/UPKH5Y1DIDJC DtorbEBkLPaXUWkJFR3lnFSGlBBMAHpM0beMlxiOExO6Ch8TsRr0YbN4Vlex3M7lQrACaaXac NRXjcweiJmpEwZ4iMVYrPhWMT01lYvIAqHE/YuaY+I6MsE4A3+Syg6tdfl8PaRqAUJnGsUVpc ljoJ9g51PvnJXziyBFsBX4a8UUx8No1K/COqwwMX6g== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282382844100013 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Since qemu does not implement a sparc coprocessor, all such instructions raise this trap. Because of that, we never raise the coprocessor exception trap, which would be vector 0x28. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-13-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 43f19fbd9141..bf7e10216fe1 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -311,6 +311,10 @@ void cpu_loop (CPUSPARCState *env) /* Note do_privact defers to do_privop. */ force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); break; +#else + case TT_NCP_INSN: + force_sig_fault(TARGET_SIGILL, TARGET_ILL_COPROC, env->pc); + break; #endif case EXCP_ATOMIC: cpu_exec_step_atomic(cs); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282480625988.0559295486227; Wed, 8 Mar 2023 05:34:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtt1-0004D3-Eb; Wed, 08 Mar 2023 08:31:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr5-0001kk-7A for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:19 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr2-000692-Mp for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:18 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MDy9C-1pjpTK25PI-009vM2; Wed, 08 Mar 2023 14:29:14 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 25/28] linux-user/sparc: Handle unimplemented flush trap Date: Wed, 8 Mar 2023 14:28:54 +0100 Message-Id: <20230308132857.161793-26-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Otbx1g0NSzrg8O1qhGQStI53DAYQ75e+sOyvIYFRp0/iw1i0qwj +EHaf9NoPrH4OdVQ7/5YM541d0dXkInIH4nWCqTjTnzWZEmbzI9jnUHTgRfxA8zN0eKyG1o HWqUrJZPMIjinyrQS289b9YCaDdSWRqsmveZw8aQrHGjla6HJu6rWXx5eqY/H4oqeSMB/6t OcfO8lJIeYVDKHB+uyynQ== UI-OutboundReport: notjunk:1;M01:P0:k42t6i2XSOE=;AVZBb/+6UE5dfc2Ec9XMbOqwgOo bEARao7c/XmAbwyjtspiqrSoiTCYhRuCKcI2lNY/dbX8xBpJbnan67xTD3czl5epckuOr7+o4 IXExIhSNshqEcR8+NDxPJYYbO9X3QXLoGhmp8cAlVBs1ISJgZL/DpNbnkoZtjqdGjS5/j28dU yiNJc5NJZj/SBp2F5bM8dV+kyQLtogfCt3DAXD48Rf3MeyKYKVyUVddPO8WOee0umE9DRq+Zf BMGzunNmIxikldN6h6hKjJ0z8VuB/jCSvd2Dj9/jraMjnj+iOwfn9c+3Z6+43hdYyUVOV5VWr 1MA01utdN6+2pnq53xJzqIw5Qio9/RDodRUFDk/LHd6MrLfDzLWHcG15fd6nCeY3+Lv9hI1CD /Cm9N7tKN6O4rHv+KLhsDRPxTLwENpAFe2tyH0rQNbwnTD28Lkr+9GQw8pn+7ccr+fJPlBSFK AjMNXRsu+p46Bk0q5Dj/p5sQWNr8xDNbjH+me8PSQG5Qd9ozjG5rZPZ0Epihk4sdG8GUMl34i 78KH5074/C6oEm5kbpuqCz6hpvQKQ7ziJvezBqJT1NE3tSwAJiykEEU6YCLXTRAtlw82QiaIZ vs5cNciwhPmdHZQY2uadUrxg3k8KqcZffGX2mYhOo/bBesxcecJnQY6m0RGzW3ISJNhLrkg4k MbShtnJJzMtKciO8lK/nBWFw66U5Z6Qf8v3vj/qyQg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282481480100001 Content-Type: text/plain; charset="utf-8" From: Richard Henderson For sparc64, TT_UNIMP_FLUSH =3D=3D TT_ILL_INSN, so this is already handled. For sparc32, the kernel uses SKIP_TRAP. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-14-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index bf7e10216fe1..093358a39a4a 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -315,6 +315,9 @@ void cpu_loop (CPUSPARCState *env) case TT_NCP_INSN: force_sig_fault(TARGET_SIGILL, TARGET_ILL_COPROC, env->pc); break; + case TT_UNIMP_FLUSH: + next_instruction(env); + break; #endif case EXCP_ATOMIC: cpu_exec_step_atomic(cs); --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282376697536.9386780342452; Wed, 8 Mar 2023 05:32:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZttu-0004Xs-1E; Wed, 08 Mar 2023 08:32:15 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrD-0001ql-Pv for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:35 -0500 Received: from mout.kundenserver.de ([212.227.17.24]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr3-00069G-66 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:22 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MRnXY-1pykFs3thy-00TF9w; Wed, 08 Mar 2023 14:29:15 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 26/28] linux-user/sparc: Handle floating-point exceptions Date: Wed, 8 Mar 2023 14:28:55 +0100 Message-Id: <20230308132857.161793-27-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:cdCaLCEuPYp6LjNd40NuPkbrygQXunlN85LjOx8UtRkulL4eRbq FKWLDDz3DAZGZhlm5QRudExxwxKBjq9lGV+QyeGQMIZoXaPfM8bYtulCyANOuxr+MYNOfN6 a6Jg9ZIc34/6qyHbP2Ymme4INDwR3SUifVyLfpMsR5jjgsjUL0H4okJYu/RGWj0ivrLdCEK zY1Z9e66e/3o71x91LSkA== UI-OutboundReport: notjunk:1;M01:P0:gKuMY2h/z8M=;gBtJ6krGvV5XDr0qfqEtvX/GGTB l4OJ7ROjZ1zZ8+BBjqsi2MMQc+6ZMq32CHMA3lEEgi5T3WtIne9UEKq2MAeLYbxAF1/bYX/Ub GMN6sMtR+vVMyy+QaC/JY9K48p+0cr8ryZN1cJw4NrokWx4ehvwlS6nEjZapfxnFB0+fpT4zH 1YzJbhYrvxInzxdi/PQ3vo+7REfp4/ptEPTmJ7tDX62lP0hRP7X0rN1NtAcqZ9y25iDYifU0C /zMTmXgwdn2mpfziWleDCpgT7HK3P2xp+m2it23sRAwuD2u2nxQXhYQpI/ESVmP4pwFLjrbHD ZxcVJg4WAx3c7n3m9HoYUcsNd0wEwEBnq5fXWbg8kSPbSW7vei+Hm117OJgsN+AJp0CmO0cbe zVDgjh/twz9HPeSDYxoNBopFgBq7cbe9vMPeNe/fB4zhLqe2K6592vKM8V4dMaUF+Fv8+J+ef 6dlPgVXTYbWPg4UIzIzmLPeaeh3XyDdW1wc2CGMej3pJ8FyIw7O9SnfUoXFPmqa8MWDPDnEY+ 8YTjjt3UAn5l3vlhBO/FN2arNPh9XXzYbnZ+oKZXNlrzr/FWfMeZkSZB6scVzIFXd0PRQgt7m jX2rlzcrbW+AZ9up3ZqtZC5yA7xyCBXrYO5aaJCOmHGISXlHMbF198ZG7IKGe7eoJzU/Cdkvy c9ff09ZjHaz1NEyvGQvLyhqb/a3Dj+CGd2UxpxwDVw== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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, 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282378878100006 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Raise SIGFPE for ieee exceptions. The other types, such as FSR_FTT_UNIMPFPOP, should not appear, because we enable normal emulation of missing insns at the start of sparc_cpu_realizefn(). Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-15-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 22 ++++++++++++++++++++++ target/sparc/cpu.h | 3 +-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 093358a39a4a..5a8a71e976bc 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -297,6 +297,28 @@ void cpu_loop (CPUSPARCState *env) restore_window(env); break; =20 + case TT_FP_EXCP: + { + int code =3D TARGET_FPE_FLTUNK; + target_ulong fsr =3D env->fsr; + + if ((fsr & FSR_FTT_MASK) =3D=3D FSR_FTT_IEEE_EXCP) { + if (fsr & FSR_NVC) { + code =3D TARGET_FPE_FLTINV; + } else if (fsr & FSR_OFC) { + code =3D TARGET_FPE_FLTOVF; + } else if (fsr & FSR_UFC) { + code =3D TARGET_FPE_FLTUND; + } else if (fsr & FSR_DZC) { + code =3D TARGET_FPE_FLTDIV; + } else if (fsr & FSR_NXC) { + code =3D TARGET_FPE_FLTRES; + } + } + force_sig_fault(TARGET_SIGFPE, code, env->pc); + } + break; + case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h index ed0069d0b196..fb98843dad53 100644 --- a/target/sparc/cpu.h +++ b/target/sparc/cpu.h @@ -197,8 +197,7 @@ enum { #define FSR_FTT2 (1ULL << 16) #define FSR_FTT1 (1ULL << 15) #define FSR_FTT0 (1ULL << 14) -//gcc warns about constant overflow for ~FSR_FTT_MASK -//#define FSR_FTT_MASK (FSR_FTT2 | FSR_FTT1 | FSR_FTT0) +#define FSR_FTT_MASK (FSR_FTT2 | FSR_FTT1 | FSR_FTT0) #ifdef TARGET_SPARC64 #define FSR_FTT_NMASK 0xfffffffffffe3fffULL #define FSR_FTT_CEXC_NMASK 0xfffffffffffe3fe0ULL --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282389954182.5067542646284; Wed, 8 Mar 2023 05:33:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtsf-0003u5-Vx; Wed, 08 Mar 2023 08:30:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrD-0001qg-Ng for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:35 -0500 Received: from mout.kundenserver.de ([212.227.17.10]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtr3-00069P-Ai for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:22 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MeC1p-1qAshQ1a8F-00bJbt; Wed, 08 Mar 2023 14:29:15 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: Richard Henderson , Laurent Vivier Subject: [PULL 27/28] linux-user/sparc: Handle tag overflow traps Date: Wed, 8 Mar 2023 14:28:56 +0100 Message-Id: <20230308132857.161793-28-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:fdFnxhXLd3aIYncrq/iT6mDur/NrRQ4i76oAaIfyo0F6fxW4iGv r0EdVWCS26sZED5eCQtyLkKh2PBLXNAEpbXTiZRzq1BGcslRM/zm1yv/z1rFafrbNbYpeW0 AM1A7zIR9OKl2p75E5ziFWFkqjgeKDvRRlQnfhItMUxoUs4PoubS0BGioM3BWBtApwCqQRm PywD+8X3tm2f62Y2og8zg== UI-OutboundReport: notjunk:1;M01:P0:+MdsCgA4oBY=;tV9CkY30a0Oe8eBBNfBlSABK+KJ ir9qxtS1jXyB6QUPmFK3lst065qnXoNmAdOhCEucF41GwsAeHYJvQJBJBXTC+g0uoxtSOfYQS YRrazUwm/tGyPZLGbqHb6DM2PWpey22ufP2EdsWHzmIGCBYmA5k57o6wV19UG//FScRbioFp9 1ZNHCAYhaSOEh0g6S3DEkUc1Br6RXEmnfqnTIwIkY/pXAcboHZGOE6nEg+jx9a2P0ruLG6Xg3 bLzxh88WdxbrAB98+Kdz/tta1dpqT+K92NGoaAxiWE4hQpiM8pMLZ2RhbJ+vN0hM/f674sOrT p/yQIM6kfQVGeK9MX1qsm3illbQZK0o0Etab4T88Toc2GB0mYnjwCnae6YzpQO7EbMHfacLgx 3RGA6+UUkxVfGecDFtKM8ElYd1BhdwkUKRv4Rn768CcYdIj1+PcxHIW4WTa8V/y4DtmH8EE2T 1del1klG4ACJ7XMrgSIe6CW2gaQBpRIilivaifXr3ynO2VqWNG+Qp9OGw+g562JkNg4bajY6U HC2VQCrwxi9hob/ALXiTF2WoMiHjNczMWKQC0nfCTh96qgPW1oNbjApT/7p9TbjpcMwzbLxuP qaRjnngTKMy2Ma4D+7HpkzQYRG9G3/dhQQ/OJCFx141MdMCo5gvlen0nwNaXLRkwmuJE04laf qUmhc7MyYe1wAh3aG5HeyDjiztalLJ89rPOQjw8gyA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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_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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282390857100009 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This trap is raised by taddcctv and tsubcctv insns. Signed-off-by: Richard Henderson Message-Id: <20230216054516.1267305-16-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/cpu_loop.c | 3 +++ linux-user/sparc/target_signal.h | 2 +- linux-user/syscall_defs.h | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 5a8a71e976bc..b36bb2574b94 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -328,6 +328,9 @@ void cpu_loop (CPUSPARCState *env) case TT_PRIV_INSN: force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc); break; + case TT_TOVF: + force_sig_fault(TARGET_SIGEMT, TARGET_EMT_TAGOVF, env->pc); + break; #ifdef TARGET_SPARC64 case TT_PRIV_ACT: /* Note do_privact defers to do_privop. */ diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_sig= nal.h index 87757f0c4e76..f223eb4af6a5 100644 --- a/linux-user/sparc/target_signal.h +++ b/linux-user/sparc/target_signal.h @@ -8,7 +8,7 @@ #define TARGET_SIGTRAP 5 #define TARGET_SIGABRT 6 #define TARGET_SIGIOT 6 -#define TARGET_SIGSTKFLT 7 /* actually EMT */ +#define TARGET_SIGEMT 7 #define TARGET_SIGFPE 8 #define TARGET_SIGKILL 9 #define TARGET_SIGBUS 10 diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 77864de57fb6..614a1cbc8e3a 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -717,6 +717,11 @@ typedef struct target_siginfo { #define TARGET_TRAP_HWBKPT (4) /* hardware breakpoint/watchpoint = */ #define TARGET_TRAP_UNK (5) /* undiagnosed trap */ =20 +/* + * SIGEMT si_codes + */ +#define TARGET_EMT_TAGOVF 1 /* tag overflow */ + #include "target_resource.h" =20 struct target_pollfd { --=20 2.39.2 From nobody Sat May 18 07:48:46 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1678282386063445.98636749690183; Wed, 8 Mar 2023 05:33:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pZtu4-0004na-6P; Wed, 08 Mar 2023 08:32:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrG-0001qz-U9 for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:35 -0500 Received: from mout.kundenserver.de ([217.72.192.75]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pZtrD-0006Be-9z for qemu-devel@nongnu.org; Wed, 08 Mar 2023 08:29:30 -0500 Received: from quad ([82.142.8.70]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M4rD7-1pbozq1Vu3-001yrJ; Wed, 08 Mar 2023 14:29:17 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Cc: "fanwj@mail.ustc.edu.cn" , Laurent Vivier Subject: [PULL 28/28] linux-user: fix bug about incorrect base addresss of gdt on i386 and x86_64 Date: Wed, 8 Mar 2023 14:28:57 +0100 Message-Id: <20230308132857.161793-29-laurent@vivier.eu> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230308132857.161793-1-laurent@vivier.eu> References: <20230308132857.161793-1-laurent@vivier.eu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:/ce/HEm01mDc34IyZsFfx4HnYPlh/PawtXMSggN7zsTuxfM5ZtX LtlVVMpEYWZv5PGgyK8T66rQmzjmFtqR5leFS28LsT0eVUm4meHGWuKUycO4GwY+l6BxFKZ 4UcdD+rvmWD5aB8AQ8PZvky5MhojqsgD9c2eMXeW1KYhGvUofRd3VtRUy451nVXlp9zoBGk bbbVRrAJc+5depC0IllrA== UI-OutboundReport: notjunk:1;M01:P0:80GdTV8838A=;UsOPMBOXK6z5N6giV80HdVJnawn Lp9FqWuT8rcNDAVG/1hSgltwYnXVJNgmHlk/crmmFsYL8j842u/qsNLLWhT7rsFxyhcVgX1BW mmoLx83oDMED70qwOuBEFqUnwCz5CrZIxPMUTRJ9M7OxJ/9xj3PibkmiOHMfi3/Des5K5wmB1 LIf2jVkoO89AMl2Lrsap/v/mFOn0CUiXtIJddEYZRQ+SynDS30rhOui5dgybxNHMuL2F7Ak0t tCTZQnigjPA7jZLZ+1F2c2bXzmK2vzyvKaRBmDPvVxFEwbvsGI/Ir4o6pBrLinU+35ygguMXK 4nmfj4uD6rZw2jwUpqABOo58IjF9h0BxS+2jlj84KHHWVcRHp0+8oDseOxxYLkampof3yAFcC DuWmoJWSvMDZO2XIstP8gX2jy2ybOEcotvhnAiWlHseHcfSjJwzETWP0JctkPiDjWblc/W9Tn WIHFSyeuGgM8RU3Zf/Kd7fqQpuV7kAOs3hPvCUHM9LBgeCwfJn0+8SpobxDcmg8fAPD/NKL77 TcFhhhqbklPS1nWsP4PduRfKH1qXS8eVJUZua4HbSAu5/sslaW/qH6+2a7iDpob2bZ+ZCdn0w iC4PNmS7oFVhbBXr8QRBpCSW6JoernfL4MUNZ/aG7kTe0ZSd/mieyzImPaEwpiRlBHI2GzndG XLn7KJqnmR6PjYKsMKkw6IUAtc8J0kPH3N3wbI77vA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1678282386852100001 Content-Type: text/plain; charset="utf-8" From: "fanwj@mail.ustc.edu.cn" On linux user mode, CPUX86State::gdt::base from Different CPUX86State Objec= ts have same value, It is incorrect! Every CPUX86State::gdt::base Must poin= ts to independent memory space. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1405 Signed-off-by: fanwenjie Message-Id: <4172b90.58b08.18631b77860.Coremail.fanwj@mail.ustc.edu.cn> [lv: remove unnecessary casts, split overlong line] Signed-off-by: Laurent Vivier --- linux-user/i386/cpu_loop.c | 9 +++++++++ linux-user/main.c | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index 865413c08f07..48511cd68875 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -314,8 +314,17 @@ void cpu_loop(CPUX86State *env) } } =20 +static void target_cpu_free(void *obj) +{ + CPUArchState* env =3D ((CPUState*)obj)->env_ptr; + target_munmap(env->gdt.base, sizeof(uint64_t) * TARGET_GDT_ENTRIES); + g_free(obj); +} + void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { + CPUState* cpu =3D env_cpu(env); + OBJECT(cpu)->free =3D target_cpu_free; env->cr[0] =3D CR0_PG_MASK | CR0_WP_MASK | CR0_PE_MASK; env->hflags |=3D HF_PE_MASK | HF_CPL_MASK; if (env->features[FEAT_1_EDX] & CPUID_SSE) { diff --git a/linux-user/main.c b/linux-user/main.c index 798fdc0bce8e..69ca5a4b9b08 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -238,6 +238,14 @@ CPUArchState *cpu_copy(CPUArchState *env) =20 new_cpu->tcg_cflags =3D cpu->tcg_cflags; memcpy(new_env, env, sizeof(CPUArchState)); +#if defined(TARGET_I386) || defined(TARGET_X86_64) + new_env->gdt.base =3D target_mmap(0, sizeof(uint64_t) * TARGET_GDT_ENT= RIES, + PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); + memcpy(g2h_untagged(new_env->gdt.base), g2h_untagged(env->gdt.base), + sizeof(uint64_t) * TARGET_GDT_ENTRIES); + OBJECT(new_cpu)->free =3D OBJECT(cpu)->free; +#endif =20 /* Clone all break/watchpoints. Note: Once we support ptrace with hw-debug register access, make su= re --=20 2.39.2