From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076826; cv=none; d=zohomail.com; s=zohoarc; b=I3oFBkRXqpMi52FRjJdvC57uhXTMN1UwDKkq4jFpVUB6OI+yG1PXUGLoXvTGqckVpkXYikTIDYNxn4ZBGEVMqAzvbbdSsBNEkNxQj8dgE/ncngiUpZsSinysilvz64k2dkRHhCBWr+AdwWGG3pOvUbg99f/mwNjwuZCi0fBV+yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076826; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uIXuZiZ9l8l1+2kKqvwfb3vC3OPO6dOzGvsREz22T5c=; b=byYf4VHF1sUZAeHwQn9fAotjY5DgGdJ+rE0/Qy6lcHd6tHAxGNPuxMcGubKBvvRNaD19UznMkY/gi7XZcvmEfH/EyKhCEdxbb+ddk6Ogv06eC0xdWlBbcdxRrJA/z//3khlDiMv6Cxu+uaTgSPnXnRJo6YEjN5rBcsHyborZejQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076826745245.07638304512363; Mon, 12 May 2025 12:07:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYT3-0005PQ-Vv; Mon, 12 May 2025 15:05:38 -0400 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 1uEYT0-0005LD-QP for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYSz-0007Tg-17 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:34 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-13-qzjMuYRkOxejG_iTBCVVEA-1; Mon, 12 May 2025 15:05:29 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-442d472cf7fso27620465e9.3 for ; Mon, 12 May 2025 12:05:29 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f58f396asm13642884f8f.59.2025.05.12.12.05.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076731; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uIXuZiZ9l8l1+2kKqvwfb3vC3OPO6dOzGvsREz22T5c=; b=A/vVzYVAxgieCmjSkR9bcFhNvjq5tsh+YmESCRLCKnO+lR5/F+ro2C0kKqQsrhI+oBpPmq TQz6tBeB9KDoX7K5Bn2I8JEoTkzC4DhQfZEegGRFR9+L5X/f9G5jM+Lw4Ye63O3MfKnxGm arCUCClEyXv2YGh8JlKySAhkPhCqqkY= X-MC-Unique: qzjMuYRkOxejG_iTBCVVEA-1 X-Mimecast-MFC-AGG-ID: qzjMuYRkOxejG_iTBCVVEA_1747076729 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076728; x=1747681528; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uIXuZiZ9l8l1+2kKqvwfb3vC3OPO6dOzGvsREz22T5c=; b=m/cVBZu+g73ITE1nPQa2DcR5tnEbNH5Hk+VHTuCvPArkDOD6lwUlPZBzTGzAPe2pGI qzAef0XcnkineW+nsfHM+6H/4MirpEXqIg1CkQ9zTJq4JCMPlL8kiQYBEzQlutRzfz21 R/JZcZ0I3EwxM+egGJom1G1elD1L5if3QbfS3blDnaomuEE3JyJWN+3E7Tb9n62/1OFD eJMjQNJvxWjMAKl4kOOjPBq2/boWNxWSC0iG4FD4lFrEZylBIB/nH43EYyFpGxVbvODI yt1o8aDHCdERuZ09qpUmJfstPwBcr0xWQMrTyyXCu93wMnREfM3czCNTQnG2oEt6ij7Z pvoQ== X-Gm-Message-State: AOJu0YxPVDVG9h9MLFVIhqd3L0cj5ihgFBrEwGgMHq6IhYTThoMJrAYp nTxcHErS8NygAdsxKhBkETjsqJJC6nujzh5L0hySO65wCV6IId5wUKfNuHSVnVmiIYIjSby39rL pcvsNe9bOJohToq62m6dfP4RximVKgilicmMg95xh9R4xa07rvY+iSS2Mu3AjYSbrhuZd8b07Uk DuZEqLR7623gcEoMYs0VeMqfqKOmvpJDXHhpmu X-Gm-Gg: ASbGncuVSg2aQNr4MBzuDa26cccLznv3lkX6r5+OThOMFZbxqzthvJmHsbVHGawjM1S fddQM1rgcSKSNURfkIKtSu8Dl2y7BTvUlMs0NFOJvKLpJ2GlXYMDyG1VjqBQrCr0JKp9j3z09jT DsUVtWLhPqYEIXgPIvORjdviL3HKxdXBc2hwYGUPV1YeP6C5E2/R6qGmlF6RNeroBpaONAEbqdk SbYlSI9NrcwcCO7hOK9pYiz3+55jvN3H7gcftynu+JVZLDAatrjb3ybER5jxoMOLBvRLsOlNFMN IZUzo3hzfkDKwZ0= X-Received: by 2002:a05:600c:3d05:b0:440:6a37:be09 with SMTP id 5b1f17b1804b1-442d6dbd4f3mr141644615e9.16.1747076728311; Mon, 12 May 2025 12:05:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGZ2uy9cpn23eFjIVFEX3ZCymSkFgbnjeQOcETVnRr0L3Hkg4ap4H3EnadgfeSosppZM3fiyg== X-Received: by 2002:a05:600c:3d05:b0:440:6a37:be09 with SMTP id 5b1f17b1804b1-442d6dbd4f3mr141644365e9.16.1747076727895; Mon, 12 May 2025 12:05:27 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PULL 01/16] meson: drop --enable-avx* options Date: Mon, 12 May 2025 21:05:09 +0200 Message-ID: <20250512190524.179419-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076828002116600 Content-Type: text/plain; charset="utf-8" Just detect compiler support and always enable the optimizations if it is avilable; warn if the user did request AVX2/AVX512 use via -Dx86_version=3D but the intrinsics are not available. Suggested-by: Richard Henderson Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- meson.build | 30 +++++++++++++++++++----------- meson_options.txt | 4 ---- scripts/meson-buildoptions.sh | 6 ------ 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/meson.build b/meson.build index e819a7084ca..f20a172299b 100644 --- a/meson.build +++ b/meson.build @@ -3097,22 +3097,16 @@ config_host_data.set('CONFIG_ASM_HWPROBE_H', cc.has_header_symbol('asm/hwprobe.h', 'RISCV_HWPROBE_EXT_ZBA')) =20 -config_host_data.set('CONFIG_AVX2_OPT', get_option('avx2') \ - .require(have_cpuid_h, error_message: 'cpuid.h not available, cannot ena= ble AVX2') \ - .require(cc.links(''' - #include +if have_cpuid_h + have_avx2 =3D cc.links(''' #include static int __attribute__((target("avx2"))) bar(void *a) { __m256i x =3D *(__m256i *)a; return _mm256_testz_si256(x, x); } int main(int argc, char *argv[]) { return bar(argv[argc - 1]); } - '''), error_message: 'AVX2 not available').allowed()) - -config_host_data.set('CONFIG_AVX512BW_OPT', get_option('avx512bw') \ - .require(have_cpuid_h, error_message: 'cpuid.h not available, cannot ena= ble AVX512BW') \ - .require(cc.links(''' - #include + ''') + have_avx512bw =3D cc.links(''' #include static int __attribute__((target("avx512bw"))) bar(void *a) { __m512i *x =3D a; @@ -3120,7 +3114,21 @@ config_host_data.set('CONFIG_AVX512BW_OPT', get_opti= on('avx512bw') \ return res[1]; } int main(int argc, char *argv[]) { return bar(argv[0]); } - '''), error_message: 'AVX512BW not available').allowed()) + ''') + if get_option('x86_version') >=3D '3' and not have_avx2 + error('Cannot enable AVX optimizations due to missing intrinsics') + elif get_option('x86_version') >=3D '4' and not have_avx512bw + error('Cannot enable AVX512 optimizations due to missing intrinsics') + endif +else + have_avx2 =3D false + have_avx512bw =3D false + if get_option('x86_version') >=3D '3' + error('Cannot enable AVX optimizations due to missing cpuid.h') + endif +endif +config_host_data.set('CONFIG_AVX2_OPT', have_avx2) +config_host_data.set('CONFIG_AVX512BW_OPT', have_avx512bw) =20 # For both AArch64 and AArch32, detect if builtins are available. config_host_data.set('CONFIG_ARM_AES_BUILTIN', cc.compiles(''' diff --git a/meson_options.txt b/meson_options.txt index cc66b46c636..a442be29958 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -123,10 +123,6 @@ option('valgrind', type : 'feature', value: 'auto', option('membarrier', type: 'feature', value: 'disabled', description: 'membarrier system call (for Linux 4.14+ or Windows') =20 -option('avx2', type: 'feature', value: 'auto', - description: 'AVX2 optimizations') -option('avx512bw', type: 'feature', value: 'auto', - description: 'AVX512BW optimizations') option('keyring', type: 'feature', value: 'auto', description: 'Linux keyring support') option('libkeyutils', type: 'feature', value: 'auto', diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 8a67a14e2e2..f09ef9604f0 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -97,8 +97,6 @@ meson_options_help() { printf "%s\n" ' alsa ALSA sound support' printf "%s\n" ' attr attr/xattr support' printf "%s\n" ' auth-pam PAM access control' - printf "%s\n" ' avx2 AVX2 optimizations' - printf "%s\n" ' avx512bw AVX512BW optimizations' printf "%s\n" ' blkio libblkio block device driver' printf "%s\n" ' bochs bochs image format support' printf "%s\n" ' bpf eBPF support' @@ -244,10 +242,6 @@ _meson_option_parse() { --audio-drv-list=3D*) quote_sh "-Daudio_drv_list=3D$2" ;; --enable-auth-pam) printf "%s" -Dauth_pam=3Denabled ;; --disable-auth-pam) printf "%s" -Dauth_pam=3Ddisabled ;; - --enable-avx2) printf "%s" -Davx2=3Denabled ;; - --disable-avx2) printf "%s" -Davx2=3Ddisabled ;; - --enable-avx512bw) printf "%s" -Davx512bw=3Denabled ;; - --disable-avx512bw) printf "%s" -Davx512bw=3Ddisabled ;; --enable-gcov) printf "%s" -Db_coverage=3Dtrue ;; --disable-gcov) printf "%s" -Db_coverage=3Dfalse ;; --enable-lto) printf "%s" -Db_lto=3Dtrue ;; --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076792; cv=none; d=zohomail.com; s=zohoarc; b=A4Ic/86YJ1XIUxmt3jF2tDfz9jZvzUyxoChKa/ZXhEgzJEfnwN8Ggg5hEeaZt2CNjN7oCN9miHVQVUXEKAhm0sVizEAH5d45cgZ4kvceIM74SkV4iJaZeHFO7aqt7ExtxUNEXzkxhfRTBiofDCofe1yYQYlzBDM70X+vjm+yJEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076792; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hkMjV1RCdSvZc3UqwgDRzKPR4GFZsy1t1ux2ynl8Z10=; b=ESx6BEtrb+YgYUzfeQ8yF2Vus8ILTJzjqkDD4vawucGf7sKmt27y0SErraJrC5AQQfxk3FWtZAeVm7j8V8aXy05M4y4gWK6D6sPTZ9ZEVMuHqq6KO2oi4010QYdpopJmdefwyaz54YQO99JlCiKKFY/+vAH4E4czM4bbjSRa2fw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076792051152.10511824155628; Mon, 12 May 2025 12:06:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTe-0005jp-Bk; Mon, 12 May 2025 15:06:14 -0400 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 1uEYTF-0005Tb-0T for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTB-0007V9-Lr for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:48 -0400 Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com [209.85.208.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-680-NtFOSWBbOHGThgW4o39Zhw-1; Mon, 12 May 2025 15:05:43 -0400 Received: by mail-lj1-f199.google.com with SMTP id 38308e7fff4ca-326c70002d0so19829531fa.1 for ; Mon, 12 May 2025 12:05:43 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442d67d5c35sm136078075e9.5.2025.05.12.12.05.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076745; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hkMjV1RCdSvZc3UqwgDRzKPR4GFZsy1t1ux2ynl8Z10=; b=IeW4fZOZ+xeZgZTR1uNHcqKhqIwGbx1AzOaqH6JET5BEh9nESyxjZXKrxAOdZqp7nF5Brp OETveJVZAKIRtRvyHSukSg160VbRUiMbdx2X8WalQenmYAtT5mR5u8kKukldbxDnA9rq79 qjfKZrBb8UlSlkggOhqqMtPyB0fcBQk= X-MC-Unique: NtFOSWBbOHGThgW4o39Zhw-1 X-Mimecast-MFC-AGG-ID: NtFOSWBbOHGThgW4o39Zhw_1747076742 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076741; x=1747681541; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hkMjV1RCdSvZc3UqwgDRzKPR4GFZsy1t1ux2ynl8Z10=; b=ENr83XhD1Xk3uzObM3i4MHDeB8uawugJ+QEGen6PgN7UJbvtKQ8wdKZnkW01YehUEr sZAxC6BUmeACA+cXkZpxglgPnAIBisrclrnuBd8v7jcA0wTCzyHCaQwYWO9j5EAAM3al B1/lkd4qCHJVw/Rr8WfugAy9b1VKLunQ8Te01mzGJgdkyUsE/HrCeuCsAw0yuy0hfcUe vgxEMRtD1FfJllVpXVt0P4KtUrEj4FYuL0TOR2nASnGUf1gnLhdit6TEl7tHLXMMO+dh TOekDKroQpPxpCDukkmatjHo850y+wUnYdndwPJ9QvAr4sKLOo10i184fV13AWR/n8KN 4nKA== X-Gm-Message-State: AOJu0YxT3Fo1td3xH5PCdECwK7n2X0GiuRgRDYQTvi9nm0E3bcotScgP cflOozc6SKRaPrn5angpyVKVapS7poxacUxrvhYH9ojYiVa6pPSZ7QnDuN5hdz3300/NcrO11+7 NBnFQQGO/3XGP9keb1e/4SiPqaVRiyH1T8mf5yKO34UltYXzssZJlZsYQH2k5g9e0f90e3saCdk 2/tIBDJPbyJkjT5SsWB2BkwCfmbK2jEGF/zUN6 X-Gm-Gg: ASbGncvcnprJB0CLelzZfDltnE4ixC9DMAdzXkIF/zX/OE6+yc1JPjJJYFj5UxsNSfm DWf9x4RUmhXj74vd6E5HOpIjU06ZIRkLeeK4S8K0Fnp/WX/FERRn9HZ9JNoVO+EhiNXqMPGo6I4 O5vQyv8THTOxYJPqqu5DGVgAJV3lNm1cZVsGv8VOmrY86RSHRtlRmUTdwVuj7EqPD0U85NDLGhR XtuHq2IInMGepfFecZRNsFUiYsLY5CYyTlnOKoKtIHKMxgg8yRXgDsqVJptfsuKpr+V56ss2FVg gslOxgMBvfny9bY= X-Received: by 2002:a05:651c:211b:b0:30b:b7c3:ea4d with SMTP id 38308e7fff4ca-326c457b321mr53831271fa.12.1747076741265; Mon, 12 May 2025 12:05:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHBagYP3U/AIInxvHPx8D2AYQidcBM0jf/W6zRUqMq8SRfLNlWmpa80jPGA3ylh1981LtUiWw== X-Received: by 2002:a05:600c:5118:b0:43c:fcb1:528a with SMTP id 5b1f17b1804b1-442d6cf30fbmr114230625e9.6.1747076730001; Mon, 12 May 2025 12:05:30 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 02/16] meson: do not check supported TCG architecture if no emulators built Date: Mon, 12 May 2025 21:05:10 +0200 Message-ID: <20250512190524.179419-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076794188019000 Errors about TCI are pointless if only tools are being built; suppress them even if the user did not specify --disable-tcg. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- meson.build | 10 ++++++---- accel/tcg/meson.build | 2 +- tcg/meson.build | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/meson.build b/meson.build index f20a172299b..a2cebd44656 100644 --- a/meson.build +++ b/meson.build @@ -247,6 +247,8 @@ have_vhost_net_vdpa =3D have_vhost_vdpa and get_option(= 'vhost_net').allowed() have_vhost_net_kernel =3D have_vhost_kernel and get_option('vhost_net').al= lowed() have_vhost_net =3D have_vhost_net_kernel or have_vhost_net_user or have_vh= ost_net_vdpa =20 +have_tcg =3D get_option('tcg').allowed() and (have_system or have_user) + have_tools =3D get_option('tools') \ .disable_auto_if(not have_system) \ .allowed() @@ -863,7 +865,7 @@ elif host_os =3D=3D 'haiku' cc.find_library('network'), cc.find_library('bsd')] elif host_os =3D=3D 'openbsd' - if get_option('tcg').allowed() and target_dirs.length() > 0 + if have_tcg # Disable OpenBSD W^X if available emulator_link_args =3D cc.get_supported_link_arguments('-Wl,-z,wxneede= d') endif @@ -904,7 +906,7 @@ if host_os =3D=3D 'netbsd' endif =20 tcg_arch =3D host_arch -if get_option('tcg').allowed() +if have_tcg if host_arch =3D=3D 'unknown' if not get_option('tcg_interpreter') error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu= )) @@ -2534,7 +2536,7 @@ config_host_data.set('CONFIG_PIXMAN', pixman.found()) config_host_data.set('CONFIG_SLIRP', slirp.found()) config_host_data.set('CONFIG_SNAPPY', snappy.found()) config_host_data.set('CONFIG_SOLARIS', host_os =3D=3D 'sunos') -if get_option('tcg').allowed() +if have_tcg config_host_data.set('CONFIG_TCG', 1) config_host_data.set('CONFIG_TCG_INTERPRETER', tcg_arch =3D=3D 'tci') endif @@ -4959,7 +4961,7 @@ if host_arch =3D=3D 'unknown' message('compile or work on this host CPU. You can help by volunteering') message('to maintain it and providing a build host for our continuous') message('integration setup.') - if get_option('tcg').allowed() and target_dirs.length() > 0 + if have_tcg message() message('configure has succeeded and you can continue to build, but') message('QEMU will use a slow interpreter to emulate the target CPU.') diff --git a/accel/tcg/meson.build b/accel/tcg/meson.build index d6f533f9a1f..97d5e5a7112 100644 --- a/accel/tcg/meson.build +++ b/accel/tcg/meson.build @@ -1,4 +1,4 @@ -if not get_option('tcg').allowed() +if not have_tcg subdir_done() endif =20 diff --git a/tcg/meson.build b/tcg/meson.build index 7df378d7735..bd2821e4b54 100644 --- a/tcg/meson.build +++ b/tcg/meson.build @@ -1,4 +1,4 @@ -if not get_option('tcg').allowed() +if not have_tcg subdir_done() endif =20 --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076769; cv=none; d=zohomail.com; s=zohoarc; b=bMqR66PB2+59qZrthcDaX3cFdXrkMh2i+q8locACM9pITkJHxpXsBKL1kShQ7e2FwnpkGji3DqxsvHhXpo++IB87DqHbZMpX2CV2vCHqtUVO6oP63LVy1S7Ucnl1nGJwDJxTdFOPqr6cZUjCqa/0uskfHNyzPA9lN1pZha6njgI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076769; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6ljvXYz3Ammv9IyTNCcBI9y3hT6/YYDHfD78BUikWg4=; b=oKk8hE5jzWuC9oxjUmvyO1oGNvt7dmxzhADaHPWY4qArY0Axq+AxJJPtVo9J5BsMa4ARCUDocD6Xzy20krgFiKN2f90oD/mteGUH5DaFAjntQw2oyZYoxAGGmir6jxywYmQ6xi+V+G+xZIwHWPKw1MKRnztgXx2yK9FmCTfwt1s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17470767693693.049255773477853; Mon, 12 May 2025 12:06:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYT8-0005Rd-92; Mon, 12 May 2025 15:05:42 -0400 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 1uEYT6-0005R7-FT for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYT1-0007U8-Bx for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:40 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-357-UIJ6T0w5P2e8NwBxJ3-Btg-1; Mon, 12 May 2025 15:05:33 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3a0b7120290so2131918f8f.2 for ; Mon, 12 May 2025 12:05:33 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2cf0esm13435348f8f.79.2025.05.12.12.05.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6ljvXYz3Ammv9IyTNCcBI9y3hT6/YYDHfD78BUikWg4=; b=Kttov9wuB/QuHojRn18DIQN7lzzdWHOqVAdkF64bqWLUSh2jCeMJvV02jYj2ReKdy4JuCu YntlLJ7N5r/7o/vsvYyd68RqC6U8cQ2OsBGYDyhjUnKkPUJB8+oIXr4iKPrAcNz3LgKoxG rw3xSwOHnrPHnCuakivj96DQpOGoOR8= X-MC-Unique: UIJ6T0w5P2e8NwBxJ3-Btg-1 X-Mimecast-MFC-AGG-ID: UIJ6T0w5P2e8NwBxJ3-Btg_1747076732 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076731; x=1747681531; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6ljvXYz3Ammv9IyTNCcBI9y3hT6/YYDHfD78BUikWg4=; b=Qn5l55g4kCEIauFKwdaNUZ6aL+k+fbBN5rRsGZ99PmYpumf4Mdw5+40y6cYCzxrlaN L+b36kiPWFn3KiYKbf7pEq77KKqqGjj6Vnt56bYLRKSkUnb462u+oTubHcv3o3lttmkX 3zJ4ESCOvDzYaANIm+XFoS5nwPDixK0OG9rKz6++LX5KoKfmWD6bsrZWAzmK0oHgbN+U nAhL591rVVla2lqeQ2Z2GLbbHeQ2zS+FQXqNFZWNwVeQFdpwhsifOSLu9j3cGbFMT9iK TFWn6/mL/Bp9cdAZf9VV04NtY8/OiywtGeUBs36EkBH49T7qJ4kI8MQ4SYyXTTyiA+XI OKGw== X-Gm-Message-State: AOJu0YwGqNgTO8jndGaaBc7KAYNHN240A7n/6+CFn9z/tWtLdmkF2u46 i6QftsPZT8+wvOGHLBRt7jWCXscvqf8rgC+1HQtVzVjTm0V7wdhYYUhgqNNS5luBeAnJ/ptKjFn FRSuOO2/dGZfpOKoZ+UhRHAWFiQSlD2NddQeAW/e+iEPwzzgkZb8c97c3V0Uv6Masn0Ki492U83 TicKg0eIskSLnYNQayvrje4MGYipZ4t/D08hTr X-Gm-Gg: ASbGnctEynaOThJ+wh2UssHiETBR5bnBs4OoZl5QmCWvpQff9xC2FsqxhzxZVtQoDua g4lAYZQZib5KpdEoNVYjYMkVqP/w6mnUt6LOb3REESaU5wirTZdlSZsAKPQvSk8h/PfVZiI0ApH 4Jrp70BKPoDf0PzHYtbeJsYjejglYin78r6wU3Ho1yneh2uoRHZPlYbictnhmgFf2uALitlNx53 nS1Sps4VBpyNF9KEkAPuA8i1j1nXGrvdTlVxOpeC5uqpOcgehwPDcpd3moG9bFdcupDfR4P32W5 0YJ375tvZidha3s= X-Received: by 2002:adf:8b53:0:b0:3a0:b1de:1be0 with SMTP id ffacd0b85a97d-3a1f6466002mr9694988f8f.31.1747076731707; Mon, 12 May 2025 12:05:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE84NcwA5CvHlZGtaWIVO3t4VNDgnXS2RG7niBBGP5Nt+hG6B0d0DHgHWLBEb0dopAdiPXrEA== X-Received: by 2002:adf:8b53:0:b0:3a0:b1de:1be0 with SMTP id ffacd0b85a97d-3a1f6466002mr9694971f8f.31.1747076731325; Mon, 12 May 2025 12:05:31 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 03/16] meson: remove unnecessary dependencies from specific_ss Date: Mon, 12 May 2025 21:05:11 +0200 Message-ID: <20250512190524.179419-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076770319019000 Content-Type: text/plain; charset="utf-8" All dependencies that are in common_ss (which includes system_ss) automatic= ally have their include path added when building the target-specific files. So = the hack in ui/meson.build is not needed anymore since commit 727bb5b477e ("mes= on: pick libfdt from common_ss when building target-specific files", 2024-05-10= ); drop it. Signed-off-by: Paolo Bonzini --- ui/meson.build | 3 --- 1 file changed, 3 deletions(-) diff --git a/ui/meson.build b/ui/meson.build index 35fb04cadf3..6371422c460 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -1,7 +1,4 @@ system_ss.add(pixman) -specific_ss.add(when: ['CONFIG_SYSTEM_ONLY'], if_true: pixman) # for the= include path -specific_ss.add(when: ['CONFIG_SYSTEM_ONLY'], if_true: opengl) # for the= include path - system_ss.add(png) system_ss.add(files( 'clipboard.c', --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076821; cv=none; d=zohomail.com; s=zohoarc; b=idEehcg+zbJoN0fvNVrayM8qr4izhK+x8STKLH2AV+3oOgMgvQdwK8sxyypj/bzmd6NkT+D2BlWHH4+PZ8BZIVQiBU6dmTZa17RaJDkjtuuveJ85eh6/v7gl6jWWl/NjqkjOCKoJqOszW3H/ohRABA/w/XvLYoWvqk0mWeRGOpk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076821; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0ehf2YgaMXoxb+fwp0uJKFVwZBOJsson/HPg8rmycXI=; b=Pk2XOuKBbOH4sOdkJdJUCMy2CDRQKtJt2s+a/yWWL7JRfo2is23SE+o/SCzQzDyvdEV0fbEbKv2vjVCH/usEbWmhLLUhtdqwO//C4BMeM9mP27S2O3R4/iFrJU++u9D5xQEp+NJVicP6fRtrLD+ryHf0HG/Yw7ep2/KMZqvAEdA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076821828509.9976062995987; Mon, 12 May 2025 12:07:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTG-0005Ta-Se; Mon, 12 May 2025 15:05:55 -0400 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 1uEYT8-0005Rx-EX for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:42 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYT5-0007UN-8l for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:41 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-454-9m9jfK4dNpC5eJphH3B6RQ-1; Mon, 12 May 2025 15:05:36 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3a0b7ceaa20so1569796f8f.1 for ; Mon, 12 May 2025 12:05:36 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a4cc39sm13200196f8f.100.2025.05.12.12.05.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0ehf2YgaMXoxb+fwp0uJKFVwZBOJsson/HPg8rmycXI=; b=dT8r8fHY+mvQOV83yyBjiB3470tnlkjsGriS1lNMSm8QtsEhWG5af/uPy1y8Pok1/hnV4/ AXtqCY2B2KEVTYlcl9iLmsFpVNWlE28N+imHB6OvTrblVljugaVfEg11VHL6LJQcsJ8WnZ H5Me3sT3p2xIs4bE31UcYHQdI4yz2zc= X-MC-Unique: 9m9jfK4dNpC5eJphH3B6RQ-1 X-Mimecast-MFC-AGG-ID: 9m9jfK4dNpC5eJphH3B6RQ_1747076736 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076735; x=1747681535; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0ehf2YgaMXoxb+fwp0uJKFVwZBOJsson/HPg8rmycXI=; b=TnGegcU5vox6UALmToVL++IdcCw84DWge1Mz76BrmoLaigMQiRrUfJ30lHh39RUoD0 /dY+QBVyndZji+N5zTNUy6pjryEGwn0uRfh4WJzbB+CZS8yvrKDB7YraqGL3v6QCcmHw 4n0TBhF1wGsiW/ScCzXKKIP5+089RKPO/ZaVj58wr0s0IzhzUcFBMI4VI9zjGn4u9K87 sLwFsSyTLtduCpI+mbY0cBzKh16ersNL1RNXt9OngrO9Q30D93gY6bNXsnZChEd9K2aj NAwqwfpnLZ8KaqPFk78yDauxqvPj82Ls0MRuXZb7yLFG8Yr2VxYFEvkw03YODTTZXrYL NJPQ== X-Gm-Message-State: AOJu0YxpTr35QizE/neoSUXle9O5uigS0rNOPOKFkWiFq9JW9vU0mgnC D/7YE0B8goLpAMRXyyLCMSUFGQhZlCKUQfUeUqSqxS6MjZ2yWiJssIOl8OaszbUH1VrBXEGQJZI AiY5o0yzEkexhFus49E0TMuxvi91NyoHI64asdjAxIhY1Hex1GgwxIm3gtBoKahRjbiErCuvPv/ 5ekUBa3H/FNWimodFQZ60PXWAgmz8b8GKOhRDQ X-Gm-Gg: ASbGncsyh6nEyII5x3tTRsqXqj/V2wv7KNAbaVhgIvsiSWWZyZ6GXNUURjFYagDKviv QGtz4ANhJlMaQJfV1LnXCQL3FHVsbl6An6CUHSTgfLemLyJpWVIGiRYlYS2ccrzfLjy2+O/YtpY woPxk5iMeoGYXZ9b26BWnddP2naic9bh/8S3Elvxo/u9ijNq+TsLMCo6jpKramBLFPB4DkxXUbs WPPwnj/DtsW91hAbV7XMQKUKZZ0VE6gGWA6HHm2Hzu7MhF0310cFz8lgC+K7Xs6kFr2S3gIxMRz NG8OOrfDpehHIlY= X-Received: by 2002:a5d:64c3:0:b0:3a0:b84c:7dab with SMTP id ffacd0b85a97d-3a1f6421db3mr11717083f8f.4.1747076735246; Mon, 12 May 2025 12:05:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGW8Liwga4/tnsWeFSOBmclzDh3G/rvAefR3Es7wI0TZLg5k88r2e7qnWyCOrphUuQ+XwIRyw== X-Received: by 2002:a5d:64c3:0:b0:3a0:b84c:7dab with SMTP id ffacd0b85a97d-3a1f6421db3mr11717060f8f.4.1747076734867; Mon, 12 May 2025 12:05:34 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 04/16] modinfo: lookup compile_commands.json by object Date: Mon, 12 May 2025 21:05:12 +0200 Message-ID: <20250512190524.179419-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076822350019000 Since modinfo support was added, Meson fixed several issues with extract_objects and compile_commands.json lookups can be simplified. If the lookup uses the object file as key, there is no need to use the command line to distinguish among all entries for a given source. Ninja 1.9 is required in order to produce the 'output' key in compile_commands.json; it is available in CentOS Stream 9, Debian 11, SLES 15.2, Ubuntu 20.04 and in all recent BSD distros. Samurai also has it. Cc: Gerd Hoffmann Reviewed-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Paolo Bonzini --- meson.build | 14 ++++---------- scripts/modinfo-collect.py | 23 +++++++++++------------ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/meson.build b/meson.build index a2cebd44656..7f91500bb73 100644 --- a/meson.build +++ b/meson.build @@ -3903,16 +3903,11 @@ foreach d, list : modules install: true, install_dir: qemu_moddir) if module_ss.sources() !=3D [] - # FIXME: Should use sl.extract_all_objects(recursive: true) as - # input. Sources can be used multiple times but objects are - # unique when it comes to lookup in compile_commands.json. - # Depnds on a mesion version with - # https://github.com/mesonbuild/meson/pull/8900 modinfo_files +=3D custom_target(d + '-' + m + '.modinfo', output: d + '-' + m + '.modinfo', - input: module_ss.sources() + genh, + input: sl.extract_all_objects(recur= sive: true), capture: true, - command: [modinfo_collect, module_s= s.sources()]) + command: [modinfo_collect, '@INPUT@= ']) endif else if d =3D=3D 'block' @@ -3951,12 +3946,11 @@ foreach d, list : target_modules dependencies: target_module_ss.dependencies(), install: true, install_dir: qemu_moddir) - # FIXME: Should use sl.extract_all_objects(recursive: true) to= o. modinfo_files +=3D custom_target(module_name + '.modinfo', output: module_name + '.modinfo= ', - input: target_module_ss.sources= () + genh, + input: sl.extract_all_objects(r= ecursive: true), capture: true, - command: [modinfo_collect, '--t= arget', target, target_module_ss.sources()]) + command: [modinfo_collect, '--t= arget', target, '@INPUT@']) endif endif endforeach diff --git a/scripts/modinfo-collect.py b/scripts/modinfo-collect.py index 4e7584df667..48bd92bd618 100644 --- a/scripts/modinfo-collect.py +++ b/scripts/modinfo-collect.py @@ -7,15 +7,6 @@ import shlex import subprocess =20 -def find_command(src, target, compile_commands): - for command in compile_commands: - if command['file'] !=3D src: - continue - if target !=3D '' and command['command'].find(target) =3D=3D -1: - continue - return command['command'] - return 'false' - def process_command(src, command): skip =3D False out =3D [] @@ -43,14 +34,22 @@ def main(args): print("MODINFO_DEBUG target %s" % target) arch =3D target[:-8] # cut '-softmmu' print("MODINFO_START arch \"%s\" MODINFO_END" % arch) + with open('compile_commands.json') as f: - compile_commands =3D json.load(f) - for src in args: + compile_commands_json =3D json.load(f) + compile_commands =3D { x['output']: x for x in compile_commands_json } + + for obj in args: + entry =3D compile_commands.get(obj, None) + if not entry: + sys.stderr.print('modinfo: Could not find object file', obj) + sys.exit(1) + src =3D entry['file'] if not src.endswith('.c'): print("MODINFO_DEBUG skip %s" % src) continue + command =3D entry['command'] print("MODINFO_DEBUG src %s" % src) - command =3D find_command(src, target, compile_commands) cmdline =3D process_command(src, command) print("MODINFO_DEBUG cmd", cmdline) result =3D subprocess.run(cmdline, stdout =3D subprocess.PIPE, --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076832; cv=none; d=zohomail.com; s=zohoarc; b=KfpO9XrZos3cbB3L7PfktWzwuy4NkH+yEfmj4eyfaIqlNeixzzJVciPRtKwbsuVuKZ7Y/p4RUfYDaLPpPOgrVsfpIVIZPzBuoBtiAP+tIdoZs1OU4AbOAYdH7PKJrLVRPCNIgReDMr02i218jNpQ163JX0CKGECCN2ZN0cc7KdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076832; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9rRJjZJliGh6hgVUcZDujfGoc4FtIeQ+1jIdIdwQh1g=; b=fvt7NgFejR7Dr5wntObldqtUk6gFfPtLwMOY2XJXL0Eyvqgflox1MzPW97qRXG7EeFi1BjfvaJXk5w7RFwVrTCcPsnG6T9KhBwBGyImyX+11iMO4DsdDBDtlXb5mu/GQvwpIwBssYH4VJuJ0a1ntasPD054elkfddnynLVBRjhI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076832922890.453015788562; Mon, 12 May 2025 12:07:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTQ-0005Tc-7F; Mon, 12 May 2025 15:06:04 -0400 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 1uEYT9-0005S8-UC for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYT8-0007Un-Bi for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:43 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-573-8vLnEx8SMIa8ZVgQgtGlwg-1; Mon, 12 May 2025 15:05:39 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3a0af6219a5so2206530f8f.1 for ; Mon, 12 May 2025 12:05:39 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a4d21esm13582685f8f.99.2025.05.12.12.05.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076741; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9rRJjZJliGh6hgVUcZDujfGoc4FtIeQ+1jIdIdwQh1g=; b=Ll0pEo2/UMi+poHKGkYF5wssxP/TfHOwLW1HuHeEiLyI9ha8LrwgIFEFYBIziNC7FoJCjP YwxTgV7yMa85ra9LUIhmu9TcsoYk6oLt70nVTwE9BQ2rskHHqH4fYeVcoNjRFJo2Pxr5oK tAQRVy3HBnOnz3H+rdoS98ETzuBAMfo= X-MC-Unique: 8vLnEx8SMIa8ZVgQgtGlwg-1 X-Mimecast-MFC-AGG-ID: 8vLnEx8SMIa8ZVgQgtGlwg_1747076739 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076738; x=1747681538; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9rRJjZJliGh6hgVUcZDujfGoc4FtIeQ+1jIdIdwQh1g=; b=NZLlufFpZnAUtiBqKMfhJXQk35nTuj96tyHTYkj5q8ZKuC5FXoGIpIPhdB5wNOUvWl jwighQKJT821LEf3RzDxEE/rtY+dtDtmhXTJE1GDqK4nttI3/zmk4EAltl6Q5bem09F5 Nv7fOaYUkAQ3FqnQxEIr6Pq8DoJeu5eO8y0MseXDin/s3wE4Y/Xiyxv24HrTY2Ov9Qgd qmPBMyZNqlwkWhYCg1DEX6b4zQuLHuVwaTRLT7/yXW1dY0DGlufM2Ws3TPKLNATkCtId MQNN7Adf6mjbONWPfgsrNSSJHhsJ04n66OVO2Hxngpm2WDj2hccPs5KiIHSR9QJAMnfg pVpA== X-Gm-Message-State: AOJu0YwVaeZ/dMB6bgc1HRbfcAlqa8PlcEmahu56JRr6haK4JmFI8jWY CNyBXaDD2zTkMfE1L9joyR1MxX7QijI37PlOjva1naoMHRZpIIdBDyq34uVJOZkK69cXZ722vIB IUVkpcdJ8LD6mwxJoIkcEuXY32A5/ExDtSzI6P/j0LE5m69ORob9OYJbZp9N88wElnLCHN2ER5G cucs9ISqx/e/1dmmYHzAbM9sDzY1Q6vsjQZW0P X-Gm-Gg: ASbGnctrB4wdBbhSkZ8Bzb/MOGm5LTz4q/9XAee13VomsoGfOjK6UwyCufAGEIEkLQh lMDfQuS4lSiGH6R+iWDT+eiVX1ya6oPeDf7rKy3OY/GOrgvx7KAI/1M7Wo2ftN3Ey/jzfj1US13 hXFqv9xE4erk4MXsKSIqbs4hH7dOwOyGzMXowSd7zM6TUeQP0TIE8zikdRp2AHiOL4DjSafiU21 S0nVJqTVYriPcOSFMS8E26ICkI5D5LZM55S3ESk9BLm+IIX4vWex66IkGDz3fZxtBrPZYcYD19Y cWH+erUcoii93Ik= X-Received: by 2002:a5d:648a:0:b0:3a1:f70a:1f65 with SMTP id ffacd0b85a97d-3a33f9e5a81mr622668f8f.0.1747076737953; Mon, 12 May 2025 12:05:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEDcK5dIk6tJCLaXP2z83N/9DziM9BCdrcE+cFNm3TygWjzbR0sJftZL8iTTjWIVI1c4XwqCg== X-Received: by 2002:a5d:648a:0:b0:3a1:f70a:1f65 with SMTP id ffacd0b85a97d-3a33f9e5a81mr622650f8f.0.1747076737610; Mon, 12 May 2025 12:05:37 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Maydell Subject: [PULL 05/16] rust: pl011: Rename RX FIFO methods Date: Mon, 12 May 2025 21:05:13 +0200 Message-ID: <20250512190524.179419-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076833922116600 In preparation of having a TX FIFO, rename the RX FIFO methods. This is the Rust version of commit 40871ca758cf ("hw/char/pl011: Rename RX FIFO methods"). Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Maydell Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 7c563ade9cd..94b31659849 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -329,7 +329,7 @@ fn loopback_tx(&mut self, value: registers::Data) -> bo= ol { // hardware flow-control is enabled. // // For simplicity, the above described is not emulated. - self.loopback_enabled() && self.put_fifo(value) + self.loopback_enabled() && self.fifo_rx_put(value) } =20 #[must_use] @@ -439,7 +439,7 @@ pub fn fifo_depth(&self) -> u32 { } =20 #[must_use] - pub fn put_fifo(&mut self, value: registers::Data) -> bool { + pub fn fifo_rx_put(&mut self, value: registers::Data) -> bool { let depth =3D self.fifo_depth(); assert!(depth > 0); let slot =3D (self.read_pos + self.read_count) & (depth - 1); @@ -589,7 +589,7 @@ fn receive(&self, buf: &[u8]) { } let mut regs =3D self.regs.borrow_mut(); let c: u32 =3D buf[0].into(); - let update_irq =3D !regs.loopback_enabled() && regs.put_fifo(c.int= o()); + let update_irq =3D !regs.loopback_enabled() && regs.fifo_rx_put(c.= into()); // Release the BqlRefCell before calling self.update() drop(regs); =20 @@ -602,7 +602,7 @@ fn event(&self, event: Event) { let mut update_irq =3D false; let mut regs =3D self.regs.borrow_mut(); if event =3D=3D Event::CHR_EVENT_BREAK && !regs.loopback_enabled()= { - update_irq =3D regs.put_fifo(registers::Data::BREAK); + update_irq =3D regs.fifo_rx_put(registers::Data::BREAK); } // Release the BqlRefCell before calling self.update() drop(regs); --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076847; cv=none; d=zohomail.com; s=zohoarc; b=VEUXy88+fbgWOvwpWpOtuN/XAXpmCRdVvwHgCR13RwgolipFOPMnbuzsIl7WMglI08sgtgfowKGfXVYv/u9uXes0WO6u1sdF0+3kCSOZQia/fQWkyAvqRJ17JV3vRaNqw+GT9W6phbdQUvoFPD4fsMSdlVRY6I44pSkMqI9J++U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076847; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uqI66moqQ1bOEvmuqDSAwlfJVoQnlMwJQqpqwMxFzQ0=; b=kHerV8twbzNASpmzhVAV2zDNxDzCErA51Qp1Z+jma4UHRmI28KQu/A/XxlcwxE9LmiVofHQel9ngjtjmemb5osvdxul2JCskkbzo7/a3G41cziJ6PvEGedW/1Jtzoe/Si0qxbOUVGKsm9m0RYPvBwsF4uBkRkN+CCVmjUEp5FVo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076847794863.5972596362059; Mon, 12 May 2025 12:07:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTq-0006bn-5B; Mon, 12 May 2025 15:06:26 -0400 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 1uEYTU-0005ac-Ha for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTQ-0007Wb-K3 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:02 -0400 Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-182-5WZ2qRplOWSL6kvJOQXHGg-1; Mon, 12 May 2025 15:05:58 -0400 Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-acbbb0009aeso378939166b.1 for ; Mon, 12 May 2025 12:05:58 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442cd32f1eesm181240255e9.9.2025.05.12.12.05.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076759; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uqI66moqQ1bOEvmuqDSAwlfJVoQnlMwJQqpqwMxFzQ0=; b=UYne+xavuMFS+4eePZwclxtpz6kSODpYMv6Y4rtwZ9tJsm4k8bUO/lgQYny3RNkLgEnOMr ikpcsaHbm+3vTW1hMhcAIohNkiICerhT0/0EX4LSvFCTduf8rftwEIBQazPrcXVhsSPj1+ paJbwiyUpdBCwyaim6o+eyEWET9QzPg= X-MC-Unique: 5WZ2qRplOWSL6kvJOQXHGg-1 X-Mimecast-MFC-AGG-ID: 5WZ2qRplOWSL6kvJOQXHGg_1747076757 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076756; x=1747681556; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uqI66moqQ1bOEvmuqDSAwlfJVoQnlMwJQqpqwMxFzQ0=; b=dim6QgeERV/GIcuwx7DprZAQR5KbQAoawyFlsezhdZFvUGBgEyACOGp3hxu2pIHWAI AVCRgO3eBUNFUWdVz7D/8yL1tKHbtEJYGvFAtMET3VRVlxsCWa1Ijzgai64Ono0UfEdo 1fvDQqtDbdxBXl9lWy/EEWogwvMNgkZtXlgk5Gr3ymOi8hdQibuV8XB7E0/qypiUqq8G +kD6GZgxXSGddYUvehGl1xfQpnKg8+A+1JZzGVYa9ngAydDWrse+GYRU4iqSgDvTjzIv gkdT6Nw3lLav3k8yheqI5xkZkLTB8bDA1Rb0T9ilisBf4b6tMKA3PLT3WXOVkzLQc0r5 Y8IQ== X-Gm-Message-State: AOJu0YyhmYBV8InBiNx6jBppnsg+BjK7J6OGeOWqA7/1IbAJPIjzYTyg rNN2t4IhzyBkmR5pQI6N303M2LL8Kg4HQaIuyAyf72MtaE1iN2mocHCNj5ACpNQR25vBPeO2s66 haOdV/6ZD+Gp25aJk/IPwkbHiLrl+JCCTSe12byFKql2Lbew2bkBxQlw5jXDgMVIgLAi+eRlQEB T7fyglDD19TWaBj/KW3NPw9wK6lzpOHE4ZXnYd X-Gm-Gg: ASbGnctwsimmDszsMgxIKjplfBjah6+S9DEF+sWqVTQIDu5YxRDf9veyILXKLGT003p C8bcBg7oiD8DFToyioQhKnA11OzLLDiUUnija+6WexmPc+yJky9L9s4ToxtRgwaCakInHxWfps4 TOP+V9OdG8/5EbXtHMMNOhlCqx5oT1AV4YRFLCrwKLUHuKrCNAesFdfqtxF9O8hxObggYcOGMyk tanzPk4p+Pjg4uiAW5yVC43t4N635N5eJOPgt0MT1o9Kiozi7im7FiJ0ND70XgLVuLk4ZsBJ7dG zzomO5AjXOQfjII= X-Received: by 2002:a17:907:1b03:b0:ace:c2d4:bf85 with SMTP id a640c23a62f3a-ad21927cc55mr1483835966b.43.1747076756063; Mon, 12 May 2025 12:05:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF+bAIGe8W5YGTjpiSsd7f5fIvUKHGN/WaHIFHmOmCnJKu76Ul/Rcx8GW4umIAjlYqdUWrMGg== X-Received: by 2002:a05:600c:a410:b0:442:dc6f:4a07 with SMTP id 5b1f17b1804b1-442dc6f4b16mr71098745e9.4.1747076744886; Mon, 12 May 2025 12:05:44 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Maydell Subject: [PULL 06/16] rust: pl011: Really use RX FIFO depth Date: Mon, 12 May 2025 21:05:14 +0200 Message-ID: <20250512190524.179419-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076848360019000 While we model a 16-elements RX FIFO since the PL011 model was introduced in commit cdbdb648b7c ("ARM Versatile Platform Baseboard emulation"), we only read 1 char at a time! Have can_receive() return how many elements are available, and use that in receive(). This is the Rust version of commit 3e0f118f825 ("hw/char/pl011: Really use RX FIFO depth"); but it also adds back a comment that is present in commit f576e0733cc ("hw/char/pl011: Add support for loopback") and absent in the Rust code. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Maydell Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 2 +- rust/hw/char/pl011/src/device.rs | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 4de86375021..171d908e0b0 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -119,7 +119,7 @@ QEMU includes four crates: for the ``hw/char/pl011.c`` and ``hw/timer/hpet.c`` files. =20 .. [#issues] The ``pl011`` crate is synchronized with ``hw/char/pl011.c`` - as of commit 02b1f7f61928. The ``hpet`` crate is synchronized as of + as of commit 3e0f118f82. The ``hpet`` crate is synchronized as of commit 1433e38cc8. Both are lacking tracing functionality. =20 This section explains how to work with them. diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 94b31659849..bde3be65c5b 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -580,19 +580,26 @@ fn write(&self, offset: hwaddr, value: u64, _size: u3= 2) { fn can_receive(&self) -> u32 { let regs =3D self.regs.borrow(); // trace_pl011_can_receive(s->lcr, s->read_count, r); - u32::from(regs.read_count < regs.fifo_depth()) + regs.fifo_depth() - regs.read_count } =20 fn receive(&self, buf: &[u8]) { - if buf.is_empty() { + let mut regs =3D self.regs.borrow_mut(); + if regs.loopback_enabled() { + // In loopback mode, the RX input signal is internally disconn= ected + // from the entire receiving logics; thus, all inputs are igno= red, + // and BREAK detection on RX input signal is also not performe= d. return; } - let mut regs =3D self.regs.borrow_mut(); - let c: u32 =3D buf[0].into(); - let update_irq =3D !regs.loopback_enabled() && regs.fifo_rx_put(c.= into()); + + let mut update_irq =3D false; + for &c in buf { + let c: u32 =3D c.into(); + update_irq |=3D regs.fifo_rx_put(c.into()); + } + // Release the BqlRefCell before calling self.update() drop(regs); - if update_irq { self.update(); } --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076814; cv=none; d=zohomail.com; s=zohoarc; b=ZRbKFt9l//ssbnb4tigeSRNPOV31XxRtn9+hffyvgM5raCLPps4aMA44e8NUoVucteDIDQNlJX7uqyzmLJCLTlLSuAAPF+5CexbDVegscM2ZEjtTvsaNSVtgjdVxxHS3/0PHqCo4fJ6mZE7Sr5Jbl1Y89snn8BGA0pF13TMuVns= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076814; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Iibwwyi5W0D6zz6AXlnAP/ozqACug8CvhufUCjgPp3w=; b=W6tZCeoaEq8ieEczCW1Iw90ZaTwY7bBsmKTiygRnRqRpYuSUvbNdbUematxsBQN/xsrOx5zYQ8SXYzwpYLSXxigkpGOu3SrjbayRSn5HUrElVx772b5fTdrUQsHyFVhQqmfCYl4dW/8hVVhhemsKrYXmLE6k6c40othI5Mzboj8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076814530179.10767670024177; Mon, 12 May 2025 12:06:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTl-0006Ep-Tj; Mon, 12 May 2025 15:06:21 -0400 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 1uEYTH-0005U1-L8 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTG-0007VZ-1h for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:51 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-691-mYxN9ryvOZKWJxRjrcrdFA-1; Mon, 12 May 2025 15:05:47 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3a1f7204d72so1917369f8f.0 for ; Mon, 12 May 2025 12:05:47 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a4c7a5sm13583024f8f.98.2025.05.12.12.05.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076749; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Iibwwyi5W0D6zz6AXlnAP/ozqACug8CvhufUCjgPp3w=; b=C8rldAt45HQ0k7gZ4D0VonWXYotGN4CGT9PAPrMkgP3ooIezs9iWDH9nrkoFoHCpGVz5bW nyx7EZLnwBQwauFbHjcR0bahbB9seSaw1MyA2yf/tblzwWOFZm/d90uChHLwB+ED8q/ijT 7Bd9ma8Ac0wDTtdQ2bSWodx4JlXwWkA= X-MC-Unique: mYxN9ryvOZKWJxRjrcrdFA-1 X-Mimecast-MFC-AGG-ID: mYxN9ryvOZKWJxRjrcrdFA_1747076747 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076746; x=1747681546; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Iibwwyi5W0D6zz6AXlnAP/ozqACug8CvhufUCjgPp3w=; b=M47Ieho6iL/jI8RqBOSC38qCmcC/pyGGsLuUvMm4PGBnAhuI8+t2BWjGfneNA3/0RN AUvbwKVHZvEJkgGVFvGpSnYE79Z+eVOLWWvVvWTHyX7C++Sj6dZ54kp39AA2+aMxOW9s 6GB5bKd5D2yxATlDvKLvTI7A7K5KRZMNEFIqQwEiBvsQM5XgzwQBTn7WiS/QQSamfwlu L1iFwyQH0egmebSWyw0QsVFoMX0jzF17M55rTJtulTU8X/HcvKOL4ICNd5xa9+kG/LZc SRyXzPCFpnHkEeJONVbGYNwIPL8s5Mv3wFqaU9M+TQrOCnZTWJiK6Nt/fq6htvcQkSKx v5QA== X-Gm-Message-State: AOJu0YwIV75DbYG/Z1ZzBNLkMO8+LuEpfavThDk7sHxA2/afPpB+mppJ CYk494igtQMgebs2CA92MHJ1R9IPMpv0NRsGrb2oCTEoz2dGrUEb9i1x6omBS1fa0/DXihf2ISW jvhgx0HzNvNoKZZaAFVBMjbnUNf2k/+iFIVJa/VVZWjG2Wq6eCRHNeZ7zVkMluYI1wS1XiSnj7o M1QrtkjxJVMJ9rcAqNfsoE4Jfw8KL0y5VBWCGt X-Gm-Gg: ASbGnctXSVIyVTvzOeX7JxryZE49AfcWAF8qt7enAoUjDfofohblC5UZI0Qrir/nWqX LGoXbq4UUnkL/Pm5W7EqprUzzCgqTnHXUkoNVDucQhOB1Hoo53shrfPb6W34XlG5PM8VHBFIHWj 5N3tKdrHYhJUukqHER8uee6JkLo7l6Qd2h/HYyv+W7nF0AAMe9D23DPFaCEdUEyzalOUF0/cuL2 VHT0hX4XR6R/T3/8NzyrwN6z//FZ/S3sHMtgTuoPmo75EIWE1MUlKdiYJ2io5Wlm96qASQcAhto nuT0UMA9U3JD3MQ= X-Received: by 2002:a05:6000:3110:b0:3a2:2ea9:4378 with SMTP id ffacd0b85a97d-3a22ea94501mr2015082f8f.31.1747076746627; Mon, 12 May 2025 12:05:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGt6c/+hSLCeKTstnF7HByGZMvRFK2q/hvgYOFwRbJGmP6yQNG635mjwOvgAGzaG68rlTNt/w== X-Received: by 2002:a05:6000:3110:b0:3a2:2ea9:4378 with SMTP id ffacd0b85a97d-3a22ea94501mr2015069f8f.31.1747076746171; Mon, 12 May 2025 12:05:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 07/16] target/i386: ignore misplaced REX prefixes Date: Mon, 12 May 2025 21:05:15 +0200 Message-ID: <20250512190524.179419-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076816185019000 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- target/i386/tcg/decode-new.c.inc | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.= c.inc index cda32ee6784..55216e0d249 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -2542,7 +2542,13 @@ static void disas_insn(DisasContext *s, CPUState *cp= u) s->has_modrm =3D false; s->prefix =3D 0; =20 - next_byte: + next_byte:; +#ifdef TARGET_X86_64 + /* clear any REX prefix followed by other prefixes. */ + int rex; + rex =3D -1; + next_byte_rex: +#endif b =3D x86_ldub_code(env, s); =20 /* Collect prefixes. */ @@ -2585,13 +2591,12 @@ static void disas_insn(DisasContext *s, CPUState *c= pu) #ifdef TARGET_X86_64 case 0x40 ... 0x4f: if (CODE64(s)) { - /* REX prefix */ - s->prefix |=3D PREFIX_REX; - s->vex_w =3D (b >> 3) & 1; - s->rex_r =3D (b & 0x4) << 1; - s->rex_x =3D (b & 0x2) << 2; - s->rex_b =3D (b & 0x1) << 3; - goto next_byte; + /* + * REX prefix; ignored unless it is the last prefix, so + * for now just stash it + */ + rex =3D b; + goto next_byte_rex; } break; #endif @@ -2618,10 +2623,13 @@ static void disas_insn(DisasContext *s, CPUState *c= pu) =20 /* 4.1.1-4.1.3: No preceding lock, 66, f2, f3, or rex prefixes= . */ if (s->prefix & (PREFIX_REPZ | PREFIX_REPNZ - | PREFIX_LOCK | PREFIX_DATA | PREFIX_REX)) { + | PREFIX_LOCK | PREFIX_DATA)) { goto illegal_op; } #ifdef TARGET_X86_64 + if (rex !=3D -1) { + goto illegal_op; + } s->rex_r =3D (~vex2 >> 4) & 8; #endif if (b =3D=3D 0xc5) { @@ -2661,6 +2669,16 @@ static void disas_insn(DisasContext *s, CPUState *cp= u) =20 /* Post-process prefixes. */ if (CODE64(s)) { +#ifdef TARGET_X86_64 + if (rex !=3D -1) { + s->prefix |=3D PREFIX_REX; + s->vex_w =3D (rex >> 3) & 1; + s->rex_r =3D (rex & 0x4) << 1; + s->rex_x =3D (rex & 0x2) << 2; + s->rex_b =3D (rex & 0x1) << 3; + } +#endif + /* * In 64-bit mode, the default data size is 32-bit. Select 64-bit * data with rex_w, and 16-bit data with 0x66; rex_w takes precede= nce --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076863; cv=none; d=zohomail.com; s=zohoarc; b=ZANq5Ue/8MRK4KHVf3FG5o6x6SevxtgoeS1hw4v3Ja7IcRnfbZkx3N+uu7sG2x+gtcOexvMPRu4Z2zPNWTkwMCoAGpWYdQ6w+KqxOjFhE3Bzm+WzUvoB0aEcsv06uJj5ogWOdqAPEy9Fvtv3jyjolMRsPDrw59sM5vmyYVIRXPI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076863; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NGD9ZmxNcCJDdey44U3+5fn3gZhvKzO8yYn00qU84Sc=; b=VPr4C785hHG30Hs3o65ZW7abpK7HB0CbkIrznfHKafKS62pRaKsVsgSR9v3bp4Zgq7A+GTFXdgbL0Z/uk68785jr80gPnCl3e7B5g3ESh4eAHZePaFFo2H8DcQCzcc08d4ply/7AlMtEkprBZ7htr1/Cv3sbE1LuB1ksxAABF/E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076863065188.39770344652732; Mon, 12 May 2025 12:07:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTi-00062y-9H; Mon, 12 May 2025 15:06:18 -0400 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 1uEYTJ-0005U6-Ca for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTI-0007Vo-0U for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:53 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-63-Brfd5CfhNd-lzwKkMNcLKA-1; Mon, 12 May 2025 15:05:49 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3a0b7ceaa20so1569864f8f.1 for ; Mon, 12 May 2025 12:05:49 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f58f2f65sm13638171f8f.55.2025.05.12.12.05.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076751; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NGD9ZmxNcCJDdey44U3+5fn3gZhvKzO8yYn00qU84Sc=; b=EmAWH/CWdX+5ltpZtHgQiAlk+LcqVROtZsBSGOyLghHcKDzFoICoI7F4X/CXATCakXa+9C r974h6VLs5T7Gsw7iN3Y49wb4811uRy5/cP0/6yDzoLhMv2yxvnrNX2NS4Wwx71n9bstVt va/IjTmE7gCGeb32b/2CEKrE0afIq7E= X-MC-Unique: Brfd5CfhNd-lzwKkMNcLKA-1 X-Mimecast-MFC-AGG-ID: Brfd5CfhNd-lzwKkMNcLKA_1747076749 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076748; x=1747681548; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NGD9ZmxNcCJDdey44U3+5fn3gZhvKzO8yYn00qU84Sc=; b=ryb6wjar1oBh2YXyIRH52eMr3KJT8+YUFnL2N82CjUbOo606/OMQ1E/JNk5ZRhd1DS b0k202L1adsta/QiBWvL+t/2kpQLaJSMsCOqSjcRqyDIB+yNopdwX+yB08h1m1mDfK6o PJnciRHCBYt25pz9K5FIqGRCUj2w+9S7K42QGvuMfs0ld6ZnNHlIBD52sZN7mUiDzW8E vxwrn/NFBukYMmPJCelp3P27FY8wckdGVv4q8hMcFrIzMzD0tFfhxG8IB0zijYn5u6Ix Yu9lIoOC3WNsb6/TGyPEccKUFkZuGSwKnAZRArkzb/gK0exQ8JT6PKDmZPSpgGUuj/kI bA7w== X-Gm-Message-State: AOJu0Yy6OeL0uG4biGgb+5VgKiN6NaGnvc1tGwljw7du42scm6ycUElW ZXEpPxbTwSNR/SHHd1eLLtpYVGr7XvGDJMrZH3cLV+k4ClqqDQ0nnGBgdY98CqN84DZ2GIAjvLC ogZY/151a3kpcB9ooEV+J8IfUoq7Ffsg10C5E4OjL8a4AneJ+qHYDwpdspabn67wmBcuxSundQe mnAZogj2Qt7pVX/mfaaF7sl2elQNw3QrP9uaiV X-Gm-Gg: ASbGncvklhPkLXebf22tAeu16k8XwnsIIdqBwiNisXZrEDCQ4x3v9zYXSr5PWR+IqjV HMpqo0uuj62N9Mlao62QaGslFqcNdp9Da4fPPAOgkmlvOC8IFKExikIg/hX5vMXHhASq9dzPv4C JofZjWsiTWT3hZ/XZoZLbq9M1jHfFtPx+seS0MTEkccQHRuzc6hCO9bRj08NJdXKZUr4ahP8NNh 8bvbnFsvDM/zmP9DU/K2Fvbyt475uhkctZUAnh070BCjEQhRbMFcgUKtpF8H57amLy4oPzOOpch G64lGlmqSFpuTTA= X-Received: by 2002:a5d:64a8:0:b0:3a0:88b0:b81e with SMTP id ffacd0b85a97d-3a1f6488193mr9882387f8f.36.1747076747945; Mon, 12 May 2025 12:05:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFtlPipdmA9t80Nv2LkR1mbqH3dko2FEpqQTsR9doiH6RXhIy/moaMRTNbHTKi1W7X94nIOag== X-Received: by 2002:a5d:64a8:0:b0:3a0:88b0:b81e with SMTP id ffacd0b85a97d-3a1f6488193mr9882372f8f.36.1747076747514; Mon, 12 May 2025 12:05:47 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 08/16] target/i386: list TCG-supported features for CPUID[80000021h].EAX Date: Mon, 12 May 2025 21:05:16 +0200 Message-ID: <20250512190524.179419-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076864188116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1ca6307c72e..1656de3dcca 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -922,6 +922,17 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vend= or1, #define TCG_8000_0008_EBX (CPUID_8000_0008_EBX_XSAVEERPTR | \ CPUID_8000_0008_EBX_WBNOINVD | CPUID_8000_0008_EBX_KERNEL_FEATUR= ES) =20 +#if defined CONFIG_USER_ONLY +#define CPUID_8000_0021_EAX_KERNEL_FEATURES CPUID_8000_0021_EAX_AUTO_IBRS +#else +#define CPUID_8000_0021_EAX_KERNEL_FEATURES 0 +#endif + +#define TCG_8000_0021_EAX_FEATURES ( \ + CPUID_8000_0021_EAX_NO_NESTED_DATA_BP | \ + CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE | \ + CPUID_8000_0021_EAX_KERNEL_FEATURES) + FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { [FEAT_1_EDX] =3D { .type =3D CPUID_FEATURE_WORD, @@ -1249,7 +1260,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D { "ibpb-brtype", "srso-no", "srso-user-kernel-no", NULL, }, .cpuid =3D { .eax =3D 0x80000021, .reg =3D R_EAX, }, - .tcg_features =3D 0, + .tcg_features =3D TCG_8000_0021_EAX_FEATURES, .unmigratable_flags =3D 0, }, [FEAT_8000_0021_EBX] =3D { --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076864; cv=none; d=zohomail.com; s=zohoarc; b=bcPCjMdU12cwSeIkx/xClsjuGzJenprN5/ZZC7KN/BVjuWFRhgS7oyp5fVcASBG+ETqgbzKr/C6zpLej5orzk6BlkHb5wTLmGSE0h4ENtLlJaAfaLQmVPoQR6yNTv+HVDbyc48LEyfBR8hdqptSS8J8bW8MJ05OZ49Dr1KchMbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076864; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=UoSMTlpF2qfLgAfQXWinrMdZKQ0moRtra7wfS2I+NKg=; b=Iz/cJDOj7WxmyLa231gEh0GnfZbYq+BKhL3nGMeyY05l3Yfcr9WqCx/VkRUTml03GyNeuGmJoHfT48jBBdcLZumRbdnFdNyH4tWIvHSFvzIQGdnrdP1uiLHe9B8gt60V4L/+UQELYdJOsFYvX0Ym/VwjcRbVCMVtnG/3YzR1YP0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076864556684.323476562607; Mon, 12 May 2025 12:07:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTl-0006E3-P3; Mon, 12 May 2025 15:06:21 -0400 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 1uEYTV-0005bE-Pn for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTN-0007WP-QH for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:05 -0400 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-683-yaOLCIj8Or6a0c7hL5RICg-1; Mon, 12 May 2025 15:05:50 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3a0b7ceaa20so1569866f8f.1 for ; Mon, 12 May 2025 12:05:50 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f58ec8f1sm13178492f8f.26.2025.05.12.12.05.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076757; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UoSMTlpF2qfLgAfQXWinrMdZKQ0moRtra7wfS2I+NKg=; b=ZuEau/LWl8CNcXBn96/ln2RS+bCT69IkTjhpeW2TwRpdiEJPKjVyoi18N2e1XWR6X1he37 x5kMxzrGbAYyxL9AuphB1jA636ZM1jC+SdQ02FpRL9SvgMxgxty2fljFXf7IMtQNpPXqRG kIvJLDgom4nsPxHjQJGIp9oJ697bkSU= X-MC-Unique: yaOLCIj8Or6a0c7hL5RICg-1 X-Mimecast-MFC-AGG-ID: yaOLCIj8Or6a0c7hL5RICg_1747076750 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076749; x=1747681549; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UoSMTlpF2qfLgAfQXWinrMdZKQ0moRtra7wfS2I+NKg=; b=pRbL8xYP7TiRq80YAkg8Z5BODkGFECJADEteoP1AV5YKiHFtFk55Q40+sQHJj8rNV0 c75PIMRLjdINxqt07wIJn9ILD78ehZkP6eCOzBSXAjHL3gbfF+rbcHd9/3SMc4ZX+jJz YIqwkeZHCq0FdwnaMVmCVa2aUWaGDv1wmPXTWGyn5f5iOmmUcgnVLQR200qT2NphfjhS pxr3aqfu4J/eLcOuGMMdAFMFoOMlh3Ezj47+KkyE0wjLH6QrKJRRBUzUdCpnroN88RSU YhMXgx5J3Icp/fAqqZ15B3X2XUI8BiGH8tYtUZY3TcZujMnEriGY1zRK7KStlcrNfHsd TUcA== X-Gm-Message-State: AOJu0YxjRdSss/v0TefXpMoc1z+Hv9Q5RRXke33zVgv3fxcVwOHATPxM nWU7W2eHqSP7bx0LGoSbgPee+nzxU1SuZr1N/VyqACMwVVaFjcMN/sdY4nt208C9aTmlo+xoD3f iNz76IQtPLBQNkH5WSj7YJmglTp2z7OwpTdSG/EJlQkuq1sEXb3d+BMeqX45HTqpKTcdyM1z5D4 s1bczXek4tGmLHnDux3yVq5MDNzafzzssL2LDO X-Gm-Gg: ASbGncv00Ku01ikRppMfNT0OHGHLZiLm7Gi/6UKfP3fLlGWEz6WMrVKl+D4c+06HGRJ DYpKTYUaqFjMTOW5yeKWUS8vM3fVaQ8Mp07033sGmDGFAiOqs1FBU5AnM4k7DD65qBOzkcB4j3r bAbLas5LIAc8gBsomY2tJvdUtaiOoq3dDzj+DqQguXEzUJGLLhlkaukDpDWoVOd7sHOcWoCwTYv roZJXaUQWIELHMZDOR+jJelEhAvIIYVcyvVBWeoRgtpRCYANekY1al0tLh1QgJu/eUDWa0jbu56 iVKSiJILUuI+SsE= X-Received: by 2002:a05:6000:3102:b0:3a0:7a8f:fc73 with SMTP id ffacd0b85a97d-3a1f643145dmr12046632f8f.14.1747076749055; Mon, 12 May 2025 12:05:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH8lxuZQ2lMV0XxEnFUU/BXRo5vVafDStiusxl7lsODXXwT8MsZQyWQ6ueaPh+9oAyUWHk/YA== X-Received: by 2002:a05:6000:3102:b0:3a0:7a8f:fc73 with SMTP id ffacd0b85a97d-3a1f643145dmr12046616f8f.14.1747076748663; Mon, 12 May 2025 12:05:48 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 09/16] target/i386: move push of error code to switch_tss_ra Date: Mon, 12 May 2025 21:05:17 +0200 Message-ID: <20250512190524.179419-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076866455019000 Content-Type: text/plain; charset="utf-8" Move it there so that it can be done before the TSS trap bit is processed. Signed-off-by: Paolo Bonzini --- target/i386/tcg/seg_helper.c | 72 ++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index 0ca081b286d..cb90ccd2adc 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -326,10 +326,10 @@ static void tss_set_busy(CPUX86State *env, int tss_se= lector, bool value, #define SWITCH_TSS_IRET 1 #define SWITCH_TSS_CALL 2 =20 -/* return 0 if switching to a 16-bit selector */ -static int switch_tss_ra(CPUX86State *env, int tss_selector, - uint32_t e1, uint32_t e2, int source, - uint32_t next_eip, uintptr_t retaddr) +static void switch_tss_ra(CPUX86State *env, int tss_selector, + uint32_t e1, uint32_t e2, int source, + uint32_t next_eip, bool has_error_code, + uint32_t error_code, uintptr_t retaddr) { int tss_limit, tss_limit_max, type, old_tss_limit_max, old_type, i; target_ulong tss_base; @@ -599,14 +599,38 @@ static int switch_tss_ra(CPUX86State *env, int tss_se= lector, cpu_x86_update_dr7(env, env->dr[7] & ~DR7_LOCAL_BP_MASK); } #endif - return type >> 3; + + if (has_error_code) { + int cpl =3D env->hflags & HF_CPL_MASK; + StackAccess sa; + + /* push the error code */ + sa.env =3D env; + sa.ra =3D retaddr; + sa.mmu_index =3D x86_mmu_index_pl(env, cpl); + sa.sp =3D env->regs[R_ESP]; + if (env->segs[R_SS].flags & DESC_B_MASK) { + sa.sp_mask =3D 0xffffffff; + } else { + sa.sp_mask =3D 0xffff; + } + sa.ss_base =3D env->segs[R_SS].base; + if (type & 8) { + pushl(&sa, error_code); + } else { + pushw(&sa, error_code); + } + SET_ESP(sa.sp, sa.sp_mask); + } } =20 -static int switch_tss(CPUX86State *env, int tss_selector, - uint32_t e1, uint32_t e2, int source, - uint32_t next_eip) +static void switch_tss(CPUX86State *env, int tss_selector, + uint32_t e1, uint32_t e2, int source, + uint32_t next_eip, bool has_error_code, + int error_code) { - return switch_tss_ra(env, tss_selector, e1, e2, source, next_eip, 0); + switch_tss_ra(env, tss_selector, e1, e2, source, next_eip, + has_error_code, error_code, 0); } =20 static inline unsigned int get_sp_mask(unsigned int e2) @@ -719,25 +743,8 @@ static void do_interrupt_protected(CPUX86State *env, i= nt intno, int is_int, if (!(e2 & DESC_P_MASK)) { raise_exception_err(env, EXCP0B_NOSEG, intno * 8 + 2); } - shift =3D switch_tss(env, intno * 8, e1, e2, SWITCH_TSS_CALL, old_= eip); - if (has_error_code) { - /* push the error code on the destination stack */ - cpl =3D env->hflags & HF_CPL_MASK; - sa.mmu_index =3D x86_mmu_index_pl(env, cpl); - if (env->segs[R_SS].flags & DESC_B_MASK) { - sa.sp_mask =3D 0xffffffff; - } else { - sa.sp_mask =3D 0xffff; - } - sa.sp =3D env->regs[R_ESP]; - sa.ss_base =3D env->segs[R_SS].base; - if (shift) { - pushl(&sa, error_code); - } else { - pushw(&sa, error_code); - } - SET_ESP(sa.sp, sa.sp_mask); - } + switch_tss(env, intno * 8, e1, e2, SWITCH_TSS_CALL, old_eip, + has_error_code, error_code); return; } =20 @@ -1533,7 +1540,8 @@ void helper_ljmp_protected(CPUX86State *env, int new_= cs, target_ulong new_eip, if (dpl < cpl || dpl < rpl) { raise_exception_err_ra(env, EXCP0D_GPF, new_cs & 0xfffc, G= ETPC()); } - switch_tss_ra(env, new_cs, e1, e2, SWITCH_TSS_JMP, next_eip, G= ETPC()); + switch_tss_ra(env, new_cs, e1, e2, SWITCH_TSS_JMP, next_eip, + false, 0, GETPC()); break; case 4: /* 286 call gate */ case 12: /* 386 call gate */ @@ -1745,7 +1753,8 @@ void helper_lcall_protected(CPUX86State *env, int new= _cs, target_ulong new_eip, if (dpl < cpl || dpl < rpl) { raise_exception_err_ra(env, EXCP0D_GPF, new_cs & 0xfffc, G= ETPC()); } - switch_tss_ra(env, new_cs, e1, e2, SWITCH_TSS_CALL, next_eip, = GETPC()); + switch_tss_ra(env, new_cs, e1, e2, SWITCH_TSS_CALL, next_eip, + false, 0, GETPC()); return; case 4: /* 286 call gate */ case 12: /* 386 call gate */ @@ -2256,7 +2265,8 @@ void helper_iret_protected(CPUX86State *env, int shif= t, int next_eip) if (type !=3D 3) { raise_exception_err_ra(env, EXCP0A_TSS, tss_selector & 0xfffc,= GETPC()); } - switch_tss_ra(env, tss_selector, e1, e2, SWITCH_TSS_IRET, next_eip= , GETPC()); + switch_tss_ra(env, tss_selector, e1, e2, SWITCH_TSS_IRET, next_eip, + false, 0, GETPC()); } else { helper_ret_protected(env, shift, 1, 0, GETPC()); } --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076836; cv=none; d=zohomail.com; s=zohoarc; b=HGuqWu7HuKUUtdnExS237twXt/z/WOWe4bY5qHwEg/Xj/DPwVoNE3iIjIxHeU7QzdA9IKQsnZsx2r/MPIbFBmSln//evLdEdkir6Q7RlLQkdU2MQsP2HzooEikYUaFTqy+ArLajFZRgGtVSZLKT1bRbuVE2o+hnHu6U4fRcu11M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076836; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=pcsCKBv6s0E+eFJ6qpqRFsRKmqbdvOjhgTl4jheLWXs=; b=kKx6DRt+O50uqnrkPgBISEEKhafLrVg4bk+SSpr8GvCgn/OySvAf/sX7Eeuwqm+3BaTUOJkgohoIJEUCfr83A/9a61oOFMISDDyZRB0Je8uLK58pvCXFepKWWCwkEzfkunwBOk0DKwbxoHly/ShlmbRAH5fRi3sG9kmNc5gfYIw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076836976608.2910842355525; Mon, 12 May 2025 12:07:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTe-0005mb-OJ; Mon, 12 May 2025 15:06:15 -0400 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 1uEYTM-0005UL-H1 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTK-0007WA-NC for qemu-devel@nongnu.org; Mon, 12 May 2025 15:05:56 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-614-4cL16mIlN2imwtgbnW6uxQ-1; Mon, 12 May 2025 15:05:52 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43cf3168b87so20599995e9.2 for ; Mon, 12 May 2025 12:05:52 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f58f2a07sm13647653f8f.50.2025.05.12.12.05.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076754; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pcsCKBv6s0E+eFJ6qpqRFsRKmqbdvOjhgTl4jheLWXs=; b=L8NrvwTMoU8//7gVsJ7tRMgvoVyAUSLyHDshb7vo/78n1pPR2eaRzSiUkBbrNSvGJP7Pqx kMqyZ2kalm9PwBV7htceQ9lAy0Fabm2ZjlfPJThtkhXs9CEyzR0g04I4naOJH2uRmQPC5H nO5Lf2oOBr4bESwryhIrgNwdhVy/+Qg= X-MC-Unique: 4cL16mIlN2imwtgbnW6uxQ-1 X-Mimecast-MFC-AGG-ID: 4cL16mIlN2imwtgbnW6uxQ_1747076751 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076751; x=1747681551; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pcsCKBv6s0E+eFJ6qpqRFsRKmqbdvOjhgTl4jheLWXs=; b=YOG8sSvGhG4ckff6GLh4LPW5UrcacE5ma2ie1TxMXerGzDiWSZ151fL37WonyGCNX8 z+wqrcdKsjKZ2IF/XR2+gFHXQSHynDjhLY8ufLQwwtppUElyAVeZFsHaf0qqK4l0GYP9 YovOKaWATe1Ys0R/NtvJuyINVvgTdtwaLW2qP6Vf3uJoKi3y01K0tSLqq/b/a2goSVGZ NlKGY9cV9iu2cCDBdW/iHkVLRNZyAYoUEgTYaDyjzhFdeMxEMHVb+imun/d2tcWF1DgI NgSATl6ZqouvBs4tMls9xUBpogynaRY9EXIe+EAJ7DOKmLJuinJC+cv5l6ZBj2r7zai8 nMCw== X-Gm-Message-State: AOJu0Ywbc5a0QYIIGtc8vKkC9cHMjcMaArLrXKSc/9BQvMxaTXlfIH8U 2GT/d04LmSop/p1ccmY9cqfIICxDxMxe6EN9iTaAIsp9Nx/IsRCIkrpSaNf8vm1wTEJOFP9Fw+p J+ck4LOzc4bagMdzcmtO8heWckB5hnLz7foPrxHJAvEHHAwVlPKshc7xVtDlxYf/PGJ0b9hkEqD w904vfJhQPy9Gs/61sfcApVqN0LPyMWtONgFdR X-Gm-Gg: ASbGncun9L/NbwzA+vwN+V43BEOXM8IvuvtF53CYtFbCDHlYrypEWeQiHl0BX+hjcBw dDQoELjKHLLz47xjajujTKdIyY2OKdQvZK3jJDFCicfFqcvegWoVABO3IHTlEqXqOi7vr6I7QFB 34kotG72K08xXhdNtt1v+tzaLdkuu9xUDQ1Ds/2kcZ9wxSeglgVCLjiLipgu0Po1iX5zSLjrSSs ctBLi/ORGcBnu4V4uFKWPK4AlU+5N1dASucQJ/mo1Mg5IrL4gJbsU8u+3uyBe1PkBFtgndM3nEw 4M3XAJUs0hSTLNA= X-Received: by 2002:a05:600c:6090:b0:43b:c95f:fd9 with SMTP id 5b1f17b1804b1-442d6d18bfamr129435085e9.5.1747076750994; Mon, 12 May 2025 12:05:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGFHKGSlx8VVe8aiMl/QUDW5KAVb8jUF3yHiqL+RmROFltzM5ComA24djasdKhelczyH93C7Q== X-Received: by 2002:a05:600c:6090:b0:43b:c95f:fd9 with SMTP id 5b1f17b1804b1-442d6d18bfamr129434895e9.5.1747076750479; Mon, 12 May 2025 12:05:50 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 10/16] target/i386: implement TSS trap bit Date: Mon, 12 May 2025 21:05:18 +0200 Message-ID: <20250512190524.179419-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076838329019000 Content-Type: text/plain; charset="utf-8" Now that we can do so after the error code has been pushed, raising the #DB exception for task-switch traps is trivial. Signed-off-by: Paolo Bonzini --- target/i386/tcg/seg_helper.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/target/i386/tcg/seg_helper.c b/target/i386/tcg/seg_helper.c index cb90ccd2adc..071f3fbd83d 100644 --- a/target/i386/tcg/seg_helper.c +++ b/target/i386/tcg/seg_helper.c @@ -473,10 +473,6 @@ static void switch_tss_ra(CPUX86State *env, int tss_se= lector, new_segs[R_GS] =3D 0; new_trap =3D 0; } - /* XXX: avoid a compiler warning, see - http://support.amd.com/us/Processor_TechDocs/24593.pdf - chapters 12.2.5 and 13.2.4 on how to implement TSS Trap bit */ - (void)new_trap; =20 /* clear busy bit (it is restartable) */ if (source =3D=3D SWITCH_TSS_JMP || source =3D=3D SWITCH_TSS_IRET) { @@ -622,6 +618,11 @@ static void switch_tss_ra(CPUX86State *env, int tss_se= lector, } SET_ESP(sa.sp, sa.sp_mask); } + + if (new_trap) { + env->dr[6] |=3D DR6_BT; + raise_exception_ra(env, EXCP01_DB, retaddr); + } } =20 static void switch_tss(CPUX86State *env, int tss_selector, --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076791; cv=none; d=zohomail.com; s=zohoarc; b=cTkT2XsYLDLv4T2+Ggm3EbLO4WRIeHd6uApWqK2lSLwZ/1KqmLjzB/tyz94eYYmAr4ZHMY4oKgVQ/6tNRTzDcWEq36ddYUMW0/xhO9d0Yh5Vc5huuX4we0Ecklz3mgh91tN/ExNN0dqX7BA7Ev5LK+qK4ol0c7yjuLjInQ7LZtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076791; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+0CN8dWb/jHGIrtBBwaI3tfyGWT/8HnKX9bNRoh/GrI=; b=SH2NXq+onMHPMsI52tFC5AtMZbU2TC8lwC063pKNKP2E8l/70Sb/I82j8gfQVc1NPyQbR7MbucBmDIoEFkLBHiFlWb3OJUXsWFjyN5lw9r1cuYAWOFCgnS4x+yO/VPOLdhZqyD8+4xqmsAkRnbN0uLLCkkKFenXCApcWmpGnH0M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076791270674.9474601416417; Mon, 12 May 2025 12:06:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTo-0006QB-IU; Mon, 12 May 2025 15:06:24 -0400 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 1uEYTU-0005ad-HI for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:06 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTQ-0007We-RK for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:03 -0400 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-3-CLqa3bnmPRKAv4hFEmfaZQ-1; Mon, 12 May 2025 15:05:57 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3a0af6219a5so2206598f8f.1 for ; Mon, 12 May 2025 12:05:56 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f57dde6bsm13563597f8f.13.2025.05.12.12.05.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+0CN8dWb/jHGIrtBBwaI3tfyGWT/8HnKX9bNRoh/GrI=; b=T+xEjnJiFaywZmn/2f1SElur2hM4988ktw/f/0sR+eO9F4lAe61yOb3hRLriOxmGtvL6Jb gfUuvRWdnn6XV3KrY4obUq28gqHpft3CYSf4TyZbkfC/wMC40okjRbaf9h2HitaRS2TICG THJhWqUwzEeJxD32HHkCvrJocBfR7oo= X-MC-Unique: CLqa3bnmPRKAv4hFEmfaZQ-1 X-Mimecast-MFC-AGG-ID: CLqa3bnmPRKAv4hFEmfaZQ_1747076756 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076755; x=1747681555; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+0CN8dWb/jHGIrtBBwaI3tfyGWT/8HnKX9bNRoh/GrI=; b=H6b7uf1arVDKkIdRnelAxu8//X/oYKJmodzGSU9UUjNxF49I67M8oSLnmU1SVNsMQ0 mzhkOTgJ0bdE3Hh1s0+0BF6u2JA+9Ri3tknSrUjo4L5Gv+1eCWbV63YJEjrx1y31Ggyc Tv2A/9/J/IUE/LJGmPQwIiApLCNaRZSdry5MH4rsXOAplsiE+8fePsEHFRFOvgG43cZH cZUwUTliWEghgwUtzC/GWS3jKxtTKa8TOdnwPkzz2+/SokKUvcLKT9opP3gNiCuP8aFB yWrig8EdeeU3FznoTJ8m+fFSLQGRXMpIUDIoF47H8N8+OZvcymsM26KWnfpdmX+OaN9a BSJA== X-Gm-Message-State: AOJu0YyFpRkJ52O5cwoBogWZw34+e+OFcONyIBBH5/o+JzBzKwWkRqoz BiCcJzITdkG8JxAsqXybnAnAj+HnWxs3engcSL5nPmJTeLOSYEbf3L75TuCrb8nXgLPXSwW+dj8 jFKxZjCQ2ZtDPojepV0ygF0PQiiul4VNObXgjUzFqjgEBW+NRh3L4lYsbuz0AMBRPzL6YOAIcre BLr6ChV9pdtwFPBxs7olL2oBQwb3S1irua+R8P X-Gm-Gg: ASbGncu/0lMjl7j++ZbGEz0/6/4P0++1tHF8Ndab71ZvcclJRBxXDTabLDRqjn8bOMU za7o/5oIxd6uWl4oqaBXE5TS75ool4R2euYtoC2pBB/xFJtyFI8ZTjMwQeNUsvf8XePTOsf/tOe g/WVddgLljoTONVd+Qfu3JAJH2e3u2dNIAay2se9iUxzfbKpn7y6KFA88smct4Y/XlW7a6veRSi kdZrrAmxOnyg6tfv/xPu1jT6deR33N6iISJEpTIZnc6RO3lFqFttvmTT+CWY+O9LbTwlevGLB/h cxw++kA3dGV2VUE= X-Received: by 2002:a05:6000:250f:b0:3a1:1215:9bc with SMTP id ffacd0b85a97d-3a340d34583mr444923f8f.27.1747076755318; Mon, 12 May 2025 12:05:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHCxZUFVgFVBNGKphGRx1rVx1B9teHi4Y5tmp2BN2S6wWEWOHtoTIKjM6OdN94zMGXQ0Liq2Q== X-Received: by 2002:a05:6000:250f:b0:3a1:1215:9bc with SMTP id ffacd0b85a97d-3a340d34583mr444891f8f.27.1747076754443; Mon, 12 May 2025 12:05:54 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 11/16] target/i386/emulate: stop overloading decode->op[N].ptr Date: Mon, 12 May 2025 21:05:19 +0200 Message-ID: <20250512190524.179419-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076792171019000 Content-Type: text/plain; charset="utf-8" decode->op[N].ptr can contain either a host pointer (!) in CPUState or a guest virtual address. Pass the whole struct to read_val_ext and write_val_ext, so that it can decide the contents based on the operand type. Signed-off-by: Paolo Bonzini --- target/i386/emulate/x86_decode.h | 9 ++- target/i386/emulate/x86_emu.h | 8 +-- target/i386/emulate/x86_decode.c | 74 +++++++++---------- target/i386/emulate/x86_emu.c | 119 ++++++++++++++++--------------- 4 files changed, 109 insertions(+), 101 deletions(-) diff --git a/target/i386/emulate/x86_decode.h b/target/i386/emulate/x86_dec= ode.h index 87cc728598d..927645af1a3 100644 --- a/target/i386/emulate/x86_decode.h +++ b/target/i386/emulate/x86_decode.h @@ -266,7 +266,10 @@ typedef struct x86_decode_op { int reg; target_ulong val; =20 - target_ulong ptr; + union { + target_ulong addr; + void *regptr; + }; } x86_decode_op; =20 typedef struct x86_decode { @@ -301,8 +304,8 @@ uint64_t sign(uint64_t val, int size); =20 uint32_t decode_instruction(CPUX86State *env, struct x86_decode *decode); =20 -target_ulong get_reg_ref(CPUX86State *env, int reg, int rex_present, - int is_extended, int size); +void *get_reg_ref(CPUX86State *env, int reg, int rex_present, + int is_extended, int size); target_ulong get_reg_val(CPUX86State *env, int reg, int rex_present, int is_extended, int size); void calc_modrm_operand(CPUX86State *env, struct x86_decode *decode, diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 555b567e2c7..a1a961284b2 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -42,11 +42,11 @@ void x86_emul_raise_exception(CPUX86State *env, int exc= eption_index, int error_c =20 target_ulong read_reg(CPUX86State *env, int reg, int size); void write_reg(CPUX86State *env, int reg, target_ulong val, int size); -target_ulong read_val_from_reg(target_ulong reg_ptr, int size); -void write_val_to_reg(target_ulong reg_ptr, target_ulong val, int size); -void write_val_ext(CPUX86State *env, target_ulong ptr, target_ulong val, i= nt size); +target_ulong read_val_from_reg(void *reg_ptr, int size); +void write_val_to_reg(void *reg_ptr, target_ulong val, int size); +void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size); uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes); -target_ulong read_val_ext(CPUX86State *env, target_ulong ptr, int size); +target_ulong read_val_ext(CPUX86State *env, struct x86_decode_op *decode, = int size); =20 void exec_movzx(CPUX86State *env, struct x86_decode *decode); void exec_shl(CPUX86State *env, struct x86_decode *decode); diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index 88be9479a82..2eca39802e3 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -109,8 +109,8 @@ static void decode_modrm_reg(CPUX86State *env, struct x= 86_decode *decode, { op->type =3D X86_VAR_REG; op->reg =3D decode->modrm.reg; - op->ptr =3D get_reg_ref(env, op->reg, decode->rex.rex, decode->rex.r, - decode->operand_size); + op->regptr =3D get_reg_ref(env, op->reg, decode->rex.rex, decode->rex.= r, + decode->operand_size); } =20 static void decode_rax(CPUX86State *env, struct x86_decode *decode, @@ -119,8 +119,8 @@ static void decode_rax(CPUX86State *env, struct x86_dec= ode *decode, op->type =3D X86_VAR_REG; op->reg =3D R_EAX; /* Since reg is always AX, REX prefix has no impact. */ - op->ptr =3D get_reg_ref(env, op->reg, false, 0, - decode->operand_size); + op->regptr =3D get_reg_ref(env, op->reg, false, 0, + decode->operand_size); } =20 static inline void decode_immediate(CPUX86State *env, struct x86_decode *d= ecode, @@ -262,16 +262,16 @@ static void decode_incgroup(CPUX86State *env, struct = x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0x40; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_decgroup(CPUX86State *env, struct x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0x48; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_incgroup2(CPUX86State *env, struct x86_decode *decode) @@ -287,16 +287,16 @@ static void decode_pushgroup(CPUX86State *env, struct= x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0x50; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_popgroup(CPUX86State *env, struct x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0x58; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_jxx(CPUX86State *env, struct x86_decode *decode) @@ -377,16 +377,16 @@ static void decode_xchgroup(CPUX86State *env, struct = x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0x90; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_movgroup(CPUX86State *env, struct x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0xb8; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); decode_immediate(env, decode, &decode->op[1], decode->operand_size); } =20 @@ -394,15 +394,15 @@ static void fetch_moffs(CPUX86State *env, struct x86_= decode *decode, struct x86_decode_op *op) { op->type =3D X86_VAR_OFFSET; - op->ptr =3D decode_bytes(env, decode, decode->addressing_size); + op->addr =3D decode_bytes(env, decode, decode->addressing_size); } =20 static void decode_movgroup8(CPUX86State *env, struct x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[0] - 0xb0; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); decode_immediate(env, decode, &decode->op[1], decode->operand_size); } =20 @@ -411,8 +411,8 @@ static void decode_rcx(CPUX86State *env, struct x86_dec= ode *decode, { op->type =3D X86_VAR_REG; op->reg =3D R_ECX; - op->ptr =3D get_reg_ref(env, op->reg, decode->rex.rex, decode->rex.b, - decode->operand_size); + op->regptr =3D get_reg_ref(env, op->reg, decode->rex.rex, decode->rex.= b, + decode->operand_size); } =20 struct decode_tbl { @@ -631,8 +631,8 @@ static void decode_bswap(CPUX86State *env, struct x86_d= ecode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D decode->opcode[1] - 0xc8; - decode->op[0].ptr =3D get_reg_ref(env, decode->op[0].reg, decode->rex.= rex, - decode->rex.b, decode->operand_size); + decode->op[0].regptr =3D get_reg_ref(env, decode->op[0].reg, decode->r= ex.rex, + decode->rex.b, decode->operand_size= ); } =20 static void decode_d9_4(CPUX86State *env, struct x86_decode *decode) @@ -1656,16 +1656,16 @@ void calc_modrm_operand16(CPUX86State *env, struct = x86_decode *decode, } calc_addr: if (X86_DECODE_CMD_LEA =3D=3D decode->cmd) { - op->ptr =3D (uint16_t)ptr; + op->addr =3D (uint16_t)ptr; } else { - op->ptr =3D decode_linear_addr(env, decode, (uint16_t)ptr, seg); + op->addr =3D decode_linear_addr(env, decode, (uint16_t)ptr, seg); } } =20 -target_ulong get_reg_ref(CPUX86State *env, int reg, int rex_present, +void *get_reg_ref(CPUX86State *env, int reg, int rex_present, int is_extended, int size) { - target_ulong ptr =3D 0; + void *ptr =3D NULL; =20 if (is_extended) { reg |=3D R_R8; @@ -1674,13 +1674,13 @@ target_ulong get_reg_ref(CPUX86State *env, int reg,= int rex_present, switch (size) { case 1: if (is_extended || reg < 4 || rex_present) { - ptr =3D (target_ulong)&RL(env, reg); + ptr =3D &RL(env, reg); } else { - ptr =3D (target_ulong)&RH(env, reg - 4); + ptr =3D &RH(env, reg - 4); } break; default: - ptr =3D (target_ulong)&RRX(env, reg); + ptr =3D &RRX(env, reg); break; } return ptr; @@ -1691,7 +1691,7 @@ target_ulong get_reg_val(CPUX86State *env, int reg, i= nt rex_present, { target_ulong val =3D 0; memcpy(&val, - (void *)get_reg_ref(env, reg, rex_present, is_extended, size), + get_reg_ref(env, reg, rex_present, is_extended, size), size); return val; } @@ -1758,9 +1758,9 @@ void calc_modrm_operand32(CPUX86State *env, struct x8= 6_decode *decode, } =20 if (X86_DECODE_CMD_LEA =3D=3D decode->cmd) { - op->ptr =3D (uint32_t)ptr; + op->addr =3D (uint32_t)ptr; } else { - op->ptr =3D decode_linear_addr(env, decode, (uint32_t)ptr, seg); + op->addr =3D decode_linear_addr(env, decode, (uint32_t)ptr, seg); } } =20 @@ -1788,9 +1788,9 @@ void calc_modrm_operand64(CPUX86State *env, struct x8= 6_decode *decode, } =20 if (X86_DECODE_CMD_LEA =3D=3D decode->cmd) { - op->ptr =3D ptr; + op->addr =3D ptr; } else { - op->ptr =3D decode_linear_addr(env, decode, ptr, seg); + op->addr =3D decode_linear_addr(env, decode, ptr, seg); } } =20 @@ -1801,8 +1801,8 @@ void calc_modrm_operand(CPUX86State *env, struct x86_= decode *decode, if (3 =3D=3D decode->modrm.mod) { op->reg =3D decode->modrm.reg; op->type =3D X86_VAR_REG; - op->ptr =3D get_reg_ref(env, decode->modrm.rm, decode->rex.rex, - decode->rex.b, decode->operand_size); + op->regptr =3D get_reg_ref(env, decode->modrm.rm, decode->rex.rex, + decode->rex.b, decode->operand_size); return; } =20 diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 7773b51b95e..4c07f08942e 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -52,7 +52,7 @@ uint8_t v2 =3D (uint8_t)decode->op[1].val; \ uint8_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, decode->op[0].ptr, diff, 1); \ + write_val_ext(env, &decode->op[0], diff, 1); \ } \ FLAGS_FUNC##8(env, v1, v2, diff); \ break; \ @@ -63,7 +63,7 @@ uint16_t v2 =3D (uint16_t)decode->op[1].val; \ uint16_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, decode->op[0].ptr, diff, 2); \ + write_val_ext(env, &decode->op[0], diff, 2); \ } \ FLAGS_FUNC##16(env, v1, v2, diff); \ break; \ @@ -74,7 +74,7 @@ uint32_t v2 =3D (uint32_t)decode->op[1].val; \ uint32_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, decode->op[0].ptr, diff, 4); \ + write_val_ext(env, &decode->op[0], diff, 4); \ } \ FLAGS_FUNC##32(env, v1, v2, diff); \ break; \ @@ -121,7 +121,7 @@ void write_reg(CPUX86State *env, int reg, target_ulong = val, int size) } } =20 -target_ulong read_val_from_reg(target_ulong reg_ptr, int size) +target_ulong read_val_from_reg(void *reg_ptr, int size) { target_ulong val; =20 @@ -144,7 +144,7 @@ target_ulong read_val_from_reg(target_ulong reg_ptr, in= t size) return val; } =20 -void write_val_to_reg(target_ulong reg_ptr, target_ulong val, int size) +void write_val_to_reg(void *reg_ptr, target_ulong val, int size) { switch (size) { case 1: @@ -164,18 +164,18 @@ void write_val_to_reg(target_ulong reg_ptr, target_ul= ong val, int size) } } =20 -static bool is_host_reg(CPUX86State *env, target_ulong ptr) +static void write_val_to_mem(CPUX86State *env, target_ulong ptr, target_ul= ong val, int size) { - return (ptr - (target_ulong)&env->regs[0]) < sizeof(env->regs); + emul_ops->write_mem(env_cpu(env), &val, ptr, size); } =20 -void write_val_ext(CPUX86State *env, target_ulong ptr, target_ulong val, i= nt size) +void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size) { - if (is_host_reg(env, ptr)) { - write_val_to_reg(ptr, val, size); - return; + if (decode->type =3D=3D X86_VAR_REG) { + write_val_to_reg(decode->regptr, val, size); + } else { + write_val_to_mem(env, decode->addr, val, size); } - emul_ops->write_mem(env_cpu(env), &val, ptr, size); } =20 uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes) @@ -185,15 +185,11 @@ uint8_t *read_mmio(CPUX86State *env, target_ulong ptr= , int bytes) } =20 =20 -target_ulong read_val_ext(CPUX86State *env, target_ulong ptr, int size) +static target_ulong read_val_from_mem(CPUX86State *env, target_long ptr, i= nt size) { target_ulong val; uint8_t *mmio_ptr; =20 - if (is_host_reg(env, ptr)) { - return read_val_from_reg(ptr, size); - } - mmio_ptr =3D read_mmio(env, ptr, size); switch (size) { case 1: @@ -215,6 +211,15 @@ target_ulong read_val_ext(CPUX86State *env, target_ulo= ng ptr, int size) return val; } =20 +target_ulong read_val_ext(CPUX86State *env, struct x86_decode_op *decode, = int size) +{ + if (decode->type =3D=3D X86_VAR_REG) { + return read_val_from_reg(decode->regptr, size); + } else { + return read_val_from_mem(env, decode->addr, size); + } +} + static void fetch_operands(CPUX86State *env, struct x86_decode *decode, int n, bool val_op0, bool val_op1, bool val_op2) { @@ -226,25 +231,25 @@ static void fetch_operands(CPUX86State *env, struct x= 86_decode *decode, case X86_VAR_IMMEDIATE: break; case X86_VAR_REG: - VM_PANIC_ON(!decode->op[i].ptr); + VM_PANIC_ON(!decode->op[i].regptr); if (calc_val[i]) { - decode->op[i].val =3D read_val_from_reg(decode->op[i].ptr, + decode->op[i].val =3D read_val_from_reg(decode->op[i].regp= tr, decode->operand_size= ); } break; case X86_VAR_RM: calc_modrm_operand(env, decode, &decode->op[i]); if (calc_val[i]) { - decode->op[i].val =3D read_val_ext(env, decode->op[i].ptr, + decode->op[i].val =3D read_val_ext(env, &decode->op[i], decode->operand_size); } break; case X86_VAR_OFFSET: - decode->op[i].ptr =3D decode_linear_addr(env, decode, - decode->op[i].ptr, - R_DS); + decode->op[i].addr =3D decode_linear_addr(env, decode, + decode->op[i].addr, + R_DS); if (calc_val[i]) { - decode->op[i].val =3D read_val_ext(env, decode->op[i].ptr, + decode->op[i].val =3D read_val_ext(env, &decode->op[i], decode->operand_size); } break; @@ -257,7 +262,7 @@ static void fetch_operands(CPUX86State *env, struct x86= _decode *decode, static void exec_mov(CPUX86State *env, struct x86_decode *decode) { fetch_operands(env, decode, 2, false, true, false); - write_val_ext(env, decode->op[0].ptr, decode->op[1].val, + write_val_ext(env, &decode->op[0], decode->op[1].val, decode->operand_size); =20 env->eip +=3D decode->len; @@ -312,7 +317,7 @@ static void exec_neg(CPUX86State *env, struct x86_decod= e *decode) fetch_operands(env, decode, 2, true, true, false); =20 val =3D 0 - sign(decode->op[1].val, decode->operand_size); - write_val_ext(env, decode->op[1].ptr, val, decode->operand_size); + write_val_ext(env, &decode->op[1], val, decode->operand_size); =20 if (4 =3D=3D decode->operand_size) { SET_FLAGS_OSZAPC_SUB32(env, 0, 0 - val, val); @@ -363,7 +368,7 @@ static void exec_not(CPUX86State *env, struct x86_decod= e *decode) { fetch_operands(env, decode, 1, true, false, false); =20 - write_val_ext(env, decode->op[0].ptr, ~decode->op[0].val, + write_val_ext(env, &decode->op[0], ~decode->op[0].val, decode->operand_size); env->eip +=3D decode->len; } @@ -382,8 +387,8 @@ void exec_movzx(CPUX86State *env, struct x86_decode *de= code) } decode->operand_size =3D src_op_size; calc_modrm_operand(env, decode, &decode->op[1]); - decode->op[1].val =3D read_val_ext(env, decode->op[1].ptr, src_op_size= ); - write_val_ext(env, decode->op[0].ptr, decode->op[1].val, op_size); + decode->op[1].val =3D read_val_ext(env, &decode->op[1], src_op_size); + write_val_ext(env, &decode->op[0], decode->op[1].val, op_size); =20 env->eip +=3D decode->len; } @@ -535,8 +540,8 @@ static void exec_movs_single(CPUX86State *env, struct x= 86_decode *decode) dst_addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); =20 - val =3D read_val_ext(env, src_addr, decode->operand_size); - write_val_ext(env, dst_addr, val, decode->operand_size); + val =3D read_val_from_mem(env, src_addr, decode->operand_size); + write_val_to_mem(env, dst_addr, val, decode->operand_size); =20 string_increment_reg(env, R_ESI, decode); string_increment_reg(env, R_EDI, decode); @@ -563,9 +568,9 @@ static void exec_cmps_single(CPUX86State *env, struct x= 86_decode *decode) decode->addressing_size, R_ES); =20 decode->op[0].type =3D X86_VAR_IMMEDIATE; - decode->op[0].val =3D read_val_ext(env, src_addr, decode->operand_size= ); + decode->op[0].val =3D read_val_from_mem(env, src_addr, decode->operand= _size); decode->op[1].type =3D X86_VAR_IMMEDIATE; - decode->op[1].val =3D read_val_ext(env, dst_addr, decode->operand_size= ); + decode->op[1].val =3D read_val_from_mem(env, dst_addr, decode->operand= _size); =20 EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false); =20 @@ -697,15 +702,15 @@ static void do_bt(CPUX86State *env, struct x86_decode= *decode, int flag) if (decode->op[0].type !=3D X86_VAR_REG) { if (4 =3D=3D decode->operand_size) { displacement =3D ((int32_t) (decode->op[1].val & 0xffffffe0)) = / 32; - decode->op[0].ptr +=3D 4 * displacement; + decode->op[0].addr +=3D 4 * displacement; } else if (2 =3D=3D decode->operand_size) { displacement =3D ((int16_t) (decode->op[1].val & 0xfff0)) / 16; - decode->op[0].ptr +=3D 2 * displacement; + decode->op[0].addr +=3D 2 * displacement; } else { VM_PANIC("bt 64bit\n"); } } - decode->op[0].val =3D read_val_ext(env, decode->op[0].ptr, + decode->op[0].val =3D read_val_ext(env, &decode->op[0], decode->operand_size); cf =3D (decode->op[0].val >> index) & 0x01; =20 @@ -723,7 +728,7 @@ static void do_bt(CPUX86State *env, struct x86_decode *= decode, int flag) decode->op[0].val &=3D ~(1u << index); break; } - write_val_ext(env, decode->op[0].ptr, decode->op[0].val, + write_val_ext(env, &decode->op[0], decode->op[0].val, decode->operand_size); set_CF(env, cf); } @@ -775,7 +780,7 @@ void exec_shl(CPUX86State *env, struct x86_decode *deco= de) of =3D cf ^ (res >> 7); } =20 - write_val_ext(env, decode->op[0].ptr, res, 1); + write_val_ext(env, &decode->op[0], res, 1); SET_FLAGS_OSZAPC_LOGIC8(env, 0, 0, res); SET_FLAGS_OxxxxC(env, of, cf); break; @@ -791,7 +796,7 @@ void exec_shl(CPUX86State *env, struct x86_decode *deco= de) of =3D cf ^ (res >> 15); /* of =3D cf ^ result15 */ } =20 - write_val_ext(env, decode->op[0].ptr, res, 2); + write_val_ext(env, &decode->op[0], res, 2); SET_FLAGS_OSZAPC_LOGIC16(env, 0, 0, res); SET_FLAGS_OxxxxC(env, of, cf); break; @@ -800,7 +805,7 @@ void exec_shl(CPUX86State *env, struct x86_decode *deco= de) { uint32_t res =3D decode->op[0].val << count; =20 - write_val_ext(env, decode->op[0].ptr, res, 4); + write_val_ext(env, &decode->op[0], res, 4); SET_FLAGS_OSZAPC_LOGIC32(env, 0, 0, res); cf =3D (decode->op[0].val >> (32 - count)) & 0x1; of =3D cf ^ (res >> 31); /* of =3D cf ^ result31 */ @@ -831,10 +836,10 @@ void exec_movsx(CPUX86State *env, struct x86_decode *= decode) =20 decode->operand_size =3D src_op_size; calc_modrm_operand(env, decode, &decode->op[1]); - decode->op[1].val =3D sign(read_val_ext(env, decode->op[1].ptr, src_op= _size), + decode->op[1].val =3D sign(read_val_ext(env, &decode->op[1], src_op_si= ze), src_op_size); =20 - write_val_ext(env, decode->op[0].ptr, decode->op[1].val, op_size); + write_val_ext(env, &decode->op[0], decode->op[1].val, op_size); =20 env->eip +=3D decode->len; } @@ -862,7 +867,7 @@ void exec_ror(CPUX86State *env, struct x86_decode *deco= de) count &=3D 0x7; /* use only bottom 3 bits */ res =3D ((uint8_t)decode->op[0].val >> count) | ((uint8_t)decode->op[0].val << (8 - count)); - write_val_ext(env, decode->op[0].ptr, res, 1); + write_val_ext(env, &decode->op[0], res, 1); bit6 =3D (res >> 6) & 1; bit7 =3D (res >> 7) & 1; /* set eflags: ROR count affects the following flags: C, O */ @@ -886,7 +891,7 @@ void exec_ror(CPUX86State *env, struct x86_decode *deco= de) count &=3D 0x0f; /* use only 4 LSB's */ res =3D ((uint16_t)decode->op[0].val >> count) | ((uint16_t)decode->op[0].val << (16 - count)); - write_val_ext(env, decode->op[0].ptr, res, 2); + write_val_ext(env, &decode->op[0], res, 2); =20 bit14 =3D (res >> 14) & 1; bit15 =3D (res >> 15) & 1; @@ -904,7 +909,7 @@ void exec_ror(CPUX86State *env, struct x86_decode *deco= de) if (count) { res =3D ((uint32_t)decode->op[0].val >> count) | ((uint32_t)decode->op[0].val << (32 - count)); - write_val_ext(env, decode->op[0].ptr, res, 4); + write_val_ext(env, &decode->op[0], res, 4); =20 bit31 =3D (res >> 31) & 1; bit30 =3D (res >> 30) & 1; @@ -941,7 +946,7 @@ void exec_rol(CPUX86State *env, struct x86_decode *deco= de) res =3D ((uint8_t)decode->op[0].val << count) | ((uint8_t)decode->op[0].val >> (8 - count)); =20 - write_val_ext(env, decode->op[0].ptr, res, 1); + write_val_ext(env, &decode->op[0], res, 1); /* set eflags: * ROL count affects the following flags: C, O */ @@ -968,7 +973,7 @@ void exec_rol(CPUX86State *env, struct x86_decode *deco= de) res =3D ((uint16_t)decode->op[0].val << count) | ((uint16_t)decode->op[0].val >> (16 - count)); =20 - write_val_ext(env, decode->op[0].ptr, res, 2); + write_val_ext(env, &decode->op[0], res, 2); bit0 =3D (res & 0x1); bit15 =3D (res >> 15); /* of =3D cf ^ result15 */ @@ -986,7 +991,7 @@ void exec_rol(CPUX86State *env, struct x86_decode *deco= de) res =3D ((uint32_t)decode->op[0].val << count) | ((uint32_t)decode->op[0].val >> (32 - count)); =20 - write_val_ext(env, decode->op[0].ptr, res, 4); + write_val_ext(env, &decode->op[0], res, 4); bit0 =3D (res & 0x1); bit31 =3D (res >> 31); /* of =3D cf ^ result31 */ @@ -1024,7 +1029,7 @@ void exec_rcl(CPUX86State *env, struct x86_decode *de= code) (op1_8 >> (9 - count)); } =20 - write_val_ext(env, decode->op[0].ptr, res, 1); + write_val_ext(env, &decode->op[0], res, 1); =20 cf =3D (op1_8 >> (8 - count)) & 0x01; of =3D cf ^ (res >> 7); /* of =3D cf ^ result7 */ @@ -1050,7 +1055,7 @@ void exec_rcl(CPUX86State *env, struct x86_decode *de= code) (op1_16 >> (17 - count)); } =20 - write_val_ext(env, decode->op[0].ptr, res, 2); + write_val_ext(env, &decode->op[0], res, 2); =20 cf =3D (op1_16 >> (16 - count)) & 0x1; of =3D cf ^ (res >> 15); /* of =3D cf ^ result15 */ @@ -1073,7 +1078,7 @@ void exec_rcl(CPUX86State *env, struct x86_decode *de= code) (op1_32 >> (33 - count)); } =20 - write_val_ext(env, decode->op[0].ptr, res, 4); + write_val_ext(env, &decode->op[0], res, 4); =20 cf =3D (op1_32 >> (32 - count)) & 0x1; of =3D cf ^ (res >> 31); /* of =3D cf ^ result31 */ @@ -1105,7 +1110,7 @@ void exec_rcr(CPUX86State *env, struct x86_decode *de= code) res =3D (op1_8 >> count) | (get_CF(env) << (8 - count)) | (op1_8 << (9 - count)); =20 - write_val_ext(env, decode->op[0].ptr, res, 1); + write_val_ext(env, &decode->op[0], res, 1); =20 cf =3D (op1_8 >> (count - 1)) & 0x1; of =3D (((res << 1) ^ res) >> 7) & 0x1; /* of =3D result6 ^ result= 7 */ @@ -1124,7 +1129,7 @@ void exec_rcr(CPUX86State *env, struct x86_decode *de= code) res =3D (op1_16 >> count) | (get_CF(env) << (16 - count)) | (op1_16 << (17 - count)); =20 - write_val_ext(env, decode->op[0].ptr, res, 2); + write_val_ext(env, &decode->op[0], res, 2); =20 cf =3D (op1_16 >> (count - 1)) & 0x1; of =3D ((uint16_t)((res << 1) ^ res) >> 15) & 0x1; /* of =3D resul= t15 ^ @@ -1148,7 +1153,7 @@ void exec_rcr(CPUX86State *env, struct x86_decode *de= code) (op1_32 << (33 - count)); } =20 - write_val_ext(env, decode->op[0].ptr, res, 4); + write_val_ext(env, &decode->op[0], res, 4); =20 cf =3D (op1_32 >> (count - 1)) & 0x1; of =3D ((res << 1) ^ res) >> 31; /* of =3D result30 ^ result31 */ @@ -1163,9 +1168,9 @@ static void exec_xchg(CPUX86State *env, struct x86_de= code *decode) { fetch_operands(env, decode, 2, true, true, false); =20 - write_val_ext(env, decode->op[0].ptr, decode->op[1].val, + write_val_ext(env, &decode->op[0], decode->op[1].val, decode->operand_size); - write_val_ext(env, decode->op[1].ptr, decode->op[0].val, + write_val_ext(env, &decode->op[1], decode->op[0].val, decode->operand_size); =20 env->eip +=3D decode->len; @@ -1174,7 +1179,7 @@ static void exec_xchg(CPUX86State *env, struct x86_de= code *decode) static void exec_xadd(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, +, SET_FLAGS_OSZAPC_ADD, true); - write_val_ext(env, decode->op[1].ptr, decode->op[0].val, + write_val_ext(env, &decode->op[1], decode->op[0].val, decode->operand_size); =20 env->eip +=3D decode->len; --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076870; cv=none; d=zohomail.com; s=zohoarc; b=KRSPpG2kR5N7+Uh1vUpHRtT5edu28qroDT7oCW0khP7O9yhqaeFliwEctS2/zr8MOWHlHn5VQMTLwmc1b4oA1srzzQEJtwn3rwPgAvkqd4tczy0bXZxK1SrjUohRE+X61gyxqW8FWvr/M2zmvVGhrTnTN1mBCQkbOwqBzTzUo4M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076870; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=W2J6yRl89mVELa9rXr6rEEUrnm6UrZU0niVvrXe2iPQ=; b=ChitRtYRKM6m6rHCiZrVno6iXwcJ+dtz/8z/6tB7QhT38YCs/TvuqdTPT0ok8y8Yhhek4f4nr3NvjfNBOfITLgkzFBPD3SsTcmXd9PmBucrcq8t92wfjEMJM1VjSPz3jyb1HapR6i+VcpXMYYTtwdcMeA/1bZfG8RgNseVdagzQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076870320849.456830949625; Mon, 12 May 2025 12:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTi-00063c-Av; Mon, 12 May 2025 15:06:18 -0400 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 1uEYTW-0005bM-D3 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTU-0007X0-93 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:06 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-32-sPM4CwXwOJaz9hntX0m5kQ-1; Mon, 12 May 2025 15:06:00 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43d0a037f97so25000075e9.2 for ; Mon, 12 May 2025 12:05:59 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442d68585d1sm137245295e9.31.2025.05.12.12.05.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=W2J6yRl89mVELa9rXr6rEEUrnm6UrZU0niVvrXe2iPQ=; b=dPBCUYHwe65dMgcTjGNY4D2rfIVIa0qqPzl3TOmWjL2uO0dG8OupLhUowZ7+hfwUkhV9Fe TaBB8C95Nx8ZvC4LhuaOwy16IM6XAiYhqQYeAcmZNWdSoT4pqhiMItKAqf3FsBpp09I6AI 4VDUvhMDMKDhnh0EHqR7SuZIfxcouug= X-MC-Unique: sPM4CwXwOJaz9hntX0m5kQ-1 X-Mimecast-MFC-AGG-ID: sPM4CwXwOJaz9hntX0m5kQ_1747076759 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076758; x=1747681558; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W2J6yRl89mVELa9rXr6rEEUrnm6UrZU0niVvrXe2iPQ=; b=mMYiNJoakuQckrOalEWkSPgN4LSheAL8WgjDlj7K4R8rRGebRB+Oy3GZNyU0vY7iXn s5NT8k8Cwv4+HzpJsZ1QjmUr3RJdesB2xNnIBhfV2hdXup8wVWNhGuKBBQCxgtma4voj zxkVDYRYnTrpU9jzI5NYb/4e2DMMMUCFT6oBAoZ0ModKFA5GBm3q4s1nrtteDao+xlEn 3Ql5naQHtnLAJf/iAuFtZ0hGT66nLZhgcUh+oCYiC3oBYFcDNiwHZJ9jZQL+0stB88Xl erfs7nXxghGWYlHgsmnqJpRRtZHhQmLzZrQO7hsyRkmFYNF2KdTxSGlbAfW9j7cOwdui TPjQ== X-Gm-Message-State: AOJu0Yzbj0oPoQgA9Lr3h8hnitoJYogijZlS3rxKZXoJ4YcGpzlZfYBR enSo9Rr0sHHwfVsLnGUy/nj7SnB2mw64+68T4TqIbeFi8PElg/uSGj1bLA4oIdnvNoxfeVoTtTc Rh+II2dSrPDGHXRrR1opdizb/tCeeqlEAJd6o6PWG5iK+W2fPXQrOeXLcjRF5kr4ZJLUc2k6rfR O9IwBT8UKACALCQo2JhtI8m7hahtshYJbyCJNk X-Gm-Gg: ASbGncs3JMdKkt/nS8fgY7RC2Pxw3oZfIpzDxDJPxRCKfQDG40TP1priYpvvnxTElFv 6P1gv7NmJakP23h8ZYXkGAsB8ss/ZZCfS4h2aaLLBqBRAKFdyad6wVojH4zTC86yj7AeUjToJO2 gyBj69PQNMsBYrKwCS6d2G4+8Eu4fK8i2l+72IStdt5kzS8r/6c1NxN8XaNryagI1QVIQKb8VTp 6cPFQ5C1w/x4ICrarvqR93HTXs9UE+zxJztq57L19/TlK/wtyySC0i3oavqZZrapHOwopd0TJNB 479ap1EtckqzLmI= X-Received: by 2002:a05:600c:1382:b0:43d:53c:1ad6 with SMTP id 5b1f17b1804b1-442d6dd2530mr109729125e9.26.1747076757520; Mon, 12 May 2025 12:05:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjcD4y6gnoAJ1eOT8xKmBF1begzsyDdVqJnIO2/o4P3eG8geeIyu10fOf5L8BwPZ7N4V8WrQ== X-Received: by 2002:a05:600c:1382:b0:43d:53c:1ad6 with SMTP id 5b1f17b1804b1-442d6dd2530mr109728825e9.26.1747076756809; Mon, 12 May 2025 12:05:56 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 12/16] target/i386/emulate: mostly rewrite flags handling Date: Mon, 12 May 2025 21:05:20 +0200 Message-ID: <20250512190524.179419-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076872186116600 Content-Type: text/plain; charset="utf-8" While Bochs's algorithms are pretty solid, there are small opportunities to improve them or to make their logic more similar to TCG's handling of condition codes. - use a single bit for the difference between bits 0..7 of result and PF. This is useful because "set only ZF" is not a common case. - place SD in the same place as SF - move CF and PO at bits 62 and 63 when target_ulong is 64-bits wide, so that 64-bit ALU operations need fewer shifts - use rotates to move CF and AF from auxbits to their eflags position Signed-off-by: Paolo Bonzini --- target/i386/emulate/x86_flags.h | 12 +- target/i386/emulate/x86_emu.c | 4 +- target/i386/emulate/x86_flags.c | 197 ++++++++++++++------------------ 3 files changed, 86 insertions(+), 127 deletions(-) diff --git a/target/i386/emulate/x86_flags.h b/target/i386/emulate/x86_flag= s.h index 6c175007b57..28b008e5771 100644 --- a/target/i386/emulate/x86_flags.h +++ b/target/i386/emulate/x86_flags.h @@ -28,20 +28,10 @@ void lflags_to_rflags(CPUX86State *env); void rflags_to_lflags(CPUX86State *env); =20 -bool get_PF(CPUX86State *env); -void set_PF(CPUX86State *env, bool val); bool get_CF(CPUX86State *env); void set_CF(CPUX86State *env, bool val); -bool get_AF(CPUX86State *env); -void set_AF(CPUX86State *env, bool val); -bool get_ZF(CPUX86State *env); -void set_ZF(CPUX86State *env, bool val); -bool get_SF(CPUX86State *env); -void set_SF(CPUX86State *env, bool val); -bool get_OF(CPUX86State *env); -void set_OF(CPUX86State *env, bool val); =20 -void SET_FLAGS_OxxxxC(CPUX86State *env, uint32_t new_of, uint32_t new_cf); +void SET_FLAGS_OxxxxC(CPUX86State *env, bool new_of, bool new_cf); =20 void SET_FLAGS_OSZAPC_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2, uint32_t diff); diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 4c07f08942e..61bd5af5bb1 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -474,10 +474,10 @@ static inline void string_rep(CPUX86State *env, struc= t x86_decode *decode, while (rcx--) { func(env, decode); write_reg(env, R_ECX, rcx, decode->addressing_size); - if ((PREFIX_REP =3D=3D rep) && !get_ZF(env)) { + if ((PREFIX_REP =3D=3D rep) && !env->lflags.result) { break; } - if ((PREFIX_REPN =3D=3D rep) && get_ZF(env)) { + if ((PREFIX_REPN =3D=3D rep) && env->lflags.result) { break; } } diff --git a/target/i386/emulate/x86_flags.c b/target/i386/emulate/x86_flag= s.c index 84e27364a03..42f11d7de16 100644 --- a/target/i386/emulate/x86_flags.c +++ b/target/i386/emulate/x86_flags.c @@ -29,41 +29,50 @@ #include "x86.h" =20 =20 -/* this is basically bocsh code */ +/* + * The algorithms here are similar to those in Bochs. After an ALU + * operation, RESULT can be used to compute ZF, SF and PF, whereas + * AUXBITS is used to compute AF, CF and OF. In reality, SF and PF are the + * XOR of the value computed from RESULT and the value found in bits 7 and= 2 + * of AUXBITS; this way the same logic can be used to compute the flags + * both before and after an ALU operation. + * + * Compared to the TCG CC_OP codes, this avoids conditionals when converti= ng + * to and from the RFLAGS representation. + */ =20 -#define LF_SIGN_BIT 31 +#define LF_SIGN_BIT (TARGET_LONG_BITS - 1) =20 -#define LF_BIT_SD (0) /* lazy Sign Flag Delta */ -#define LF_BIT_AF (3) /* lazy Adjust flag */ -#define LF_BIT_PDB (8) /* lazy Parity Delta Byte (8 bits) */ -#define LF_BIT_CF (31) /* lazy Carry Flag */ -#define LF_BIT_PO (30) /* lazy Partial Overflow =3D CF ^ OF */ +#define LF_BIT_PD (2) /* lazy Parity Delta, same bit as PF */ +#define LF_BIT_AF (3) /* lazy Adjust flag */ +#define LF_BIT_SD (7) /* lazy Sign Flag Delta, same bit as S= F */ +#define LF_BIT_CF (TARGET_LONG_BITS - 1) /* lazy Carry Flag */ +#define LF_BIT_PO (TARGET_LONG_BITS - 2) /* lazy Partial Overflow =3D= CF ^ OF */ =20 -#define LF_MASK_SD (0x01 << LF_BIT_SD) -#define LF_MASK_AF (0x01 << LF_BIT_AF) -#define LF_MASK_PDB (0xFF << LF_BIT_PDB) -#define LF_MASK_CF (0x01 << LF_BIT_CF) -#define LF_MASK_PO (0x01 << LF_BIT_PO) +#define LF_MASK_PD ((target_ulong)0x01 << LF_BIT_PD) +#define LF_MASK_AF ((target_ulong)0x01 << LF_BIT_AF) +#define LF_MASK_SD ((target_ulong)0x01 << LF_BIT_SD) +#define LF_MASK_CF ((target_ulong)0x01 << LF_BIT_CF) +#define LF_MASK_PO ((target_ulong)0x01 << LF_BIT_PO) =20 /* ******************* */ /* OSZAPC */ /* ******************* */ =20 -/* size, carries, result */ +/* use carries to fill in AF, PO and CF, while ensuring PD and SD are clea= r. + * for full-word operations just clear PD and SD; for smaller operand + * sizes only keep AF in the low byte and shift the carries left to + * place PO and CF in the top two bits. + */ #define SET_FLAGS_OSZAPC_SIZE(size, lf_carries, lf_result) { \ - target_ulong temp =3D ((lf_carries) & (LF_MASK_AF)) | \ - (((lf_carries) >> (size - 2)) << LF_BIT_PO); \ env->lflags.result =3D (target_ulong)(int##size##_t)(lf_result); \ - if ((size) =3D=3D 32) { \ - temp =3D ((lf_carries) & ~(LF_MASK_PDB | LF_MASK_SD)); \ - } else if ((size) =3D=3D 16) { \ - temp =3D ((lf_carries) & (LF_MASK_AF)) | ((lf_carries) << 16); \ - } else if ((size) =3D=3D 8) { \ - temp =3D ((lf_carries) & (LF_MASK_AF)) | ((lf_carries) << 24); \ + target_ulong temp =3D (lf_carries); \ + if ((size) =3D=3D TARGET_LONG_BITS) { \ + temp =3D temp & ~(LF_MASK_PD | LF_MASK_SD); \ } else { \ - VM_PANIC("unimplemented"); \ + temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ } \ - env->lflags.auxbits =3D (target_ulong)(uint32_t)temp; \ + env->lflags.auxbits =3D temp; \ } =20 /* carries, result */ @@ -77,23 +86,18 @@ /* ******************* */ /* OSZAP */ /* ******************* */ -/* size, carries, result */ +/* same as setting OSZAPC, but preserve CF and flip PO if the old value of= CF + * did not match the high bit of lf_carries. */ #define SET_FLAGS_OSZAP_SIZE(size, lf_carries, lf_result) { \ - target_ulong temp =3D ((lf_carries) & (LF_MASK_AF)) | \ - (((lf_carries) >> (size - 2)) << LF_BIT_PO); \ - if ((size) =3D=3D 32) { \ - temp =3D ((lf_carries) & ~(LF_MASK_PDB | LF_MASK_SD)); \ - } else if ((size) =3D=3D 16) { \ - temp =3D ((lf_carries) & (LF_MASK_AF)) | ((lf_carries) << 16); \ - } else if ((size) =3D=3D 8) { \ - temp =3D ((lf_carries) & (LF_MASK_AF)) | ((lf_carries) << 24); \ - } else { \ - VM_PANIC("unimplemented"); \ - } \ env->lflags.result =3D (target_ulong)(int##size##_t)(lf_result); \ - target_ulong delta_c =3D (env->lflags.auxbits ^ temp) & LF_MASK_CF; \ - delta_c ^=3D (delta_c >> 1); \ - env->lflags.auxbits =3D (target_ulong)(uint32_t)(temp ^ delta_c); \ + target_ulong temp =3D (lf_carries); \ + if ((size) =3D=3D TARGET_LONG_BITS) { \ + temp =3D (temp & ~(LF_MASK_PD | LF_MASK_SD)); \ + } else { \ + temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ + } \ + target_ulong cf_changed =3D ((target_long)(env->lflags.auxbits ^ temp)= ) < 0; \ + env->lflags.auxbits =3D temp ^ (cf_changed * (LF_MASK_PO | LF_MASK_CF)= ); \ } =20 /* carries, result */ @@ -104,11 +108,11 @@ #define SET_FLAGS_OSZAP_32(carries, result) \ SET_FLAGS_OSZAP_SIZE(32, carries, result) =20 -void SET_FLAGS_OxxxxC(CPUX86State *env, uint32_t new_of, uint32_t new_cf) +void SET_FLAGS_OxxxxC(CPUX86State *env, bool new_of, bool new_cf) { - uint32_t temp_po =3D new_of ^ new_cf; env->lflags.auxbits &=3D ~(LF_MASK_PO | LF_MASK_CF); - env->lflags.auxbits |=3D (temp_po << LF_BIT_PO) | (new_cf << LF_BIT_CF= ); + env->lflags.auxbits |=3D (-(target_ulong)new_cf << LF_BIT_PO); + env->lflags.auxbits ^=3D ((target_ulong)new_of << LF_BIT_PO); } =20 void SET_FLAGS_OSZAPC_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2, @@ -202,104 +206,69 @@ void SET_FLAGS_OSZAPC_LOGIC8(CPUX86State *env, uint8= _t v1, uint8_t v2, SET_FLAGS_OSZAPC_8(0, diff); } =20 -bool get_PF(CPUX86State *env) +static inline uint32_t get_PF(CPUX86State *env) { - uint32_t temp =3D (255 & env->lflags.result); - temp =3D temp ^ (255 & (env->lflags.auxbits >> LF_BIT_PDB)); - temp =3D (temp ^ (temp >> 4)) & 0x0F; - return (0x9669U >> temp) & 1; + uint8_t temp =3D env->lflags.result; + return ((parity8(temp) - 1) ^ env->lflags.auxbits) & CC_P; } =20 -void set_PF(CPUX86State *env, bool val) +static inline uint32_t get_OF(CPUX86State *env) { - uint32_t temp =3D (255 & env->lflags.result) ^ (!val); - env->lflags.auxbits &=3D ~(LF_MASK_PDB); - env->lflags.auxbits |=3D (temp << LF_BIT_PDB); -} - -bool get_OF(CPUX86State *env) -{ - return ((env->lflags.auxbits + (1U << LF_BIT_PO)) >> LF_BIT_CF) & 1; + return ((env->lflags.auxbits >> (LF_BIT_CF - 11)) + CC_O / 2) & CC_O; } =20 bool get_CF(CPUX86State *env) { - return (env->lflags.auxbits >> LF_BIT_CF) & 1; -} - -void set_OF(CPUX86State *env, bool val) -{ - bool old_cf =3D get_CF(env); - SET_FLAGS_OxxxxC(env, val, old_cf); + return ((target_long)env->lflags.auxbits) < 0; } =20 void set_CF(CPUX86State *env, bool val) { - bool old_of =3D get_OF(env); - SET_FLAGS_OxxxxC(env, old_of, val); + /* If CF changes, flip PO and CF */ + target_ulong temp =3D -(target_ulong)val; + target_ulong cf_changed =3D ((target_long)(env->lflags.auxbits ^ temp)= ) < 0; + env->lflags.auxbits ^=3D cf_changed * (LF_MASK_PO | LF_MASK_CF); } =20 -bool get_AF(CPUX86State *env) +static inline uint32_t get_ZF(CPUX86State *env) { - return (env->lflags.auxbits >> LF_BIT_AF) & 1; + return env->lflags.result ? 0 : CC_Z; } =20 -void set_AF(CPUX86State *env, bool val) +static inline uint32_t get_SF(CPUX86State *env) { - env->lflags.auxbits &=3D ~(LF_MASK_AF); - env->lflags.auxbits |=3D val << LF_BIT_AF; -} - -bool get_ZF(CPUX86State *env) -{ - return !env->lflags.result; -} - -void set_ZF(CPUX86State *env, bool val) -{ - if (val) { - env->lflags.auxbits ^=3D - (((env->lflags.result >> LF_SIGN_BIT) & 1) << LF_BIT_SD); - /* merge the parity bits into the Parity Delta Byte */ - uint32_t temp_pdb =3D (255 & env->lflags.result); - env->lflags.auxbits ^=3D (temp_pdb << LF_BIT_PDB); - /* now zero the .result value */ - env->lflags.result =3D 0; - } else { - env->lflags.result |=3D (1 << 8); - } -} - -bool get_SF(CPUX86State *env) -{ - return ((env->lflags.result >> LF_SIGN_BIT) ^ - (env->lflags.auxbits >> LF_BIT_SD)) & 1; -} - -void set_SF(CPUX86State *env, bool val) -{ - bool temp_sf =3D get_SF(env); - env->lflags.auxbits ^=3D (temp_sf ^ val) << LF_BIT_SD; + return ((env->lflags.result >> (LF_SIGN_BIT - LF_BIT_SD)) ^ + env->lflags.auxbits) & CC_S; } =20 void lflags_to_rflags(CPUX86State *env) { env->eflags &=3D ~(CC_C|CC_P|CC_A|CC_Z|CC_S|CC_O); - env->eflags |=3D get_CF(env) ? CC_C : 0; - env->eflags |=3D get_PF(env) ? CC_P : 0; - env->eflags |=3D get_AF(env) ? CC_A : 0; - env->eflags |=3D get_ZF(env) ? CC_Z : 0; - env->eflags |=3D get_SF(env) ? CC_S : 0; - env->eflags |=3D get_OF(env) ? CC_O : 0; + /* rotate left by one to move carry-out bits into CF and AF */ + env->eflags |=3D ( + (env->lflags.auxbits << 1) | + (env->lflags.auxbits >> (TARGET_LONG_BITS - 1))) & (CC_C | CC_A); + env->eflags |=3D get_SF(env); + env->eflags |=3D get_PF(env); + env->eflags |=3D get_ZF(env); + env->eflags |=3D get_OF(env); } =20 void rflags_to_lflags(CPUX86State *env) { - env->lflags.auxbits =3D env->lflags.result =3D 0; - set_OF(env, env->eflags & CC_O); - set_SF(env, env->eflags & CC_S); - set_ZF(env, env->eflags & CC_Z); - set_AF(env, env->eflags & CC_A); - set_PF(env, env->eflags & CC_P); - set_CF(env, env->eflags & CC_C); + target_ulong cf_xor_of; + + env->lflags.auxbits =3D CC_P; + env->lflags.auxbits ^=3D env->eflags & (CC_S | CC_P); + + /* rotate right by one to move CF and AF into the carry-out positions = */ + env->lflags.auxbits |=3D ( + (env->eflags >> 1) | + (env->eflags << (TARGET_LONG_BITS - 1))) & (CC_C | CC_A); + + cf_xor_of =3D (env->eflags & (CC_C | CC_O)) + (CC_O - CC_C); + env->lflags.auxbits |=3D -cf_xor_of & LF_MASK_PO; + + /* Leave the low byte zero so that parity is not affected. */ + env->lflags.result =3D !(env->eflags & CC_Z) << 8; } --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076842; cv=none; d=zohomail.com; s=zohoarc; b=SbG2G9sJaXGrUsr2RBoEF5ri4dlt0KyJZzxS4LPyask8NW2rB6YQiIr1qBbbUZVwDUvv/RgUNCnMVcJegVXH9SeByxJ/ZMFqYMSfijRV2iuZtak/SYbfrUMW2ABu6u3feYg5Y189xJRISDorbYTGY4/AAIXlQfUIXL9QIM/Adig= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076842; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PIOkXYxL2sKbGG6NEJXzvPXTFuLMkskmWg4bD0UDnoY=; b=Pk5/9IW6CiHBMISE7aor1sq8bZbalWXUDCVQmGp1nWGmPVBNPgZ17rEszNwWPkIMP5O1+1TPw6Bn4PVWBxAKT4jsguVWgJ3tKIjS7jFRdVzzCIaIonZYF0mjN/H4+2MCfd/6oJh8JE96JIkpOUsZSJPdg6DU4ClVyl0aM19I4cQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076842631166.36441672356625; Mon, 12 May 2025 12:07:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTs-0006lM-6W; Mon, 12 May 2025 15:06:28 -0400 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 1uEYTW-0005bF-8k for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTU-0007Wz-Fl for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:06 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-524-TL7QBh6aPcGnNfHDtUsKeQ-1; Mon, 12 May 2025 15:06:02 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43d5ca7c86aso22698015e9.0 for ; Mon, 12 May 2025 12:06:02 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442d687adc0sm134770065e9.35.2025.05.12.12.05.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:05:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076763; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PIOkXYxL2sKbGG6NEJXzvPXTFuLMkskmWg4bD0UDnoY=; b=dha9MiSz9jyRmqy1vjwP6IRikG7AGP/VaPf9CMCcWsRCRBtZD366sWrea534f+PSMRRSot Ih44O3zWhJWgYlOwfEN7qXHIQxJlpRNjeTOdue7aRNc6Hr2XXpP+/8Ez4wRw6vSpyrLul+ Opt9eDqOAk4ZpwCOTRHr09K6oUJGTro= X-MC-Unique: TL7QBh6aPcGnNfHDtUsKeQ-1 X-Mimecast-MFC-AGG-ID: TL7QBh6aPcGnNfHDtUsKeQ_1747076761 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076760; x=1747681560; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PIOkXYxL2sKbGG6NEJXzvPXTFuLMkskmWg4bD0UDnoY=; b=Dzg4d1Z4J1xyiuT1UwuaAnLXbL9p1Fji4RgKMK2g6kf6fI4TPtcDMHuzOd64SVsica 6aZqjZn9kbgTCQfte6/tcA5hOmXzrit2AoJt+XYIJbTIjaBI44P05L3kDfmOF8OquriV ziGncvvaTPMU3WQr9blEc9xyJqzc0mHZljAAe6rY1xgww0Zu3DO0AdpczqamQ/DP6Z2+ fWezclz6Tn4bLn1AeE5nSy6a1rmJGjdAb7qZjvWCjFJA8k/4lTIodoDl+GdLlsYQjJiY YJUem2lzRAkd6p/gW0baRN/CYW6G6JpBPkJbfEPLfWUxaZjz9cgkTy42iWMvaTiUg+CW SvUg== X-Gm-Message-State: AOJu0YxTEH4pF9B46hg77XuYheYdxqXu7NuBx6kdk00DkCEMqYlwBEiG KnrtthPCBUEWdTmiVFXQtVL05OnGi5pG1CdLM+FKtiWWBREyXve2nh8ghQniwRShLgMff3EeoYC xzqEbSFe8aa3/yhepBd+Zu4Ymzg7vzqDd57O7MoHxYZRmsb8tuM4I/FxWCVJLR2RhKXn2sRh8bm OD9ZjQYFkaIO82f+b/odvgIFqB+K5TqEtBqcuy X-Gm-Gg: ASbGncv+ORSYaGUn46rHdBX++PVqsrIcIQrba0qY7dvQq+kmTlK9uUM13jvpa2cHl9C g6ufoDXXMXgQHzzAK6S5QuxSJtsmJF4BULf8WGkQNMk/eAJdZKjnSnTV4hYc3r3yLzwabEl2Zh6 jwIDqQu1kVgXGXM4E1hqytJbTIo3Xns5flex1MFlv3AyGD/fgRNyfud0DyL1xWKAio0fn1W7FkU gSWN5DOlF9afQnFBYAsoWqHFHLfVpPWDmFwGqgMkWGllzDKaxvpkMdFE02TwgC4lbiJCbdakagt 5DegHqn9Jxxy9D8= X-Received: by 2002:a05:600c:8211:b0:43b:c0fa:f9dd with SMTP id 5b1f17b1804b1-442d6dd22edmr102455475e9.25.1747076760449; Mon, 12 May 2025 12:06:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGqDYoS4+yF2xInpWEdM+EQU848BdZDvOveeRScvKQD7pFfW2odX0m8DCQGlyXLMxwNwk0S5A== X-Received: by 2002:a05:600c:8211:b0:43b:c0fa:f9dd with SMTP id 5b1f17b1804b1-442d6dd22edmr102455295e9.25.1747076759832; Mon, 12 May 2025 12:05:59 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 13/16] target/i386: remove lflags Date: Mon, 12 May 2025 21:05:21 +0200 Message-ID: <20250512190524.179419-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076844436116600 Content-Type: text/plain; charset="utf-8" Just use cc_dst and cc_src for the same purpose. Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 6 ---- target/i386/emulate/x86_emu.c | 4 +-- target/i386/emulate/x86_flags.c | 55 ++++++++++++++++----------------- 3 files changed, 29 insertions(+), 36 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 4f8ed8868e9..c51e0a43d0b 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -1805,11 +1805,6 @@ typedef struct CPUCaches { CPUCacheInfo *l3_cache; } CPUCaches; =20 -typedef struct X86LazyFlags { - target_ulong result; - target_ulong auxbits; -} X86LazyFlags; - typedef struct CPUArchState { /* standard registers */ target_ulong regs[CPU_NB_REGS]; @@ -2102,7 +2097,6 @@ typedef struct CPUArchState { QemuMutex xen_timers_lock; #endif #if defined(CONFIG_HVF) - X86LazyFlags lflags; void *emu_mmio_buf; #endif =20 diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 61bd5af5bb1..4890e0a4e5e 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -474,10 +474,10 @@ static inline void string_rep(CPUX86State *env, struc= t x86_decode *decode, while (rcx--) { func(env, decode); write_reg(env, R_ECX, rcx, decode->addressing_size); - if ((PREFIX_REP =3D=3D rep) && !env->lflags.result) { + if ((PREFIX_REP =3D=3D rep) && !env->cc_dst) { break; } - if ((PREFIX_REPN =3D=3D rep) && env->lflags.result) { + if ((PREFIX_REPN =3D=3D rep) && env->cc_dst) { break; } } diff --git a/target/i386/emulate/x86_flags.c b/target/i386/emulate/x86_flag= s.c index 42f11d7de16..47bc19778c2 100644 --- a/target/i386/emulate/x86_flags.c +++ b/target/i386/emulate/x86_flags.c @@ -31,10 +31,10 @@ =20 /* * The algorithms here are similar to those in Bochs. After an ALU - * operation, RESULT can be used to compute ZF, SF and PF, whereas - * AUXBITS is used to compute AF, CF and OF. In reality, SF and PF are the - * XOR of the value computed from RESULT and the value found in bits 7 and= 2 - * of AUXBITS; this way the same logic can be used to compute the flags + * operation, CC_DST can be used to compute ZF, SF and PF, whereas + * CC_SRC is used to compute AF, CF and OF. In reality, SF and PF are the + * XOR of the value computed from CC_DST and the value found in bits 7 and= 2 + * of CC_SRC; this way the same logic can be used to compute the flags * both before and after an ALU operation. * * Compared to the TCG CC_OP codes, this avoids conditionals when converti= ng @@ -65,14 +65,14 @@ * place PO and CF in the top two bits. */ #define SET_FLAGS_OSZAPC_SIZE(size, lf_carries, lf_result) { \ - env->lflags.result =3D (target_ulong)(int##size##_t)(lf_result); \ + env->cc_dst =3D (target_ulong)(int##size##_t)(lf_result); \ target_ulong temp =3D (lf_carries); \ if ((size) =3D=3D TARGET_LONG_BITS) { \ temp =3D temp & ~(LF_MASK_PD | LF_MASK_SD); \ } else { \ temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ } \ - env->lflags.auxbits =3D temp; \ + env->cc_src =3D temp; \ } =20 /* carries, result */ @@ -89,15 +89,15 @@ /* same as setting OSZAPC, but preserve CF and flip PO if the old value of= CF * did not match the high bit of lf_carries. */ #define SET_FLAGS_OSZAP_SIZE(size, lf_carries, lf_result) { \ - env->lflags.result =3D (target_ulong)(int##size##_t)(lf_result); \ + env->cc_dst =3D (target_ulong)(int##size##_t)(lf_result); \ target_ulong temp =3D (lf_carries); \ if ((size) =3D=3D TARGET_LONG_BITS) { \ temp =3D (temp & ~(LF_MASK_PD | LF_MASK_SD)); \ } else { \ temp =3D (temp & LF_MASK_AF) | (temp << (TARGET_LONG_BITS - (size)= )); \ } \ - target_ulong cf_changed =3D ((target_long)(env->lflags.auxbits ^ temp)= ) < 0; \ - env->lflags.auxbits =3D temp ^ (cf_changed * (LF_MASK_PO | LF_MASK_CF)= ); \ + target_ulong cf_changed =3D ((target_long)(env->cc_src ^ temp)) < 0; \ + env->cc_src =3D temp ^ (cf_changed * (LF_MASK_PO | LF_MASK_CF)); \ } =20 /* carries, result */ @@ -110,9 +110,9 @@ =20 void SET_FLAGS_OxxxxC(CPUX86State *env, bool new_of, bool new_cf) { - env->lflags.auxbits &=3D ~(LF_MASK_PO | LF_MASK_CF); - env->lflags.auxbits |=3D (-(target_ulong)new_cf << LF_BIT_PO); - env->lflags.auxbits ^=3D ((target_ulong)new_of << LF_BIT_PO); + env->cc_src &=3D ~(LF_MASK_PO | LF_MASK_CF); + env->cc_src |=3D (-(target_ulong)new_cf << LF_BIT_PO); + env->cc_src ^=3D ((target_ulong)new_of << LF_BIT_PO); } =20 void SET_FLAGS_OSZAPC_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2, @@ -208,37 +208,36 @@ void SET_FLAGS_OSZAPC_LOGIC8(CPUX86State *env, uint8_= t v1, uint8_t v2, =20 static inline uint32_t get_PF(CPUX86State *env) { - uint8_t temp =3D env->lflags.result; - return ((parity8(temp) - 1) ^ env->lflags.auxbits) & CC_P; + return ((parity8(env->cc_dst) - 1) ^ env->cc_src) & CC_P; } =20 static inline uint32_t get_OF(CPUX86State *env) { - return ((env->lflags.auxbits >> (LF_BIT_CF - 11)) + CC_O / 2) & CC_O; + return ((env->cc_src >> (LF_BIT_CF - 11)) + CC_O / 2) & CC_O; } =20 bool get_CF(CPUX86State *env) { - return ((target_long)env->lflags.auxbits) < 0; + return ((target_long)env->cc_src) < 0; } =20 void set_CF(CPUX86State *env, bool val) { /* If CF changes, flip PO and CF */ target_ulong temp =3D -(target_ulong)val; - target_ulong cf_changed =3D ((target_long)(env->lflags.auxbits ^ temp)= ) < 0; - env->lflags.auxbits ^=3D cf_changed * (LF_MASK_PO | LF_MASK_CF); + target_ulong cf_changed =3D ((target_long)(env->cc_src ^ temp)) < 0; + env->cc_src ^=3D cf_changed * (LF_MASK_PO | LF_MASK_CF); } =20 static inline uint32_t get_ZF(CPUX86State *env) { - return env->lflags.result ? 0 : CC_Z; + return env->cc_dst ? 0 : CC_Z; } =20 static inline uint32_t get_SF(CPUX86State *env) { - return ((env->lflags.result >> (LF_SIGN_BIT - LF_BIT_SD)) ^ - env->lflags.auxbits) & CC_S; + return ((env->cc_dst >> (LF_SIGN_BIT - LF_BIT_SD)) ^ + env->cc_src) & CC_S; } =20 void lflags_to_rflags(CPUX86State *env) @@ -246,8 +245,8 @@ void lflags_to_rflags(CPUX86State *env) env->eflags &=3D ~(CC_C|CC_P|CC_A|CC_Z|CC_S|CC_O); /* rotate left by one to move carry-out bits into CF and AF */ env->eflags |=3D ( - (env->lflags.auxbits << 1) | - (env->lflags.auxbits >> (TARGET_LONG_BITS - 1))) & (CC_C | CC_A); + (env->cc_src << 1) | + (env->cc_src >> (TARGET_LONG_BITS - 1))) & (CC_C | CC_A); env->eflags |=3D get_SF(env); env->eflags |=3D get_PF(env); env->eflags |=3D get_ZF(env); @@ -258,17 +257,17 @@ void rflags_to_lflags(CPUX86State *env) { target_ulong cf_xor_of; =20 - env->lflags.auxbits =3D CC_P; - env->lflags.auxbits ^=3D env->eflags & (CC_S | CC_P); + env->cc_src =3D CC_P; + env->cc_src ^=3D env->eflags & (CC_S | CC_P); =20 /* rotate right by one to move CF and AF into the carry-out positions = */ - env->lflags.auxbits |=3D ( + env->cc_src |=3D ( (env->eflags >> 1) | (env->eflags << (TARGET_LONG_BITS - 1))) & (CC_C | CC_A); =20 cf_xor_of =3D (env->eflags & (CC_C | CC_O)) + (CC_O - CC_C); - env->lflags.auxbits |=3D -cf_xor_of & LF_MASK_PO; + env->cc_src |=3D -cf_xor_of & LF_MASK_PO; =20 /* Leave the low byte zero so that parity is not affected. */ - env->lflags.result =3D !(env->eflags & CC_Z) << 8; + env->cc_dst =3D !(env->eflags & CC_Z) << 8; } --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076872; cv=none; d=zohomail.com; s=zohoarc; b=A/2hqGCvLPJsq9b3/VVeKxfLfvL+C1xtanRqLuvBsTOYlkT1TrSUDicBN05Nf42IDfCy8zID6LJFm3D6Gfa/8So3i6Sj1Z9GQjLjYa8p8bhLNxU8J7U0KS6nqdlvxYlkIalU9ade1YduuxO2u9Kqp14G8QII+hKq3ovOYYvzd9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076872; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cR7VRKsHk1LFUjL/CPvD6Ba0DjnC+4MB5W2eiGKedTs=; b=nBqNxz5/TUi9HZqgFzDMdbeHWggO/9UFdCFOMrWrJhMVou1l+DefeaFeQJmN1D2D+XUTIrRbC9TiBpTBzDIXCJ6rx7XH07+9XL/d8PiBPLVkbbPPiu72C1d6jsHFYto2xec3HqLLA7KA+E8pwXP3MF26zEc+0Zb8uphxD5r9rgQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076872425722.6373818345209; Mon, 12 May 2025 12:07:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTj-0006BL-Mh; Mon, 12 May 2025 15:06:20 -0400 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 1uEYTY-0005bj-FM for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTW-0007XS-JZ for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:08 -0400 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-66-jhY53pU9M-C6_M-wa611fQ-1; Mon, 12 May 2025 15:06:04 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43d5ca7c86aso22698085e9.0 for ; Mon, 12 May 2025 12:06:04 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2d2ffsm13566379f8f.66.2025.05.12.12.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:06:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076766; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cR7VRKsHk1LFUjL/CPvD6Ba0DjnC+4MB5W2eiGKedTs=; b=Mau/saVXmfTIVCSxQL6WMp6mMfXDeeO4zl1I2xz7pTyycybuWI2wDJY40HenB0A4Q9JCh1 0pFIZThzxc9ryMR/cuSxE+dGarIkPiq8HggYXeMx4E/8JHHx6QIFUswLmnFwxv9exutTfj 1Fio4I9z3NkedFp4qeaq0130FNUklkE= X-MC-Unique: jhY53pU9M-C6_M-wa611fQ-1 X-Mimecast-MFC-AGG-ID: jhY53pU9M-C6_M-wa611fQ_1747076763 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076762; x=1747681562; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cR7VRKsHk1LFUjL/CPvD6Ba0DjnC+4MB5W2eiGKedTs=; b=AAEZTs5UjdTDI6fmmvER6cp5Gfy+2DQaPdeotDF0P1l5Fujq73DMrzpQYm2CUld1LF oFgpNmN0AhgnFT7qszNYmu0OiooHxOyWV4AqPELsPVXJKg+DbNVtGK8386wp4K24j7WP 9sYmtYI/Tg46gTWSCRjTZN44pUuvYrd/Yy9j1sFQuZ4jQJBNggPdQJAtpqWSkzno2Ma2 9eWoST34QhJZ0StCbgWaFavvUYiew4msNPf5sL7Hu+n79nU9nrc7hdJIaOIyg4DcOCOP p5zkXSfRQ/K/K6Wo2MF1Ez5LwVyVnBp5lt5mHOZ0RiG6wRnDH5yLV5IH8kP/+bYC0vcj 0SIw== X-Gm-Message-State: AOJu0YzxG3AITm6eohTzOym7Y3XBbaF1OJpJ24VgpgjEUUikl/V/FHPH O8C5QzXJEjBlH0XZHAQH+LYRsYiUX9vWOhGGD7zZ/S8pKTcNQ3+Z0sTZ/nFgcxQz58Jz9Z4E3cf gCG7Cafg8udUr2d8+5yf0KPvs2OqI0JvZ1bBfA8kAw60aDffRR7WbigO4UWc/IdXw7yFIr+hr+q ASKX2853lOCRq6/+e8QFzXfgm22Nm3DIbr6Upe X-Gm-Gg: ASbGnctAwMC5JcYVBgAbzoTf3VE0tAeWisVwxPa47qxB+PC9o/KKVWR3fB3Qoxw5uaN ooPkSzaVIKA89smBzsUBpZfCsEcVkWvn5zSAvsNfZIWENFskW1Kn9S4eOCWFut86nEVyXxYwU5h n8PE9hcmU4IikAOPc0z1BU6AGu/hkmC53QxXvwAjJuaZfWYNfAK7gln32SDfyt+vLtN05Ti4BqD BnDyvqxgx3zJVQBqBAtViROIRslyY1BilsRQME08krVGfXrmdQE2h7dof+ArAGpYx13aeK6oGYo rp9hpmEnZ/bu4zY= X-Received: by 2002:a05:6000:4205:b0:3a0:8c45:d30e with SMTP id ffacd0b85a97d-3a1f6469589mr10456954f8f.35.1747076762332; Mon, 12 May 2025 12:06:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGni/cwRNmpwKHVO8icBuN8dguPNC+hZ0jXxCUvop6UXHbGyM54Kizi0SGYRV/Up1Ejf7vloQ== X-Received: by 2002:a05:6000:4205:b0:3a0:8c45:d30e with SMTP id ffacd0b85a97d-3a1f6469589mr10456945f8f.35.1747076761850; Mon, 12 May 2025 12:06:01 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li Subject: [PULL 14/16] linux-headers: update from 6.15 + kvm/next Date: Mon, 12 May 2025 21:05:22 +0200 Message-ID: <20250512190524.179419-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076874315116600 Content-Type: text/plain; charset="utf-8" This brings in the userspace TDX API. Reviewed-by: Xiaoyao Li Signed-off-by: Paolo Bonzini --- linux-headers/asm-x86/kvm.h | 71 +++++++++++++++++++++++++++++++++++++ linux-headers/linux/kvm.h | 1 + 2 files changed, 72 insertions(+) diff --git a/linux-headers/asm-x86/kvm.h b/linux-headers/asm-x86/kvm.h index dc591fb17e5..7fb57ccb2a7 100644 --- a/linux-headers/asm-x86/kvm.h +++ b/linux-headers/asm-x86/kvm.h @@ -439,6 +439,7 @@ struct kvm_sync_regs { #define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6) #define KVM_X86_QUIRK_SLOT_ZAP_ALL (1 << 7) #define KVM_X86_QUIRK_STUFF_FEATURE_MSRS (1 << 8) +#define KVM_X86_QUIRK_IGNORE_GUEST_PAT (1 << 9) =20 #define KVM_STATE_NESTED_FORMAT_VMX 0 #define KVM_STATE_NESTED_FORMAT_SVM 1 @@ -928,4 +929,74 @@ struct kvm_hyperv_eventfd { #define KVM_X86_SNP_VM 4 #define KVM_X86_TDX_VM 5 =20 +/* Trust Domain eXtension sub-ioctl() commands. */ +enum kvm_tdx_cmd_id { + KVM_TDX_CAPABILITIES =3D 0, + KVM_TDX_INIT_VM, + KVM_TDX_INIT_VCPU, + KVM_TDX_INIT_MEM_REGION, + KVM_TDX_FINALIZE_VM, + KVM_TDX_GET_CPUID, + + KVM_TDX_CMD_NR_MAX, +}; + +struct kvm_tdx_cmd { + /* enum kvm_tdx_cmd_id */ + __u32 id; + /* flags for sub-commend. If sub-command doesn't use this, set zero. */ + __u32 flags; + /* + * data for each sub-command. An immediate or a pointer to the actual + * data in process virtual address. If sub-command doesn't use it, + * set zero. + */ + __u64 data; + /* + * Auxiliary error code. The sub-command may return TDX SEAMCALL + * status code in addition to -Exxx. + */ + __u64 hw_error; +}; + +struct kvm_tdx_capabilities { + __u64 supported_attrs; + __u64 supported_xfam; + __u64 reserved[254]; + + /* Configurable CPUID bits for userspace */ + struct kvm_cpuid2 cpuid; +}; + +struct kvm_tdx_init_vm { + __u64 attributes; + __u64 xfam; + __u64 mrconfigid[6]; /* sha384 digest */ + __u64 mrowner[6]; /* sha384 digest */ + __u64 mrownerconfig[6]; /* sha384 digest */ + + /* The total space for TD_PARAMS before the CPUIDs is 256 bytes */ + __u64 reserved[12]; + + /* + * Call KVM_TDX_INIT_VM before vcpu creation, thus before + * KVM_SET_CPUID2. + * This configuration supersedes KVM_SET_CPUID2s for VCPUs because the + * TDX module directly virtualizes those CPUIDs without VMM. The user + * space VMM, e.g. qemu, should make KVM_SET_CPUID2 consistent with + * those values. If it doesn't, KVM may have wrong idea of vCPUIDs of + * the guest, and KVM may wrongly emulate CPUIDs or MSRs that the TDX + * module doesn't virtualize. + */ + struct kvm_cpuid2 cpuid; +}; + +#define KVM_TDX_MEASURE_MEMORY_REGION _BITULL(0) + +struct kvm_tdx_init_mem_region { + __u64 source_addr; + __u64 gpa; + __u64 nr_pages; +}; + #endif /* _ASM_X86_KVM_H */ diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h index e5f3e8b5a02..99cc82a275c 100644 --- a/linux-headers/linux/kvm.h +++ b/linux-headers/linux/kvm.h @@ -369,6 +369,7 @@ struct kvm_run { #define KVM_SYSTEM_EVENT_WAKEUP 4 #define KVM_SYSTEM_EVENT_SUSPEND 5 #define KVM_SYSTEM_EVENT_SEV_TERM 6 +#define KVM_SYSTEM_EVENT_TDX_FATAL 7 __u32 type; __u32 ndata; union { --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076806; cv=none; d=zohomail.com; s=zohoarc; b=bUEZwVcro9orXWyruR5UbvD/WJYmK0LMUeJy/U3867Shh6mcjBqd5Xd8GvXGyUogwcMnbs6+n9yUu5cS55J8Ji6Iu/ge/afVdThU1De2fsNWYvFIZs+VHWe3xrQypzQxZOxMy1N+Zy6WaU3FIXDc6JiL0uOBwMmnm7ce47sr+q0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076806; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0h/gsHrUKk47zq1WT//raH3haROpL8GFhxMEDhMKQnc=; b=mn1qcAG16sLE1WG2GmeiMXMRWJcpTlEYKykgaapMqHBdbHHYyH3JTbsB7v0knsPQo9Zsg1n9x7RpDAZjmSrh3gNGbqLaDVdFlEyITUf2qAaBw0mdi2SkZkTA/RCQzyrwl9Fudw0IfGet2dopi4IuUkjMe5pHuqbvTcaywErD2BI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076806972206.84876608096158; Mon, 12 May 2025 12:06:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTn-0006M8-6u; Mon, 12 May 2025 15:06:23 -0400 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 1uEYTb-0005e9-AL for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTZ-0007Xy-JV for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:11 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-117-tC2pHSomM9GuWNSrouWwkg-1; Mon, 12 May 2025 15:06:06 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3a0ba24d233so1523963f8f.2 for ; Mon, 12 May 2025 12:06:06 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2cf43sm13426521f8f.70.2025.05.12.12.06.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:06:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076768; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0h/gsHrUKk47zq1WT//raH3haROpL8GFhxMEDhMKQnc=; b=EJm7EgU86LlTf62dpgw7k1SU9gawJKNQv4s8dlQ4bgWfAOwJkhgc2SDMnRgA6GDlTRQr7C FRcC8kHTU3TJHD6s3hE6SSm1rwkmwe3QjIn/zFSVRoIq3YJAJJZ6bRpIyIbyVkHEKzjgEa KaFSPlI3N8XyR8PUt64H2fPejaW8d24= X-MC-Unique: tC2pHSomM9GuWNSrouWwkg-1 X-Mimecast-MFC-AGG-ID: tC2pHSomM9GuWNSrouWwkg_1747076765 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076764; x=1747681564; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0h/gsHrUKk47zq1WT//raH3haROpL8GFhxMEDhMKQnc=; b=FJOiT8sM9A7lY8TIQj6Uonep6jrwYLH1YhTnGfXAbUat5eFR/OQuMP8ymlXXDZThCj ErocfhQ01Ksw6l4+yRy8Y5et3xCX7VdreXRcvzvMBMUs/f7WXUO4Vyj+UgdL3NdJbE0o KMzTwdSFgFa4vpm+TbzYMsLDCrmdr47UQOW3EqETS1tkvwiJty4U+eMKVYCEvck2htLh UqF4Ma0+tCG3UlmkYcalpaP4oAPgxNhEH67b4AThJnH7gS92yRDqimwte3YnPBXox960 5hemiRJAifYjLj0qvWpK0+nB5EHIlINj2X2FOw51wfhS9KjEsqAG8Co3SgUG+04pWE2t CLWg== X-Gm-Message-State: AOJu0YxFOkaa5gccqHJc0ZCg4mX5Ev9TxH4+Dua2dV+xIezj1jj792jS NzZEO8evEgYihc/hk5P/dvtdHWmLuj18yTm+TNPqdV1mDZqYlZMm+1oOIXLPpA2NvwbANyKyv+e 6Zf/J/KmstBbqj9FCySD94/LP/BUmBR9rRqDxtLnpmXAcBvLOFBMKgSc6CRcibVDZ0424l4jTEk gYJiJpUFQWQON0jYG0L3IiNVdmTwmY1+j6L3pK X-Gm-Gg: ASbGncv4MsEPK+3LfgehSdB8ut4LyU/+5MT5u4AtE4YWN/Zxk2zirRi0x9XdHCNyd9h e72FOFqeg5JrCfh3duLW+aVCrN7WpLTK71zuHfEzL4dfdX1b+YkFU8IUPrkyrTjL+hxQ3obVjie Z0UIMIFSUXV7ARPTV0MynwTFkCgHsNr7p/ZKmYWD3PljNpiXflF6iWOb8EiBd/gRo0He79/c/YW oQornH2/Qy/W/r3z1bmR/l1QlfvXCgdxZR2HRjo6jflOf+NToA+7kcp4RMkPw4R9I7FCv53RRmM s8L2DYaQfjWh4k8= X-Received: by 2002:a05:6000:18a9:b0:391:2f2f:818 with SMTP id ffacd0b85a97d-3a1f64277dcmr12428765f8f.9.1747076764358; Mon, 12 May 2025 12:06:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFulrY6SKCEYcsb8AWWqOODyA/rMFRtgL66RIy569xK602uFf2vVKZLFfmeTEguGPCLnU/qnA== X-Received: by 2002:a05:6000:18a9:b0:391:2f2f:818 with SMTP id ffacd0b85a97d-3a1f64277dcmr12428745f8f.9.1747076763944; Mon, 12 May 2025 12:06:03 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zheng Huang Subject: [PULL 15/16] hw/audio/cs4231a: fix assertion error in isa_bus_get_irq Date: Mon, 12 May 2025 21:05:23 +0200 Message-ID: <20250512190524.179419-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076808494019000 Content-Type: text/plain; charset="utf-8" From: Zheng Huang This patch fixes an assertion error in isa_bus_get_irq() in /hw/isa/isa-bus.c by adding a constraint to the irq property. Patch v1 misused ISA_NUM_IRQS, pls ignore that. Signed-off-by: Zheng Huang Link: https://lore.kernel.org/r/6d228069-e38f-4c46-813f-edcccc5c47e4@gmail.= com Signed-off-by: Paolo Bonzini --- hw/audio/cs4231a.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/audio/cs4231a.c b/hw/audio/cs4231a.c index 06b44da8690..eb9a45805b7 100644 --- a/hw/audio/cs4231a.c +++ b/hw/audio/cs4231a.c @@ -682,6 +682,10 @@ static void cs4231a_realizefn (DeviceState *dev, Error= **errp) return; } =20 + if (s->irq >=3D ISA_NUM_IRQS) { + error_setg(errp, "Invalid IRQ %d (max %d)", s->irq, ISA_NUM_IRQS -= 1); + return; + } s->pic =3D isa_bus_get_irq(bus, s->irq); k =3D ISADMA_GET_CLASS(s->isa_dma); k->register_channel(s->isa_dma, s->dma, cs_dma_read, s); --=20 2.49.0 From nobody Sat Nov 15 20:52:52 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1747076858; cv=none; d=zohomail.com; s=zohoarc; b=IQByus9aJIT7mtNzArXl6SMQl0ed4JvvV6gKdSOnamy/cKR24OXpDqVrJMg2rPofSL3LgnGR8yLqJx8V1vure+D1NqdjcnAYhDGfe9Kxpi3N9nJVE2KsNIWWiXMRTFkZKxUZoe9DjlRJ7GfI+LLj8IjiN+sq77yhfpIT9wUtxY4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1747076858; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=baUoSc/kcICrDzWC2euzR8VyUVJ2vhHKTO2IbuR51/s=; b=c9nh1MkcLSA7XF1B2LHMLhklT/TMWcg/bnTqwg50cZEMidzwlHoyKEAJ5Ykc6qaFbNgIK/kFFjMUfTahca5+2FHyZJUFKEZOEPqTU0yzim8LMj+f0ZEUaugEvcUf0Goy0D/il3kO3oL5xX6NgbJKDdOaie2weAxODjG8P+klSzE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1747076858095323.4717588114207; Mon, 12 May 2025 12:07:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEYTq-0006bG-1x; Mon, 12 May 2025 15:06:26 -0400 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 1uEYTn-0006Mb-7B for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEYTl-0007Yw-H3 for qemu-devel@nongnu.org; Mon, 12 May 2025 15:06:22 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-14-qRqWN6TNMS2G09mKyH6kUw-1; Mon, 12 May 2025 15:06:19 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3a1f9ddf04bso1843542f8f.3 for ; Mon, 12 May 2025 12:06:19 -0700 (PDT) Received: from [192.168.122.1] ([151.95.45.141]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-442d6bf96bfsm135718365e9.6.2025.05.12.12.06.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 12:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1747076781; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=baUoSc/kcICrDzWC2euzR8VyUVJ2vhHKTO2IbuR51/s=; b=DoB2Fw6tWpm8qKrqCz28v0Dx/0lwfX8T9SlnZza4F/idNDN+6yYCvWaTZ6AKQHhaNev2if Uv/WDu9HUF0vd60MJoGSUM/V0OOXALMdxmnqchegPNjky03AX+VnG1U98kxxM1mFN20XdN qjQ9K+QmJMwvxPWxpHFhUVCgTr/Da3s= X-MC-Unique: qRqWN6TNMS2G09mKyH6kUw-1 X-Mimecast-MFC-AGG-ID: qRqWN6TNMS2G09mKyH6kUw_1747076778 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747076778; x=1747681578; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=baUoSc/kcICrDzWC2euzR8VyUVJ2vhHKTO2IbuR51/s=; b=J43JKZEjHTJKNyNSQsfPVyPWIB/B1OwglM3p4VAFmIe4kMl768eF6TFE/W7kUAYFbt XN4fbXYrO/0lO5gcUM/9mf2Wztd7suVok/UvbrAfZF3b1tXXh1XDX/O2Ysa5gAdgCm0F Z8Dxtqog8OK4Bdegx8EhUpxRJ1+6hw5Za5M71tvR2/MlJ4gscveWeJWVQzaVVa7vIrQf LEf1TSV5AV0PZpQn8Y/rTxuwi8vFwojWbPL8AlWbU1obZaSdNkYXfXn/nqfw6TNIcz1T 7JIJPSdOjApwI2k9H9H5S098kFv+jrIyuC44cwLChZtIrdK/4lc0JRBfAQvhxn2xd7ok sQjA== X-Gm-Message-State: AOJu0YyZYKJb3RairaUng7odmX+6HTvoGTo4qH3vcc40XHQBUOW0coQU pjFfnC6RKroqvCNCfnVikSXfII4f90zT4xkC0yLGE3F9gxr5xv4qT8kaa8FKWeLxEaIUi9vFDeU VB4xNqFaEWZ6Rc9HO/ZIgTSoOe0/zEIrNLyTpvQaP6jFSYaI7fA9z3g/q5eUwI9/N8EK645fSvy elFwttgVExfthyJOhIXzduISGONC/gb2zVl1A/ X-Gm-Gg: ASbGncuKKsAKVAk8Ysh0lWEToM6YhHql289SVv0FnhcWB/mQKd7vrHEHZtWJMlsRHYq 0C0bYayOhu+J9cXwisiWd3NqwghnP9zWZxo0vhucoQIGDbR1b1DqgfsJ8vOOtzZw/Gb1nSooNo6 4ZcliIdZ0nOdsX2pFy+6YZpW6V5G+6TIZxGJBnjvc+28AGQXfiWfbCqDBu/851Ae+gTx5FWAh9s act+PzuTyv/Xtje8JpssWns6KjUq0ubAmjN7QES3i2m+mDFJ+y1QTAKVzPduoSinVEZEKJgZIb7 nX51qX99jxMGpX0= X-Received: by 2002:a5d:64c3:0:b0:3a0:b807:7426 with SMTP id ffacd0b85a97d-3a1f64ac686mr12218720f8f.52.1747076777783; Mon, 12 May 2025 12:06:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEo0HVKPDzY13pgpgy5EhEg6k3QqCZBYRLyeYxNFU0EFuuu43EHOBXT5lCY4klSOM+J5VS3Jg== X-Received: by 2002:a05:600c:cca:b0:43c:f597:d582 with SMTP id 5b1f17b1804b1-442d6cfa8d8mr107304095e9.1.1747076766603; Mon, 12 May 2025 12:06:06 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Pawan Gupta Subject: [PULL 16/16] target/i386: Make ITS_NO available to guests Date: Mon, 12 May 2025 21:05:24 +0200 Message-ID: <20250512190524.179419-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250512190524.179419-1-pbonzini@redhat.com> References: <20250512190524.179419-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: pass client-ip=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.551, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1747076860213116600 Content-Type: text/plain; charset="utf-8" From: Pawan Gupta When a system is not affected by Indirect Target Selection (ITS) vulnerability, VMMs set ITS_NO bit in MSR IA32_ARCH_CAPABILITIES to let the guest know that it is not affected. Make it available to guests. Signed-off-by: Pawan Gupta Link: https://lore.kernel.org/r/8c1797e488b42650f62d816f25c58726eb522fad.17= 45946029.git.pawan.kumar.gupta@linux.intel.com Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1656de3dcca..ec908d7d360 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -1383,6 +1383,14 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] =3D= { "bhi-no", NULL, NULL, NULL, "pbrsb-no", NULL, "gds-no", "rfds-no", "rfds-clear", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, + NULL, NULL, "its-no", NULL, }, .msr =3D { .index =3D MSR_IA32_ARCH_CAPABILITIES, --=20 2.49.0