From nobody Sun Sep 28 16:32:30 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=1757751428; cv=none; d=zohomail.com; s=zohoarc; b=I8PA1MDNOl9Rhvwqn2JL6LXpKtM8BLHzuTtDsCzbAlC5ZWKGxtkrATJTlhJ0bSaM1H4zTLqUVyMoQxRq/OTbwZcCNZWpWXFu3v+7B3LUNTQJBoH2jSdYI4sEctkdla/U5h/dzj5XNx1nj89jWC/ATXxbTFryljNIztVqvFXomKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751428; 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=xDMh8Tj9XNE2pbl7SQeVp29Pr5x/uZR6F1csyzVp1gE=; b=VncuSgQ9cMseXeshNxnDpfG2RpTtQg0GG9qUx/DS8q9qmAWd1NsJ7M2jMpYxRVNmcuni9Bq+rTRvkDCjIaUlUgmKAfoRHxQPsvl2K0zMsXT9S2YNetHftAoHeWumr9rgvSiY42TErZgo5yBfq9oMokPvmhwDlbq6XGEnJvfhOF8= 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 1757751428611636.7410284781782; Sat, 13 Sep 2025 01:17:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKZ-0005dk-En; Sat, 13 Sep 2025 04:09:59 -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 1uxLKX-0005d8-BA for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09: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 1uxLKV-0004ZN-04 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09:57 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-375-Bu8sHLKWNHKhbSc-EsrPZA-1; Sat, 13 Sep 2025 04:09:49 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45b99c18484so9751265e9.1 for ; Sat, 13 Sep 2025 01:09:49 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45f29174de1sm4544635e9.2.2025.09.13.01.09.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757750991; 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=xDMh8Tj9XNE2pbl7SQeVp29Pr5x/uZR6F1csyzVp1gE=; b=aInHm+MKFbQvHJBMzEvj7uTY/4Pb3el4G6iP4CqzUpmAxKXXeDJSZoBYcDgzJY53qp+Y15 +QOEq/P5b2dFGTCunmrsNkutskvFEF74NKMtl6+lNDlV1W3qBQn4DwoSK1hmwtV77xKiwe 0OXGB86adoptdheIumUB1R5vAgjAIAw= X-MC-Unique: Bu8sHLKWNHKhbSc-EsrPZA-1 X-Mimecast-MFC-AGG-ID: Bu8sHLKWNHKhbSc-EsrPZA_1757750988 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757750987; x=1758355787; 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=xDMh8Tj9XNE2pbl7SQeVp29Pr5x/uZR6F1csyzVp1gE=; b=Vjz49h2ihx7o0mBetCU1tWV1MDorSHd0sTdPZqK10W9o8TPyzBONp9mM6jCR3aDF5k CvXjpmZ5x9CujJTxLrOCXI9/QJ9l+372YeZnzsH54YrTumCNazHud/xfYgxX2wFdzAA9 PZsXxAQVPdCr68VTUcFEfMeekScJreO1Lhnbc+dXPaYjJ/yNTf20JvwWSREEIS/C3LTB clHCKT7VYi2XfDC48DRIZH9TeK8pPl/M8PZedPsPHoYzo4x1EQkXIwj9rjtYBYSg45Hg Uhv3FBASx83012PKG6bgBy3SarSUYKWg3MxJBAlSaEs4mzqu1z5BiKSSozJaMIe4aLxA /WDg== X-Gm-Message-State: AOJu0YyEn5k00dM5GpSUY0wXXLgOn07AhZ0LZF1MeJJipCk40I+XYVaI FMPqWbc1aE3g5t07XBwOMD8LHeAXxrucMZLskCP6ir6SO9N+QY4bdU+gV2kWMxTaj56Jfm8LAke CgnxJE9orTjsR2MMUCYH6GkUH61mTj8omf4fLrN7WruhTEtiNdUGWJvOPUYQlK4bSD0VBG/nwlb nhEyL2JmHfdBwoM9ejSf2OIe1Kis5cAtT/V4TfRebb X-Gm-Gg: ASbGncvkdz2ng2RATu+rc1Zp2vsxqoUBQAcUHtmi/afGnyEW8lIf2hgFOk+8nB6EyBc aSNtU35VA+g4i1zMStRGDGfUE6/NRQJWnxTaS3xQB8GYADLF7lCy7ojlvyRuny/enIF1EtyQKYJ yVG5kdI18ChbcKMbDeouBJ2vFCAjJ+aB7HVnFKbkH5POz3vVkGcspWa6dTtQd6C00mBjWGTpnnt vXK1b6p/bG9VHPFJLUTiI1uD0KzapGFtbV+z7xG9KT/ZX9fX3KkJ/5aolE6eJgYcqU82kt+D2Gb 8Po7mfZeDovblvzquClXYTukOu25WI87di7bh+1I7H0vUr+sKx/xhcUnbExm7636EkaVVjBAyFA +xRnV/9uLvde9YY7vzGP5JXP2JEuViaxY76JYXZDE1P0= X-Received: by 2002:a05:600c:22d4:b0:450:6b55:cf91 with SMTP id 5b1f17b1804b1-45f211cb52amr49034425e9.6.1757750986877; Sat, 13 Sep 2025 01:09:46 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHS+LsunS4F36q9tGReOz9TIZeDxRUWf1wNYpLz8toQ4yhohQnwKxj4ZOtd2abtECfioruTbA== X-Received: by 2002:a05:600c:22d4:b0:450:6b55:cf91 with SMTP id 5b1f17b1804b1-45f211cb52amr49034145e9.6.1757750986409; Sat, 13 Sep 2025 01:09:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , Richard Henderson Subject: [PULL 01/61] target/ppc: limit cpu_interrupt_exittb to system emulation Date: Sat, 13 Sep 2025 10:08:42 +0200 Message-ID: <20250913080943.11710-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751430197116600 Content-Type: text/plain; charset="utf-8" It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-ppc* binaries. Reviewed-by: Igor Mammedov Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/ppc/helper_regs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 7e5726871e5..5f217397490 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -274,6 +274,7 @@ TCGTBCPUState ppc_get_tb_cpu_state(CPUState *cs) return (TCGTBCPUState){ .pc =3D env->nip, .flags =3D hflags_current }; } =20 +#ifndef CONFIG_USER_ONLY void cpu_interrupt_exittb(CPUState *cs) { /* @@ -285,6 +286,7 @@ void cpu_interrupt_exittb(CPUState *cs) cpu_interrupt(cs, CPU_INTERRUPT_EXITTB); } } +#endif =20 int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751587; cv=none; d=zohomail.com; s=zohoarc; b=diQMXhPsZtIjZLJqnmzxWR47JJE+3HRl1ZmgS4Dcm/iLhfAmn1026m7sbvd5Wzlo2VRGCoe01fsRHI9Twub5xQjHpWlBgl3/mOq+FH83N3J6/hIhTUNDNytP8USGjZOetIxTnU5eXH3R6iap4zsH8SBP1JU/Np2LFgU738QVcSk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751587; 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=7F7JtBib3HtIMCET12RYVWnFXL3A+/WcjU3+rd9Ob6M=; b=ODpzyRWja48BYUnQVQQi+evy9c9U3Q6QWJsAmmdzmM/sUXzV/X2oKCqs7EX6SdgIJ5qbbIooIo62hjo9xP4uetKwCQCJkmfLuPxhPvg60xKx6NT3F8uMwjhtRHWAWkOxOPNd/WCRklw5ip0sKWq2ph32AiWDUxtUOeg5ReQgoRg= 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 1757751587063369.6903595190487; Sat, 13 Sep 2025 01:19:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKZ-0005dh-3e; Sat, 13 Sep 2025 04:09:59 -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 1uxLKX-0005d7-7x for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09: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 1uxLKV-0004Zq-0I for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09:56 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-461-hQdZRjUaN2u4p49ij2XVEA-1; Sat, 13 Sep 2025 04:09:52 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45dcfc6558cso20047995e9.1 for ; Sat, 13 Sep 2025 01:09:52 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e859a278c1sm2067283f8f.24.2025.09.13.01.09.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757750993; 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=7F7JtBib3HtIMCET12RYVWnFXL3A+/WcjU3+rd9Ob6M=; b=YEzFEhHbZisysNn0WG41PlslZoSPVPP4XJZC9NAot0EeFkmp/Fu6dmMW0zqZ5rmjWgVJ0G sVrggz+Ub36kLt5tU8Mj70TQHDMNkWcxmivudlm16ltvL0MHkaGi4FUn0Ir8F9CvRd5r2l m36ygXRufE33Ilu9GdCuowU9LA7AjsY= X-MC-Unique: hQdZRjUaN2u4p49ij2XVEA-1 X-Mimecast-MFC-AGG-ID: hQdZRjUaN2u4p49ij2XVEA_1757750991 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757750990; x=1758355790; 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=7F7JtBib3HtIMCET12RYVWnFXL3A+/WcjU3+rd9Ob6M=; b=DgFwTSUUdkxYHsuJq8Ho/9fYMYZKXL8qK1XmqKKWCMwM9v9BNaxloVQiPlEXIs8JDc LGyK1vqRLN5HjYb/BGw+QlX7zatH1ElI4//qmzKLI8pZuD4NPRok0vkoAgn6IHFPZ4Ko XviyfkztpuqjHI2+NVJVw5kFcS7VeXQf7SysRNAhuIODyjqrTEfLQveC56GNQT2DnS5L cMsI6ANHsDqchRlM31vinFeodE2xhVDqRuV3VLjjSr9nNE2UFAni/YjJa1cppN5qBJbo 6wjSEPkeQLzd0l93hdpGLIIGu8PEYCnpzWMTfY9xcZ7GPljAA+WqiWqMLNzhsVLhku+/ SL7g== X-Gm-Message-State: AOJu0YxC11/iVuvIV87cgTIqGBkC1oCAu82q7QIqqcdrEeESGxdmS981 qyoLl58Ywt7FL0Cll/Mxn1woa1OXqBHH4/bhEgtzRMH1gclTYyXwItxdGYr+Xr7JCOvM0xDyPDM eBn9vmQixty64Ydpm6xEXzAVyWKBdxujmvKFtKt0TczFWLHbNbLRnBAvHxdxYRcx/tes5YQwLCp 8dFRnQQogdy77IT+u1Qil1satKsCr8fPrmG1UibZog X-Gm-Gg: ASbGnctl/dE9VEgVobkA2yTTVuw7r/QqqcuywJvj0h8WFADWYTHu8xM/Fx/jtiLH3ii 3ljuGq4ZiqoHOYYUVZ+m0+GWFPHGj/524vbGobsTiG198MFjLjgpMVAgKurEt8v6Ru3LUamiU8l JK7bh8yYRpXCEfb3JF/sZ5QXYKvvUw3DRSRjNJLT6zbBUY3ijtKnaU32fPdt3eSDzxfhrg5MRJK 2ZCHLZEXXFze7bU5qM4Ns8ssUVzBkhJYez9T0WRyF4xUHZnsLqmkyHDm1JL0Efib3RH15cYzQ3N duxFCfma/bDBImu2Xi6xHNX3zXw9CLA+2SGGEHgn1cXONuhYdvPvwZs15XvZiEEnl9cS1GJz0xG OdwJH3ZGgh+E6USNeaSgcXk82akWzK9LqkUv471R1nWM= X-Received: by 2002:a05:600c:4ed1:b0:45f:280d:15ea with SMTP id 5b1f17b1804b1-45f280d1cc8mr9541235e9.26.1757750990134; Sat, 13 Sep 2025 01:09:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEC11Zoxy0Fa2GZwYApBFBrCf1/4pBkVMrVKI8bW9Ly3tyor9J8hlM5OA4Z9wWy5jhPFDtyLA== X-Received: by 2002:a05:600c:4ed1:b0:45f:280d:15ea with SMTP id 5b1f17b1804b1-45f280d1cc8mr9540885e9.26.1757750989674; Sat, 13 Sep 2025 01:09:49 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 02/61] target/sparc: limit cpu_check_irqs to system emulation Date: Sat, 13 Sep 2025 10:08:43 +0200 Message-ID: <20250913080943.11710-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751587926116600 It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-sparc* binaries. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/sparc/int32_helper.c | 2 ++ target/sparc/int64_helper.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/sparc/int32_helper.c b/target/sparc/int32_helper.c index 39db4ffa70a..fdcaa0a578b 100644 --- a/target/sparc/int32_helper.c +++ b/target/sparc/int32_helper.c @@ -65,6 +65,7 @@ static const char *excp_name_str(int32_t exception_index) return excp_names[exception_index]; } =20 +#if !defined(CONFIG_USER_ONLY) void cpu_check_irqs(CPUSPARCState *env) { CPUState *cs; @@ -96,6 +97,7 @@ void cpu_check_irqs(CPUSPARCState *env) cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } } +#endif =20 void sparc_cpu_do_interrupt(CPUState *cs) { diff --git a/target/sparc/int64_helper.c b/target/sparc/int64_helper.c index 49e4e51c6dc..23adda4cad7 100644 --- a/target/sparc/int64_helper.c +++ b/target/sparc/int64_helper.c @@ -62,6 +62,7 @@ static const char * const excp_names[0x80] =3D { }; #endif =20 +#if !defined(CONFIG_USER_ONLY) void cpu_check_irqs(CPUSPARCState *env) { CPUState *cs; @@ -127,6 +128,7 @@ void cpu_check_irqs(CPUSPARCState *env) cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } } +#endif =20 void sparc_cpu_do_interrupt(CPUState *cs) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751079; cv=none; d=zohomail.com; s=zohoarc; b=hwNFsg+aJ7QQwTBPCojYczs+Ja5vQsrmN5XwjYt6vDLy9K661C9rExdChg5xE2wkYX4DIqfwA4WMucXUXsA6+TWI2TvYaO7NJp/jBaAqwWCzv7mbkSxF/xleWlWjS0qkc/ezUyrHBBySYCLNzNl0cMhZeab/iOz6FecwJIkaPlw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751079; 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=W3FQSNcvluKEhgLR2MUjySlRLq+bsJkp7JvA9EI2Wgo=; b=F+uQmp5srCckXV7Hb/9MTPq6rHQhFiRmNnsfPD4JSpKEZ2d5jUy3VZJRVojWwwR/QTx/48Wc/8ZnbYh/odi9g60M32p6I8mrEi8TKOrfqAQEEHk5T63gYWhAXLfv3ksTsF0O0Z2V8xjaZ8Pb0HtIKxHmpx0hpqUdGyNJ2i6ACIw= 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 1757751079111139.53084899665214; Sat, 13 Sep 2025 01:11:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKb-0005eM-EF; Sat, 13 Sep 2025 04:10:01 -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 1uxLKY-0005dl-Tk for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09:59 -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 1uxLKX-0004aS-9s for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:09:58 -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-500-aDbVHittOVu2GW_oBFtIYQ-1; Sat, 13 Sep 2025 04:09:54 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e61deaf253so1679723f8f.1 for ; Sat, 13 Sep 2025 01:09:54 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0187f0a7sm51624775e9.3.2025.09.13.01.09.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757750996; 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=W3FQSNcvluKEhgLR2MUjySlRLq+bsJkp7JvA9EI2Wgo=; b=eE62OVQM8Yo3CBY4+2WX00BJdOh339jury3TBQFALfX0RZPsq8wlSVJlz+8QDLUFxtsV2X f0CXrE9k2LDtkLBnEn8q6DUuo5g2yzaisyKF0ql0AncSpCD2iwpg7H5cNNK5gwJgHYs2NZ PEyjkVL3vgwOK6HjhuD/LZgPOTZb+Uk= X-MC-Unique: aDbVHittOVu2GW_oBFtIYQ-1 X-Mimecast-MFC-AGG-ID: aDbVHittOVu2GW_oBFtIYQ_1757750993 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757750992; x=1758355792; 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=W3FQSNcvluKEhgLR2MUjySlRLq+bsJkp7JvA9EI2Wgo=; b=EInxRhdvQfDyDQxBw0FOtfzH2bThByPDB15neZLoV06WxAqkdsbQjTd6602ROpYQjX ZI9MtGRC1T4dz59Cqfd+LHx6LXKhO8rptfJHwOzUx4NOEk7D2BXCtQWzJ5NU7Bm+gPgi tJwnLCd9PAEpn8pe/vtSJtXa+mwRRMYte2yKM0A6Voof1vUZo56nzjqkEJ407MrxEAnx FIHPdIOzcWZ3DHMgNDHPqACoKwJyi5FyqBlDJ/h/AYZ5SaUog+RN5qZebLZ4QywJe9/V QnGgflnlGjxlIYlbR9ZZS2ENvUJTUuDmDwkCdm26RF8l4VBbx1hTLPD155mcoJxFFOTE iwdw== X-Gm-Message-State: AOJu0YzQLbdK9mhcIpkCaDGgBV4DBPVcB7XuEJcILBIGjJme15nzOZOM YxQV24PhLN6uIGgYWmhcijjOsaKYcLAgMm7gzQUA/o6koxC521CpcqGyhLaTUGf6lOOr8Ziw5FP 1YxFxKLSgJZ/c/d3eYZTafu6swxZ21NeiU9LSD17l8uNvFhTfQeShBxbufn7ZREzkP/D2aIcQrx 0jAZeQx9Vqj2Khc1lI/DUsmOT2TjWy/SHbEWUfmPC0 X-Gm-Gg: ASbGncspYotinz+aM24+UUGJ2ZKFAU49NMFiBHoGQH2otX4TKTTCSVfPulUEJjlZXZj GUyxcm5HrqecyJ4TO0Uu2L0Rg2HLigvotj3kkgPr97yfgzXaOoY7LDbgXfgaKOP6JSKEpy3C4Q4 TSgu8SJDTamZ9qdxT+bPPOgFJiAte9H5WWLxSt3ZeWioF1SVnX+LrQNOUBxkjXDQEaNs1Jtd2+g FH6q4p4m+PG+eUYEGtCje6In9NEwdJz+2enWZW+0bFuIW4uXFSB7mr68YIc9R5GS7TmGVUCPVi7 MrlJBRYFnEZcQEYNTidrm9KmOx0lC/k6U9zD+HAULpdKgcFBE3mkwwkHzv1WBnrMTPww7oI6Xj/ JuTNZbDsBFe6JZPsG36KDwY8Uo07u2TwTM7HzQYpC2OA= X-Received: by 2002:a05:6000:2dc9:b0:3e7:63b0:bf3a with SMTP id ffacd0b85a97d-3e7659c4bd5mr5226726f8f.22.1757750992518; Sat, 13 Sep 2025 01:09:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGOrMsYxce00FWS810mn+9CrTDxSmqK2caK+bFHq1pDk2ZjdcVfKQ05qesbvFHUn/5rMaZvkw== X-Received: by 2002:a05:6000:2dc9:b0:3e7:63b0:bf3a with SMTP id ffacd0b85a97d-3e7659c4bd5mr5226693f8f.22.1757750992048; Sat, 13 Sep 2025 01:09:52 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 03/61] target/i386: limit a20 to system emulation Date: Sat, 13 Sep 2025 10:08:44 +0200 Message-ID: <20250913080943.11710-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751080120116600 It is not used by user-mode emulation and is the only caller of cpu_interrupt() in qemu-i386 and qemu-x86_64. Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/i386/helper.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/helper.c b/target/i386/helper.c index e0aaed3c4c4..651041ccfa6 100644 --- a/target/i386/helper.c +++ b/target/i386/helper.c @@ -110,6 +110,7 @@ int cpu_x86_support_mca_broadcast(CPUX86State *env) /* x86 mmu */ /* XXX: add PGE support */ =20 +#ifndef CONFIG_USER_ONLY void x86_cpu_set_a20(X86CPU *cpu, int a20_state) { CPUX86State *env =3D &cpu->env; @@ -129,6 +130,7 @@ void x86_cpu_set_a20(X86CPU *cpu, int a20_state) env->a20_mask =3D ~(1 << 20) | (a20_state << 20); } } +#endif =20 void cpu_x86_update_cr0(CPUX86State *env, uint32_t new_cr0) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751384; cv=none; d=zohomail.com; s=zohoarc; b=RNEaFzUqXQcBJB7+9rR2ToT3k5WNfRqyDGjJ3UFSfbF85OdClur/1/v7txhBp8DGXjAGUQ+hpXxMmWMT/mCfQZxsuCEf+eD1sz8CfZumB6iHhG0XWhr9uU7ylvA+zKh1lVGfV8WmPLumolhucYXNCp0LJhoMBDE0tcpVPDKuv0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751384; 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=WFAxEBE2vTBq9sN8WpMlUM9AjgGajtnYOUlEqhXuNQY=; b=NfKf2e/W9KZ+nNoCj8msLWU63LGzvYtarU1hSAviMG0ywfHoHLQjiCMFxkxCARZI5BWjUMdbcuexpUJG2QgrMg+qP12A9uIEomZa6yqUbmhK2ESoj+YZm7NGwFDFZu4vL88I7c1C0JSmMvrtUos0qm7ZjMEfiuRZCxzzGkqIoc0= 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 1757751384559508.07250799959047; Sat, 13 Sep 2025 01:16:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKq-0005kB-6v; Sat, 13 Sep 2025 04:10:16 -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 1uxLKe-0005fy-Qb for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:05 -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 1uxLKb-0004cD-Aa for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:04 -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-213-w3esk6kENx6ulIAHKgrOuQ-1; Sat, 13 Sep 2025 04:09:58 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e403b84456so1775224f8f.0 for ; Sat, 13 Sep 2025 01:09:57 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0185be34sm51397415e9.4.2025.09.13.01.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751000; 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=WFAxEBE2vTBq9sN8WpMlUM9AjgGajtnYOUlEqhXuNQY=; b=NxaUdswpbs8ch4oDpsgqNSsSM+ijJ00HNd14wIppLtSFkQoLrhJ0XHf/cIvxLQcZ0Jex42 ma0XvzaLASrvx3eGrKd9M5bvRr7nlgyrK/PiaaE2O8ZMg0MTJigYLxUofG49ijCJc0xF1O pUvt/7Uq+Xd7TW8EBUo/KVqoaXXGlaA= X-MC-Unique: w3esk6kENx6ulIAHKgrOuQ-1 X-Mimecast-MFC-AGG-ID: w3esk6kENx6ulIAHKgrOuQ_1757750997 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757750996; x=1758355796; 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=WFAxEBE2vTBq9sN8WpMlUM9AjgGajtnYOUlEqhXuNQY=; b=UuOO9Vv5v0xuwCb1++sNVi1Q5U6bcBFth3CCwUeO22xfnmNheEA7We8DSo4XMQZI11 pfXBDeynd3KJFPGUSJySdKTVnQ2ms28x+Cx+eNcYO7o6KaX7WnBMLYmv7z7j0EDZzZW3 vEX8tIIp85TS6Y4LotsybRg9d4FIEA+SH5wsqhyJqwbsTGEX47kKrXwTwxBWoNTNMRTy gZKOMG5mdX799bVHqoo6/1AuSBtJI0/LKcKgiqVVxrsmxFLHHB84NGjxaxv4/taz+080 07o77UAYMqZY8qAQeqjya92t7pmt75v3asX9UI2cckmXW7jx+HQXzGZGW0qhjNADtGC2 0SKw== X-Gm-Message-State: AOJu0YyhpuvBZErvW4DZpqXIKoem9oz97FLYptTW2vaEyCboU+/NJt2i mnTkKqusOsS11Gx2ADIBOeY/hYWT3HTmJjWTP6iIursYL7iFg0psPmp1wkxh00EuLbHIvGtXdbL +p0an7OnnUMSScXwo7ktKom+IF43zb8EkBjM7KyXkj0xX6UccMLGl6tp72RNE0/lZF7S/X2Wk6K wYLZcfy6gKzgp54UZq+ap4Gp6eYiQ62WCp2DUJjDJe X-Gm-Gg: ASbGnctn8CjxVbh88WJCzczJndAHaoHeHZjUY53Lhb5aSmJFJhrzxgOpFnJLLQKJlve EtuMh5mvdBxT7gcNsNrjiFkw5HT8mbBxe+Nv5sNog963GbykSi7TMbCiM56aNiDNEReZ8TXdvFR uFk6AyV6V7MfdIcSy6vf6gQv3ef6kpk23rEYSEYDQk4v08DgMyYjANYZitZpSjDIdrrhm91ErOI po72CxEPImkOaLZ1pZss2yEiC4SnrBqpr3rf11ERvadqOp0bkPIRbKoKMSAaWNP4WuKO5aYmcCP 2Wmr6Mv7eNhXZjQYFJsltfBQKfF4MFt2XUveXug3cj1RPKCSHY/roGkM4DgBM9eZ2O0h/J9OdN9 tjyrDPVHyT/hi3gSA+BOFBQHZnxPUPEWdiPxUyT/Lpew= X-Received: by 2002:a5d:5d01:0:b0:3e1:734b:5393 with SMTP id ffacd0b85a97d-3e7657b6a36mr5178038f8f.28.1757750995380; Sat, 13 Sep 2025 01:09:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IELbxGZX2O+qlxWK/wYbmzsQSExJ5UqgmiFM71v2LXvtfHXAEZykbyFVDH+JE/RleobRrZkVg== X-Received: by 2002:a5d:5d01:0:b0:3e1:734b:5393 with SMTP id ffacd0b85a97d-3e7657b6a36mr5177982f8f.28.1757750994552; Sat, 13 Sep 2025 01:09:54 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PULL 04/61] target-arm: remove uses of cpu_interrupt() for user-mode emulation Date: Sat, 13 Sep 2025 10:08:45 +0200 Message-ID: <20250913080943.11710-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751385820116600 Content-Type: text/plain; charset="utf-8" Arm leaves around some functions that use cpu_interrupt(), even for user-mode emulation when the code is unreachable. Pull out the system-mode implementation to a separate file, and add stubs for CONFIG_USER_ONLY. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- target/arm/internals.h | 5 + target/arm/cpu-irq.c | 381 +++++++++++++++++++++++++++++++++++++++++ target/arm/cpu.c | 370 --------------------------------------- target/arm/el2-stubs.c | 37 ++++ target/arm/helper.c | 4 + target/arm/meson.build | 2 + 6 files changed, 429 insertions(+), 370 deletions(-) create mode 100644 target/arm/cpu-irq.c create mode 100644 target/arm/el2-stubs.c diff --git a/target/arm/internals.h b/target/arm/internals.h index f5a1e75db37..f0aa26c5117 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1292,6 +1292,11 @@ static inline const char *aarch32_mode_name(uint32_t= psr) return cpu_mode_names[psr & 0xf]; } =20 +/** + * arm_cpu_exec_interrupt(): Implementation of the cpu_exec_inrerrupt hook. + */ +bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request); + /** * arm_cpu_update_virq: Update CPU_INTERRUPT_VIRQ bit in cs->interrupt_req= uest * diff --git a/target/arm/cpu-irq.c b/target/arm/cpu-irq.c new file mode 100644 index 00000000000..fe514cc93af --- /dev/null +++ b/target/arm/cpu-irq.c @@ -0,0 +1,381 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * QEMU ARM CPU - interrupt_request handling + * + * Copyright (c) 2003-2025 QEMU contributors + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "accel/tcg/cpu-ops.h" +#include "internals.h" + +#ifdef CONFIG_TCG +static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx, + unsigned int target_el, + unsigned int cur_el, bool secure, + uint64_t hcr_el2) +{ + CPUARMState *env =3D cpu_env(cs); + bool pstate_unmasked; + bool unmasked =3D false; + bool allIntMask =3D false; + + /* + * Don't take exceptions if they target a lower EL. + * This check should catch any exceptions that would not be taken + * but left pending. + */ + if (cur_el > target_el) { + return false; + } + + if (cpu_isar_feature(aa64_nmi, env_archcpu(env)) && + env->cp15.sctlr_el[target_el] & SCTLR_NMI && cur_el =3D=3D target_= el) { + allIntMask =3D env->pstate & PSTATE_ALLINT || + ((env->cp15.sctlr_el[target_el] & SCTLR_SPINTMASK) && + (env->pstate & PSTATE_SP)); + } + + switch (excp_idx) { + case EXCP_NMI: + pstate_unmasked =3D !allIntMask; + break; + + case EXCP_VINMI: + if (!(hcr_el2 & HCR_IMO) || (hcr_el2 & HCR_TGE)) { + /* VINMIs are only taken when hypervized. */ + return false; + } + return !allIntMask; + case EXCP_VFNMI: + if (!(hcr_el2 & HCR_FMO) || (hcr_el2 & HCR_TGE)) { + /* VFNMIs are only taken when hypervized. */ + return false; + } + return !allIntMask; + case EXCP_FIQ: + pstate_unmasked =3D (!(env->daif & PSTATE_F)) && (!allIntMask); + break; + + case EXCP_IRQ: + pstate_unmasked =3D (!(env->daif & PSTATE_I)) && (!allIntMask); + break; + + case EXCP_VFIQ: + if (!(hcr_el2 & HCR_FMO) || (hcr_el2 & HCR_TGE)) { + /* VFIQs are only taken when hypervized. */ + return false; + } + return !(env->daif & PSTATE_F) && (!allIntMask); + case EXCP_VIRQ: + if (!(hcr_el2 & HCR_IMO) || (hcr_el2 & HCR_TGE)) { + /* VIRQs are only taken when hypervized. */ + return false; + } + return !(env->daif & PSTATE_I) && (!allIntMask); + case EXCP_VSERR: + if (!(hcr_el2 & HCR_AMO) || (hcr_el2 & HCR_TGE)) { + /* VIRQs are only taken when hypervized. */ + return false; + } + return !(env->daif & PSTATE_A); + default: + g_assert_not_reached(); + } + + /* + * Use the target EL, current execution state and SCR/HCR settings to + * determine whether the corresponding CPSR bit is used to mask the + * interrupt. + */ + if ((target_el > cur_el) && (target_el !=3D 1)) { + /* Exceptions targeting a higher EL may not be maskable */ + if (arm_feature(env, ARM_FEATURE_AARCH64)) { + switch (target_el) { + case 2: + /* + * According to ARM DDI 0487H.a, an interrupt can be masked + * when HCR_E2H and HCR_TGE are both set regardless of the + * current Security state. Note that we need to revisit th= is + * part again once we need to support NMI. + */ + if ((hcr_el2 & (HCR_E2H | HCR_TGE)) !=3D (HCR_E2H | HCR_TG= E)) { + unmasked =3D true; + } + break; + case 3: + /* Interrupt cannot be masked when the target EL is 3 */ + unmasked =3D true; + break; + default: + g_assert_not_reached(); + } + } else { + /* + * The old 32-bit-only environment has a more complicated + * masking setup. HCR and SCR bits not only affect interrupt + * routing but also change the behaviour of masking. + */ + bool hcr, scr; + + switch (excp_idx) { + case EXCP_FIQ: + /* + * If FIQs are routed to EL3 or EL2 then there are cases w= here + * we override the CPSR.F in determining if the exception = is + * masked or not. If neither of these are set then we fall= back + * to the CPSR.F setting otherwise we further assess the s= tate + * below. + */ + hcr =3D hcr_el2 & HCR_FMO; + scr =3D (env->cp15.scr_el3 & SCR_FIQ); + + /* + * When EL3 is 32-bit, the SCR.FW bit controls whether the + * CPSR.F bit masks FIQ interrupts when taken in non-secure + * state. If SCR.FW is set then FIQs can be masked by CPSR= .F + * when non-secure but only when FIQs are only routed to E= L3. + */ + scr =3D scr && !((env->cp15.scr_el3 & SCR_FW) && !hcr); + break; + case EXCP_IRQ: + /* + * When EL3 execution state is 32-bit, if HCR.IMO is set t= hen + * we may override the CPSR.I masking when in non-secure s= tate. + * The SCR.IRQ setting has already been taken into conside= ration + * when setting the target EL, so it does not have a furth= er + * affect here. + */ + hcr =3D hcr_el2 & HCR_IMO; + scr =3D false; + break; + default: + g_assert_not_reached(); + } + + if ((scr || hcr) && !secure) { + unmasked =3D true; + } + } + } + + /* + * The PSTATE bits only mask the interrupt if we have not overridden t= he + * ability above. + */ + return unmasked || pstate_unmasked; +} + +bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request) +{ + CPUARMState *env =3D cpu_env(cs); + uint32_t cur_el =3D arm_current_el(env); + bool secure =3D arm_is_secure(env); + uint64_t hcr_el2 =3D arm_hcr_el2_eff(env); + uint32_t target_el; + uint32_t excp_idx; + + /* The prioritization of interrupts is IMPLEMENTATION DEFINED. */ + + if (cpu_isar_feature(aa64_nmi, env_archcpu(env)) && + (arm_sctlr(env, cur_el) & SCTLR_NMI)) { + if (interrupt_request & CPU_INTERRUPT_NMI) { + excp_idx =3D EXCP_NMI; + target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, se= cure); + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_VINMI) { + excp_idx =3D EXCP_VINMI; + target_el =3D 1; + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_VFNMI) { + excp_idx =3D EXCP_VFNMI; + target_el =3D 1; + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + } else { + /* + * NMI disabled: interrupts with superpriority are handled + * as if they didn't have it + */ + if (interrupt_request & CPU_INTERRUPT_NMI) { + interrupt_request |=3D CPU_INTERRUPT_HARD; + } + if (interrupt_request & CPU_INTERRUPT_VINMI) { + interrupt_request |=3D CPU_INTERRUPT_VIRQ; + } + if (interrupt_request & CPU_INTERRUPT_VFNMI) { + interrupt_request |=3D CPU_INTERRUPT_VFIQ; + } + } + + if (interrupt_request & CPU_INTERRUPT_FIQ) { + excp_idx =3D EXCP_FIQ; + target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, secure= ); + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_HARD) { + excp_idx =3D EXCP_IRQ; + target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, secure= ); + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_VIRQ) { + excp_idx =3D EXCP_VIRQ; + target_el =3D 1; + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_VFIQ) { + excp_idx =3D EXCP_VFIQ; + target_el =3D 1; + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + goto found; + } + } + if (interrupt_request & CPU_INTERRUPT_VSERR) { + excp_idx =3D EXCP_VSERR; + target_el =3D 1; + if (arm_excp_unmasked(cs, excp_idx, target_el, + cur_el, secure, hcr_el2)) { + /* Taking a virtual abort clears HCR_EL2.VSE */ + env->cp15.hcr_el2 &=3D ~HCR_VSE; + cpu_reset_interrupt(cs, CPU_INTERRUPT_VSERR); + goto found; + } + } + return false; + + found: + cs->exception_index =3D excp_idx; + env->exception.target_el =3D target_el; + cs->cc->tcg_ops->do_interrupt(cs); + return true; +} +#endif /* CONFIG_TCG */ + +void arm_cpu_update_virq(ARMCPU *cpu) +{ + /* + * Update the interrupt level for VIRQ, which is the logical OR of + * the HCR_EL2.VI bit and the input line level from the GIC. + */ + CPUARMState *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + + bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VI) && + !(arm_hcrx_el2_eff(env) & HCRX_VINMI)) || + (env->irq_line_state & CPU_INTERRUPT_VIRQ); + + if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VIRQ)) { + if (new_state) { + cpu_interrupt(cs, CPU_INTERRUPT_VIRQ); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_VIRQ); + } + } +} + +void arm_cpu_update_vfiq(ARMCPU *cpu) +{ + /* + * Update the interrupt level for VFIQ, which is the logical OR of + * the HCR_EL2.VF bit and the input line level from the GIC. + */ + CPUARMState *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + + bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VF) && + !(arm_hcrx_el2_eff(env) & HCRX_VFNMI)) || + (env->irq_line_state & CPU_INTERRUPT_VFIQ); + + if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VFIQ)) { + if (new_state) { + cpu_interrupt(cs, CPU_INTERRUPT_VFIQ); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_VFIQ); + } + } +} + +void arm_cpu_update_vinmi(ARMCPU *cpu) +{ + /* + * Update the interrupt level for VINMI, which is the logical OR of + * the HCRX_EL2.VINMI bit and the input line level from the GIC. + */ + CPUARMState *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + + bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VI) && + (arm_hcrx_el2_eff(env) & HCRX_VINMI)) || + (env->irq_line_state & CPU_INTERRUPT_VINMI); + + if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VINMI)) { + if (new_state) { + cpu_interrupt(cs, CPU_INTERRUPT_VINMI); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_VINMI); + } + } +} + +void arm_cpu_update_vfnmi(ARMCPU *cpu) +{ + /* + * Update the interrupt level for VFNMI, which is the HCRX_EL2.VFNMI b= it. + */ + CPUARMState *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + + bool new_state =3D (arm_hcr_el2_eff(env) & HCR_VF) && + (arm_hcrx_el2_eff(env) & HCRX_VFNMI); + + if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VFNMI)) { + if (new_state) { + cpu_interrupt(cs, CPU_INTERRUPT_VFNMI); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_VFNMI); + } + } +} + +void arm_cpu_update_vserr(ARMCPU *cpu) +{ + /* + * Update the interrupt level for VSERR, which is the HCR_EL2.VSE bit. + */ + CPUARMState *env =3D &cpu->env; + CPUState *cs =3D CPU(cpu); + + bool new_state =3D env->cp15.hcr_el2 & HCR_VSE; + + if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VSERR)) { + if (new_state) { + cpu_interrupt(cs, CPU_INTERRUPT_VSERR); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_VSERR); + } + } +} + diff --git a/target/arm/cpu.c b/target/arm/cpu.c index d0f6fcdfcea..633ec55a57c 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -686,376 +686,6 @@ void arm_emulate_firmware_reset(CPUState *cpustate, i= nt target_el) } =20 =20 -#if defined(CONFIG_TCG) && !defined(CONFIG_USER_ONLY) - -static inline bool arm_excp_unmasked(CPUState *cs, unsigned int excp_idx, - unsigned int target_el, - unsigned int cur_el, bool secure, - uint64_t hcr_el2) -{ - CPUARMState *env =3D cpu_env(cs); - bool pstate_unmasked; - bool unmasked =3D false; - bool allIntMask =3D false; - - /* - * Don't take exceptions if they target a lower EL. - * This check should catch any exceptions that would not be taken - * but left pending. - */ - if (cur_el > target_el) { - return false; - } - - if (cpu_isar_feature(aa64_nmi, env_archcpu(env)) && - env->cp15.sctlr_el[target_el] & SCTLR_NMI && cur_el =3D=3D target_= el) { - allIntMask =3D env->pstate & PSTATE_ALLINT || - ((env->cp15.sctlr_el[target_el] & SCTLR_SPINTMASK) && - (env->pstate & PSTATE_SP)); - } - - switch (excp_idx) { - case EXCP_NMI: - pstate_unmasked =3D !allIntMask; - break; - - case EXCP_VINMI: - if (!(hcr_el2 & HCR_IMO) || (hcr_el2 & HCR_TGE)) { - /* VINMIs are only taken when hypervized. */ - return false; - } - return !allIntMask; - case EXCP_VFNMI: - if (!(hcr_el2 & HCR_FMO) || (hcr_el2 & HCR_TGE)) { - /* VFNMIs are only taken when hypervized. */ - return false; - } - return !allIntMask; - case EXCP_FIQ: - pstate_unmasked =3D (!(env->daif & PSTATE_F)) && (!allIntMask); - break; - - case EXCP_IRQ: - pstate_unmasked =3D (!(env->daif & PSTATE_I)) && (!allIntMask); - break; - - case EXCP_VFIQ: - if (!(hcr_el2 & HCR_FMO) || (hcr_el2 & HCR_TGE)) { - /* VFIQs are only taken when hypervized. */ - return false; - } - return !(env->daif & PSTATE_F) && (!allIntMask); - case EXCP_VIRQ: - if (!(hcr_el2 & HCR_IMO) || (hcr_el2 & HCR_TGE)) { - /* VIRQs are only taken when hypervized. */ - return false; - } - return !(env->daif & PSTATE_I) && (!allIntMask); - case EXCP_VSERR: - if (!(hcr_el2 & HCR_AMO) || (hcr_el2 & HCR_TGE)) { - /* VIRQs are only taken when hypervized. */ - return false; - } - return !(env->daif & PSTATE_A); - default: - g_assert_not_reached(); - } - - /* - * Use the target EL, current execution state and SCR/HCR settings to - * determine whether the corresponding CPSR bit is used to mask the - * interrupt. - */ - if ((target_el > cur_el) && (target_el !=3D 1)) { - /* Exceptions targeting a higher EL may not be maskable */ - if (arm_feature(env, ARM_FEATURE_AARCH64)) { - switch (target_el) { - case 2: - /* - * According to ARM DDI 0487H.a, an interrupt can be masked - * when HCR_E2H and HCR_TGE are both set regardless of the - * current Security state. Note that we need to revisit th= is - * part again once we need to support NMI. - */ - if ((hcr_el2 & (HCR_E2H | HCR_TGE)) !=3D (HCR_E2H | HCR_TG= E)) { - unmasked =3D true; - } - break; - case 3: - /* Interrupt cannot be masked when the target EL is 3 */ - unmasked =3D true; - break; - default: - g_assert_not_reached(); - } - } else { - /* - * The old 32-bit-only environment has a more complicated - * masking setup. HCR and SCR bits not only affect interrupt - * routing but also change the behaviour of masking. - */ - bool hcr, scr; - - switch (excp_idx) { - case EXCP_FIQ: - /* - * If FIQs are routed to EL3 or EL2 then there are cases w= here - * we override the CPSR.F in determining if the exception = is - * masked or not. If neither of these are set then we fall= back - * to the CPSR.F setting otherwise we further assess the s= tate - * below. - */ - hcr =3D hcr_el2 & HCR_FMO; - scr =3D (env->cp15.scr_el3 & SCR_FIQ); - - /* - * When EL3 is 32-bit, the SCR.FW bit controls whether the - * CPSR.F bit masks FIQ interrupts when taken in non-secure - * state. If SCR.FW is set then FIQs can be masked by CPSR= .F - * when non-secure but only when FIQs are only routed to E= L3. - */ - scr =3D scr && !((env->cp15.scr_el3 & SCR_FW) && !hcr); - break; - case EXCP_IRQ: - /* - * When EL3 execution state is 32-bit, if HCR.IMO is set t= hen - * we may override the CPSR.I masking when in non-secure s= tate. - * The SCR.IRQ setting has already been taken into conside= ration - * when setting the target EL, so it does not have a furth= er - * affect here. - */ - hcr =3D hcr_el2 & HCR_IMO; - scr =3D false; - break; - default: - g_assert_not_reached(); - } - - if ((scr || hcr) && !secure) { - unmasked =3D true; - } - } - } - - /* - * The PSTATE bits only mask the interrupt if we have not overridden t= he - * ability above. - */ - return unmasked || pstate_unmasked; -} - -static bool arm_cpu_exec_interrupt(CPUState *cs, int interrupt_request) -{ - CPUARMState *env =3D cpu_env(cs); - uint32_t cur_el =3D arm_current_el(env); - bool secure =3D arm_is_secure(env); - uint64_t hcr_el2 =3D arm_hcr_el2_eff(env); - uint32_t target_el; - uint32_t excp_idx; - - /* The prioritization of interrupts is IMPLEMENTATION DEFINED. */ - - if (cpu_isar_feature(aa64_nmi, env_archcpu(env)) && - (arm_sctlr(env, cur_el) & SCTLR_NMI)) { - if (interrupt_request & CPU_INTERRUPT_NMI) { - excp_idx =3D EXCP_NMI; - target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, se= cure); - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_VINMI) { - excp_idx =3D EXCP_VINMI; - target_el =3D 1; - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_VFNMI) { - excp_idx =3D EXCP_VFNMI; - target_el =3D 1; - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - } else { - /* - * NMI disabled: interrupts with superpriority are handled - * as if they didn't have it - */ - if (interrupt_request & CPU_INTERRUPT_NMI) { - interrupt_request |=3D CPU_INTERRUPT_HARD; - } - if (interrupt_request & CPU_INTERRUPT_VINMI) { - interrupt_request |=3D CPU_INTERRUPT_VIRQ; - } - if (interrupt_request & CPU_INTERRUPT_VFNMI) { - interrupt_request |=3D CPU_INTERRUPT_VFIQ; - } - } - - if (interrupt_request & CPU_INTERRUPT_FIQ) { - excp_idx =3D EXCP_FIQ; - target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, secure= ); - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_HARD) { - excp_idx =3D EXCP_IRQ; - target_el =3D arm_phys_excp_target_el(cs, excp_idx, cur_el, secure= ); - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_VIRQ) { - excp_idx =3D EXCP_VIRQ; - target_el =3D 1; - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_VFIQ) { - excp_idx =3D EXCP_VFIQ; - target_el =3D 1; - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - goto found; - } - } - if (interrupt_request & CPU_INTERRUPT_VSERR) { - excp_idx =3D EXCP_VSERR; - target_el =3D 1; - if (arm_excp_unmasked(cs, excp_idx, target_el, - cur_el, secure, hcr_el2)) { - /* Taking a virtual abort clears HCR_EL2.VSE */ - env->cp15.hcr_el2 &=3D ~HCR_VSE; - cpu_reset_interrupt(cs, CPU_INTERRUPT_VSERR); - goto found; - } - } - return false; - - found: - cs->exception_index =3D excp_idx; - env->exception.target_el =3D target_el; - cs->cc->tcg_ops->do_interrupt(cs); - return true; -} - -#endif /* CONFIG_TCG && !CONFIG_USER_ONLY */ - -void arm_cpu_update_virq(ARMCPU *cpu) -{ - /* - * Update the interrupt level for VIRQ, which is the logical OR of - * the HCR_EL2.VI bit and the input line level from the GIC. - */ - CPUARMState *env =3D &cpu->env; - CPUState *cs =3D CPU(cpu); - - bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VI) && - !(arm_hcrx_el2_eff(env) & HCRX_VINMI)) || - (env->irq_line_state & CPU_INTERRUPT_VIRQ); - - if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VIRQ)) { - if (new_state) { - cpu_interrupt(cs, CPU_INTERRUPT_VIRQ); - } else { - cpu_reset_interrupt(cs, CPU_INTERRUPT_VIRQ); - } - } -} - -void arm_cpu_update_vfiq(ARMCPU *cpu) -{ - /* - * Update the interrupt level for VFIQ, which is the logical OR of - * the HCR_EL2.VF bit and the input line level from the GIC. - */ - CPUARMState *env =3D &cpu->env; - CPUState *cs =3D CPU(cpu); - - bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VF) && - !(arm_hcrx_el2_eff(env) & HCRX_VFNMI)) || - (env->irq_line_state & CPU_INTERRUPT_VFIQ); - - if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VFIQ)) { - if (new_state) { - cpu_interrupt(cs, CPU_INTERRUPT_VFIQ); - } else { - cpu_reset_interrupt(cs, CPU_INTERRUPT_VFIQ); - } - } -} - -void arm_cpu_update_vinmi(ARMCPU *cpu) -{ - /* - * Update the interrupt level for VINMI, which is the logical OR of - * the HCRX_EL2.VINMI bit and the input line level from the GIC. - */ - CPUARMState *env =3D &cpu->env; - CPUState *cs =3D CPU(cpu); - - bool new_state =3D ((arm_hcr_el2_eff(env) & HCR_VI) && - (arm_hcrx_el2_eff(env) & HCRX_VINMI)) || - (env->irq_line_state & CPU_INTERRUPT_VINMI); - - if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VINMI)) { - if (new_state) { - cpu_interrupt(cs, CPU_INTERRUPT_VINMI); - } else { - cpu_reset_interrupt(cs, CPU_INTERRUPT_VINMI); - } - } -} - -void arm_cpu_update_vfnmi(ARMCPU *cpu) -{ - /* - * Update the interrupt level for VFNMI, which is the HCRX_EL2.VFNMI b= it. - */ - CPUARMState *env =3D &cpu->env; - CPUState *cs =3D CPU(cpu); - - bool new_state =3D (arm_hcr_el2_eff(env) & HCR_VF) && - (arm_hcrx_el2_eff(env) & HCRX_VFNMI); - - if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VFNMI)) { - if (new_state) { - cpu_interrupt(cs, CPU_INTERRUPT_VFNMI); - } else { - cpu_reset_interrupt(cs, CPU_INTERRUPT_VFNMI); - } - } -} - -void arm_cpu_update_vserr(ARMCPU *cpu) -{ - /* - * Update the interrupt level for VSERR, which is the HCR_EL2.VSE bit. - */ - CPUARMState *env =3D &cpu->env; - CPUState *cs =3D CPU(cpu); - - bool new_state =3D env->cp15.hcr_el2 & HCR_VSE; - - if (new_state !=3D cpu_test_interrupt(cs, CPU_INTERRUPT_VSERR)) { - if (new_state) { - cpu_interrupt(cs, CPU_INTERRUPT_VSERR); - } else { - cpu_reset_interrupt(cs, CPU_INTERRUPT_VSERR); - } - } -} - #ifndef CONFIG_USER_ONLY static void arm_cpu_set_irq(void *opaque, int irq, int level) { diff --git a/target/arm/el2-stubs.c b/target/arm/el2-stubs.c new file mode 100644 index 00000000000..972023c337f --- /dev/null +++ b/target/arm/el2-stubs.c @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* QEMU ARM CPU - user-mode emulation stubs for EL2 interrupts + * + * These should not really be needed, but CP registers for EL2 + * are not elided by user-mode emulation and they call these + * functions. Leave them as stubs until it's cleaned up. + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "internals.h" + +void arm_cpu_update_virq(ARMCPU *cpu) +{ + g_assert_not_reached(); +} + +void arm_cpu_update_vfiq(ARMCPU *cpu) +{ + g_assert_not_reached(); +} + +void arm_cpu_update_vinmi(ARMCPU *cpu) +{ + g_assert_not_reached(); +} + +void arm_cpu_update_vfnmi(ARMCPU *cpu) +{ + g_assert_not_reached(); +} + +void arm_cpu_update_vserr(ARMCPU *cpu) +{ + g_assert_not_reached(); +} diff --git a/target/arm/helper.c b/target/arm/helper.c index 19637e7301b..fb62742d983 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2868,8 +2868,12 @@ static void omap_threadid_write(CPUARMState *env, co= nst ARMCPRegInfo *ri, static void omap_wfi_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { +#ifdef CONFIG_USER_ONLY + g_assert_not_reached(); +#else /* Wait-for-interrupt (deprecated) */ cpu_interrupt(env_cpu(env), CPU_INTERRUPT_HALT); +#endif } =20 static void omap_cachemaint_write(CPUARMState *env, const ARMCPRegInfo *ri, diff --git a/target/arm/meson.build b/target/arm/meson.build index 07d9271aa4d..914f1498fc5 100644 --- a/target/arm/meson.build +++ b/target/arm/meson.build @@ -26,6 +26,7 @@ arm_user_ss.add(files( 'debug_helper.c', 'helper.c', 'vfp_fpscr.c', + 'el2-stubs.c', )) =20 arm_common_system_ss.add(files('cpu.c')) @@ -38,6 +39,7 @@ arm_common_system_ss.add(files( 'arm-powerctl.c', 'cortex-regs.c', 'cpregs-pmu.c', + 'cpu-irq.c', 'debug_helper.c', 'helper.c', 'machine.c', --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751079; cv=none; d=zohomail.com; s=zohoarc; b=FbLgpiVLP1mhyuS5xmpER9x36lwx9kiDtIxEjtyf5hzID+ogD8hn3qnNRCvtHKiiJRsKR9/wDCqQ7+el7gYLxTerzKrpiFLzMWDcA16gUTWw6Y2hE8J1j87dLBQA0/m8lkRFA+jcrgYZl2yFwEAVtfAhTpd9jsVNeGGg7EOSomc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751079; 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=NWm914yPu/Z+1a+QMagwFJTO39uJw4aRXD1IlivLAnM=; b=ISG6gPuzEtJtEuW6OVTIh+FjHLUdEpAdLCriGE4iOjP3hx/6OTQnFXC0pcTxH7+FrUB/TJx2BbMvQz9i3DkGL3FlslbPlEc3ZSaNR+ippDI2WTSnCtow7I8KdXWnrEd19ucrTnqfjEYcFbWqZ2X1C7lAD5x6hjhTwLoOGIZODOg= 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 1757751079032384.9898161531265; Sat, 13 Sep 2025 01:11:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKf-0005g5-Nq; Sat, 13 Sep 2025 04:10:05 -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 1uxLKe-0005fn-16 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:04 -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 1uxLKc-0004cV-3l for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:03 -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-217-olBgyKM6MlCsKYtV30cC1w-1; Sat, 13 Sep 2025 04:09:59 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3dabec38299so1607349f8f.2 for ; Sat, 13 Sep 2025 01:09:59 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0372bbd3sm88554145e9.10.2025.09.13.01.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751001; 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=NWm914yPu/Z+1a+QMagwFJTO39uJw4aRXD1IlivLAnM=; b=bqYs64GPO++HxZlL8PSdIaOh249RkUgS/lnZ3yBXH2k9ySJ0EtFZ8dR/C/SECws3a/HSWO NoFK5e20D+Hi7hLntYtjEztfrPpuvOZ+K+9KFd34GPHI+IQ4k2V0l80ocI0lDNKDOB4CWG Ki3PQbgdaZc9oLiybsynM7F662aVDJo= X-MC-Unique: olBgyKM6MlCsKYtV30cC1w-1 X-Mimecast-MFC-AGG-ID: olBgyKM6MlCsKYtV30cC1w_1757750998 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757750997; x=1758355797; 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=NWm914yPu/Z+1a+QMagwFJTO39uJw4aRXD1IlivLAnM=; b=E5EUveW/7CL7OgYyrla3CCkBlbK2r8DZVJ/eedxwMsOxUtlApToQi8oVpuDSb6ADbz Q16P59+h5w7H3170IWrACu00GPHDUsR3ddJfWTjGZSd0GVO755oZQlk+FCgjO72m4DTC lB2BbDlJrNF1WVPR3dvC5zMuN8vdoHAEvCm71QkREnItok3bF3qmM63EypgbxwDRmYGH 9qPZju3q1E5Y7/iJc2WArnHK0YvEkaYhvsePkivRHcUJY/x4dCN0LaU2LVB5PkuKWLBg LJdmnzz0PV1JEdkp3fUAsHSndsyUT7gQbPUFMK5+j79JBZNQAMOzw8BTB3hZaD8YiOGb g6ug== X-Gm-Message-State: AOJu0YytyHuenjdi97DYY7X7rNiNZXL93acVLjpUOUJf9bYCX9cngVfK fZ3ISyneRTMq3Cnm9yGDufPSLKXsMTnIXhpEbrFaXeiEr3NgpR70Qv1pjlSp7hLG8ApbV5t1c2D xB5UsP9ldrDCB3ijHG1U1ebgR0aabc9QBzLc4TH3SbP/A3VCddSALda2WLdUfJgbxuwYPkp3iqC ymlR4/gwojjgdAb6bOjQlfDNPvEMCyAbksG3D2vHRu X-Gm-Gg: ASbGncue9N8VTY4aMHbCfH1qVod1mKbTZjmZyFDpEiFlvmJ6kBCztPahE+FQInm2fVe G8Mj/HljBI4pdZMu/cJCqnzcpD9lDCBg8VokQfJFL/ZmI8CrePt2PzpP5gmJBtZXStpz+W/evNL AoQwxszT7wNGb9eMSq+3USxYzWvXHZ2fFWyMJoLwK6088J97BMQ5OlSOA9akQzYLcX19TtFbrcg CEQVFy0pzk53fCtsBMfWXhx2GLi+2jcet86cUk+UoUkpAnm6fgE5mu1V4Xc8muHXebSJJ8x98Eu YQdC9LWvt4Zh7EwktZemBUr6s34Ob1PPTPilNx8I4GKJDubvS3887irYOdKMOnPK/CCtjoiFhpF qnWKlAVeQ4jLqdx88tQFyMqXnV7+S8P9y5jK84Y1wJPk= X-Received: by 2002:a05:6000:144f:b0:3de:e787:5d5e with SMTP id ffacd0b85a97d-3e765a1a385mr5087006f8f.43.1757750996883; Sat, 13 Sep 2025 01:09:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWsm8/EJ/2e70uq67lxWQjruKn8/omH62DVAGFEpbetoiKRTOCfSxK/V2G0P5RiORJABl04w== X-Received: by 2002:a05:6000:144f:b0:3de:e787:5d5e with SMTP id ffacd0b85a97d-3e765a1a385mr5086978f8f.43.1757750996478; Sat, 13 Sep 2025 01:09:56 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 05/61] user-exec: remove cpu_interrupt() stub Date: Sat, 13 Sep 2025 10:08:46 +0200 Message-ID: <20250913080943.11710-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751080136116600 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- accel/tcg/user-exec.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 748bfab04a7..66c25fba7dd 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -46,11 +46,6 @@ __thread uintptr_t helper_retaddr; =20 //#define DEBUG_SIGNAL =20 -void cpu_interrupt(CPUState *cpu, int mask) -{ - g_assert_not_reached(); -} - /* * Adjust the pc to pass to cpu_restore_state; return the memop type. */ --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751735; cv=none; d=zohomail.com; s=zohoarc; b=MKUPiBJRnbvpkkbCzOt+/J2CHFbl4mg4lAT+qJVlTX9h2QzqlHhbLw5FS/oSDMn2tITwqrj94/JDjtlJR7lKX34A1u9DyNVrQLRXjqvRZTIxLxiGPZ4gal3vmv35xk5x0LCvrt8yXkMY8Sij0JwH/mB3kByFvqRkltuxa1KXtYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751735; 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=tQF19VJadKTqyXrZHyk7Nk2a3lmDngVPUnI4hoa6BvU=; b=bBH3SmdWKk1wd0IhH658uz2oaYT2LLNDZTOF+ckraY+sffWQlaQKGylFhdWQKmgko1TRzyez2HzZT0Vlugauuoy3JX7Eg0F5G8rJQpoZTc+k+VZ7wxbr6oyq/dYU8/6hv+J263QEVg+vYatB8mFCGn12Ak7NOZg7aznFcg65ICA= 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 1757751735428683.142225238767; Sat, 13 Sep 2025 01:22:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKr-0005l4-0P; Sat, 13 Sep 2025 04:10:17 -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 1uxLKj-0005gu-Ve for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:12 -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 1uxLKg-0004pD-Cm for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:09 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-388-aJY-Sv0wOUWM9-SPpGgVGQ-1; Sat, 13 Sep 2025 04:10:03 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45deddf34b9so21308555e9.1 for ; Sat, 13 Sep 2025 01:10:02 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037c3cbdsm96092045e9.17.2025.09.13.01.09.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:09:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751005; 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=tQF19VJadKTqyXrZHyk7Nk2a3lmDngVPUnI4hoa6BvU=; b=R4fl2gVvFtbslzTlLcXL96UHQTrihUt51Q8ngjFoupHFvXumGkPI4g1GHQU1TZdvfDDWem avVtBenvFb6X4rLj1GqDlrBLcSAyAjWTJSRPKo3xgtySrgs1avIvFqOv828FCOOGufAVht GkODQGQ/UuXlJhcP1XQO9SERX0li7Os= X-MC-Unique: aJY-Sv0wOUWM9-SPpGgVGQ-1 X-Mimecast-MFC-AGG-ID: aJY-Sv0wOUWM9-SPpGgVGQ_1757751002 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751001; x=1758355801; 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=tQF19VJadKTqyXrZHyk7Nk2a3lmDngVPUnI4hoa6BvU=; b=rHOi9E/SNcBljbVsSEiSs3oYwMFqjVhEaY4iUfqKjcFzH2jlp7XoRqY2/szi3bR34J eA8Z+sb5Yq1HRiHz/vYEyJMkl5cRDkEsmMqV+DIiAn4ivzcdllAWesQvHVF7IfP/iNh/ RLnG91Ji/m8fwgJdErCF15a7LT8czc82s+PrMNBvnGK5K75Day1CEFhj0bjFhV/XJIOp b268eUmZValGvP7nfqMXyfPlihh0NohWaErHJ5USLSS8nqqpTniiEIk7BRrxZqt9LH91 31Gkw4fPV0jENJXydL3SZd4PBHZO/LXjYtnkuP3b+9HTU4qpnIAsDY7bNdmA/oT5OyjH YjQA== X-Gm-Message-State: AOJu0Yw4KOzeo6lAo+0y0ZJml27fAZdcGlBGJzFM8jmjVWvYu1q/PALY kYpf/kegt7iijwK+iXsOp/v1OduDBkalz0tXFUvLoHKjPKQ0T+nE8teKB0lvtb+nVZI1413IZjr nuAKNc2y4yhZq0KCURPqPbKUe0VR6/XnM/lUTqnj4HfjRRS6ymLYk9Pa+3XOFMUhU0jjkyohXkA smNHoa2ice5Xr65LbLDAIXgo/jLxd3nkGZaxWtkG0O X-Gm-Gg: ASbGncsBIpfuTOgQO15FOm2Y5udjz3TIQvlDioGqs0dOu2vdgXfB/AtqqI2jZEMdB05 my0gxHlmA45PhzsIc5ufLNgaiyc7ZPrPaYVOi3JQOg4T0Nmm1xz6zAeWEIZRKL/FUxjr5Uj2FmN f+W0hvq44uk9dRrVyUgNkXOfQhB1YqFwNvUEMvq/UADW7eXBo33Kcj6fE++/QkkzocK/Ts31YDt qI4SADKj9l/e0ZCPpS1IjZ5X+K4Esm6v3tb1hK0Fv+TfiIFk78HwmMicrMDfzhGyIk2mvG7Jlis WRZiyV9zrPY9aybCj42orLnkPDwSggr3JatsqhqCf2I/lF2Cw8FBfNmXfHmaZgpinyFFEgce4Dp nFxVnlGtarVhJ6FfgXKedox4G0siGtyBk+31aYfKQ+54= X-Received: by 2002:a05:600c:468a:b0:45d:5c71:769d with SMTP id 5b1f17b1804b1-45f2126253emr57797595e9.8.1757751000561; Sat, 13 Sep 2025 01:10:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE+tJVjGlMtmrjujPoKg1auWvILrhVtqhDQNEILFet6ETUiyPvXlpWMjhkskUhsp+oxim9kjg== X-Received: by 2002:a05:600c:468a:b0:45d:5c71:769d with SMTP id 5b1f17b1804b1-45f2126253emr57797135e9.8.1757750999934; Sat, 13 Sep 2025 01:09:59 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 06/61] treewide: clear bits of cs->interrupt_request with cpu_reset_interrupt() Date: Sat, 13 Sep 2025 10:08:47 +0200 Message-ID: <20250913080943.11710-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751737604116600 Open coding cpu_reset_interrupt() can cause bugs if the BQL is not taken, for example i386 has the call chain kvm_cpu_exec() -> kvm_put_vcpu_events() -> kvm_arch_put_registers(). Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- accel/tcg/cpu-exec.c | 6 +++--- hw/core/cpu-system.c | 2 +- target/avr/helper.c | 4 ++-- target/i386/hvf/x86hvf.c | 8 ++++---- target/i386/kvm/kvm.c | 14 +++++++------- target/i386/nvmm/nvmm-all.c | 10 +++++----- target/i386/tcg/system/seg_helper.c | 13 ++++++------- target/i386/tcg/system/svm_helper.c | 2 +- target/i386/whpx/whpx-all.c | 12 ++++++------ target/openrisc/sys_helper.c | 2 +- target/rx/helper.c | 4 ++-- target/s390x/tcg/excp_helper.c | 2 +- 12 files changed, 39 insertions(+), 40 deletions(-) diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index 8491e5badd1..508d2d2d9e2 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -784,7 +784,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, if (unlikely(cpu_test_interrupt(cpu, ~0))) { bql_lock(); if (cpu_test_interrupt(cpu, CPU_INTERRUPT_DEBUG)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_DEBUG; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_DEBUG); cpu->exception_index =3D EXCP_DEBUG; bql_unlock(); return true; @@ -793,7 +793,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, /* Do nothing */ } else if (cpu_test_interrupt(cpu, CPU_INTERRUPT_HALT)) { replay_interrupt(); - cpu->interrupt_request &=3D ~CPU_INTERRUPT_HALT; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_HALT); cpu->halted =3D 1; cpu->exception_index =3D EXCP_HLT; bql_unlock(); @@ -840,7 +840,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, } } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_EXITTB)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_EXITTB; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_EXITTB); /* ensure that no TB jump will be modified as the program flow was changed */ *last_tb =3D NULL; diff --git a/hw/core/cpu-system.c b/hw/core/cpu-system.c index a975405d3a0..09c928c1f92 100644 --- a/hw/core/cpu-system.c +++ b/hw/core/cpu-system.c @@ -204,7 +204,7 @@ static int cpu_common_post_load(void *opaque, int versi= on_id) * 0x01 was CPU_INTERRUPT_EXIT. This line can be removed when the * version_id is increased. */ - cpu->interrupt_request &=3D ~0x01; + cpu_reset_interrupt(cpu, 0x01); =20 tlb_flush(cpu); =20 diff --git a/target/avr/helper.c b/target/avr/helper.c index b9cd6d5ef27..4b29ab35263 100644 --- a/target/avr/helper.c +++ b/target/avr/helper.c @@ -47,7 +47,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_r= equest) cs->exception_index =3D EXCP_RESET; avr_cpu_do_interrupt(cs); =20 - cs->interrupt_request &=3D ~CPU_INTERRUPT_RESET; + cpu_reset_interrupt(cs, CPU_INTERRUPT_RESET); return true; } } @@ -59,7 +59,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_r= equest) =20 env->intsrc &=3D env->intsrc - 1; /* clear the interrupt */ if (!env->intsrc) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } return true; } diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c index 9e05e0e5765..a502437c303 100644 --- a/target/i386/hvf/x86hvf.c +++ b/target/i386/hvf/x86hvf.c @@ -397,7 +397,7 @@ bool hvf_inject_interrupts(CPUState *cs) =20 if (cpu_test_interrupt(cs, CPU_INTERRUPT_NMI)) { if (!(env->hflags2 & HF2_NMI_MASK) && !(info & VMCS_INTR_VALID)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_NMI; + cpu_reset_interrupt(cs, CPU_INTERRUPT_NMI); info =3D VMCS_INTR_VALID | VMCS_INTR_T_NMI | EXCP02_NMI; wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, info); } else { @@ -409,7 +409,7 @@ bool hvf_inject_interrupts(CPUState *cs) cpu_test_interrupt(cs, CPU_INTERRUPT_HARD) && (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) { int line =3D cpu_get_pic_interrupt(env); - cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); if (line >=3D 0) { wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line | VMCS_INTR_VALID | VMCS_INTR_T_HWINTR); @@ -437,7 +437,7 @@ int hvf_process_events(CPUState *cs) } =20 if (cpu_test_interrupt(cs, CPU_INTERRUPT_POLL)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_POLL; + cpu_reset_interrupt(cs, CPU_INTERRUPT_POLL); apic_poll_irq(cpu->apic_state); } if ((cpu_test_interrupt(cs, CPU_INTERRUPT_HARD) && @@ -450,7 +450,7 @@ int hvf_process_events(CPUState *cs) do_cpu_sipi(cpu); } if (cpu_test_interrupt(cs, CPU_INTERRUPT_TPR)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_TPR; + cpu_reset_interrupt(cs, CPU_INTERRUPT_TPR); cpu_synchronize_state(cs); apic_handle_tpr_access_report(cpu->apic_state, env->eip, env->tpr_access_type); diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 306430a0521..8420c4090ef 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -5066,7 +5066,7 @@ static int kvm_put_vcpu_events(X86CPU *cpu, int level) */ events.smi.pending =3D cs->interrupt_request & CPU_INTERRUPT_S= MI; events.smi.latched_init =3D cs->interrupt_request & CPU_INTERR= UPT_INIT; - cs->interrupt_request &=3D ~(CPU_INTERRUPT_INIT | CPU_INTERRUP= T_SMI); + cpu_reset_interrupt(cs, CPU_INTERRUPT_INIT | CPU_INTERRUPT_SMI= ); } else { /* Keep these in cs->interrupt_request. */ events.smi.pending =3D 0; @@ -5456,7 +5456,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) if (cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI | CPU_INTERRUPT_SMI)) { if (cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI)) { bql_lock(); - cpu->interrupt_request &=3D ~CPU_INTERRUPT_NMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_NMI); bql_unlock(); DPRINTF("injected NMI\n"); ret =3D kvm_vcpu_ioctl(cpu, KVM_NMI); @@ -5467,7 +5467,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_SMI)) { bql_lock(); - cpu->interrupt_request &=3D ~CPU_INTERRUPT_SMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_SMI); bql_unlock(); DPRINTF("injected SMI\n"); ret =3D kvm_vcpu_ioctl(cpu, KVM_SMI); @@ -5502,7 +5502,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *= run) =20 bql_lock(); =20 - cpu->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_HARD); irq =3D cpu_get_pic_interrupt(env); if (irq >=3D 0) { struct kvm_interrupt intr; @@ -5597,7 +5597,7 @@ int kvm_arch_process_async_events(CPUState *cs) /* We must not raise CPU_INTERRUPT_MCE if it's not supported. */ assert(env->mcg_cap); =20 - cs->interrupt_request &=3D ~CPU_INTERRUPT_MCE; + cpu_reset_interrupt(cs, CPU_INTERRUPT_MCE); =20 kvm_cpu_synchronize_state(cs); =20 @@ -5627,7 +5627,7 @@ int kvm_arch_process_async_events(CPUState *cs) } =20 if (cpu_test_interrupt(cs, CPU_INTERRUPT_POLL)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_POLL; + cpu_reset_interrupt(cs, CPU_INTERRUPT_POLL); apic_poll_irq(cpu->apic_state); } if ((cpu_test_interrupt(cs, CPU_INTERRUPT_HARD) && @@ -5640,7 +5640,7 @@ int kvm_arch_process_async_events(CPUState *cs) do_cpu_sipi(cpu); } if (cpu_test_interrupt(cs, CPU_INTERRUPT_TPR)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_TPR; + cpu_reset_interrupt(cs, CPU_INTERRUPT_TPR); kvm_cpu_synchronize_state(cs); apic_handle_tpr_access_report(cpu->apic_state, env->eip, env->tpr_access_type); diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index c1ac74c4f04..e1151b04c6e 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -419,7 +419,7 @@ nvmm_vcpu_pre_run(CPUState *cpu) =20 if (!has_event && cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI)) { if (nvmm_can_take_nmi(cpu)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_NMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_NMI); event->type =3D NVMM_VCPU_EVENT_INTR; event->vector =3D 2; has_event =3D true; @@ -428,7 +428,7 @@ nvmm_vcpu_pre_run(CPUState *cpu) =20 if (!has_event && cpu_test_interrupt(cpu, CPU_INTERRUPT_HARD)) { if (nvmm_can_take_int(cpu)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_HARD); event->type =3D NVMM_VCPU_EVENT_INTR; event->vector =3D cpu_get_pic_interrupt(env); has_event =3D true; @@ -437,7 +437,7 @@ nvmm_vcpu_pre_run(CPUState *cpu) =20 /* Don't want SMIs. */ if (cpu_test_interrupt(cpu, CPU_INTERRUPT_SMI)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_SMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_SMI); } =20 if (sync_tpr) { @@ -697,7 +697,7 @@ nvmm_vcpu_loop(CPUState *cpu) /* set int/nmi windows back to the reset state */ } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_POLL)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_POLL; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL); apic_poll_irq(x86_cpu->apic_state); } if ((cpu_test_interrupt(cpu, CPU_INTERRUPT_HARD) && @@ -710,7 +710,7 @@ nvmm_vcpu_loop(CPUState *cpu) do_cpu_sipi(x86_cpu); } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_TPR)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_TPR; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_TPR); nvmm_cpu_synchronize_state(cpu); apic_handle_tpr_access_report(x86_cpu->apic_state, env->eip, env->tpr_access_type); diff --git a/target/i386/tcg/system/seg_helper.c b/target/i386/tcg/system/s= eg_helper.c index 794a23ddfc4..38072e51d72 100644 --- a/target/i386/tcg/system/seg_helper.c +++ b/target/i386/tcg/system/seg_helper.c @@ -178,7 +178,7 @@ bool x86_cpu_exec_interrupt(CPUState *cs, int interrupt= _request) */ switch (interrupt_request) { case CPU_INTERRUPT_POLL: - cs->interrupt_request &=3D ~CPU_INTERRUPT_POLL; + cpu_reset_interrupt(cs, CPU_INTERRUPT_POLL); apic_poll_irq(cpu->apic_state); break; case CPU_INTERRUPT_SIPI: @@ -186,23 +186,22 @@ bool x86_cpu_exec_interrupt(CPUState *cs, int interru= pt_request) break; case CPU_INTERRUPT_SMI: cpu_svm_check_intercept_param(env, SVM_EXIT_SMI, 0, 0); - cs->interrupt_request &=3D ~CPU_INTERRUPT_SMI; + cpu_reset_interrupt(cs, CPU_INTERRUPT_SMI); do_smm_enter(cpu); break; case CPU_INTERRUPT_NMI: cpu_svm_check_intercept_param(env, SVM_EXIT_NMI, 0, 0); - cs->interrupt_request &=3D ~CPU_INTERRUPT_NMI; + cpu_reset_interrupt(cs, CPU_INTERRUPT_NMI); env->hflags2 |=3D HF2_NMI_MASK; do_interrupt_x86_hardirq(env, EXCP02_NMI, 1); break; case CPU_INTERRUPT_MCE: - cs->interrupt_request &=3D ~CPU_INTERRUPT_MCE; + cpu_reset_interrupt(cs, CPU_INTERRUPT_MCE); do_interrupt_x86_hardirq(env, EXCP12_MCHK, 0); break; case CPU_INTERRUPT_HARD: cpu_svm_check_intercept_param(env, SVM_EXIT_INTR, 0, 0); - cs->interrupt_request &=3D ~(CPU_INTERRUPT_HARD | - CPU_INTERRUPT_VIRQ); + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD | CPU_INTERRUPT_VIRQ); intno =3D cpu_get_pic_interrupt(env); qemu_log_mask(CPU_LOG_INT, "Servicing hardware INT=3D0x%02x\n", intno); @@ -215,7 +214,7 @@ bool x86_cpu_exec_interrupt(CPUState *cs, int interrupt= _request) qemu_log_mask(CPU_LOG_INT, "Servicing virtual hardware INT=3D0x%02x\n", intno); do_interrupt_x86_hardirq(env, intno, 1); - cs->interrupt_request &=3D ~CPU_INTERRUPT_VIRQ; + cpu_reset_interrupt(cs, CPU_INTERRUPT_VIRQ); env->int_ctl &=3D ~V_IRQ_MASK; break; } diff --git a/target/i386/tcg/system/svm_helper.c b/target/i386/tcg/system/s= vm_helper.c index 3569196bdda..505788b0e26 100644 --- a/target/i386/tcg/system/svm_helper.c +++ b/target/i386/tcg/system/svm_helper.c @@ -824,7 +824,7 @@ void do_vmexit(CPUX86State *env) env->intercept_exceptions =3D 0; =20 /* Clears the V_IRQ and V_INTR_MASKING bits inside the processor. */ - cs->interrupt_request &=3D ~CPU_INTERRUPT_VIRQ; + cpu_reset_interrupt(cs, CPU_INTERRUPT_VIRQ); env->int_ctl =3D 0; =20 /* Clears the TSC_OFFSET inside the processor. */ diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 878cdd1668c..c09a0a64f22 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1471,14 +1471,14 @@ static void whpx_vcpu_pre_run(CPUState *cpu) if (!vcpu->interruption_pending && cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI | CPU_INTERRUPT_SMI)) { if (cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_NMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_NMI); vcpu->interruptable =3D false; new_int.InterruptionType =3D WHvX64PendingNmi; new_int.InterruptionPending =3D 1; new_int.InterruptionVector =3D 2; } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_SMI)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_SMI; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_SMI); } } =20 @@ -1502,7 +1502,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu) vcpu->interruptable && (env->eflags & IF_MASK)) { assert(!new_int.InterruptionPending); if (cpu_test_interrupt(cpu, CPU_INTERRUPT_HARD)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_HARD); irq =3D cpu_get_pic_interrupt(env); if (irq >=3D 0) { new_int.InterruptionType =3D WHvX64PendingInterrupt; @@ -1520,7 +1520,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu) } } else if (vcpu->ready_for_pic_interrupt && cpu_test_interrupt(cpu, CPU_INTERRUPT_HARD)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_HARD); irq =3D cpu_get_pic_interrupt(env); if (irq >=3D 0) { reg_names[reg_count] =3D WHvRegisterPendingEvent; @@ -1607,7 +1607,7 @@ static void whpx_vcpu_process_async_events(CPUState *= cpu) } =20 if (cpu_test_interrupt(cpu, CPU_INTERRUPT_POLL)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_POLL; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL); apic_poll_irq(x86_cpu->apic_state); } =20 @@ -1623,7 +1623,7 @@ static void whpx_vcpu_process_async_events(CPUState *= cpu) } =20 if (cpu_test_interrupt(cpu, CPU_INTERRUPT_TPR)) { - cpu->interrupt_request &=3D ~CPU_INTERRUPT_TPR; + cpu_reset_interrupt(cpu, CPU_INTERRUPT_TPR); whpx_cpu_synchronize_state(cpu); apic_handle_tpr_access_report(x86_cpu->apic_state, env->eip, env->tpr_access_type); diff --git a/target/openrisc/sys_helper.c b/target/openrisc/sys_helper.c index d96b41a01c2..b091a9c6685 100644 --- a/target/openrisc/sys_helper.c +++ b/target/openrisc/sys_helper.c @@ -196,7 +196,7 @@ void HELPER(mtspr)(CPUOpenRISCState *env, target_ulong = spr, target_ulong rb) env->ttmr =3D (rb & ~TTMR_IP) | ip; } else { /* Clear IP bit. */ env->ttmr =3D rb & ~TTMR_IP; - cs->interrupt_request &=3D ~CPU_INTERRUPT_TIMER; + cpu_reset_interrupt(cs, CPU_INTERRUPT_TIMER); } cpu_openrisc_timer_update(cpu); bql_unlock(); diff --git a/target/rx/helper.c b/target/rx/helper.c index ce003af4219..41c9606fd1d 100644 --- a/target/rx/helper.c +++ b/target/rx/helper.c @@ -63,7 +63,7 @@ void rx_cpu_do_interrupt(CPUState *cs) env->bpsw =3D save_psw; env->pc =3D env->fintv; env->psw_ipl =3D 15; - cs->interrupt_request &=3D ~CPU_INTERRUPT_FIR; + cpu_reset_interrupt(cs, CPU_INTERRUPT_FIR); qemu_set_irq(env->ack, env->ack_irq); qemu_log_mask(CPU_LOG_INT, "fast interrupt raised\n"); } else if (do_irq & CPU_INTERRUPT_HARD) { @@ -73,7 +73,7 @@ void rx_cpu_do_interrupt(CPUState *cs) cpu_stl_data(env, env->isp, env->pc); env->pc =3D cpu_ldl_data(env, env->intb + env->ack_irq * 4); env->psw_ipl =3D env->ack_ipl; - cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); qemu_set_irq(env->ack, env->ack_irq); qemu_log_mask(CPU_LOG_INT, "interrupt 0x%02x raised\n", env->ack_irq); diff --git a/target/s390x/tcg/excp_helper.c b/target/s390x/tcg/excp_helper.c index e4c75d0ce01..4c7faeee82b 100644 --- a/target/s390x/tcg/excp_helper.c +++ b/target/s390x/tcg/excp_helper.c @@ -559,7 +559,7 @@ try_deliver: =20 /* we might still have pending interrupts, but not deliverable */ if (!env->pending_int && !qemu_s390_flic_has_any(flic)) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD; + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } =20 /* WAIT PSW during interrupt injection or STOP interrupt */ --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751688; cv=none; d=zohomail.com; s=zohoarc; b=GR1VaZi6cXpJpDHGQ8j7sUkLQL6QxAHkPI+dNxZkSMrnjYkWVaZUblkNEnMkB7T2wc8v3hCx95+YeSua9iWKPv/0gN5PN7yVLrDP+hz5PMP1V/kYEiSb7CQ0MGGS+GFj3IBn7ZPSnm5f62lY3+qgh55XxcvrT6zHZZsvAjgmRdE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751688; 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=7929tqjr/p/MqUXWGl/GVOXgHyxRWujXMrtUmPUHm9Y=; b=catrzXA2t/qTbqaPGn3+mbqp10qRyvdfz+u+/OVUprYD0A4vRhnGSmtDHOLx4erlximoJzlldjv0yfJ4Xf+B+0G+NU5A+wDQjhx+C1qD2HL+LyyaUwSGebFuJhzmTM1zt1Bl0NQOlDPXtYP/cnEcOkEo2mEvpPTzMFc/hTXsM0g= 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 1757751688249922.9706745106344; Sat, 13 Sep 2025 01:21:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKq-0005k4-3a; Sat, 13 Sep 2025 04:10:16 -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 1uxLKl-0005hm-HD for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10: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 1uxLKh-0004pL-DU for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:10 -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-257-qFZcaQ7HPeOADbzdICpxMg-1; Sat, 13 Sep 2025 04:10:04 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45ddbdb92dfso16735085e9.1 for ; Sat, 13 Sep 2025 01:10:03 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e03718eb1sm89569675e9.4.2025.09.13.01.10.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751005; 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=7929tqjr/p/MqUXWGl/GVOXgHyxRWujXMrtUmPUHm9Y=; b=fZvjJ8/97h+TjBRLzq9z+4hXoA7A2vhGPFr/detYv18pEb5YoOXlWkHuS8u8xiS2aqL/SH FaJXMvLBF0ai/43njZea2jlyoaf+ZJ57CwFKyfTDiphAmfVV+wOsnpkDMF+gtpTGHXfoz9 7Tyn2sGDIQXZfBT6dNWEFp2g3NXz/PI= X-MC-Unique: qFZcaQ7HPeOADbzdICpxMg-1 X-Mimecast-MFC-AGG-ID: qFZcaQ7HPeOADbzdICpxMg_1757751003 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751002; x=1758355802; 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=7929tqjr/p/MqUXWGl/GVOXgHyxRWujXMrtUmPUHm9Y=; b=kFi/m7qyi6vqdEEEqZk4fZWBHy7vGLEjcqLj5oSl0sCAQjGgwFhlu2h8t2AT+Q6E/F XVV34q6OM0fVl4o+NNJ42qlSG78HY7FvoKyy4mrCAgkugd5XVUK8wyiM6mjLrwmKKQh0 FbdAwySJCwGDkb9FqAw/Pv/W2UWTLMaVg7foK9KBGVHzTentOJdrUrlBeHPJ4wste2kO yiaPIXbM6mnbtIHau9JaFCTilSSEyG44GSS4rWzyfW3T6a2guUs8TidGqYTObEc+75tO M7M2HQ2PCsNxUlSXqRASK8vxQKaqmGq6WvEhQuUunFYKtQaM/1Zaw9Vy1Uu/liB7FGAN zzIQ== X-Gm-Message-State: AOJu0Yx/DgK/xt2z1tTT/ow7xHnlvW1D49MdmzVRf2gg+qQbIOnV2+LK gJXQwzAbXi/5XqSvxrPvfTz4Z/DqqxK3HqWnLyhyHfrjFaYKwhvxW2QVKJtrbKzql1DfO420Z1L aSNG+zIZ3lCmKXhoerlxy29BmjBFOZCFIFQ/WhIxIJDgF5djbSE/v7IpHmXH0W4M2NEcOe+SthT K9i8ShVsPtis6O+bPoFhpqaf+wh4maqh9z6kxHo7Qa X-Gm-Gg: ASbGnctzLANLn1Rcs/PM9SgOhEKMG0eH67do2rUsKF1bJ4dQjPhgGKEX/8LxmZQ8bHu dy+ROdoZHIW5YEciAsMZ2QIOGmJ7M43ismX09OlRFXm6lX6PdnKpyM8JNq9blTjAPR+UJSU2UAi 6Apb63SEtRz0feiQRZClkLM4O1ES3I6w0aUeKIKlOIJ2F1PDLryrN0oZTVnj4Ng0NvB6L3UBdRc MfqCjJcPyBxPKQ1zXTntKCFEX/W0zmQatDyvaZtU6UTnMUF1yPGAY3jCTRBJ3h5vKKElfEkqqY4 JU393JhUozYHvE0Rv6tla+ddYcG65BA44xhCYNCWy+laK167GU+mDVA4fvdIGZr/BZFtL5mH1VP dv4u+4AeKJcV7+QwBjwk7fPhlRMaTb3tkf5P2e4j9Tsg= X-Received: by 2002:a05:600c:6054:b0:45d:f804:bcda with SMTP id 5b1f17b1804b1-45f211d56b8mr39264345e9.13.1757751001765; Sat, 13 Sep 2025 01:10:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG9RQPXY2+9FoRIOnL3dI6e84Tax1DTLQ1mH23EltvdS3DwCga2OSFo3bgGI5JmGAmgV8bYiw== X-Received: by 2002:a05:600c:6054:b0:45d:f804:bcda with SMTP id 5b1f17b1804b1-45f211d56b8mr39264185e9.13.1757751001339; Sat, 13 Sep 2025 01:10:01 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 07/61] cpu-common: use atomic access for interrupt_request Date: Sat, 13 Sep 2025 10:08:48 +0200 Message-ID: <20250913080943.11710-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751689209116600 Writes to interrupt_request used non-atomic accesses, but there are a few cases where the access was not protected by the BQL. Now that there is a full set of helpers, it's easier to guarantee that interrupt_request accesses are fully atomic, so just drop the requirement instead of fixing them. Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- include/hw/core/cpu.h | 1 - hw/core/cpu-common.c | 12 +----------- system/cpus.c | 3 +-- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index b01a0cffd64..23bd02277f4 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -495,7 +495,6 @@ struct CPUState { bool exit_request; int exclusive_context_count; uint32_t cflags_next_tb; - /* updates protected by BQL */ uint32_t interrupt_request; int singlestep_enabled; int64_t icount_budget; diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 259cf2a3c36..152abc9024b 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -67,19 +67,9 @@ CPUState *cpu_create(const char *typename) return cpu; } =20 -/* Resetting the IRQ comes from across the code base so we take the - * BQL here if we need to. cpu_interrupt assumes it is held.*/ void cpu_reset_interrupt(CPUState *cpu, int mask) { - bool need_lock =3D !bql_locked(); - - if (need_lock) { - bql_lock(); - } - cpu->interrupt_request &=3D ~mask; - if (need_lock) { - bql_unlock(); - } + qatomic_and(&cpu->interrupt_request, ~mask); } =20 void cpu_exit(CPUState *cpu) diff --git a/system/cpus.c b/system/cpus.c index 437848b5eb4..9bfbe2b0607 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -257,8 +257,7 @@ int64_t cpus_get_elapsed_ticks(void) void cpu_set_interrupt(CPUState *cpu, int mask) { /* Pairs with cpu_test_interrupt(). */ - qatomic_store_release(&cpu->interrupt_request, - cpu->interrupt_request | mask); + qatomic_or(&cpu->interrupt_request, mask); } =20 void generic_handle_interrupt(CPUState *cpu, int mask) --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751732; cv=none; d=zohomail.com; s=zohoarc; b=hQ94lpap39QcEkY8Xt7JfYZzZtwC1mL6gyDdu0HKAhCvcHvtZRCQoE7iKRHiW9cVA/p7/r8hyKT5zfkZnXG/oWFlO1MsIMuC4cLLKXvvqk0hD00vu3KMtvbmhOJtFbsLPKx74B6gyJh8RrK+KxCvO/5Gq7jHPuwC1UMyXxtgkdA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751732; 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=CQOby/BAJBGzsbQkEY5z4jLqdBepsOlgz7xz91bkfdo=; b=DJWZIdGRlKq9GkKq5KPSdAU3j9Q/ePh71F/2o7mxXFP9kd2FHwFWaFjYnmfGgrpHTivdpDZP9QmdgTNq5zrEa5p97VQPuC8a6KwlW3YI3yT7W1+vTwSKl+OsBHQ2Hrnq3uprElFnJCO+y8VJjEva4+ezjEhZJWD7NQiDDqHn5Go= 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 175775173243319.607888368724275; Sat, 13 Sep 2025 01:22:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKq-0005km-Ty; Sat, 13 Sep 2025 04:10:16 -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 1uxLKo-0005jP-RD for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:14 -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 1uxLKl-0004q7-AT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:13 -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-80-EaeuDGOqPqWPq9_xyBWkmQ-1; Sat, 13 Sep 2025 04:10:07 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-45dd9a66c3fso8824685e9.1 for ; Sat, 13 Sep 2025 01:10:07 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e82f647b83sm2516714f8f.20.2025.09.13.01.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751009; 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=CQOby/BAJBGzsbQkEY5z4jLqdBepsOlgz7xz91bkfdo=; b=PqXE6T7fer95aqm7IAPnTHfnouDcdcxtxBvSjrY7jSxGYg3BmG23mlMQEPg8Lo51h1SEu9 pCE6z+drMM/8EMEodqEoGAG9Gw+2x+4Us5nE8jWo4qDNvGf4+ibjlyRTQV5rJm36zk74gs dZgdJnXkZhh7tw1ehklH2maPLnP9fE8= X-MC-Unique: EaeuDGOqPqWPq9_xyBWkmQ-1 X-Mimecast-MFC-AGG-ID: EaeuDGOqPqWPq9_xyBWkmQ_1757751006 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751005; x=1758355805; 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=CQOby/BAJBGzsbQkEY5z4jLqdBepsOlgz7xz91bkfdo=; b=E+NdFClM0LwTDdM2krBYrG9hJJdUPfB64FsCMHDYWmI7cgLTUhPGCtWHbis17GtHZa ByiyOb9GDowDe2HME0PRx+AmZcIEV6OU9W+g66Q382VFytP3PJkwAtDKAIw9foXSA8mO ILtGPuvsM+K23NVhCOombJOqL7Ym50i/sRTDr5o0DMP9Xw/shGDrqVXVp+kutIj8z6FM ed2X6tsVjxU9dgAsBXtA0FBsFU8ij5yHlLAyT5GtzI3PeW3Zte5plFNyzm2Pz79YkVyO jh3ZW9aVuDNqgIx8NkXil6Pg2rBO0WPAmMeEAYkS6rkpDWsqzMHeSrg4pzzfko9qiJnG fezw== X-Gm-Message-State: AOJu0Yz2x82S4Y9mmWshZgQUjbmNIEgflajP3cQNlph1dwGRDTn0lIVa aeS78F++w/iY+mV26ZP73kHIKqK4JQyRzGZ4t67QjSBEgqN62nG0FVi9PKK38sapbpT/Cnnk7xn FOXAVSGYoDJOjxfBwBkYh3gOZeatoS1jwfi0o++ZgOoeuItyuc7UXTvWItjhCjypKGW6vwDYF3f zZQgj9tjR6iYL1/KmEzDz5nvxRTmIQ5EAQ+LBquLez X-Gm-Gg: ASbGnctx/U+ksx4g1lhyQkvbNXNAxw7IREryNTYvmywzHU/qO+YLHRHzPTCwuByV3Zl k6fdqzKgJCoGbdUUu0xFoEB9Pwk5I8VWF4qHfMtP6D7rjaIqOCHAK9/s7V8w+TEXyt4JS8IcITh dt/+RYHhH3NDf1Jj0djC/aJL2Mf2BgLVVhG3jrObfxgLjNmi7qWeaZm3WTBhtq2o9Nyv14+WzhS fd25UGaIlkffQLlG403dBhkiQ/hPjZUofwpbw0TIxFJtw/KzqC+kB1jQdnI1P5+eCwXHsvC/5CL HqkkWLnRP1y5+m3Z2yN7Jtp+fNbdcFbkCMLy0u0kHI1D8T73eaoDLiMuG9Do2C1hRy8Mg1O2F5b dApwpYKkayNRvJ1AThXcIjyY9Qe7q02AOmDMaSqZ9sSg= X-Received: by 2002:a05:600c:228f:b0:45b:6743:2242 with SMTP id 5b1f17b1804b1-45f211f86c5mr39507175e9.22.1757751005181; Sat, 13 Sep 2025 01:10:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFdYN7zjBXL5Gx1hvNf2g4mjE8UdIR4weUBckc7I6Qj+khvXPzgyyhpeKhefb7KJ7xmHO6lfg== X-Received: by 2002:a05:600c:228f:b0:45b:6743:2242 with SMTP id 5b1f17b1804b1-45f211f86c5mr39506945e9.22.1757751004733; Sat, 13 Sep 2025 01:10:04 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PULL 08/61] cpus: document that qemu_cpu_kick() can be used for BQL-less operation Date: Sat, 13 Sep 2025 10:08:49 +0200 Message-ID: <20250913080943.11710-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751733600116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- include/hw/core/cpu.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 23bd02277f4..8b57bcd92c9 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -829,7 +829,8 @@ bool qemu_cpu_is_self(CPUState *cpu); * qemu_cpu_kick: * @cpu: The vCPU to kick. * - * Kicks @cpu's thread. + * Kicks @cpu's thread to exit the accelerator. For accelerators that + * can do that, the target vCPU thread will try not to take the BQL. */ void qemu_cpu_kick(CPUState *cpu); =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751105; cv=none; d=zohomail.com; s=zohoarc; b=IPdHFTxMyNbAYIBTLwDW5yX283Tl8v/hZr09c8Ya6dMjY3yq/2/pCyRDoGpGojwWFwwtlqaBuAzEEKAp8H7Ejo4iJzft8X0JycxeF0xY1RWnw1AhXEejCrrcyL7Bc2xpQCOc+jmkQ3xLB/j194fm9XEji8m4ufEuxzbrYaC7qPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751105; 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=2JxL0mu6HG+did++z5AjqHBeKoSZ1/tUC6gKjbxSw7M=; b=YbwKy3F1gK9TJ+e3eitoQfr6LjuyV/bVTX4IyBi1zIEMYfoIDeYuuOFcP10I4aARYxIARIE/LWAfEev9KeGVYE/SAvUdgFd+gwLljIh/BzyVm2++5BqCRr3a+KK/EJIxV97gYIBNj1ayP+eIcZEpIpF24KMxwhyD+o7lWPKwUyA= 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 1757751104896460.5890507597137; Sat, 13 Sep 2025 01:11:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKu-0005m1-Ri; Sat, 13 Sep 2025 04:10: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 1uxLKs-0005lZ-R9 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:19 -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 1uxLKn-0004qr-7e for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:18 -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-590-xDDLnC8PPeSH9EzkgUWAPQ-1; Sat, 13 Sep 2025 04:10:11 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e760a261caso1453056f8f.1 for ; Sat, 13 Sep 2025 01:10:10 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607cd691sm9653701f8f.32.2025.09.13.01.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751012; 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=2JxL0mu6HG+did++z5AjqHBeKoSZ1/tUC6gKjbxSw7M=; b=iC7sUyS9KP/z86r0oBRpKAAD+78UiBW54cJfOzPT4F6Btw2l6WfrOt9U/cJi3/wdudpzw9 5BcD9koImb7mg4MrG1QPI8tv6LBDVDOW0z8mHRpar1MvZt2R7C2MvOJ6Kd1Yz8RzP8VtKx oI3ru7JRoGQzXk1fGyux7yTl5lF8Eq0= X-MC-Unique: xDDLnC8PPeSH9EzkgUWAPQ-1 X-Mimecast-MFC-AGG-ID: xDDLnC8PPeSH9EzkgUWAPQ_1757751010 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751009; x=1758355809; 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=2JxL0mu6HG+did++z5AjqHBeKoSZ1/tUC6gKjbxSw7M=; b=g0cWvN61yLgiWrHyKangyAczOHPiEshJv7bhbsfeisLR3LAkowHuzZ7DYyRVz36q4G my1UamioV9yy7snKfQEEimELO+kE62BeIqu708/mxASgf/qAO9lZGA6I0SSqi8+IL1vP fDNlg6wJ9S3I+Swk3tWTPmcaZb+6L4GtX+JRNG/SoHmHwE0bY2hAwndL2BfbCHmHXwyo NiUmoyVlw66wa5cwfhozkF9NjwmIGSLrwtk1bJY4aYkjpdF7MYL9MXgeTMUzbuCXXpeU +/pxeC3FGwbSROF9u4woI69N0xDHmDRo2wkM+aVdZrok6Mgf4KBhqOesdQz+F5uohj2S sZdA== X-Gm-Message-State: AOJu0Yxvn6MqFgNJyHmQFNKPiJA4pbIOBvA2JRZQrbS5Ka0Mc98Ec8Y/ idTeA+wI6NGhO3AmjhgFH615CTy9LI38aftjeTsAJ2Acu1A6mH8Skf8dncachm058bHcvmOrOC/ +K9M3GaRZX6HIi4suG9qq95VAjvbk1JxqX2w0sPftAS5fJ/d3xcJif8IBUC41O3DHMfNc3eXnCL E7EUbRpQ2qCunKcrRflIHCVGLcWjXtOy1n3ry+neZu X-Gm-Gg: ASbGncsVQBwcbOcmZIpeJlRB1DHsJASBnCWKIggItox3LTKuZBu70qICjBTgPoWbJLi VWfKqivfSWbO8fQbnJmbDRFa7DIjI1tGD+F2KU9jFKY5mpPfSQiQRiFdztUcQPoiQu5M5K5A6DU fGvAsJW4bIGzNYAkfSogWHgYCICI4c/s8B38DGO2tv+X9vWK6LL0F3zcVSLQCwv4qDiBBVlwjbH HfXUs+fQZQGN40UoT8j3HR1o5yix07pyJz+x5gFeR6Sfw22K8YIu0ETifnCJVXaO8BEKJswSgi7 GebIwRa/d1zhHJjaF3CjpZPuk8zFQKSnbT6Ncag1hs/ZZAMP2XfMkIss7yfPnGAXjH1filB/3K2 XJFiTbuklXRsfp11XkrPlcouRDhvkkOPq8IuVkbotjVg= X-Received: by 2002:a05:6000:2281:b0:3da:27c2:f51d with SMTP id ffacd0b85a97d-3e7659f3bafmr6320612f8f.45.1757751008892; Sat, 13 Sep 2025 01:10:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGdyHgfC8xLfzyzFKWWrfwUGLIo/0i3NbXUSVzPLkJwKstqWcOibndjrjdGde+DBjH9IJwOUw== X-Received: by 2002:a05:6000:2281:b0:3da:27c2:f51d with SMTP id ffacd0b85a97d-3e7659f3bafmr6320573f8f.45.1757751008351; Sat, 13 Sep 2025 01:10:08 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson , Peter Xu , Igor Mammedov Subject: [PULL 09/61] accel: use store_release/load_acquire for cross-thread exit_request Date: Sat, 13 Sep 2025 10:08:50 +0200 Message-ID: <20250913080943.11710-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, T_SPF_TEMPERROR=0.01 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: 1757751106498116600 Content-Type: text/plain; charset="utf-8" Reads and writes cpu->exit_request do not use a load-acquire/store-release pair right now, but this means that cpu_exit() may not write cpu->exit_requ= est after any flags that are read by the vCPU thread. Probably everything is protected one way or the other by the BQL, because cpu->exit_request leads to the slow path, where the CPU thread often takes the BQL (for example, to go to sleep by waiting on the BQL-protected cpu->halt_cond); but it's not clear, so use load-acquire/store-release consistently. Reviewed-by: Richard Henderson Reviewed-by: Peter Xu Reviewed-by: Igor Mammedov Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 19 +++++++++---------- accel/tcg/cpu-exec.c | 7 +++++-- accel/tcg/tcg-accel-ops-rr.c | 11 +++++++++-- hw/core/cpu-common.c | 3 ++- target/i386/nvmm/nvmm-all.c | 5 ++--- target/i386/whpx/whpx-all.c | 3 ++- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f36dfe33492..bd9e5e3886d 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3029,10 +3029,6 @@ static void kvm_eat_signals(CPUState *cpu) =20 if (kvm_immediate_exit) { qatomic_set(&cpu->kvm_run->immediate_exit, 0); - /* Write kvm_run->immediate_exit before the cpu->exit_request - * write in kvm_cpu_exec. - */ - smp_wmb(); return; } =20 @@ -3187,7 +3183,8 @@ int kvm_cpu_exec(CPUState *cpu) } =20 kvm_arch_pre_run(cpu, run); - if (qatomic_read(&cpu->exit_request)) { + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { trace_kvm_interrupt_exit_request(); /* * KVM requires us to reenter the kernel after IO exits to com= plete @@ -3197,13 +3194,15 @@ int kvm_cpu_exec(CPUState *cpu) kvm_cpu_kick_self(); } =20 - /* Read cpu->exit_request before KVM_RUN reads run->immediate_exit. - * Matching barrier in kvm_eat_signals. - */ - smp_rmb(); - run_ret =3D kvm_vcpu_ioctl(cpu, KVM_RUN, 0); =20 + /* + * After writing cpu->exit_request, cpu_exit() sends a signal that= writes + * kvm->run->immediate_exit. The signal is already happening afte= r the + * write to cpu->exit_request so, if KVM read kvm->run->immediate_= exit + * as true, cpu->exit_request will always read as true. + */ + attrs =3D kvm_arch_post_run(cpu, run); =20 #ifdef KVM_HAVE_MCE_INJECTION diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index 508d2d2d9e2..f838535d111 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -851,8 +851,11 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, } #endif /* !CONFIG_USER_ONLY */ =20 - /* Finally, check if we need to exit to the main loop. */ - if (unlikely(qatomic_read(&cpu->exit_request)) || icount_exit_request(= cpu)) { + /* + * Finally, check if we need to exit to the main loop. + * The corresponding store-release is in cpu_exit. + */ + if (unlikely(qatomic_load_acquire(&cpu->exit_request)) || icount_exit_= request(cpu)) { qatomic_set(&cpu->exit_request, 0); if (cpu->exception_index =3D=3D -1) { cpu->exception_index =3D EXCP_INTERRUPT; diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index 6eec5c9eee9..e8b0e370a8d 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -242,10 +242,17 @@ static void *rr_cpu_thread_fn(void *arg) cpu =3D first_cpu; } =20 - while (cpu && cpu_work_list_empty(cpu) && !cpu->exit_request) { - /* Store rr_current_cpu before evaluating cpu_can_run(). */ + while (cpu && cpu_work_list_empty(cpu)) { + /* + * Store rr_current_cpu before evaluating cpu->exit_request. + * Pairs with rr_kick_next_cpu(). + */ qatomic_set_mb(&rr_current_cpu, cpu); =20 + /* Pairs with store-release in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { + break; + } current_cpu =3D cpu; =20 qemu_clock_enable(QEMU_CLOCK_VIRTUAL, diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 152abc9024b..42463e6258d 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -74,7 +74,8 @@ void cpu_reset_interrupt(CPUState *cpu, int mask) =20 void cpu_exit(CPUState *cpu) { - qatomic_set(&cpu->exit_request, 1); + /* Ensure cpu_exec will see the reason why the exit request was set. = */ + qatomic_store_release(&cpu->exit_request, true); /* Ensure cpu_exec will see the exit request after TCG has exited. */ smp_wmb(); qatomic_set(&cpu->neg.icount_decr.u16.high, -1); diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index e1151b04c6e..10bd51d9b59 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -743,7 +743,8 @@ nvmm_vcpu_loop(CPUState *cpu) =20 nvmm_vcpu_pre_run(cpu); =20 - if (qatomic_read(&cpu->exit_request)) { + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { #if NVMM_USER_VERSION >=3D 2 nvmm_vcpu_stop(vcpu); #else @@ -751,8 +752,6 @@ nvmm_vcpu_loop(CPUState *cpu) #endif } =20 - /* Read exit_request before the kernel reads the immediate exit fl= ag */ - smp_rmb(); ret =3D nvmm_vcpu_run(mach, vcpu); if (ret =3D=3D -1) { error_report("NVMM: Failed to exec a virtual processor," diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index c09a0a64f22..2106c29c3a0 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1714,7 +1714,8 @@ static int whpx_vcpu_run(CPUState *cpu) if (exclusive_step_mode =3D=3D WHPX_STEP_NONE) { whpx_vcpu_pre_run(cpu); =20 - if (qatomic_read(&cpu->exit_request)) { + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { whpx_vcpu_kick(cpu); } } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751089; cv=none; d=zohomail.com; s=zohoarc; b=mPgYkcnIrnbhvWzyXQvQIdyHpJ08YC9OYgj6pelS7sJRVCvzRBSA1tKmRbZME6dxtQqpH7COe1Np08DAiMDcJbB4ksdzAbpjyngUID7HGxoQI1BE/bTxD3HoLUyGKO6az2TzpMrLH8vUpxDXWnVgRsTQgVxnBAo3c6/nLKal0lA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751089; 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=9F9omlNx3zkAVVgrXaGDIxi/SyKkxZLJobZOnZwp8BQ=; b=YVxqqgjdaMzQXS4OqTwZC+2ZVKQbPEaWl5EQEpcqpaYujqU3r36+UhQVgehyFFA5brNOUylgZ6s7IY0of9fUfShnN5d4pho9d4McgVI7c1MHDOBnF17+ReSth8BFGPejy40qqKhMsMDpL2ZaLJ2c7wDUWYgxvv81SvnLAJZlVLQ= 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 1757751089413213.90219628446266; Sat, 13 Sep 2025 01:11:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLKw-0005mj-Gb; Sat, 13 Sep 2025 04:10:22 -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 1uxLKu-0005m3-Ti for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:20 -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 1uxLKs-0004s9-79 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:20 -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-519-4VAWEx9SNPKoK2TqitXKkQ-1; Sat, 13 Sep 2025 04:10:15 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e3f8616125so2192858f8f.1 for ; Sat, 13 Sep 2025 01:10:15 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e01832af1sm50553365e9.3.2025.09.13.01.10.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751017; 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=9F9omlNx3zkAVVgrXaGDIxi/SyKkxZLJobZOnZwp8BQ=; b=gufRBsp/zjf77L3hwY7Tcgn2VJikdjbgUcJP6fNxOxx1Wsk7L0S6gDQ46s0CZh61DylOlF G6vq9JoOrztfSQXddXvpWNZB4r3QE6/Q3cGLkzUxs7hisXcG7tQrEfTgOqdx7G1clQxyeg JDWd00bcpPDIJ86WCYk0NtKCx7EPzJw= X-MC-Unique: 4VAWEx9SNPKoK2TqitXKkQ-1 X-Mimecast-MFC-AGG-ID: 4VAWEx9SNPKoK2TqitXKkQ_1757751014 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751013; x=1758355813; 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=9F9omlNx3zkAVVgrXaGDIxi/SyKkxZLJobZOnZwp8BQ=; b=A/qQnugEqS7pbfYY9Gy6YqGH/eApYYOd3Bv11XW4OifWLfRsqlqg8HJkccjz7rQqX+ yB0BmvopYVveDzTTWQXUdhWFrMtXrjn0AImN8U8ht7hpBdDxeLqqXuCEm2c18EmUAGW8 1eOxIqs91TijnmPj5IuS+2SqhJz+X2GCK79ICir+vw0PnpmzJAXdq8BejOVhZkdbgIad hK/cN98OZjMFJoUcAZhZss3keRq3Qhj+a+Y02+JcxUIg5xnGsjh135ipcbjTQMs8J+uT +X5zbKyRNjmhx+m0r/Lywb5WMJ+QatJrapYAU3HqT2zGbwEzxrZYCnjB51Gx6sGs4+vG 9qUw== X-Gm-Message-State: AOJu0YyoouI5RfddpEryxE11bDEspHo+6DWhTbxv3NGaVIEjUqu6WYOB oX3tkz0nEa5h4bSMJNMpoKfzhvd9AmD2Q8tCQpwT9HFkS2gTzqZnr8dE0F7IUQA1eGPOyIUNIuw ZGNdRHfDdue1DbcSkNg4XBK4FoVB7+Z1VR7hl8vaRGT52K5Sg4A81NFCaCy1P5DMdFd3KJngyr7 D8b8IABF97QOm5lgTu5vH1hITtC+OIhwLpachT47Cr X-Gm-Gg: ASbGncs7Z7tpfQLdC3dwZ7aF5yG8mL55vi64V86nc1viec2pduKSQHH1tYMSEmv93l/ g9CJUkF6wdSRuH2jDtyXiPkjKVOMdyj4Hy96JI93COKvohTiDcmfjc4XqWK7DkOvKzQDdK3O3pz RUZIU5zp8tt32L++wIXzndgiX3sTjk8VOYtjRoILU8Q9oyugIh8i1yMIu8tLpCvtXJEc/VDUWDx K2w0qE4hr0Hy2r/awmpsAzamncH7AozsFHwK9Qeq2Xhb+hJRe2h0oewGgSV9bfl5CT/kzNClEYY Z2gUCgtIqM3MqPtmb4W4tz+AxLOCzc8VHBJ7O6T4vWS+hkpbGAVb+edsUXUatUb5D3q5jxvCvxd aQvQ659NDs7PUlN2Ik086Agm/TVdsLRuuhESwy/qvBFU= X-Received: by 2002:a05:6000:1a8b:b0:3c2:d7f0:9c4e with SMTP id ffacd0b85a97d-3e75e0fadc1mr7329908f8f.8.1757751013141; Sat, 13 Sep 2025 01:10:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGXC4hRamxAw63vppAtkFxStLfoZeku86uBGbkc/h6C8B0vUuUgXVBrCLzimKy30/EbjBmptA== X-Received: by 2002:a05:6000:1a8b:b0:3c2:d7f0:9c4e with SMTP id ffacd0b85a97d-3e75e0fadc1mr7329882f8f.8.1757751012673; Sat, 13 Sep 2025 01:10:12 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Xu , Igor Mammedov Subject: [PULL 10/61] accel: use atomic accesses for exit_request Date: Sat, 13 Sep 2025 10:08:51 +0200 Message-ID: <20250913080943.11710-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751090427116600 CPU threads write exit_request as a "note to self" that they need to go out to a slow path. This write happens out of the BQL and can be a data race with another threads' cpu_exit(); use atomic accesses consistently. While at it, change the source argument from int ("1") to bool ("true"). Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Xu Reviewed-by: Igor Mammedov Signed-off-by: Paolo Bonzini --- include/hw/core/cpu.h | 9 +++++++++ accel/kvm/kvm-all.c | 2 +- accel/tcg/tcg-accel-ops-mttcg.c | 2 +- accel/tcg/tcg-accel-ops-rr.c | 4 ++-- hw/ppc/spapr_hcall.c | 6 +++--- target/i386/kvm/kvm.c | 6 +++--- target/i386/nvmm/nvmm-accel-ops.c | 2 +- target/i386/nvmm/nvmm-all.c | 2 +- target/i386/whpx/whpx-all.c | 6 +++--- 9 files changed, 24 insertions(+), 15 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 8b57bcd92c9..338757e5254 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -422,6 +422,15 @@ struct qemu_work_item; * valid under cpu_list_lock. * @created: Indicates whether the CPU thread has been successfully create= d. * @halt_cond: condition variable sleeping threads can wait on. + * @exit_request: Another thread requests the CPU to call qemu_wait_io_eve= nt(). + * Should be read only by CPU thread with load-acquire, to synchronize w= ith + * other threads' store-release operation. + * + * In some cases, accelerator-specific code will write exit_request from + * within the same thread, to "bump" the effect of qemu_cpu_kick() to + * the one provided by cpu_exit(), especially when processing interrupt + * flags. In this case, the write and read happen in the same thread + * and the write therefore can use qemu_atomic_set(). * @interrupt_request: Indicates a pending interrupt request. * Only used by system emulation. * @halted: Nonzero if the CPU is in suspended state. diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index bd9e5e3886d..e4167d94b4f 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3730,7 +3730,7 @@ int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void = *addr) have_sigbus_pending =3D true; pending_sigbus_addr =3D addr; pending_sigbus_code =3D code; - qatomic_set(&cpu->exit_request, 1); + qatomic_set(&cpu->exit_request, true); return 0; #else return 1; diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index 337b993d3da..b12b7a36b5d 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -85,7 +85,7 @@ static void *mttcg_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 /* process any pending work */ - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); =20 do { if (cpu_can_run(cpu)) { diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index e8b0e370a8d..d13e0d8b44d 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -212,7 +212,7 @@ static void *rr_cpu_thread_fn(void *arg) cpu =3D first_cpu; =20 /* process any pending work */ - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); =20 while (1) { /* Only used for icount_enabled() */ @@ -293,7 +293,7 @@ static void *rr_cpu_thread_fn(void *arg) /* Does not need a memory barrier because a spurious wakeup is oka= y. */ qatomic_set(&rr_current_cpu, NULL); =20 - if (cpu && cpu->exit_request) { + if (cpu && qatomic_read(&cpu->exit_request)) { qatomic_set_mb(&cpu->exit_request, 0); } =20 diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 1e936f35e44..51875e32a09 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -509,7 +509,7 @@ static target_ulong h_cede(PowerPCCPU *cpu, SpaprMachin= eState *spapr, if (!cpu_has_work(cs)) { cs->halted =3D 1; cs->exception_index =3D EXCP_HLT; - cs->exit_request =3D 1; + qatomic_set(&cs->exit_request, true); ppc_maybe_interrupt(env); } =20 @@ -531,7 +531,7 @@ static target_ulong h_confer_self(PowerPCCPU *cpu) } cs->halted =3D 1; cs->exception_index =3D EXCP_HALTED; - cs->exit_request =3D 1; + qatomic_set(&cs->exit_request, true); ppc_maybe_interrupt(&cpu->env); =20 return H_SUCCESS; @@ -624,7 +624,7 @@ static target_ulong h_confer(PowerPCCPU *cpu, SpaprMach= ineState *spapr, } =20 cs->exception_index =3D EXCP_YIELD; - cs->exit_request =3D 1; + qatomic_set(&cs->exit_request, true); cpu_loop_exit(cs); =20 return H_SUCCESS; diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 8420c4090ef..34e74f24470 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -5486,10 +5486,10 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run= *run) if (cpu_test_interrupt(cpu, CPU_INTERRUPT_INIT | CPU_INTERRUPT_TPR)) { if (cpu_test_interrupt(cpu, CPU_INTERRUPT_INIT) && !(env->hflags & HF_SMM_MASK)) { - qatomic_set(&cpu->exit_request, 1); + qatomic_set(&cpu->exit_request, true); } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_TPR)) { - qatomic_set(&cpu->exit_request, 1); + qatomic_set(&cpu->exit_request, true); } } =20 @@ -5604,7 +5604,7 @@ int kvm_arch_process_async_events(CPUState *cs) if (env->exception_nr =3D=3D EXCP08_DBLE) { /* this means triple fault */ qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); - cs->exit_request =3D 1; + qatomic_set(&cs->exit_request, true); return 0; } kvm_queue_exception(env, EXCP12_MCHK, 0, 0); diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-acce= l-ops.c index 3799260bbde..86869f133e9 100644 --- a/target/i386/nvmm/nvmm-accel-ops.c +++ b/target/i386/nvmm/nvmm-accel-ops.c @@ -77,7 +77,7 @@ static void nvmm_start_vcpu_thread(CPUState *cpu) */ static void nvmm_kick_vcpu_thread(CPUState *cpu) { - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); cpus_kick_thread(cpu); } =20 diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index 10bd51d9b59..7e36c42fbb4 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -414,7 +414,7 @@ nvmm_vcpu_pre_run(CPUState *cpu) * or commit pending TPR access. */ if (cpu_test_interrupt(cpu, CPU_INTERRUPT_INIT | CPU_INTERRUPT_TPR)) { - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); } =20 if (!has_event && cpu_test_interrupt(cpu, CPU_INTERRUPT_NMI)) { diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 2106c29c3a0..00fb7e23100 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1489,10 +1489,10 @@ static void whpx_vcpu_pre_run(CPUState *cpu) if (cpu_test_interrupt(cpu, CPU_INTERRUPT_INIT | CPU_INTERRUPT_TPR)) { if (cpu_test_interrupt(cpu, CPU_INTERRUPT_INIT) && !(env->hflags & HF_SMM_MASK)) { - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); } if (cpu_test_interrupt(cpu, CPU_INTERRUPT_TPR)) { - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); } } =20 @@ -1539,7 +1539,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu) if (tpr !=3D vcpu->tpr) { vcpu->tpr =3D tpr; reg_values[reg_count].Reg64 =3D tpr; - cpu->exit_request =3D 1; + qatomic_set(&cpu->exit_request, true); reg_names[reg_count] =3D WHvX64RegisterCr8; reg_count +=3D 1; } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751675; cv=none; d=zohomail.com; s=zohoarc; b=eb2O/9tOPqEL1c2Yye6nh7YbyuNgqz3LWSz/8+oyxPGGoqvThbWAaSJVm17wHtreD2DjIZs1Gp1pNxsyaTV1326PDovTavIIYCDWG9e7XbC60meZpIBvUi/WjQLBbyAal0hZeZ3OhUtDPDEejBnXH6+zAmLSJfqmMhqgUNuGYq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751675; 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=NNOluOBJNIDynOX/SeCHp/9Wa5GX8lq9yKO/uaKZQRg=; b=ErxDAguAw1uFWhP8Ok6/Accud1WA2rv2pXNwE4l22KtE83uk08ZYt4+9LFzFXxOBjs14cIIzDvvjO5DgXVmbMH9HosEOga4gGYUV+uJXaG4fk3r3JoWkkCCldjBI/2G8ZGmAVNzmaMTg7tSZwQtkMCMuJpTIZZAvAw8EsnjAI98= 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 1757751675528867.2237320526983; Sat, 13 Sep 2025 01:21:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLL0-0005oC-2o; Sat, 13 Sep 2025 04:10: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 1uxLKy-0005nM-2j for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:24 -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 1uxLKw-0004tC-48 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:23 -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-360-6YfGSwZ8PmGTqjzypffRTA-1; Sat, 13 Sep 2025 04:10:18 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45de18e7eccso14184695e9.0 for ; Sat, 13 Sep 2025 01:10:18 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7b42bdc5asm4039913f8f.21.2025.09.13.01.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751021; 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=NNOluOBJNIDynOX/SeCHp/9Wa5GX8lq9yKO/uaKZQRg=; b=A1ZHOMFUFk2KoX2+0plBQ37egB0BrpuijryVvIPCQStXK/W0tzCj4EGgGjX/cfH/n+Z3vW u0L/6zjvNCVw7AhrxY9gdCLrNidFgdHuFNo3eG/Gj7BhGjJvUhLAzNJH1TwCNsN8+Rb/gQ kZiyGKEXkx44Wfdj7K1T9jzeNZBp2Mk= X-MC-Unique: 6YfGSwZ8PmGTqjzypffRTA-1 X-Mimecast-MFC-AGG-ID: 6YfGSwZ8PmGTqjzypffRTA_1757751017 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751016; x=1758355816; 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=NNOluOBJNIDynOX/SeCHp/9Wa5GX8lq9yKO/uaKZQRg=; b=eq+r29Hq/IZi/9me/O+IiWkqhUEjWhtk9Uar09Mb5ofggoELWe4GzMa2mUs/oQuwuI p3LPqC4dSkHUpYeuw8JlhiQ8EU5HKZkwLpbAIs0WZFUbst8rsfsZQNoLqoYWmv1dIjYY 7385BkTLZ8rGwJEHGv8KD9npLF3epfYy3qpe4imAPWVasWvxibqaFPsq5fZT7k5BlwCv NSizxYXWNtcBW1vhu+dGA3zXs8wUWIkwKhHfHfcIQVPN08L23eSMC06QveOkR3DbkMmw NZmSc5YZ3Yxn8cZzulrz2tMLmSOiFuNkMooxENYmh7Fx2KCKZipRJ11Z2G8vaFULZGS2 YwDw== X-Gm-Message-State: AOJu0YyLA8U4VyAoizTOgOkobySZWthoOoxGKJ1y8nl74Kqp/ajLwBHM GAvfAO6OqJWuJl8ZG5/qsNKKpA25vhsj3D5rgMMgfKF1PWbj0vYL3/a6xdiYzOAT96yqG5ctxBz k8ximtj+cAoOvTfaGYouXULukhiRJ/i6Q0RgvEcEXmZn3OxXIZ9uZnV5DPMy0Ksbh6SM19pw9MD xN+BqpVl9W6p7zs94AL/pRNPBPMLdn42osya+E5FPN X-Gm-Gg: ASbGncuGUxQXi8JdxsvAKS+EjM/pdaJiuqc51UcwtnUtO02YqVJImweyqR591EDI6DW LYLf/E5No+lIqLM0KNyTKnJHGAYJO34rxpcPS+LYEd0AUmowEONPtlwy5a1LQTgUdplRTkVIvOT zYo9UNhbuskQ7kQZ2HbUREx+OaUqsz8pFCd9IsdJ1dm0aciuj/tYeScVTv1GedED4Jgls/OSVo9 gWW6QdUIzQG37A72x7ajttOftST/mSjuwtslL8C8LsPV9AUr4G6FoQG6stwivdriN3HCqQqdC0e IxcCsBxCuWgQsvl8SYZhH8/fIKoGhTF6aXMgUvXsUe4k0knpQS/G6FjoF8AAEEUyLqC9Awn5SgY iz8khVVl6EMo8NbOoRfqsIwtug5ik+aopW7nGvjPKKQs= X-Received: by 2002:a05:600c:8010:b0:45d:dbf4:888a with SMTP id 5b1f17b1804b1-45f2121abccmr56342345e9.25.1757751016342; Sat, 13 Sep 2025 01:10:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE8mpJxo/fVyhjJxLRC/oiA30SqzskuT4IOxnSkoXq8m4meTRqvSeJbsNS4G0txqNYLhDGpzw== X-Received: by 2002:a05:600c:8010:b0:45d:dbf4:888a with SMTP id 5b1f17b1804b1-45f2121abccmr56341985e9.25.1757751015817; Sat, 13 Sep 2025 01:10:15 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 11/61] accel/tcg: create a thread-kick function for TCG Date: Sat, 13 Sep 2025 10:08:52 +0200 Message-ID: <20250913080943.11710-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751677051116600 Round-robin TCG is calling into cpu_exit() directly. In preparation for making cpu_exit() usable from all accelerators, define a generic thread-kick function for TCG which is used directly in the multi-threaded case, and through CPU_FOREACH in the round-robin case. Use it also for user-mode emulation, and take the occasion to move the implementation to accel/tcg/user-exec.c. Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- docs/devel/tcg-icount.rst | 2 +- accel/tcg/tcg-accel-ops-mttcg.h | 3 --- accel/tcg/tcg-accel-ops.h | 1 + accel/tcg/cpu-exec.c | 6 ++++++ accel/tcg/tcg-accel-ops-mttcg.c | 5 ----- accel/tcg/tcg-accel-ops-rr.c | 2 +- accel/tcg/tcg-accel-ops.c | 2 +- accel/tcg/user-exec.c | 6 ++++++ bsd-user/main.c | 5 ----- linux-user/main.c | 5 ----- 10 files changed, 16 insertions(+), 21 deletions(-) diff --git a/docs/devel/tcg-icount.rst b/docs/devel/tcg-icount.rst index 7df883446a7..a1dcd79e0fd 100644 --- a/docs/devel/tcg-icount.rst +++ b/docs/devel/tcg-icount.rst @@ -37,7 +37,7 @@ translator starts by allocating a budget of instructions = to be executed. The budget of instructions is limited by how long it will be until the next timer will expire. We store this budget as part of a vCPU icount_decr field which shared with the machinery for handling -cpu_exit(). The whole field is checked at the start of every +qemu_cpu_kick(). The whole field is checked at the start of every translated block and will cause a return to the outer loop to deal with whatever caused the exit. =20 diff --git a/accel/tcg/tcg-accel-ops-mttcg.h b/accel/tcg/tcg-accel-ops-mttc= g.h index 8ffa7a9a9fe..5c145cc8595 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.h +++ b/accel/tcg/tcg-accel-ops-mttcg.h @@ -10,9 +10,6 @@ #ifndef TCG_ACCEL_OPS_MTTCG_H #define TCG_ACCEL_OPS_MTTCG_H =20 -/* kick MTTCG vCPU thread */ -void mttcg_kick_vcpu_thread(CPUState *cpu); - /* start an mttcg vCPU thread */ void mttcg_start_vcpu_thread(CPUState *cpu); =20 diff --git a/accel/tcg/tcg-accel-ops.h b/accel/tcg/tcg-accel-ops.h index 6feeb3f3e9b..aecce605d7b 100644 --- a/accel/tcg/tcg-accel-ops.h +++ b/accel/tcg/tcg-accel-ops.h @@ -18,5 +18,6 @@ void tcg_cpu_destroy(CPUState *cpu); int tcg_cpu_exec(CPUState *cpu); void tcg_handle_interrupt(CPUState *cpu, int mask); void tcg_cpu_init_cflags(CPUState *cpu, bool parallel); +void tcg_kick_vcpu_thread(CPUState *cpu); =20 #endif /* TCG_ACCEL_OPS_H */ diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index f838535d111..9241bcadb5f 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -40,6 +40,7 @@ #include "exec/replay-core.h" #include "system/tcg.h" #include "exec/helper-proto-common.h" +#include "tcg-accel-ops.h" #include "tb-jmp-cache.h" #include "tb-hash.h" #include "tb-context.h" @@ -748,6 +749,11 @@ static inline bool cpu_handle_exception(CPUState *cpu,= int *ret) return false; } =20 +void tcg_kick_vcpu_thread(CPUState *cpu) +{ + cpu_exit(cpu); +} + static inline bool icount_exit_request(CPUState *cpu) { if (!icount_enabled()) { diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index b12b7a36b5d..1148ebcaae5 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -123,11 +123,6 @@ static void *mttcg_cpu_thread_fn(void *arg) return NULL; } =20 -void mttcg_kick_vcpu_thread(CPUState *cpu) -{ - cpu_exit(cpu); -} - void mttcg_start_vcpu_thread(CPUState *cpu) { char thread_name[VCPU_THREAD_NAME_SIZE]; diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index d13e0d8b44d..a1d75fd3419 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -43,7 +43,7 @@ void rr_kick_vcpu_thread(CPUState *unused) CPUState *cpu; =20 CPU_FOREACH(cpu) { - cpu_exit(cpu); + tcg_kick_vcpu_thread(cpu); }; } =20 diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c index 9c37266c1e0..1f662a9c745 100644 --- a/accel/tcg/tcg-accel-ops.c +++ b/accel/tcg/tcg-accel-ops.c @@ -206,7 +206,7 @@ static void tcg_accel_ops_init(AccelClass *ac) =20 if (qemu_tcg_mttcg_enabled()) { ops->create_vcpu_thread =3D mttcg_start_vcpu_thread; - ops->kick_vcpu_thread =3D mttcg_kick_vcpu_thread; + ops->kick_vcpu_thread =3D tcg_kick_vcpu_thread; ops->handle_interrupt =3D tcg_handle_interrupt; } else { ops->create_vcpu_thread =3D rr_start_vcpu_thread; diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 66c25fba7dd..3c072fd868f 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -38,6 +38,7 @@ #include "qemu/int128.h" #include "trace.h" #include "tcg/tcg-ldst.h" +#include "tcg-accel-ops.h" #include "backend-ldst.h" #include "internal-common.h" #include "tb-internal.h" @@ -46,6 +47,11 @@ __thread uintptr_t helper_retaddr; =20 //#define DEBUG_SIGNAL =20 +void qemu_cpu_kick(CPUState *cpu) +{ + tcg_kick_vcpu_thread(cpu); +} + /* * Adjust the pc to pass to cpu_restore_state; return the memop type. */ diff --git a/bsd-user/main.c b/bsd-user/main.c index 9ba69642f50..73aae8c3274 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -214,11 +214,6 @@ bool qemu_cpu_is_self(CPUState *cpu) return thread_cpu =3D=3D cpu; } =20 -void qemu_cpu_kick(CPUState *cpu) -{ - cpu_exit(cpu); -} - /* Assumes contents are already zeroed. */ static void init_task_state(TaskState *ts) { diff --git a/linux-user/main.c b/linux-user/main.c index 7b0ccb6fd60..4ddfc9a619c 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -189,11 +189,6 @@ bool qemu_cpu_is_self(CPUState *cpu) return thread_cpu =3D=3D cpu; } =20 -void qemu_cpu_kick(CPUState *cpu) -{ - cpu_exit(cpu); -} - void task_settid(TaskState *ts) { if (ts->ts_tid =3D=3D 0) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751629; cv=none; d=zohomail.com; s=zohoarc; b=j6kEzrviAqYoslwqbgl6dxQEs7QK3GoEWiH7niEbckQHwRiY2qu49M5ACR/nRtXHE/Hrubz1Ck9lvPmC5Kve9QJZFuMH+PvY0tLQVRaGVyIfqkWLUAeaMiy89bwWCgRj91bOro/WRl1cr73ZPd2L/8BUHz3OE+tWCoG7wUK6tlA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751629; 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=OhCG+WyJrPhBH4S92lRWZ920ib0X1m6ZPw+jICRCIIg=; b=BTK3JE+JKgSRGTNl/phI4GR6k6459JGUXoNizlZsnoMBJRCXZj3pO++DPnM7SSH4+iaHiqxm9kWv5Tb0uHLBTi3tAjgvTrbyu2Ik+cx9zn6mz310YkrdoUmzIwzjlzdoRCav4Q4HysxaadTqvqIP96hsbbI4Y1y/RUSUeqZlRs4= 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 1757751629118498.72736083377424; Sat, 13 Sep 2025 01:20:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLL1-0005ol-74; Sat, 13 Sep 2025 04:10:27 -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 1uxLKz-0005o9-Uk for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:25 -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 1uxLKx-0004tc-S4 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:25 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-520-wRG_nrDzNY2vxp0jXm9pcA-1; Sat, 13 Sep 2025 04:10:21 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45b99c18484so9752045e9.1 for ; Sat, 13 Sep 2025 01:10:20 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e016b5c5dsm93721635e9.14.2025.09.13.01.10.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751022; 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=OhCG+WyJrPhBH4S92lRWZ920ib0X1m6ZPw+jICRCIIg=; b=CVBKb/ds38ETLMqAvz75rHe5AW75KT+s0lmB8aQnHCTXolb1gazN3bpWSyEdpOc/TGD3PQ lxqNlabDFhpL6Bu12VkYsJ4jYL9iX9nW1WVOS/ynZwPRq3TXeI1aELf6xhrVjoWlUqAla8 A6JJsq3VznxjHrx7d8gXMgamYX5MT7Y= X-MC-Unique: wRG_nrDzNY2vxp0jXm9pcA-1 X-Mimecast-MFC-AGG-ID: wRG_nrDzNY2vxp0jXm9pcA_1757751020 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751019; x=1758355819; 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=OhCG+WyJrPhBH4S92lRWZ920ib0X1m6ZPw+jICRCIIg=; b=xB+2l3V25ZQPgZfXkYW5fYejTMDctkts2EtauZwjtY6kGpgpKwyoveKH2ipSwzD1NP Zpaxpc6ZSpk8OuzH0Bf44Yqx1mI4NZmy7z8JRmBwnZ5sBi28lOavc2kDxRU0k5qBu7BA I5M4uVH++TvUzT6ANHIzfcPs2GzA5tAcAQp70cwnvLPPPga9f8AZxEYdWmnP4d/6m9BY Xm/N+YYFcs70KGnR+2fgoOYFAyI3DKDy6he+EW48WN4uiqOGr599n5E/OTB0PZR9OYAm eat1WrZltljdY1IDm+er/4cXY263fJ0oEUaZiJknk28C9fhmgxJrzdO+gTc+Cri5EGQI GY+Q== X-Gm-Message-State: AOJu0Yx/VeVqLn127YZ6NKS2RNxS/LfyTMazSxH4YBSqTbCdeNNatgtZ xIvSU/i+pAyiT0kqA6215Ba3ALtk8FRqM5KBNsanDUDfryNlHLXG90bU0EjhOp3/9GjEEXzWYsA cJNWIMJNIABXBodD02ZznvMwe+vvqnS2e5wWIW7UbLYYT+xTaLjr420/raLrbKNbbVAkruABH9A tPJt2CTxm0WCx4s5WqDIhZuvLcDH98GEFsue1gxv2f X-Gm-Gg: ASbGncuylxE2Doxh7elPcOaaIwFcHHU/1Tff0IBSbiQrurWTz8zG8KQ/zfwF9wC+bHx IfSEAn0W1UHCU1GcDEHTVd3xMKVZldy8ZU1zI0VIXNg/buPWwyShz5Tep5H9hfjlz0y6ETd+uEb wqWa5ik3ouXK2Vsj3z0qUtWq9sJkRwRp9z9LqVXkUi5VqrwaltRS0LRJ0uS+ORXo34JBWd8YSYy DdveWUU+uf5IfRzOlXXEUmGFNnX4uRh36PjwmQMIoTeeGq857BMkj+1oeH4rnpdc+Hdtqx2j/mu Tzhn07HVwEby1o7yFLYWNiq1xhKZ+vW3VMmJB0CEN6nJK0eX4F3KDhmZjGr4QXB4FMR89Yuw3Wm Gg5lFFcULp3h3lQ+rlvEKkFZN+IW5zmpYWEsWuKGJqgA= X-Received: by 2002:a05:600c:6044:b0:456:29da:bb25 with SMTP id 5b1f17b1804b1-45f211f8e90mr34817255e9.19.1757751018885; Sat, 13 Sep 2025 01:10:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGtiew4Zhoaexs0obWQaITl9KRQDaZU7Lc9HmMnazY0lKjJKaIM6LTlHs05J5ThyRhkjXtR0g== X-Received: by 2002:a05:600c:6044:b0:456:29da:bb25 with SMTP id 5b1f17b1804b1-45f211f8e90mr34817055e9.19.1757751018491; Sat, 13 Sep 2025 01:10:18 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , Richard Henderson Subject: [PULL 12/61] accel/tcg: inline cpu_exit() Date: Sat, 13 Sep 2025 10:08:53 +0200 Message-ID: <20250913080943.11710-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751630476116600 Content-Type: text/plain; charset="utf-8" Right now, cpu_exit() is not usable from all accelerators because it includes a TCG-specific thread kick. In fact, cpu_exit() doubles as the TCG thread-kick via tcg_kick_vcpu_thread(). In preparation for changing that, inline cpu_exit() into tcg_kick_vcpu_thread(). The direction of the calls can then be reversed, with an accelerator-independent cpu_exit() calling into qemu_vcpu_kick() rather than the opposite. Reviewed-by: Igor Mammedov Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- accel/tcg/cpu-exec.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index 9241bcadb5f..3ae545e888f 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -751,7 +751,16 @@ static inline bool cpu_handle_exception(CPUState *cpu,= int *ret) =20 void tcg_kick_vcpu_thread(CPUState *cpu) { - cpu_exit(cpu); + /* + * Ensure cpu_exec will see the reason why the exit request was set. + * FIXME: this is not always needed. Other accelerators instead + * read interrupt_request and set exit_request on demand from the + * CPU thread; see kvm_arch_pre_run() for example. + */ + qatomic_store_release(&cpu->exit_request, true); + + /* Ensure cpu_exec will see the exit request after TCG has exited. */ + qatomic_store_release(&cpu->neg.icount_decr.u16.high, -1); } =20 static inline bool icount_exit_request(CPUState *cpu) @@ -780,7 +789,8 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, /* Clear the interrupt flag now since we're processing * cpu->interrupt_request and cpu->exit_request. * Ensure zeroing happens before reading cpu->exit_request or - * cpu->interrupt_request (see also smp_wmb in cpu_exit()) + * cpu->interrupt_request (see also store-release in + * tcg_kick_vcpu_thread()) */ qatomic_set_mb(&cpu->neg.icount_decr.u16.high, 0); =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751299; cv=none; d=zohomail.com; s=zohoarc; b=nbrE+so1kUrZul9nLmqPmfb3tfUcbl7JJAX7bdBD/MX+4TIHSTbaPhjqCUNAPJ++gW49PcwuG1AJ2i85f15MfvHfDmq9rWTTpKfbASA056/qQn1eNqCbqY5r4zkPk6NDBer6J7+YmNP/EdPONFDU3gl4Lf0lkCrq5oOD8KpDbtg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751299; 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=7joNFhlKCq/65i2RHs9pqNw9LGInItxc9SYTL3XBLRM=; b=J8YURhFXjzobXQidxySAp3Z53v3UQr59Jb47d3yqvER/gOD5oyj5N8dj0DPrrX3i6c69KBZY10ahNvxy4XIkmyjuRANjBCzBsEHX13Bhw0wUzLurZNO5cGAnI/9Cj66Ptc7fnXeaYzbQiToJFkyl4UHy3urAxkBQgXJu506a6jE= 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 175775129992684.56616555997823; Sat, 13 Sep 2025 01:14:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLL3-0005pC-Lt; Sat, 13 Sep 2025 04:10:29 -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 1uxLL2-0005oz-AM for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:28 -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 1uxLL0-0004uc-Mf for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:28 -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-651-DHkW0MsMO4yIi5viwmdLrw-1; Sat, 13 Sep 2025 04:10:23 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e760a261caso1453091f8f.1 for ; Sat, 13 Sep 2025 01:10:23 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e017b4222sm93412245e9.20.2025.09.13.01.10.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751025; 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=7joNFhlKCq/65i2RHs9pqNw9LGInItxc9SYTL3XBLRM=; b=SxBdAWOECa6DZyWY8tDS5aUUqjvics/qg2XT8BM6uv1N9UPKISIAkprr6YOJgAHPfW08d6 bIfMG3QpO24twI7Psne7pvBKxy7aEmB+uFSmp3TOXTRe8oZdIh6GkADSPiEID8BlueSD+g d0dvaSQSqWL0zWNLVaQg4DXkvG80YP4= X-MC-Unique: DHkW0MsMO4yIi5viwmdLrw-1 X-Mimecast-MFC-AGG-ID: DHkW0MsMO4yIi5viwmdLrw_1757751022 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751021; x=1758355821; 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=7joNFhlKCq/65i2RHs9pqNw9LGInItxc9SYTL3XBLRM=; b=ccShqL7oB4aimFV+RsZp5VwHSR3ImllLvf5nwSFwS/pEcfL2T04FRBHk106HdQk2MH udgYIotxQunsB29U8BuvLVPZJmh08lujB8rW+0L+QCJamtHEXYEsF8DWQtlXpFu16kqZ 55QrfzwfiklS2at73WcrxxFvlwS/264doy9cJAdtZYMZdkfVz36VkA6FuHKjhqJ36/2U nQsar5WDO11NMxsG7bnM4pkwy+dek6ztH/D4UIUFjUngtmMIsIaERfXkj9D/Gdq7Jz2V fpQojweBN1lyLJXUMLQGyTf3Y2U7bUmdqsiIZ5ByYHRIL2K2/YZxfsXVH2flln6hIlVk cQdA== X-Gm-Message-State: AOJu0Ywo09LzdgJm+5ZYmGjgY4JFRXOqtuv+mXotKHHJRJ7kx1rw4KYT uw6fU9I7yoZX2ZDk++/qwvPicyG8pGMXhnU+7dpqxU3+V43Jld6nu4JtpzSfZXgVcNdobpSmUDY OH/cs1FBuHrYMcxkr6vxvp2wPsKerdLi7C67SKRMrH8gEp/eRofHZHwIrJ9ddp9ONsXyNyNdllO U8qsmy/+DDCGsHH1NOKO1SqeId7fw2mmmz5+ShyCgM X-Gm-Gg: ASbGncsWV/0xFxJbLwkYHJRM9yWUGmI7rb9HViTIF3NUTbFALg4xVu532bWzm4bDI/z pYoYd9d5xvZttIanQmWE4jCh3x4LVNvCYliM9k6tHnzko1RmQZk/HZuUCI5WyY//vLMcNTjJYBM 7jy6HsfB59VtRJ0u1ntW5auXU3j3PthfUnnuUZ12NaVlwagnQAB9AV85IIFCiymTWYW12MuqNMA LdLjtUwJb0P5jQpOnoIkiVET7FNFKtNTCpvTHwjMhh+UCvmJa5h2S8NWnfMGpTeNtIwRF7XoPJw MkyZ4KMBmgRIFgLZcNfPX79YNvL+LdcmKq4CCcDLgUMAjZyQmQoUclGr0ERZal4PxLGSY/BBxBL hnIGnehFq54uhq/bdC0o0t23dNK/zd7SX0IPo6dRHeqE= X-Received: by 2002:a05:6000:24c4:b0:3e4:9dab:3f4d with SMTP id ffacd0b85a97d-3e7659f40a9mr5539840f8f.48.1757751021154; Sat, 13 Sep 2025 01:10:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHxhXPaaEG3aKQzOcQWS2zznurj+bzb5hO0eV1VnvEblalzXw+efeRVx3NTNuv8aNoJK31K9g== X-Received: by 2002:a05:6000:24c4:b0:3e4:9dab:3f4d with SMTP id ffacd0b85a97d-3e7659f40a9mr5539806f8f.48.1757751020690; Sat, 13 Sep 2025 01:10:20 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Igor Mammedov Subject: [PULL 13/61] cpus: remove TCG-ism from cpu_exit() Date: Sat, 13 Sep 2025 10:08:54 +0200 Message-ID: <20250913080943.11710-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751300603116600 Now that TCG has its own kick function, make cpu_exit() do the right kick for all accelerators. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Reviewed-by: Igor Mammedov Signed-off-by: Paolo Bonzini --- hw/core/cpu-common.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c index 42463e6258d..41a339903ca 100644 --- a/hw/core/cpu-common.c +++ b/hw/core/cpu-common.c @@ -76,9 +76,7 @@ void cpu_exit(CPUState *cpu) { /* Ensure cpu_exec will see the reason why the exit request was set. = */ qatomic_store_release(&cpu->exit_request, true); - /* Ensure cpu_exec will see the exit request after TCG has exited. */ - smp_wmb(); - qatomic_set(&cpu->neg.icount_decr.u16.high, -1); + qemu_cpu_kick(cpu); } =20 static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, in= t reg) --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751844; cv=none; d=zohomail.com; s=zohoarc; b=n9iVKbRKSsi2p6h+zOkJFMTv+Q3OAcqGqrDwcMt28iqbLVBnEDoa6aByq7513s358XQkd2+aqHpOzjmwGoqiG8IJtDhPDwGD+3GbSBFQkGmZTgDYlKShNzmTzku7NXk5G4bGfTIch7xGY7mXElvzc3NKR5LUteVCS+458ukq1gg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751844; 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=D1MoLYhidqPz8BBKnWQatNMR5EUdXV0h1XydX4W6PIs=; b=C3NtHqWAAXmj9kO2/AfpfsgI608Dse2Kzoj3cX61BtZmRuYNhBxvZIjMQilmyJYuWrOqnChQZCWhElAQ6fGMa6dGJEIMeRTUOF4joJnYbYbtuj8xE2ocxGO/PGimiwX7LO1x8yFyAZxdJ99UcFbgsmb1IREVSQgOwkXRa02xlgI= 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 175775184452934.09950287628783; Sat, 13 Sep 2025 01:24:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLL5-0005pj-8I; Sat, 13 Sep 2025 04:10:31 -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 1uxLL4-0005pG-1e for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:30 -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 1uxLL1-0004v4-Ue for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:29 -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-594-LmVu5uJfOtqqrnNFhYmadg-1; Sat, 13 Sep 2025 04:10:25 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3e26b5e3f41so1289269f8f.1 for ; Sat, 13 Sep 2025 01:10:25 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607cd691sm9654459f8f.32.2025.09.13.01.10.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751027; 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=D1MoLYhidqPz8BBKnWQatNMR5EUdXV0h1XydX4W6PIs=; b=Xf5WeBZZZ+NL3IFGv1e9hlLKp2S8xXfC8eIep5QBvi8FW5vGoxJ5DofROlVDea+iOXcM6+ xDpTI8BqLWaBvnPSqP5PXhH22CHPEvjeoMf7UdSJZ8nmRnKhaS255FqT9qFnTFMeM6RSds gAYg5KdSXqydR0TLMXf39NivWd05pwg= X-MC-Unique: LmVu5uJfOtqqrnNFhYmadg-1 X-Mimecast-MFC-AGG-ID: LmVu5uJfOtqqrnNFhYmadg_1757751025 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751024; x=1758355824; 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=D1MoLYhidqPz8BBKnWQatNMR5EUdXV0h1XydX4W6PIs=; b=YEQ3P2oJ4gjqBaHzSrnKJOxjAY9GgHXudNuD2WNdVZQChgk+IqpBmKZtm3TErgxWfa S73wA6jx3ld8wUxv+TMyo65umZvxMV8T7gT82ctj+h14+eZ20BzLKQ5KSanR6AiJCDD/ vJA8oS01ag6g9veJgnBjK1xDu5Nh4I0OUtYC+99JsCt68Y6ryJCW4XQ0QOLaZwZ3DYdD JQ6V5rg0TLVSzVQB/pcFQPN+n9ZBHnD6sLS59KnQr2O/JIjSzGEBgu/EHHPuTi1Se60k si9MuiXUDSrlK721au6dtoVWJpJRcpuJfyUCfWMqIXwJfAEb4Ga5kYexL1Blel3tToK8 WYsg== X-Gm-Message-State: AOJu0Yw+5B9XjorohsjVgwgTidLHKw2QetX+KuFQRkYTBkSMrQiIBTmX dsZwq77V0nGQghn/hjwHPp+rVpMcWOzhJ2APbcgmKqYq15JEfPUXzuaeH92ikXlXjA4CX241Nyh UmyCafq7XjNgTD/12vSsP7PadgPbGkqt5jDyDPdJkfu6TicQXTTyVjUQfJESVawgHVWyWo/NMVE f3OqKhsO0Rk3GGHs1uAqnjgUyIN4lnH1pQgh8hzPTN X-Gm-Gg: ASbGncvmjDVq2Rfl0c5VR3l+YddNimZc00rZC4NTZticw3l/ruHU3Qrx9pxgI5tkigw X67xYJGltpqSXsVWM0CoFz9Wfp9pbiNHoQMNdTIVNM8x2IXyMUpu4rdOctiAyChYZovkATYXco5 Nz/glLhLVnXm84ox+21izgz6jLNZlahcNY3nXFqJsCKobWMTTCx/V5fTV/GCkgkRP77arA1GwE8 5udhSoQS/1zHneWKEkb5eBLa6DiwdXzjFUydL/mcPYEdEF+bI2VOmg5WQCiQtMI4w/xokTg45Wn Lg2OQE29UP/DAkGD1Sh+24a5BT5h6eep5py3TYi5m30eqDNU6sM1NyI+Jjy7UfuKyxVKxqI3DUw y7bBqlfAZitf0U4LZZAvaNpyGzE5Fj5SU0Sina7IZyO8= X-Received: by 2002:a05:6000:230c:b0:3e7:41bf:e5f2 with SMTP id ffacd0b85a97d-3e76578240amr6152383f8f.15.1757751024113; Sat, 13 Sep 2025 01:10:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG5jVnKifYFbc1+yC1k8rKk62hDNy4womPMudFMg+0N0OGemAw/o69LFQCGQdQN5C1mtLAm+g== X-Received: by 2002:a05:6000:230c:b0:3e7:41bf:e5f2 with SMTP id ffacd0b85a97d-3e76578240amr6152336f8f.15.1757751023623; Sat, 13 Sep 2025 01:10:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PULL 14/61] cpus: properly kick CPUs out of inner execution loop Date: Sat, 13 Sep 2025 10:08:55 +0200 Message-ID: <20250913080943.11710-15-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751845284116600 Content-Type: text/plain; charset="utf-8" Now that cpu_exit() actually kicks all accelerators, use it whenever the message to another thread is processed in qemu_wait_io_event(). Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- cpu-common.c | 3 ++- hw/ppc/ppc.c | 2 ++ hw/ppc/spapr_hcall.c | 7 +++---- hw/ppc/spapr_rtas.c | 2 +- replay/replay-events.c | 3 ++- system/cpu-timers.c | 6 +++--- system/cpus.c | 5 +++-- target/arm/tcg/mte_helper.c | 2 +- target/i386/kvm/hyperv.c | 1 - 9 files changed, 17 insertions(+), 14 deletions(-) diff --git a/cpu-common.c b/cpu-common.c index ef5757d23bf..152661df8e9 100644 --- a/cpu-common.c +++ b/cpu-common.c @@ -137,7 +137,8 @@ static void queue_work_on_cpu(CPUState *cpu, struct qem= u_work_item *wi) wi->done =3D false; qemu_mutex_unlock(&cpu->work_mutex); =20 - qemu_cpu_kick(cpu); + /* exit the inner loop and reach qemu_wait_io_event_common(). */ + cpu_exit(cpu); } =20 void do_run_on_cpu(CPUState *cpu, run_on_cpu_func func, run_on_cpu_data da= ta, diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 43d0d0e7553..3e436c70413 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -190,6 +190,7 @@ static void ppc970_set_irq(void *opaque, int pin, int l= evel) if (level) { trace_ppc_irq_cpu("stop"); cs->halted =3D 1; + cpu_exit(cs); } else { trace_ppc_irq_cpu("restart"); cs->halted =3D 0; @@ -386,6 +387,7 @@ static void ppc40x_set_irq(void *opaque, int pin, int l= evel) if (level) { trace_ppc_irq_cpu("stop"); cs->halted =3D 1; + cpu_exit(cs); } else { trace_ppc_irq_cpu("restart"); cs->halted =3D 0; diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 51875e32a09..c594d4b916e 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -509,8 +509,8 @@ static target_ulong h_cede(PowerPCCPU *cpu, SpaprMachin= eState *spapr, if (!cpu_has_work(cs)) { cs->halted =3D 1; cs->exception_index =3D EXCP_HLT; - qatomic_set(&cs->exit_request, true); ppc_maybe_interrupt(env); + cpu_exit(cs); } =20 return H_SUCCESS; @@ -531,8 +531,8 @@ static target_ulong h_confer_self(PowerPCCPU *cpu) } cs->halted =3D 1; cs->exception_index =3D EXCP_HALTED; - qatomic_set(&cs->exit_request, true); ppc_maybe_interrupt(&cpu->env); + cpu_exit(cs); =20 return H_SUCCESS; } @@ -624,8 +624,7 @@ static target_ulong h_confer(PowerPCCPU *cpu, SpaprMach= ineState *spapr, } =20 cs->exception_index =3D EXCP_YIELD; - qatomic_set(&cs->exit_request, true); - cpu_loop_exit(cs); + cpu_exit(cs); =20 return H_SUCCESS; } diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 78309dbb09d..143bc8c3794 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -221,7 +221,7 @@ static void rtas_stop_self(PowerPCCPU *cpu, SpaprMachin= eState *spapr, cs->halted =3D 1; ppc_store_lpcr(cpu, env->spr[SPR_LPCR] & ~pcc->lpcr_pm); kvmppc_set_reg_ppc_online(cpu, 0); - qemu_cpu_kick(cs); + cpu_exit(cs); } =20 static void rtas_ibm_suspend_me(PowerPCCPU *cpu, SpaprMachineState *spapr, diff --git a/replay/replay-events.c b/replay/replay-events.c index 8959da9f1fa..a96e47e7740 100644 --- a/replay/replay-events.c +++ b/replay/replay-events.c @@ -118,7 +118,8 @@ void replay_add_event(ReplayAsyncEventKind event_kind, =20 g_assert(replay_mutex_locked()); QTAILQ_INSERT_TAIL(&events_list, event, events); - qemu_cpu_kick(first_cpu); + /* Kick the TCG thread out of tcg_cpu_exec(). */ + cpu_exit(first_cpu); } =20 void replay_bh_schedule_event(QEMUBH *bh) diff --git a/system/cpu-timers.c b/system/cpu-timers.c index cb35fa62b8a..9919b46230f 100644 --- a/system/cpu-timers.c +++ b/system/cpu-timers.c @@ -246,14 +246,14 @@ void qemu_timer_notify_cb(void *opaque, QEMUClockType= type) =20 if (qemu_in_vcpu_thread()) { /* - * A CPU is currently running; kick it back out to the + * A CPU is currently running; send it out of the * tcg_cpu_exec() loop so it will recalculate its * icount deadline immediately. */ - qemu_cpu_kick(current_cpu); + cpu_exit(current_cpu); } else if (first_cpu) { /* - * qemu_cpu_kick is not enough to kick a halted CPU out of + * cpu_exit() is not enough to kick a halted CPU out of * qemu_tcg_wait_io_event. async_run_on_cpu, instead, * causes cpu_thread_is_idle to return false. This way, * handle_icount_deadline can run. diff --git a/system/cpus.c b/system/cpus.c index 9bfbe2b0607..bb13942cbb7 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -604,7 +604,7 @@ void cpu_pause(CPUState *cpu) qemu_cpu_stop(cpu, true); } else { cpu->stop =3D true; - qemu_cpu_kick(cpu); + cpu_exit(cpu); } } =20 @@ -644,6 +644,7 @@ void pause_all_vcpus(void) =20 while (!all_vcpus_paused()) { qemu_cond_wait(&qemu_pause_cond, &bql); + /* FIXME: is this needed? */ CPU_FOREACH(cpu) { qemu_cpu_kick(cpu); } @@ -672,7 +673,7 @@ void cpu_remove_sync(CPUState *cpu) { cpu->stop =3D true; cpu->unplug =3D true; - qemu_cpu_kick(cpu); + cpu_exit(cpu); bql_unlock(); qemu_thread_join(cpu->thread); bql_lock(); diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index 0efc18a181e..302e899287c 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -591,7 +591,7 @@ static void mte_async_check_fail(CPUARMState *env, uint= 64_t dirty_ptr, * which is rather sooner than "normal". But the alternative * is waiting until the next syscall. */ - qemu_cpu_kick(env_cpu(env)); + cpu_exit(env_cpu(env)); #endif } =20 diff --git a/target/i386/kvm/hyperv.c b/target/i386/kvm/hyperv.c index 9865120cc43..f7a81bd2700 100644 --- a/target/i386/kvm/hyperv.c +++ b/target/i386/kvm/hyperv.c @@ -81,7 +81,6 @@ int kvm_hv_handle_exit(X86CPU *cpu, struct kvm_hyperv_exi= t *exit) * necessary because memory hierarchy is being changed */ async_safe_run_on_cpu(CPU(cpu), async_synic_update, RUN_ON_CPU_NUL= L); - cpu_exit(CPU(cpu)); =20 return EXCP_INTERRUPT; case KVM_EXIT_HYPERV_HCALL: { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751172; cv=none; d=zohomail.com; s=zohoarc; b=ZjKNTU6EbmdbDiL9Zvsx5MtcYtrYbU7wcNJAN38Y4nod8vjz9z2NcrDp0CiyEUSJ/ES8Xgp72KwXu0cmTxCRn8sqKZa15qffyiuJdDzUGUoSu2LGhJnlIbSLpiBXP78/s0t4Y/3ONKy3iuxyusb2lLERvUlvEiacEyzsHEVsvdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751172; 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=8h4+7Lkwx28IEP6uMxdt6njKNuUBD+y+jvC7eFNAW/g=; b=EU0VbJ8fzQeCTL26otkneS1zxbg+7xXPk4Fp8zNvsV/VntULlh+CVZ9bUnrGhMO7HOG9Jy0A+jLpRrde+Of773V8dCzl8GxcMdFukgiuYz0d7mFcfnwSt/goqtmJrYmGxy/SHn7MgE1vWnMjbhuGVIZCj01QOmrCa/dMgO3bRiM= 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 1757751172340780.6951519559357; Sat, 13 Sep 2025 01:12:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLL8-0005qj-5u; Sat, 13 Sep 2025 04:10:34 -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 1uxLL6-0005qQ-R7 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:32 -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 1uxLL4-0004w8-Pj for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:32 -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-663-INSFagyZOjqhK9KFHXGpcg-1; Sat, 13 Sep 2025 04:10:28 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3df07c967e9so1754603f8f.2 for ; Sat, 13 Sep 2025 01:10:27 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e01832af1sm50557295e9.3.2025.09.13.01.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751029; 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=8h4+7Lkwx28IEP6uMxdt6njKNuUBD+y+jvC7eFNAW/g=; b=izKs8GJtfy9FhNuc3d3zGUPCyWwRl12fgp8+ZCG4N9t0y3H/A50OapeYxgHJEs2Y0tW9pK E+B/VxmUDBXAh6nhcLfPnT7t/mbvyPniyGKVs3CcfX4II1xFj4g0FBty7ltVfRU2R22zBM JB6ykHyVNxLkDLmVCi01gc7VoggJ6X8= X-MC-Unique: INSFagyZOjqhK9KFHXGpcg-1 X-Mimecast-MFC-AGG-ID: INSFagyZOjqhK9KFHXGpcg_1757751027 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751026; x=1758355826; 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=8h4+7Lkwx28IEP6uMxdt6njKNuUBD+y+jvC7eFNAW/g=; b=ihqG0O5xYXSFZYq/LQAfJG+6QUVqri9AduAZlhMHgAUnSgMvfHzHtYGjj/vFohT/OZ 0PmEcwRGs+RuGJgG5I8TwhWXcb5lDUJMt5odFWw0UvMMGBD1sdM8fZm2tJrY27oOAdC+ A5PfbxPPInjV8Ts9KjsevXHGX+6Hs/4T8yfY6mcLIjp7JMjhWDqLoSPXgo2h2cIXLL8X SoojPEuW76Q7yOfhXRVyo0GNeTh4GE1Z7WbehaSCDUC7wtkuec+zQykUtygOX0TUQisU gH/cgG053zcFc4hE/Sb9Y2A5T9ZxWNtgNV61wU4SAKLllQ6SzbWeON3Ot5wlcv5QrXCX 8iNw== X-Gm-Message-State: AOJu0YzjQ92EUAs2iA3zko6+hUppU0PeudEyydfJyYCvDEzbwlhaNqlr EqOt17Ym73p33sRsXwqkkZERrjsdLUY3o0GKg9Hm928AKljaKrXf0OD4TndVSEgWacRoJ5ON4E9 A794T+h2uJ+HGKXAsgZvkgoBRRYixmkG0rGOgJZwnCC+3Ogp+PafN5muGu3ZaNkXEFeIQ7/c3NV uv7Bwnb4UxIulKTIcFcfoG16XzNeDdR5w6HunFOOrr X-Gm-Gg: ASbGncuVEKORu5nrXZSwVLJuurV7t5G8slEzXHVctz60eI7YcG3kIkW1b9vCq844oeG LGuhl4fRdZBvDv63t+S4V1SRo/fS6ilx3ubeTlfIcy/6pM5NJI3LuxvX8IRJCgq6ee9Vt9GW97U aluWrL4zv7JMn45BMt18m2b9GJpv613d3ZYxZlBM8MDghQxpc60z2fmA8xPy6BTGGHmkTwzA6RV dZvpg712MpJrKEDyNoMkkX5UR95mf5ywzCwIpeoWWVQibvvtyHEQkGvcu9C0ra3GG72cr74HhZO xJW91KlwLmpwvarrM7AD1wlgAWL2dFNgS7fUbQ/a4iyrsmFlyC54wJ0MqvfsdRlHbEFXPaM/7u7 szL2iGBqzDkGPz5DRnkzMsCUPqdpwjj0NaKvrm6Qe7IY= X-Received: by 2002:a05:6000:288c:b0:3e7:5f26:f1e3 with SMTP id ffacd0b85a97d-3e765796096mr3990088f8f.19.1757751026403; Sat, 13 Sep 2025 01:10:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHpxdM3VVf0WcGn3ZV7uVS0HVgsMoAaTbcLoj1O+GDTLJ1nMt7MiTzlnId3LnRfVcdh3qAiqQ== X-Received: by 2002:a05:6000:288c:b0:3e7:5f26:f1e3 with SMTP id ffacd0b85a97d-3e765796096mr3990068f8f.19.1757751025900; Sat, 13 Sep 2025 01:10:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Richard Henderson Subject: [PULL 15/61] treewide: rename qemu_wait_io_event/qemu_wait_io_event_common Date: Sat, 13 Sep 2025 10:08:56 +0200 Message-ID: <20250913080943.11710-16-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751173210116600 Content-Type: text/plain; charset="utf-8" Do so before extending it to the user-mode emulators, where there is no such thing as an "I/O thread". Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- include/hw/core/cpu.h | 2 +- include/system/cpus.h | 4 ++-- accel/dummy-cpus.c | 2 +- accel/hvf/hvf-accel-ops.c | 2 +- accel/kvm/kvm-accel-ops.c | 2 +- accel/tcg/tcg-accel-ops-mttcg.c | 2 +- accel/tcg/tcg-accel-ops-rr.c | 4 ++-- cpu-common.c | 2 +- system/cpus.c | 6 +++--- target/i386/nvmm/nvmm-accel-ops.c | 2 +- target/i386/whpx/whpx-accel-ops.c | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 338757e5254..6075be0b59f 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -422,7 +422,7 @@ struct qemu_work_item; * valid under cpu_list_lock. * @created: Indicates whether the CPU thread has been successfully create= d. * @halt_cond: condition variable sleeping threads can wait on. - * @exit_request: Another thread requests the CPU to call qemu_wait_io_eve= nt(). + * @exit_request: Another thread requests the CPU to call qemu_process_cpu= _events(). * Should be read only by CPU thread with load-acquire, to synchronize w= ith * other threads' store-release operation. * diff --git a/include/system/cpus.h b/include/system/cpus.h index 69be6a77a75..4aebec48705 100644 --- a/include/system/cpus.h +++ b/include/system/cpus.h @@ -17,8 +17,8 @@ bool cpu_work_list_empty(CPUState *cpu); bool cpu_thread_is_idle(CPUState *cpu); bool all_cpu_threads_idle(void); bool cpu_can_run(CPUState *cpu); -void qemu_wait_io_event_common(CPUState *cpu); -void qemu_wait_io_event(CPUState *cpu); +void qemu_process_cpu_events_common(CPUState *cpu); +void qemu_process_cpu_events(CPUState *cpu); void cpu_thread_signal_created(CPUState *cpu); void cpu_thread_signal_destroyed(CPUState *cpu); void cpu_handle_guest_debug(CPUState *cpu); diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c index 03cfc0fa01e..225a47c31fd 100644 --- a/accel/dummy-cpus.c +++ b/accel/dummy-cpus.c @@ -57,7 +57,7 @@ static void *dummy_cpu_thread_fn(void *arg) qemu_sem_wait(&cpu->sem); #endif bql_lock(); - qemu_wait_io_event(cpu); + qemu_process_cpu_events(cpu); } while (!cpu->unplug); =20 bql_unlock(); diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c index d488d6afbac..7a27bdadb4f 100644 --- a/accel/hvf/hvf-accel-ops.c +++ b/accel/hvf/hvf-accel-ops.c @@ -198,7 +198,7 @@ static void *hvf_cpu_thread_fn(void *arg) cpu_handle_guest_debug(cpu); } } - qemu_wait_io_event(cpu); + qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 hvf_vcpu_destroy(cpu); diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c index b709187c7d7..65a7f76a69a 100644 --- a/accel/kvm/kvm-accel-ops.c +++ b/accel/kvm/kvm-accel-ops.c @@ -53,7 +53,7 @@ static void *kvm_vcpu_thread_fn(void *arg) cpu_handle_guest_debug(cpu); } } - qemu_wait_io_event(cpu); + qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 kvm_destroy_vcpu(cpu); diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index 1148ebcaae5..342917c5f6e 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -113,7 +113,7 @@ static void *mttcg_cpu_thread_fn(void *arg) } } =20 - qemu_wait_io_event(cpu); + qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 tcg_cpu_destroy(cpu); diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index a1d75fd3419..813b313859a 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -117,7 +117,7 @@ static void rr_wait_io_event(void) rr_start_kick_timer(); =20 CPU_FOREACH(cpu) { - qemu_wait_io_event_common(cpu); + qemu_process_cpu_events_common(cpu); } } =20 @@ -203,7 +203,7 @@ static void *rr_cpu_thread_fn(void *arg) /* process any pending work */ CPU_FOREACH(cpu) { current_cpu =3D cpu; - qemu_wait_io_event_common(cpu); + qemu_process_cpu_events_common(cpu); } } =20 diff --git a/cpu-common.c b/cpu-common.c index 152661df8e9..0eb5c7b8f24 100644 --- a/cpu-common.c +++ b/cpu-common.c @@ -137,7 +137,7 @@ static void queue_work_on_cpu(CPUState *cpu, struct qem= u_work_item *wi) wi->done =3D false; qemu_mutex_unlock(&cpu->work_mutex); =20 - /* exit the inner loop and reach qemu_wait_io_event_common(). */ + /* exit the inner loop and reach qemu_process_cpu_events_common(). */ cpu_exit(cpu); } =20 diff --git a/system/cpus.c b/system/cpus.c index bb13942cbb7..fd804e07327 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -450,7 +450,7 @@ static void qemu_cpu_stop(CPUState *cpu, bool exit) qemu_cond_broadcast(&qemu_pause_cond); } =20 -void qemu_wait_io_event_common(CPUState *cpu) +void qemu_process_cpu_events_common(CPUState *cpu) { qatomic_set_mb(&cpu->thread_kicked, false); if (cpu->stop) { @@ -459,7 +459,7 @@ void qemu_wait_io_event_common(CPUState *cpu) process_queued_cpu_work(cpu); } =20 -void qemu_wait_io_event(CPUState *cpu) +void qemu_process_cpu_events(CPUState *cpu) { bool slept =3D false; =20 @@ -474,7 +474,7 @@ void qemu_wait_io_event(CPUState *cpu) qemu_plugin_vcpu_resume_cb(cpu); } =20 - qemu_wait_io_event_common(cpu); + qemu_process_cpu_events_common(cpu); } =20 void cpus_kick_thread(CPUState *cpu) diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-acce= l-ops.c index 86869f133e9..d066364b989 100644 --- a/target/i386/nvmm/nvmm-accel-ops.c +++ b/target/i386/nvmm/nvmm-accel-ops.c @@ -51,7 +51,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg) while (cpu_thread_is_idle(cpu)) { qemu_cond_wait_bql(cpu->halt_cond); } - qemu_wait_io_event_common(cpu); + qemu_process_cpu_events_common(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 nvmm_destroy_vcpu(cpu); diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-acce= l-ops.c index da58805b1a6..2ca4ee02636 100644 --- a/target/i386/whpx/whpx-accel-ops.c +++ b/target/i386/whpx/whpx-accel-ops.c @@ -51,7 +51,7 @@ static void *whpx_cpu_thread_fn(void *arg) while (cpu_thread_is_idle(cpu)) { qemu_cond_wait_bql(cpu->halt_cond); } - qemu_wait_io_event_common(cpu); + qemu_process_cpu_events_common(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 whpx_destroy_vcpu(cpu); --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751402; cv=none; d=zohomail.com; s=zohoarc; b=fu/kbXpLTLGuxHbr/TpG/O/gDkWATaao/AsGfCBxcg72xb0ZxoNdB8zePes59tpyhytekdF7N5C1s2RqsU3urYZ75R+yGK/F+a7pj4/XHtRjFBgA1cyHj6K+BzPjaXdRKRoVX1S+oFxay4IpmjdzDbJs/Z9NGnLWl3A093vdm4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751402; 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=MLX+lf73T+hkI0mv5GU16nOIJm0KC0+gPanOvDHIci0=; b=RMm85n0td0vKyroyOugieSCB9ft4SHkhhUUHStKX6DKnXyy4psFK+bipqjN0IgXKXq3xiFLkM77xCfMrmLJqRBbFZMby3gwuNNv8ns7QIJBUnVkZEaqDp9H11FCAZJDllVwYVhINmYCQ9iZXcbawbaHMVzqWJeUSFyBqK/eojBs= 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 1757751402922305.47845188531323; Sat, 13 Sep 2025 01:16:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLD-0005sJ-0J; Sat, 13 Sep 2025 04:10:39 -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 1uxLLB-0005rq-E9 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:37 -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 1uxLL9-0004xP-4f for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:37 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-616-5D2cHpTBMFG-VH-eF6Uo8Q-1; Sat, 13 Sep 2025 04:10:31 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45d6c770066so12714115e9.0 for ; Sat, 13 Sep 2025 01:10:31 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e91b2519d9sm188587f8f.22.2025.09.13.01.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751034; 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=MLX+lf73T+hkI0mv5GU16nOIJm0KC0+gPanOvDHIci0=; b=CP2YqLsvmS5QMHDZEhALr91kONxnpDTvaXWq7QJT2BdfFvtKA2KCN3ckSjK6ARpo3vcs78 M+QVnxRui2tTFhLfIIIJwMoeKdJGKWjLfTRbStGbfIRcZT6j2BwXjJb1DdC3z8aYjFwQPi clPKj18cIZN0RfRqGMwvt4aVKrodVCQ= X-MC-Unique: 5D2cHpTBMFG-VH-eF6Uo8Q-1 X-Mimecast-MFC-AGG-ID: 5D2cHpTBMFG-VH-eF6Uo8Q_1757751030 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751029; x=1758355829; 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=MLX+lf73T+hkI0mv5GU16nOIJm0KC0+gPanOvDHIci0=; b=WwxG30FBXKo707Gb+aW3LOvK+CWGlcSS3J38SGe+kpleSe2NBCZqFZ7kHjYLWYJwup xBxKj7ZfweGn15ZIlNSX+IHQyfEiqFUXvNZRuR6Foz7YF8LUn9+WyD8kK+6pMg1hdfqQ z5PsnABeGCyzbHgMvSDrHcSrCtKIT6QuSzqrm+ETgRcLyf8Ht7Vs7QG78Sbyo6XGBGRb 2GwBInbsddfbB/8+0e1TCDLzPJKhcwh9ghovAls0lJM91zbALO2xinnGYSIJGCNWvFod jdWyICbLNLbAUXW8dD86a4uxQbEG8NcDMUY72YRXuiwrjXDDtrGUj3tuRckh+PdWIufB 10vg== X-Gm-Message-State: AOJu0YwAdMFfL/HhbHpLRqgU+RZsEBfYRzzI5NS0YUbIe3RcF5PHHifT RdFbOqpMbk0gM4Eu1VAAAiFq1zi/hed4Q2AZ+qpFEI1KIcKpLjqWml39EvTxvSGT8JK/m0AbgK6 r0fHPC0xDoNx7GNGmzTrwxlNDfVR/1iVENUduCrWbgyZdQkylOHVWfjAFrTZNwS5xwSmV0+OEol pfH/GkIqRvWH2OdCiwteu2j0ziyCWGVN1QMrGkc8L9 X-Gm-Gg: ASbGncvuz1X2T0kg+SCcEi4PMJXvIzV4X3sgJuxSDO5FcQmH7rqZUVitThN2KqMAUop C3q+WDpVY7/TLz9KzFBwsO6F3YUkXFIiFH7+WB7PsTnHznro2ZQ//dwKV7mApSYXPzqkUmYbYbg 0wDcp+PXHvB54wNbe/xa4Q26gBa+niKsg6kZ9HvkGv6wt4kpqwiwc6zPO9ogm5zYFHBhc4Et9C3 rwqDjzKsDgfhc8qQ7lo25ig7OiDsAlOk/Fjw1jwV6zuqMeVBJec5E7FUpzDYq/d6feh5Eltxh7i 070CkGSY4409Y1yLPVTMKAQk/huVmibgQZCv3ThxqYEjBJy29fI641VNUX6hfIrARj7sYqGrf2M 8xn3IEhxbLYtwO042B5JgC0qr+fi81wAAqXv5TxpwRvU= X-Received: by 2002:a05:600c:468a:b0:458:be62:dcd3 with SMTP id 5b1f17b1804b1-45f211f2eb5mr70454305e9.17.1757751028879; Sat, 13 Sep 2025 01:10:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH5lRvbmHINZdN4BrwG3+en7M5SR2O2IlDBVXYmW8eAxRctyKLYwQuDgnyrOlNEpgOanOvuRg== X-Received: by 2002:a05:600c:468a:b0:458:be62:dcd3 with SMTP id 5b1f17b1804b1-45f211f2eb5mr70453885e9.17.1757751028280; Sat, 13 Sep 2025 01:10:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 16/61] bsd-user, linux-user: introduce qemu_process_cpu_events Date: Sat, 13 Sep 2025 10:08:57 +0200 Message-ID: <20250913080943.11710-17-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751403772116600 Add a user-mode emulation version of the function. More will be added later, for now it is just process_queued_cpu_work. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- bsd-user/aarch64/target_arch_cpu.h | 2 +- bsd-user/arm/target_arch_cpu.h | 2 +- bsd-user/i386/target_arch_cpu.h | 2 +- bsd-user/riscv/target_arch_cpu.h | 2 +- bsd-user/x86_64/target_arch_cpu.h | 2 +- include/hw/core/cpu.h | 9 +++++++++ include/system/cpus.h | 1 - accel/tcg/user-exec.c | 5 +++++ linux-user/aarch64/cpu_loop.c | 2 +- linux-user/alpha/cpu_loop.c | 2 +- linux-user/arm/cpu_loop.c | 2 +- linux-user/hexagon/cpu_loop.c | 2 +- linux-user/hppa/cpu_loop.c | 2 +- linux-user/i386/cpu_loop.c | 2 +- linux-user/loongarch64/cpu_loop.c | 2 +- linux-user/m68k/cpu_loop.c | 2 +- linux-user/microblaze/cpu_loop.c | 2 +- linux-user/mips/cpu_loop.c | 2 +- linux-user/openrisc/cpu_loop.c | 2 +- linux-user/ppc/cpu_loop.c | 2 +- linux-user/riscv/cpu_loop.c | 2 +- linux-user/s390x/cpu_loop.c | 2 +- linux-user/sh4/cpu_loop.c | 2 +- linux-user/sparc/cpu_loop.c | 2 +- linux-user/xtensa/cpu_loop.c | 2 +- 25 files changed, 36 insertions(+), 23 deletions(-) diff --git a/bsd-user/aarch64/target_arch_cpu.h b/bsd-user/aarch64/target_a= rch_cpu.h index 87fbf6d6775..15df84fda21 100644 --- a/bsd-user/aarch64/target_arch_cpu.h +++ b/bsd-user/aarch64/target_arch_cpu.h @@ -54,7 +54,7 @@ static inline G_NORETURN void target_cpu_loop(CPUARMState= *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_SWI: diff --git a/bsd-user/arm/target_arch_cpu.h b/bsd-user/arm/target_arch_cpu.h index bc2eaa0bf4e..9a952ef0ff7 100644 --- a/bsd-user/arm/target_arch_cpu.h +++ b/bsd-user/arm/target_arch_cpu.h @@ -46,7 +46,7 @@ static inline G_NORETURN void target_cpu_loop(CPUARMState= *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); switch (trapnr) { case EXCP_UDEF: case EXCP_NOCP: diff --git a/bsd-user/i386/target_arch_cpu.h b/bsd-user/i386/target_arch_cp= u.h index 5d4c931decd..f147d5b6f85 100644 --- a/bsd-user/i386/target_arch_cpu.h +++ b/bsd-user/i386/target_arch_cpu.h @@ -113,7 +113,7 @@ static inline G_NORETURN void target_cpu_loop(CPUX86Sta= te *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case 0x80: { diff --git a/bsd-user/riscv/target_arch_cpu.h b/bsd-user/riscv/target_arch_= cpu.h index ef92f004803..ad428d0263d 100644 --- a/bsd-user/riscv/target_arch_cpu.h +++ b/bsd-user/riscv/target_arch_cpu.h @@ -49,7 +49,7 @@ static inline G_NORETURN void target_cpu_loop(CPURISCVSta= te *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 signo =3D 0; =20 diff --git a/bsd-user/x86_64/target_arch_cpu.h b/bsd-user/x86_64/target_arc= h_cpu.h index f82042e30af..1fa71d87f12 100644 --- a/bsd-user/x86_64/target_arch_cpu.h +++ b/bsd-user/x86_64/target_arch_cpu.h @@ -121,7 +121,7 @@ static inline G_NORETURN void target_cpu_loop(CPUX86Sta= te *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_SYSCALL: diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 6075be0b59f..fb788ca1107 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -1145,6 +1145,15 @@ AddressSpace *cpu_get_address_space(CPUState *cpu, i= nt asidx); G_NORETURN void cpu_abort(CPUState *cpu, const char *fmt, ...) G_GNUC_PRINTF(2, 3); =20 +/** + * qemu_process_cpu_events: + * @cpu: CPU that left the execution loop + * + * Perform accelerator-independent work after the CPU has left + * the inner execution loop. + */ +void qemu_process_cpu_events(CPUState *cpu); + /* $(top_srcdir)/cpu.c */ void cpu_class_init_props(DeviceClass *dc); void cpu_exec_class_post_init(CPUClass *cc); diff --git a/include/system/cpus.h b/include/system/cpus.h index 4aebec48705..508444ccf1c 100644 --- a/include/system/cpus.h +++ b/include/system/cpus.h @@ -18,7 +18,6 @@ bool cpu_thread_is_idle(CPUState *cpu); bool all_cpu_threads_idle(void); bool cpu_can_run(CPUState *cpu); void qemu_process_cpu_events_common(CPUState *cpu); -void qemu_process_cpu_events(CPUState *cpu); void cpu_thread_signal_created(CPUState *cpu); void cpu_thread_signal_destroyed(CPUState *cpu); void cpu_handle_guest_debug(CPUState *cpu); diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 3c072fd868f..65f5da6c506 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -52,6 +52,11 @@ void qemu_cpu_kick(CPUState *cpu) tcg_kick_vcpu_thread(cpu); } =20 +void qemu_process_cpu_events(CPUState *cpu) +{ + process_queued_cpu_work(cpu); +} + /* * Adjust the pc to pass to cpu_restore_state; return the memop type. */ diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c index 4c4921152e8..f6b498c6c43 100644 --- a/linux-user/aarch64/cpu_loop.c +++ b/linux-user/aarch64/cpu_loop.c @@ -38,7 +38,7 @@ void cpu_loop(CPUARMState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_SWI: diff --git a/linux-user/alpha/cpu_loop.c b/linux-user/alpha/cpu_loop.c index 728b64906d9..bb8346b5094 100644 --- a/linux-user/alpha/cpu_loop.c +++ b/linux-user/alpha/cpu_loop.c @@ -35,7 +35,7 @@ void cpu_loop(CPUAlphaState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_RESET: diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 9aeb9b0087f..cd89b7d6f5e 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -295,7 +295,7 @@ void cpu_loop(CPUARMState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch(trapnr) { case EXCP_UDEF: diff --git a/linux-user/hexagon/cpu_loop.c b/linux-user/hexagon/cpu_loop.c index 25c97edcaef..1941f4c9c16 100644 --- a/linux-user/hexagon/cpu_loop.c +++ b/linux-user/hexagon/cpu_loop.c @@ -36,7 +36,7 @@ void cpu_loop(CPUHexagonState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_INTERRUPT: diff --git a/linux-user/hppa/cpu_loop.c b/linux-user/hppa/cpu_loop.c index 3af50653bb7..356cb48acc3 100644 --- a/linux-user/hppa/cpu_loop.c +++ b/linux-user/hppa/cpu_loop.c @@ -119,7 +119,7 @@ void cpu_loop(CPUHPPAState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_SYSCALL: diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c index 7b2d8b03d84..f3f58576af5 100644 --- a/linux-user/i386/cpu_loop.c +++ b/linux-user/i386/cpu_loop.c @@ -214,7 +214,7 @@ void cpu_loop(CPUX86State *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch(trapnr) { case 0x80: diff --git a/linux-user/loongarch64/cpu_loop.c b/linux-user/loongarch64/cpu= _loop.c index a0a4cbb7cc3..26a5ce3a936 100644 --- a/linux-user/loongarch64/cpu_loop.c +++ b/linux-user/loongarch64/cpu_loop.c @@ -27,7 +27,7 @@ void cpu_loop(CPULoongArchState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_INTERRUPT: diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c index aca0bf23dc6..2c9f628241f 100644 --- a/linux-user/m68k/cpu_loop.c +++ b/linux-user/m68k/cpu_loop.c @@ -33,7 +33,7 @@ void cpu_loop(CPUM68KState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch(trapnr) { case EXCP_ILLEGAL: diff --git a/linux-user/microblaze/cpu_loop.c b/linux-user/microblaze/cpu_l= oop.c index d8277961c73..78506ab23d9 100644 --- a/linux-user/microblaze/cpu_loop.c +++ b/linux-user/microblaze/cpu_loop.c @@ -32,7 +32,7 @@ void cpu_loop(CPUMBState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_INTERRUPT: diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index e67b8a2e463..2365de1de1a 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -74,7 +74,7 @@ void cpu_loop(CPUMIPSState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch(trapnr) { case EXCP_SYSCALL: diff --git a/linux-user/openrisc/cpu_loop.c b/linux-user/openrisc/cpu_loop.c index 8c72347a99a..2167d880d55 100644 --- a/linux-user/openrisc/cpu_loop.c +++ b/linux-user/openrisc/cpu_loop.c @@ -33,7 +33,7 @@ void cpu_loop(CPUOpenRISCState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_SYSCALL: diff --git a/linux-user/ppc/cpu_loop.c b/linux-user/ppc/cpu_loop.c index 22885ffd906..b0b0cb14b41 100644 --- a/linux-user/ppc/cpu_loop.c +++ b/linux-user/ppc/cpu_loop.c @@ -77,7 +77,7 @@ void cpu_loop(CPUPPCState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 arch_interrupt =3D true; switch (trapnr) { diff --git a/linux-user/riscv/cpu_loop.c b/linux-user/riscv/cpu_loop.c index b3162815320..ce542540c28 100644 --- a/linux-user/riscv/cpu_loop.c +++ b/linux-user/riscv/cpu_loop.c @@ -36,7 +36,7 @@ void cpu_loop(CPURISCVState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_INTERRUPT: diff --git a/linux-user/s390x/cpu_loop.c b/linux-user/s390x/cpu_loop.c index 49e44548f85..4929b32e1fc 100644 --- a/linux-user/s390x/cpu_loop.c +++ b/linux-user/s390x/cpu_loop.c @@ -64,7 +64,7 @@ void cpu_loop(CPUS390XState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case EXCP_INTERRUPT: diff --git a/linux-user/sh4/cpu_loop.c b/linux-user/sh4/cpu_loop.c index 259ea1cc8bb..0c9d7e9c46b 100644 --- a/linux-user/sh4/cpu_loop.c +++ b/linux-user/sh4/cpu_loop.c @@ -34,7 +34,7 @@ void cpu_loop(CPUSH4State *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case 0x160: diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c index 7d30cd1ff22..7391e2add8d 100644 --- a/linux-user/sparc/cpu_loop.c +++ b/linux-user/sparc/cpu_loop.c @@ -220,7 +220,7 @@ void cpu_loop (CPUSPARCState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 switch (trapnr) { case TARGET_TT_SYSCALL: diff --git a/linux-user/xtensa/cpu_loop.c b/linux-user/xtensa/cpu_loop.c index 43a194fc4a4..a0ff10eff82 100644 --- a/linux-user/xtensa/cpu_loop.c +++ b/linux-user/xtensa/cpu_loop.c @@ -133,7 +133,7 @@ void cpu_loop(CPUXtensaState *env) cpu_exec_start(cs); trapnr =3D cpu_exec(cs); cpu_exec_end(cs); - process_queued_cpu_work(cs); + qemu_process_cpu_events(cs); =20 env->sregs[PS] &=3D ~PS_EXCM; switch (trapnr) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751788; cv=none; d=zohomail.com; s=zohoarc; b=itazzAOAKnLLu8gTPimjdpQGDwxwjjy3HfS7LMH/64cYaHVBASRHU4cZedJv7cZg0R6Ab1y6xtzB5RVGYbulq/yZy8lRhj+CqjEvFNvZirZXmVH7aPW7W+7ICAVTttAlvNP9euwCRy7dXym33ATxeBZGbhAG6e23JpaHegtN6TI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751788; 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=qlij/+xB1jeZ/DQJ1zSRVc1BKfDXu58VvWt1lqi6rrQ=; b=K3GjDwu+SeRESC2+uzrMn4D0EDRnyVpSZY7lEa4tOtLdfo5/6fLdXm6Nzu5MBl1w1xGlq7esVGm9CfbRP1mV/3+f2/BMB5AFsL+l0KWO1Kn0CNhIvBGKpSsV6Nfm0Qe3RipGbRXv4t/iM3RxEpz0TM4Udya1mHc5ci/JfIb0x9Q= 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 1757751788744175.03249766437284; Sat, 13 Sep 2025 01:23:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLE-0005si-PR; Sat, 13 Sep 2025 04:10:40 -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 1uxLLD-0005sM-7q for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:39 -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 1uxLLA-0004xp-Io for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:38 -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-637-Rj42i-a8MxGcrB9HFP8sCQ-1; Sat, 13 Sep 2025 04:10:34 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e7622483f6so1785617f8f.0 for ; Sat, 13 Sep 2025 01:10:34 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e760776bb8sm9684681f8f.3.2025.09.13.01.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751035; 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=qlij/+xB1jeZ/DQJ1zSRVc1BKfDXu58VvWt1lqi6rrQ=; b=H9a8Cnn8OpaDSmt9OLLQaBLwAzAAXt6v1lg5HncBcwe7YoohpCOxrXHJI8+qv3LJjneIM5 5XKtoCRCDl02sFLCWlkBM3Cde2sPO66zPkYn6ZzEaizw4A/o3XLkOHihxdTxpMuGF5pK7G j9sYMLcpVFFZA7ifmE6auKaQuVGN2PY= X-MC-Unique: Rj42i-a8MxGcrB9HFP8sCQ-1 X-Mimecast-MFC-AGG-ID: Rj42i-a8MxGcrB9HFP8sCQ_1757751033 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751032; x=1758355832; 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=qlij/+xB1jeZ/DQJ1zSRVc1BKfDXu58VvWt1lqi6rrQ=; b=ZBMvBIzLrB3OsvHW5pjD1NchpdQTZjqp6mSUhBBSjtESOJl/z5TYu0hg29YIvDww/z nvwidKnjR13oCJEaALAn2EXSoV41+f3WnVGC84sjR4iJLQSSeWYrnQuXkv3/osIrZ9cK U9SD4UAJngmoOlBKGCK0bMqxD7a4YYdjDPuqggHeztHDA+mdkfPN+QgF40O3tIa3Plwe wuKgRa/lSv/ALPgLbX8SnvhqlhQ6KYM+sKnS1LqFBu/P9csiENe+tC/HXXQIWQdLoiPH Q6QEQkIMzzGfdWFZUXtfM7usG545Wk0I3AtTtAS3XCAHZ9fHHw8rEOufps0zrFpGV30E 5yZQ== X-Gm-Message-State: AOJu0YwLaadzf+iXkGRPm7lBsTqJvexAc62NhrrMbq4i8xTkrOx6n8XO OLAZVSg57lQnkLNgl3ZawpwK0ii3ZzTjz0+lVJQTnIf4vbJvYLxbD9FTmPD1jovYEcVW7ddlApI bdUeq17PFWfD1MAkfFO56gmgGeVFMkMsC0CqxcwkKg/F65x/lS0Q/kVOKLGfW/ZU1JOMqAdOSR4 Dss0VOCEdW3T2906ieBksWAWMZZgVmUEyHJIYC5u3D X-Gm-Gg: ASbGncuI/ahM4NeETtUxeo/6dAZKYNq7dDRObRz++MbcD0N9RX2E1sOHDiyvnICcjrJ hH5MZMqcLEtwr/3g1dd0X7/5Yl7xrGzoI384BVgAJRdznTphVIFXA4trLxn1yWwoeR7ZWDOz71p ODqtEpN+Z7UuJ8eA1sBvGbI4bvQXOgZ2rm5hGKGTB95jYL7rx8/5G14EW5J+MixiFLCxs9hYxbD ElhwC6C8vne6ldiRlUzkYwm0ptn8mEjb/3+h4Zqt1j5wIyOVa2f0Y7vLvzQ+JVwYBgMT3kxnfA6 r/wQCAlHAE9PrEr6v5Gw/KZYu2KWnoshxpJs2gvCqlZNb10o25H0X6IaR7CF7XM6fhlV2vDz0Z/ TwEEP1Y7daLkFnTj1Ey6aHX7XwvQCsJwnuaiUSiPTaKQ= X-Received: by 2002:a05:6000:208a:b0:3e7:48ab:7660 with SMTP id ffacd0b85a97d-3e7659e1746mr5571278f8f.27.1757751032090; Sat, 13 Sep 2025 01:10:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHs0A6G9erfdifU1kcjBAd7hvo2ey9GUIl1kJph9U2xkO5r0vraXtaRBeFm8qIhQ0iTdhsX+g== X-Received: by 2002:a05:6000:208a:b0:3e7:48ab:7660 with SMTP id ffacd0b85a97d-3e7659e1746mr5571245f8f.27.1757751031550; Sat, 13 Sep 2025 01:10:31 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , Richard Henderson Subject: [PULL 17/61] cpus: clear exit_request in qemu_process_cpu_events Date: Sat, 13 Sep 2025 10:08:58 +0200 Message-ID: <20250913080943.11710-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751790530116600 Content-Type: text/plain; charset="utf-8" Make the code common to all accelerators: after seeing cpu->exit_request set to true, accelerator code needs to reach qemu_process_cpu_events_common= (). So for the common cases where they use qemu_process_cpu_events(), go ahead = and clear it in there. Note that the cheap qatomic_set() is enough because at this point the thread has taken the BQL; qatomic_set_mb() is not needed. In particular, this is the ordering of the communication between I/O and vCPU threads is always the same. In the I/O thread: (a) store other memory locations that will be checked if cpu->exit_request or cpu->interrupt_request is 1 (for example cpu->stop or cpu->work_list for cpu->exit_request) (b) cpu_exit(): store-release cpu->exit_request, or (b) cpu_interrupt(): store-release cpu->interrupt_request >>> at this point, cpu->halt_cond is broadcast and the BQL released (c) do the accelerator-specific kick (e.g. write icount_decr for TCG, pthread_kill for KVM, etc.) In the vCPU thread instead the opposite order is respected: (c) the accelerator's execution loop exits thanks to the kick (b) then the inner execution loop checks cpu->interrupt_request and cpu->exit_request. If needed cpu->interrupt_request is converted into cpu->exit_request when work is needed outside the execution loop. (a) then the other memory locations are checked. Some may need to be read under the BQL, but the vCPU thread may also take other locks (e.g. for queued work items) or none at all. qatomic_set_mb() would only be needed if the halt sleep was done outside the BQL (though in that case, cpu->exit_request probably would be replaced by a QemuEvent or something like that). Reviewed-by: Igor Mammedov Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 2 -- accel/tcg/cpu-exec.c | 1 - accel/tcg/tcg-accel-ops-rr.c | 9 +++++++-- accel/tcg/tcg-accel-ops.c | 2 -- accel/tcg/user-exec.c | 1 + system/cpus.c | 1 + target/i386/nvmm/nvmm-all.c | 2 -- target/i386/whpx/whpx-all.c | 2 -- 8 files changed, 9 insertions(+), 11 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index e4167d94b4f..d13156bee87 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -3155,7 +3155,6 @@ int kvm_cpu_exec(CPUState *cpu) trace_kvm_cpu_exec(); =20 if (kvm_arch_process_async_events(cpu)) { - qatomic_set(&cpu->exit_request, 0); return EXCP_HLT; } =20 @@ -3345,7 +3344,6 @@ int kvm_cpu_exec(CPUState *cpu) vm_stop(RUN_STATE_INTERNAL_ERROR); } =20 - qatomic_set(&cpu->exit_request, 0); return ret; } =20 diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index 3ae545e888f..ad94f96b252 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -872,7 +872,6 @@ static inline bool cpu_handle_interrupt(CPUState *cpu, * The corresponding store-release is in cpu_exit. */ if (unlikely(qatomic_load_acquire(&cpu->exit_request)) || icount_exit_= request(cpu)) { - qatomic_set(&cpu->exit_request, 0); if (cpu->exception_index =3D=3D -1) { cpu->exception_index =3D EXCP_INTERRUPT; } diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index 813b313859a..7dbdba7b514 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -293,8 +293,13 @@ static void *rr_cpu_thread_fn(void *arg) /* Does not need a memory barrier because a spurious wakeup is oka= y. */ qatomic_set(&rr_current_cpu, NULL); =20 - if (cpu && qatomic_read(&cpu->exit_request)) { - qatomic_set_mb(&cpu->exit_request, 0); + if (cpu) { + /* + * This could even reset exit_request for all CPUs, but in pra= ctice + * races between CPU exits and changes to "cpu" are so rare th= at + * there's no advantage in doing so. + */ + qatomic_set(&cpu->exit_request, false); } =20 if (icount_enabled() && all_cpu_threads_idle()) { diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c index 1f662a9c745..3bd98005042 100644 --- a/accel/tcg/tcg-accel-ops.c +++ b/accel/tcg/tcg-accel-ops.c @@ -82,8 +82,6 @@ int tcg_cpu_exec(CPUState *cpu) ret =3D cpu_exec(cpu); cpu_exec_end(cpu); =20 - qatomic_set_mb(&cpu->exit_request, 0); - return ret; } =20 diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c index 65f5da6c506..916f18754f6 100644 --- a/accel/tcg/user-exec.c +++ b/accel/tcg/user-exec.c @@ -54,6 +54,7 @@ void qemu_cpu_kick(CPUState *cpu) =20 void qemu_process_cpu_events(CPUState *cpu) { + qatomic_set(&cpu->exit_request, false); process_queued_cpu_work(cpu); } =20 diff --git a/system/cpus.c b/system/cpus.c index fd804e07327..aa7bfcf56e5 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -463,6 +463,7 @@ void qemu_process_cpu_events(CPUState *cpu) { bool slept =3D false; =20 + qatomic_set(&cpu->exit_request, false); while (cpu_thread_is_idle(cpu)) { if (!slept) { slept =3D true; diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index 7e36c42fbb4..ed424251673 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -817,8 +817,6 @@ nvmm_vcpu_loop(CPUState *cpu) cpu_exec_end(cpu); bql_lock(); =20 - qatomic_set(&cpu->exit_request, false); - return ret < 0; } =20 diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 00fb7e23100..2a85168ed51 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -2050,8 +2050,6 @@ static int whpx_vcpu_run(CPUState *cpu) whpx_last_vcpu_stopping(cpu); } =20 - qatomic_set(&cpu->exit_request, false); - return ret < 0; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751079; cv=none; d=zohomail.com; s=zohoarc; b=WIPYalIHtrWRT/uFYCYGF/lV1QGGkeFivdry8duE/QIcj8XKlyAaGhxDYbOl30CoQMEjWUCyFldZ6ye0XIpPhwUi++GBIZavdoG6zhpYZN4kOTqWv6vHe/o4veJbaZoacttmJ8WUmj7joOvMURZ/2a0l/6wKjxlOubjuT4kbSqk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751079; 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=O9LFx7bmrkJaI6Kk2QaXpZhH5Ca/LoygYTM5U9wxaBM=; b=Pt0lI4jZi324IST2qHt6WaxH6NblntOSKPeY5iQGerxzDHLa7RRQPXUd0EQcPAg0v7lpbuxjJ/d/xdZpX7hFQT+uQd1kL4QY7ohzlbBCEX5FhvE8BSsT940jYNN/7B+vB5dYpz6+AUCcET+cPa5r//WvbNntDAvQEFWRv5f5KXY= 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 1757751079040617.7323221356093; Sat, 13 Sep 2025 01:11:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLH-0005tT-MV; Sat, 13 Sep 2025 04:10:43 -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 1uxLLE-0005sa-Gk for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:40 -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 1uxLLC-0004yW-HA for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:40 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-622-CHn6vNDOPQWC7-OTEL4ZTw-1; Sat, 13 Sep 2025 04:10:36 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45dd66e1971so23559405e9.2 for ; Sat, 13 Sep 2025 01:10:35 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e8237cfdddsm2678806f8f.60.2025.09.13.01.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751037; 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=O9LFx7bmrkJaI6Kk2QaXpZhH5Ca/LoygYTM5U9wxaBM=; b=f5WM0OKNrj4BW9VPf74CtMLbegVrWIr4I0pvaWH1V9IPou4WjiDyHAq3cQhxy35ASuQBNC kr1nkhg3+HxPf0GIKOCBM7J6lfJGghjdr7ZfjUZFJbAT9q1K8U6ZsJiQuEHkVbMANrfSi9 VRdIZvsx6+C8yirWrXI4xCwNW2Pn9ow= X-MC-Unique: CHn6vNDOPQWC7-OTEL4ZTw-1 X-Mimecast-MFC-AGG-ID: CHn6vNDOPQWC7-OTEL4ZTw_1757751035 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751034; x=1758355834; 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=O9LFx7bmrkJaI6Kk2QaXpZhH5Ca/LoygYTM5U9wxaBM=; b=fHDeEBB0AwH3dQh2Jljx8vAtz9RtuhAwttCEchqSTkyuKhJ/Prq4S4L3m72clwj3AL RBtVywYPRJBAAfxGgsATVnyB7zvK0vk8KwTd3iWN5qKPKSv6IrBDsw5v+lRb2xAQtndb +OlYE8HdZrjBaVc4SDvsq4ElBFKfEwRhlfCowNutwvGSZzQ3dAUOQB+LDdbMgYLxZVCA h8HuntGgybVZccHkbtjiSNbLUNjkXupSf7blLM+6Uk8aCeb3pTgHJFCXr4+WPzTDneO8 I78t5RZi+rG35ZAbycl7dVw89TYCBrCWAFweYvn3jbXPGaWJAe+2FqW4AN91PmPUdTgC LT0g== X-Gm-Message-State: AOJu0Yw/S2FSjIBxiunEelhRSgpbU6Xd3H2NyDWddHlq95i/HnbtaY75 B+sF0T45wMyjiZWaV6vHdFBPqMM9XUpnPhPTFaoeKmooQBdB+184ppx58+yJZ16YDGGNSUfXYRs 5d7xtiDGWVNrV01Wqi1j1iSD87OmlEFDyqRw7aBmcgnuHm1jOXwAGKzx8giYdHjgkKeFlOAMIC5 yZ7QsWCLKckpcV1fXtaupUhH3GPPPJbw38AUHb9Vz8 X-Gm-Gg: ASbGncvoyaT8q2qlzHGI4Et4rw2xFUnobozLwlkvm+RWi1Zehd0i5NeP3uzzvXM5q7K +z/6WNhm0hKaR0KjRE8RBWOEQ7WV/zl6FgyKgF8qftIeI1SunX/E6YPs5CIkNtzjpU4u+QD1WIM AUC/9rJlIiOXLPp6YScPSVDhLDUCteRDhhmD+F4VlQ4He9+3bnkKMN//zpVsWpZhSwkOBf/1nHc vEBH1XoF99A57ebgqhNmbQ0JUDNocKoP/GOa4ZbGYJh3zWlVD25kT0xPB4p7AGWgikWSBAkm9I9 j4n4iKa7tT/i8hQCzkvcMPFGmOTKlvSiIVJn49yfq0qK7J5gxcWIhtsFwF2/TJlF6qNqOGAWOUz T8FRNNaZxdiLJDgxhtObyzF0+1i5GSytpfg0+0572S1E= X-Received: by 2002:a05:600c:4453:b0:45d:e6b6:55fe with SMTP id 5b1f17b1804b1-45f2120955fmr47073395e9.34.1757751034454; Sat, 13 Sep 2025 01:10:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEmT50FAY19tzEwnUvi0NX5UzwtuBrS5Ph1Xwo7hY+/6ulw179xLwpr0AtHSwb5PTr5xp9zjA== X-Received: by 2002:a05:600c:4453:b0:45d:e6b6:55fe with SMTP id 5b1f17b1804b1-45f2120955fmr47073185e9.34.1757751033870; Sat, 13 Sep 2025 01:10:33 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 18/61] accel: make all calls to qemu_process_cpu_events look the same Date: Sat, 13 Sep 2025 10:08:59 +0200 Message-ID: <20250913080943.11710-19-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751080278116600 There is no reason for some accelerators to use qemu_process_cpu_events_com= mon (which is separated from qemu_process_cpu_events() specifically for round robin TCG). They can also check for events directly on the first pass thro= ugh the loop, instead of setting cpu->exit_request to true. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- accel/dummy-cpus.c | 2 +- accel/hvf/hvf-accel-ops.c | 2 +- accel/kvm/kvm-accel-ops.c | 3 ++- accel/tcg/tcg-accel-ops-mttcg.c | 7 ++--- accel/tcg/tcg-accel-ops-rr.c | 43 ++++++++++++++----------------- target/i386/nvmm/nvmm-accel-ops.c | 6 ++--- target/i386/whpx/whpx-accel-ops.c | 6 ++--- 7 files changed, 30 insertions(+), 39 deletions(-) diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c index 225a47c31fd..5752f6302c8 100644 --- a/accel/dummy-cpus.c +++ b/accel/dummy-cpus.c @@ -43,6 +43,7 @@ static void *dummy_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { + qemu_process_cpu_events(cpu); bql_unlock(); #ifndef _WIN32 do { @@ -57,7 +58,6 @@ static void *dummy_cpu_thread_fn(void *arg) qemu_sem_wait(&cpu->sem); #endif bql_lock(); - qemu_process_cpu_events(cpu); } while (!cpu->unplug); =20 bql_unlock(); diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c index 7a27bdadb4f..8b794c2d418 100644 --- a/accel/hvf/hvf-accel-ops.c +++ b/accel/hvf/hvf-accel-ops.c @@ -192,13 +192,13 @@ static void *hvf_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { + qemu_process_cpu_events(cpu); if (cpu_can_run(cpu)) { r =3D hvf_vcpu_exec(cpu); if (r =3D=3D EXCP_DEBUG) { cpu_handle_guest_debug(cpu); } } - qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 hvf_vcpu_destroy(cpu); diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c index 65a7f76a69a..8ed6945c2f7 100644 --- a/accel/kvm/kvm-accel-ops.c +++ b/accel/kvm/kvm-accel-ops.c @@ -47,13 +47,14 @@ static void *kvm_vcpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { + qemu_process_cpu_events(cpu); + if (cpu_can_run(cpu)) { r =3D kvm_cpu_exec(cpu); if (r =3D=3D EXCP_DEBUG) { cpu_handle_guest_debug(cpu); } } - qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 kvm_destroy_vcpu(cpu); diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttc= g.c index 342917c5f6e..cf1ee7ac258 100644 --- a/accel/tcg/tcg-accel-ops-mttcg.c +++ b/accel/tcg/tcg-accel-ops-mttcg.c @@ -84,10 +84,9 @@ static void *mttcg_cpu_thread_fn(void *arg) cpu_thread_signal_created(cpu); qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 - /* process any pending work */ - qatomic_set(&cpu->exit_request, true); - do { + qemu_process_cpu_events(cpu); + if (cpu_can_run(cpu)) { int r; bql_unlock(); @@ -112,8 +111,6 @@ static void *mttcg_cpu_thread_fn(void *arg) break; } } - - qemu_process_cpu_events(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 tcg_cpu_destroy(cpu); diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c index 7dbdba7b514..2fb46439971 100644 --- a/accel/tcg/tcg-accel-ops-rr.c +++ b/accel/tcg/tcg-accel-ops-rr.c @@ -211,13 +211,30 @@ static void *rr_cpu_thread_fn(void *arg) =20 cpu =3D first_cpu; =20 - /* process any pending work */ - qatomic_set(&cpu->exit_request, true); - while (1) { /* Only used for icount_enabled() */ int64_t cpu_budget =3D 0; =20 + if (cpu) { + /* + * This could even reset exit_request for all CPUs, but in pra= ctice + * races between CPU exits and changes to "cpu" are so rare th= at + * there's no advantage in doing so. + */ + qatomic_set(&cpu->exit_request, false); + } + + if (icount_enabled() && all_cpu_threads_idle()) { + /* + * When all cpus are sleeping (e.g in WFI), to avoid a deadlock + * in the main_loop, wake it up in order to start the warp tim= er. + */ + qemu_notify_event(); + } + + rr_wait_io_event(); + rr_deal_with_unplugged_cpus(); + bql_unlock(); replay_mutex_lock(); bql_lock(); @@ -292,26 +309,6 @@ static void *rr_cpu_thread_fn(void *arg) =20 /* Does not need a memory barrier because a spurious wakeup is oka= y. */ qatomic_set(&rr_current_cpu, NULL); - - if (cpu) { - /* - * This could even reset exit_request for all CPUs, but in pra= ctice - * races between CPU exits and changes to "cpu" are so rare th= at - * there's no advantage in doing so. - */ - qatomic_set(&cpu->exit_request, false); - } - - if (icount_enabled() && all_cpu_threads_idle()) { - /* - * When all cpus are sleeping (e.g in WFI), to avoid a deadlock - * in the main_loop, wake it up in order to start the warp tim= er. - */ - qemu_notify_event(); - } - - rr_wait_io_event(); - rr_deal_with_unplugged_cpus(); } =20 g_assert_not_reached(); diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-acce= l-ops.c index d066364b989..dd5d5428b1c 100644 --- a/target/i386/nvmm/nvmm-accel-ops.c +++ b/target/i386/nvmm/nvmm-accel-ops.c @@ -42,16 +42,14 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { + qemu_process_cpu_events(cpu); + if (cpu_can_run(cpu)) { r =3D nvmm_vcpu_exec(cpu); if (r =3D=3D EXCP_DEBUG) { cpu_handle_guest_debug(cpu); } } - while (cpu_thread_is_idle(cpu)) { - qemu_cond_wait_bql(cpu->halt_cond); - } - qemu_process_cpu_events_common(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 nvmm_destroy_vcpu(cpu); diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-acce= l-ops.c index 2ca4ee02636..f75886128d0 100644 --- a/target/i386/whpx/whpx-accel-ops.c +++ b/target/i386/whpx/whpx-accel-ops.c @@ -42,16 +42,14 @@ static void *whpx_cpu_thread_fn(void *arg) qemu_guest_random_seed_thread_part2(cpu->random_seed); =20 do { + qemu_process_cpu_events(cpu); + if (cpu_can_run(cpu)) { r =3D whpx_vcpu_exec(cpu); if (r =3D=3D EXCP_DEBUG) { cpu_handle_guest_debug(cpu); } } - while (cpu_thread_is_idle(cpu)) { - qemu_cond_wait_bql(cpu->halt_cond); - } - qemu_process_cpu_events_common(cpu); } while (!cpu->unplug || cpu_can_run(cpu)); =20 whpx_destroy_vcpu(cpu); --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751097; cv=none; d=zohomail.com; s=zohoarc; b=LWOQM80KoYvSgO+LP5NilA2+70lPrVj2JS2pCt9Szb/MCy+OuPAAMj85PmIqz0tHxcm9oKvpfpVAgbaK6SZTLbsD8A+JwRXhmJ7o3a+HmpRkaj69t4YOAVWQ6WmBqrBvuCUaav956oQ3wNspoZvelN3uN2T8z77InPmAB1AfYbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751097; 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=0nuKa0pQnnRbuWROMsoY7tGerozDA9x5CjuoP23Xwkg=; b=O1W0tW0366A+eTDUUT6Dmms8JboSSenIhGAHPhyHtHw+MJYWAueZ7KEw07458nB1syPJ4Ot5eBIKMODBTRgWhpbBMfu8LEV03ZgmV6RUagC/Pci9fvPPWyCap8xjHqzHbiIRldglsRgYlDco311sa9TXKHoyDu/BopnQMVtPFSc= 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 175775109717039.803118304813324; Sat, 13 Sep 2025 01:11:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLJ-0005u4-HF; Sat, 13 Sep 2025 04:10:45 -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 1uxLLH-0005tI-7r for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:43 -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 1uxLLF-0004zY-LT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:42 -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-693-N8y_G6IQNdGCaWy-6ksYDA-1; Sat, 13 Sep 2025 04:10:39 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45dd66e1971so23559865e9.2 for ; Sat, 13 Sep 2025 01:10:39 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e015775f1sm93399455e9.8.2025.09.13.01.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751040; 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=0nuKa0pQnnRbuWROMsoY7tGerozDA9x5CjuoP23Xwkg=; b=FCIbil5je+oaLlWQtL36GHvnT1zM1x73upSS0ocMuCW0IsOQYRhpsX9HkHQQDJTDvLq8V1 x1fftMoE48qgKNDBRWvXPI6m3boWpZaI9eR3HCTeP8/g5PfYAe/pKWHykZEAmIjo+wAO0X xWvkn1Gyr13MU3XzPvrzA9YItAMTLwg= X-MC-Unique: N8y_G6IQNdGCaWy-6ksYDA-1 X-Mimecast-MFC-AGG-ID: N8y_G6IQNdGCaWy-6ksYDA_1757751038 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751038; x=1758355838; 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=0nuKa0pQnnRbuWROMsoY7tGerozDA9x5CjuoP23Xwkg=; b=h02VjcnJY38YVCTA5b00j+wCYPO6FvBaf24PBBdoVvWJCWq2UuylGPNQs/f9xoCuf8 Z7Kd5gcb0RLQuZ4aDovuaJ9MoAfZZqXNJojexlF3abrHV894wtgSQ1s6TfocgbGbsB2u jfHgXA5uHw4AJzR/2tF7MO3MSk6r6HMzJaN4CbZmw7xGdopUWxbvKCEkrBG1N4mFnFZT rTMwDF2KkTIlg78RnLRUFKVItsVExIctB5rIZmNlgdF6UzSmR/1xkov1Y+uGN4gYI1pB fiA+ZaYKMiJ0SaBKgqhnHuuiBDEBsAaq4LfVJ3KJbSF7jhdVHmovuFbPt2zuklornYNe nu9w== X-Gm-Message-State: AOJu0Yw9RDjERz6vlYqoPr0JuXZJU1yoJEg/PPo8PH5BV81O8JHQf4cU NdYw/UvEUZUvM0A6/qLfcvVr+8516qREzvvRFRnZHHAgL+XCtMMPCZG/L3af/9w8hoZEyPo/lzB XiEo+VNRkrrxfnTaSzJxCuq0Vs40rFjg9gDxqNVwQ88WUHUEyoa1n1u0lDTBhtvne+KRVohBcoB Fqd7Oc3GNhn0Rxb2jpIMpET4+CDHb8gOVCElnnmDqm X-Gm-Gg: ASbGncs3jQvDWqyLcB2IkoYg/Z950+3EnotIWvuN4LA0zU9wPYa1763kaQQN47iSsd6 zTXF0K+Mh14ttbs4TOBFPOfU3cbx+J+G3oH/S5tfVbubZEqMEVVv+Bb5EhqpqUQsnsoL7x7RwU6 EGb0WxbxuvcHAFQaLbfudhqD21Q2oQ7fPMfIJIWg/0VLaIEbl26BDVYJlOC/uw5/G3iwm+Pwq2H re7nZD8Ss6YWCr0zANW/Khpus72KgYUsgnR6MxD7fJ1f9yfzr8QzR+IU0DWeLqlaKef4mtJa9Sl ibhxJrk/29CaAMpAU23UsJDkmujCUI/ufe+lK27x5Aa+0bn4rs+OoKyzU6kGAXsnt/MLruJ9Vji PYxX0XFWCtojbhWgDmoFjNzb7Ji//VgwNJmhWinvJoaA= X-Received: by 2002:a05:600c:1993:b0:45b:5f99:191c with SMTP id 5b1f17b1804b1-45f211d5aa8mr59383825e9.12.1757751037841; Sat, 13 Sep 2025 01:10:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEVi6cigfC05eJnL/TuYSY2m+RCCQvCRSORtOBUn338bTr4wO4EmYkHRIdPt7hPjipiuF9vAg== X-Received: by 2002:a05:600c:1993:b0:45b:5f99:191c with SMTP id 5b1f17b1804b1-45f211d5aa8mr59383585e9.12.1757751037379; Sat, 13 Sep 2025 01:10:37 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov Subject: [PULL 19/61] tcg/user: do not set exit_request gratuitously Date: Sat, 13 Sep 2025 10:09:00 +0200 Message-ID: <20250913080943.11710-20-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751098194116600 Content-Type: text/plain; charset="utf-8" Whenever user-mode emulation needs to go all the way out of the cpu exec loop, it uses cpu_exit(), which already sets cpu->exit_request. Therefore, there is no need for tcg_kick_vcpu_thread() to set cpu->exit_request again outside system emulation. Reviewed-by: Igor Mammedov Signed-off-by: Paolo Bonzini --- accel/tcg/cpu-exec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c index ad94f96b252..7c20d9db122 100644 --- a/accel/tcg/cpu-exec.c +++ b/accel/tcg/cpu-exec.c @@ -751,6 +751,7 @@ static inline bool cpu_handle_exception(CPUState *cpu, = int *ret) =20 void tcg_kick_vcpu_thread(CPUState *cpu) { +#ifndef CONFIG_USER_ONLY /* * Ensure cpu_exec will see the reason why the exit request was set. * FIXME: this is not always needed. Other accelerators instead @@ -758,6 +759,7 @@ void tcg_kick_vcpu_thread(CPUState *cpu) * CPU thread; see kvm_arch_pre_run() for example. */ qatomic_store_release(&cpu->exit_request, true); +#endif =20 /* Ensure cpu_exec will see the exit request after TCG has exited. */ qatomic_store_release(&cpu->neg.icount_decr.u16.high, -1); --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751788; cv=none; d=zohomail.com; s=zohoarc; b=VtTMVBDQjEI3RP2T1/nszwZdPsPsisFtUcayVeMPDgZ65OlowbRfAphR+mYUghkWpW40J3RLL9TVOzWFqJUp0/XppNF2lMI+311ffjwjLidJNl2Trz6j2iE+48qYX9U2TY7Icjqr+jEcs8x+BnF8LrMF5zA8YaulV5D07ImcFaw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751788; 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=qfNF7of65e0ISpiPiVdlW59eULNiwvi00PI6EPOfXZE=; b=JSVH4cbPZkvV8/Z+X4ruzVrIHNka7+PghfBhoynqqFMi82DRpG7s/Qn/iMRpgQDTFdaiv4CcAV5+rQA0M4jHis0HzF+umpi5bALeP/pUzFLTWmUhAHiyF7bupmNADkd83vDnaZgA8yNlJN7KMgMYXyjalY8kS6zbbGtxxD7YF+g= 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 1757751788058930.0744157983651; Sat, 13 Sep 2025 01:23:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLV-000621-0n; Sat, 13 Sep 2025 04:10:57 -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 1uxLLM-0005zg-G1 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:48 -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 1uxLLK-00050n-BC for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:47 -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-685-DyOnHayRM4y5lTcwq6LcgA-1; Sat, 13 Sep 2025 04:10:42 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3df19a545c2so1899794f8f.3 for ; Sat, 13 Sep 2025 01:10:41 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607cd27dsm9313599f8f.41.2025.09.13.01.10.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751045; 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=qfNF7of65e0ISpiPiVdlW59eULNiwvi00PI6EPOfXZE=; b=Ukan3f0u6zvUaPpVY5ZpTKKCEkNpfi2KZbo/4RdhAlsaIrptr10lSZzRmNwuugW9BAyTjG Dc/X6QHj4DQWuRwcf1VvPMlyrMPXl3WSyp56zl88UH30/aLdDIWaXsuCCy1uZuh5KIPvRM w/3PY7faKhxHL699lgknBkkW6EdI8Ow= X-MC-Unique: DyOnHayRM4y5lTcwq6LcgA-1 X-Mimecast-MFC-AGG-ID: DyOnHayRM4y5lTcwq6LcgA_1757751041 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751040; x=1758355840; 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=qfNF7of65e0ISpiPiVdlW59eULNiwvi00PI6EPOfXZE=; b=i+4RZSu0wl+0V4DwsLk0yVgSvrMH9Bcv3cTltj0pLLVOGBOdoifOE/Mvpf1yWJ0sWP WZ+8DhH382Aykyzvtnc07jD5iiIBb7IZnQgxjfJa2OzBL394gwm/FO4pl/qGuRCTd1zz 6gzMe6vBETVJ5vLl4AswsSboPpnmzaF6NrQkwAJaBna70EPg2sDLA6YBWvhCSnwRwF2/ C19TD6jXCK/hwOjzZophG/vaodkCnxwJ2QhcXqXRWxuNIXe1qqVdOiZdNSzyMUfzY0G/ gxA2n2bqVnkS2uFE+D4udms04qt0Ev85+JfK1zNpN+jUGVHMkjiNVmquIaB1ep2p9PNP +9VA== X-Gm-Message-State: AOJu0Yz7YKTMbtI/D9W16tTTGSJQM61BQcFTwiTtrec74ilQvMOJe0uz j0poOCV2hew11e5ZQWvK7PWlVpb8IWMLeKA9fx0HPerMDp5mUT98u7ssigy0UdSedk1MXm+qf7Z JQJhXAfjbE83lA5nNWJZctuZX2G4ksbQ/wEq0mDnpzukf2JxXQBTpKGTPso3UUDNr6XOtYGG8p4 Dfm7/YQ4Sg/IInEgBTf2tODG/5sDkkRAJe3P3pyR+W X-Gm-Gg: ASbGncsrD6veC6xxMgkeJx8rrCfsj0jXNmO7mW8BWstRYixKbCBszfqpDtHwGfOhu80 pbRL8sgGgElkmL05WuJ7K79Qjun5vsFQR0P1a3ShwWgWXZHy4qft3mWnBJy+rpvG7uw9+fSN6eE PTWXD8LH3jpO3m4dTUaHdajneLdmmKNvwSHkvvJdm/lL8Dv2PlYhAi3LzQ7DyP+ohRQr9Shjfyt EJG6CtAHfGQkkPhJ1Njw1bcdPfQ8t0iroOievrfh99msflGgOYXMCv1eeLH1SlNESwGOtfKXSO+ FXCUHen1O6BKD3ucz0+q7jv5fIYuZ1lTF5yM/7fXXe8yYeP08vgXh6Wxcn3lPD1VvIJ2byIUljz kWPu0s2NTurTwJwqB4h1+wbrtQ7ZTGj2lw/WAndIR4qw= X-Received: by 2002:a05:6000:18a7:b0:3d4:eac4:9db2 with SMTP id ffacd0b85a97d-3e765782b5fmr6375096f8f.5.1757751040075; Sat, 13 Sep 2025 01:10:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFIx2Z9HfsZVuFRTh7uRWrqt1LHESeyttOtPUE1k8aqMDFmRPdvMb8UROAa6JgpLYUvZvM3Yg== X-Received: by 2002:a05:6000:18a7:b0:3d4:eac4:9db2 with SMTP id ffacd0b85a97d-3e765782b5fmr6375065f8f.5.1757751039616; Sat, 13 Sep 2025 01:10:39 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 20/61] ci: temporarily remove rust from Ubuntu Date: Sat, 13 Sep 2025 10:09:01 +0200 Message-ID: <20250913080943.11710-21-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751790307116601 This is for the purpose of getting an easy-to-use base for future development. The plan is: - that Debian will require trixie to enable Rust usage - that Ubuntu will backport 1.83 to its 22.04 and 24.04 versions (https://bugs.launchpad.net/ubuntu/+source/rustc-1.83/+bug/2120318) Marc-Andr=C3=A9 is working on adding Rust to other CI jobs. Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-2-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- .gitlab-ci.d/buildtest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 83c2867295a..f01978fb40c 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -39,9 +39,9 @@ build-system-ubuntu: job: amd64-ubuntu2204-container variables: IMAGE: ubuntu2204 - CONFIGURE_ARGS: --enable-docs --enable-rust + CONFIGURE_ARGS: --enable-docs TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu - MAKE_CHECK_ARGS: check-build check-doc + MAKE_CHECK_ARGS: check-build =20 check-system-ubuntu: extends: .native_test_job_template --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751356; cv=none; d=zohomail.com; s=zohoarc; b=SRlhhk7IU9cfUB4AJGshkFBcV004JVslLmVXjeeIrif8L0X25g3bPvW2kDISu1CAVQcMOcgTtoKs11odhLpb6K/Q0zUJsR2/9SW2Hb8QYwyluJvcys4or8g4fmDZ7wO3AGDESXehlJrFC0o35+X3l6+GnExY1kumdZGVw7qRau8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751356; 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=wzOlv6jvDMy14k3ILWQyBkIwbzKyDUEjrmOQ/T4uy/8=; b=fMYeRRGOxmz2hj3fOXMamIxsLW/pEVMwYSlzxEHXRqx52IuuRwQTdZ8+QH1nhYHc0y3NRi0J4onSyp/paZ7ougc00mWjOrPViYTlpyYzcU3lEXszSxxsM+pmfc+sUZUQEl/NceqGQ5nyS4lCyZliEakmJ4GDb8BGNIPUD6cNHOU= 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 1757751356621307.9877284572193; Sat, 13 Sep 2025 01:15:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMQ-0000D4-59; Sat, 13 Sep 2025 04:11:54 -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 1uxLLz-0007j6-C8 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:27 -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 1uxLLo-000552-Pa for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:27 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-373-oVFJUfenOzizJsiHZcb3Hw-1; Sat, 13 Sep 2025 04:10:55 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45dd9a66cfbso23964385e9.1 for ; Sat, 13 Sep 2025 01:10:55 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45f27f44624sm14538095e9.3.2025.09.13.01.10.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751075; 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=wzOlv6jvDMy14k3ILWQyBkIwbzKyDUEjrmOQ/T4uy/8=; b=Vv0cfg0C49LrzykmRIzfXC4mYwXVTLd5OvfTgMU2pkG5iwBVRHGBituWBXko3TmFv10CTg lGJmBs9WDqawGUPVB5vHmt+nXDUGUfq2Mk9aMV0+oAwqeLVSBl3fxp17AE9weR1RdpRSm0 jCoiwEX2KHcH6uvLZb0MdJJs8iYzSTk= X-MC-Unique: oVFJUfenOzizJsiHZcb3Hw-1 X-Mimecast-MFC-AGG-ID: oVFJUfenOzizJsiHZcb3Hw_1757751054 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751053; x=1758355853; 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=wzOlv6jvDMy14k3ILWQyBkIwbzKyDUEjrmOQ/T4uy/8=; b=M/diTHzjQei6gTkMfjUiCxv0evIwWzuTUFVZDmU4qFuQINRjKdDk6AuTPIHdggKZSf tWc05chbkroNeGrM9c9ssLy52gr4JpitWwYJzbS2XjTQ09Qb3KHauE9SeDjURyRb0+64 FLLdMizHmVgPNtDYlGbRYkv08VDVlgJtebMl6u9uKAjang0OrUDFz609B/5xr9EmZWIn GAk66AMXh42o5PeSS2AzVCnj+L8rQ5PvsSZ07cPagRClqD9pQVHjBeZEgVXGDsspwUJW LTkpHIts+vUTRPF0tTNDyjvhrDRXrbKfjbWAxJUg5veg28N19r0ZU97frPlEhxfxfjtH j0Vw== X-Gm-Message-State: AOJu0YwHnO/rVA7Fz+paturU1U8S8FCtmpkme5zAOPo6gOOcsisEwKG6 9Qs8P9sIOK8/Qd+bRsk80uG4hcza0AANkhYsR2oU+IVPfCbu3aIOXrEWtgmw8Me/Bt9tuYlNRGl 9nd04Mbkq7oD37Z6VZJvW6Rs47sdjalcppqt03P9omtLj9fQ0Wl7LUCQoVOHqYPvi/3BPmixJml MLiGwv0RUz0mlPFi6zsrMNTEizES96oPerAvNu6HOO X-Gm-Gg: ASbGnculqB0nvOg2Qc4Fk7DYScxcAOA9Q48AKCEsiY4SGUa1nckXCbgp5aJY5Lmfyyk HEtmBAEx8XIhyvD8qkAdph4sYkQCGM3YzfFDJjDXVmBj2FS5b5LkMbLXVkNJkZCuFok0QQxZpfG gRIowt7bg04uGiT2o+p6zg3maCr4IpIzaMLL5CvbIqcOSS5Kri/Rkhv02wxPnV0jiiVmBrOYv5L M6IwmDnNeu4//tqSPkKypT8uEiV47yRSnJLQDln2Z3tFtsTegF0zGKjQjf/Nzd12NfHQLPyQeyi VxjWiYa2JzT9M0MVaMHHkvEy+zDZYZU+l/WPpp72U52J5g3Uk8TH12B1nfzusqETVJ/febqw3yJ LEHo1zH1xhoeNy3iUQVmYGaeYOUWPhuYhVBFyLF76jQQ= X-Received: by 2002:a05:600c:3505:b0:45f:2843:e76b with SMTP id 5b1f17b1804b1-45f2843e99cmr6464735e9.2.1757751049980; Sat, 13 Sep 2025 01:10:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFatIN/eZO4LtHE02ujBKr/l/vuTqbHcVOLU+aLOvq61DotZU7yHQp7wzQKgC7CHrCa/my1CA== X-Received: by 2002:a05:600c:3505:b0:45f:2843:e76b with SMTP id 5b1f17b1804b1-45f2843e99cmr6463175e9.2.1757751046648; Sat, 13 Sep 2025 01:10:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 21/61] configure: bump Meson to 1.9.0 for use with Rust Date: Sat, 13 Sep 2025 10:09:02 +0200 Message-ID: <20250913080943.11710-22-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, LOTS_OF_MONEY=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751382421116600 Content-Type: text/plain; charset="utf-8" Meson 1.9.0 provides mixed linking of Rust and C objects. As a side effect, this also allows adding dependencies with "sources: ..." files to Rust crat= es that use structured_sources(). It can also clean up up the meson.build files for Rust noticeably, but due to an issue with doctests (see https://github.com/mesonbuild/meson/pull/149= 73) that will have to wait for 1.9.1. Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-3-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- configure | 4 ++-- python/scripts/vendor.py | 4 ++-- python/wheels/meson-1.8.1-py3-none-any.whl | Bin 1013001 -> 0 bytes python/wheels/meson-1.9.0-py3-none-any.whl | Bin 0 -> 1029634 bytes pythondeps.toml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 python/wheels/meson-1.8.1-py3-none-any.whl create mode 100644 python/wheels/meson-1.9.0-py3-none-any.whl diff --git a/configure b/configure index 274a7787642..3053c23fbe1 100755 --- a/configure +++ b/configure @@ -1184,12 +1184,12 @@ fi # detect rust triple =20 meson_version=3D$($meson --version) -if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.8.1; then +if test "$rust" !=3D disabled && ! version_ge "$meson_version" 1.9.0; then if test "$rust" =3D enabled; then $mkvenv ensuregroup --dir "${source_path}/python/wheels" \ ${source_path}/pythondeps.toml meson-rust || exit 1 else - echo "Rust needs Meson 1.8.1, disabling" 2>&1 + echo "Rust needs Meson 1.9.0, disabling" 2>&1 rust=3Ddisabled fi fi diff --git a/python/scripts/vendor.py b/python/scripts/vendor.py index b47db00743a..33ac7a45de0 100755 --- a/python/scripts/vendor.py +++ b/python/scripts/vendor.py @@ -41,8 +41,8 @@ def main() -> int: parser.parse_args() =20 packages =3D { - "meson=3D=3D1.8.1": - "374bbf71247e629475fc10b0bd2ef66fc418c2d8f4890572f74de0f97d0d42da", + "meson=3D=3D1.9.0": + "45e51ddc41e37d961582d06e78c48e0f9039011587f3495c4d6b0781dad92357", } =20 vendor_dir =3D Path(__file__, "..", "..", "wheels").resolve() diff --git a/python/wheels/meson-1.8.1-py3-none-any.whl b/python/wheels/mes= on-1.8.1-py3-none-any.whl deleted file mode 100644 index a885f0e18cea1d1c32987540dc12d91cb74bcb9d..000000000000000000000000000= 0000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1013001 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

7{zg9V^!@f!NgjPS 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 B)H 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

E3eJ#1;?=3D0l> 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

UcQixviV2Z*My8z%Tu`=3DL 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%0DoIX$mqTl}uRJBxAgG8x5n8D53CjaK;L!^~` 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%0D(Mtw#7w`{n43k?L#3IP*#H$evtQ*( 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 M9F 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 vpG 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 B4zBP+<k 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/^<30`M1qGg7a;*sD(T!j29 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

}(6rvncOHs5oT-P>E(lPYN9xzW4Ld(~sh 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

ar1c`VlozFe^OzwUWL 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 %{V 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ν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 !?D(E!QsbF((t^>0wKHF)O_7*aEh)vY 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�d>gtUZGXN6=3DVjZ>Vn&#*Q`dFEAw(Otzr1?r#1 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 literal 0 HcmV?d00001 diff --git a/pythondeps.toml b/pythondeps.toml index d0f52b14f79..16fb2a989cf 100644 --- a/pythondeps.toml +++ b/pythondeps.toml @@ -19,12 +19,12 @@ =20 [meson] # The install key should match the version in python/wheels/ -meson =3D { accepted =3D ">=3D1.5.0", installed =3D "1.8.1", canary =3D "m= eson" } +meson =3D { accepted =3D ">=3D1.5.0", installed =3D "1.9.0", canary =3D "m= eson" } pycotap =3D { accepted =3D ">=3D1.1.0", installed =3D "1.3.1" } =20 [meson-rust] # The install key should match the version in python/wheels/ -meson =3D { accepted =3D ">=3D1.8.1", installed =3D "1.8.1", canary =3D "m= eson" } +meson =3D { accepted =3D ">=3D1.9.0", installed =3D "1.9.0", canary =3D "m= eson" } =20 [docs] # Please keep the installed versions in sync with docs/requirements.txt --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751516; cv=none; d=zohomail.com; s=zohoarc; b=ek2gnGGiI/xubgA3ZipJQl4eBKynUhT+Crlx0N90MrX+IHyyY6EkPE7JEe2msRjYGdmBu5wzk2Q+WWga3IZq4kv68R8fiwn5i7/n7XmJQO1ZlZFnW4VAZdL1AAe+JxkE6AGYVZtPa2SJFr9yFP9t+Al8aaS43vL1lNS404rMmxE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751516; 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=HXfUGOoHfc1J6QjpUbcTQniNnAlcPz2igefiWjM4Eds=; b=IEFARu8rR5t4pgAEmQ4FbHiwNpm66CgFrYwIkf1OASh0Fmy6Ien9NOPEHQzIOzGbk8E4mGToTdLj98g3qszwFavuX2qePxWiUJ9t/Yk0XCTqpFlbguiBWXGW/yFhKbUezyiV7ljrgsKxgqgQN+Tmztz58aw4pPAag/73eVP4TDQ= 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 1757751516312569.6727211217539; Sat, 13 Sep 2025 01:18:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLo-0006Mp-AT; Sat, 13 Sep 2025 04:11:16 -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 1uxLLW-00063V-HE for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:00 -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 1uxLLS-00052b-1y for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:57 -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-267-kBJIGsw_O8yknNKyjJOJlQ-1; Sat, 13 Sep 2025 04:10:51 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e2055ce8b7so1431453f8f.0 for ; Sat, 13 Sep 2025 01:10:51 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0156d40esm95655185e9.1.2025.09.13.01.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751053; 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=HXfUGOoHfc1J6QjpUbcTQniNnAlcPz2igefiWjM4Eds=; b=JgC2k3d0+ekM/knu/FsW6NmNbSZQxkXJAyXLLHpefAnCzeh2gVUb+eVlallGpMrDGngy1G JTlDBzubG7W3+W+UShTlFveGTmx5u6kyHuSt61du1TY/VEiQUdmPJfH9MtUlb3KRQjHRK1 aqyY60oTD7rLqusm0jGYwbehp2r8+Aw= X-MC-Unique: kBJIGsw_O8yknNKyjJOJlQ-1 X-Mimecast-MFC-AGG-ID: kBJIGsw_O8yknNKyjJOJlQ_1757751050 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751049; x=1758355849; 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=HXfUGOoHfc1J6QjpUbcTQniNnAlcPz2igefiWjM4Eds=; b=DYB+gh1T5CUDJtxBCNWFPAEpargmdn5LhPlxJlRfjpJPGWMemYmmMPbKxcQSv5Uxf7 ecHWFQmcoYTTytDnxib7A/MLXgS58rZXfjZixY+7bCntJvAsqHWdBp5iGokwEiEhqzc0 VMzFFiekUHmVAId8gdEOQ0Vow3Tg6IOzINeLGumYHOtPOIf9gmmxMAXub/tzWZs+miIH jX8MwGiKbrvEvjHscZOX4EKn27yl4vyscqGw1Vxt5V8l68zsDDAs6emOfPpwTmfaPS4u F7GtemRT6m63Ynp4BQhfb/mHK0UjYbt5rCAw/LP70M9QHjVg/oLoJ9LCsKY6b/1lQJmu jZkg== X-Gm-Message-State: AOJu0Yy/ZCj+mT3euHFSu+HWGIxNw+wehonEbg/wqM/qWaXb3f5ylMKQ ZBzzJJeXidgbfhXHvpHlzjykqaD9ENoCwYWEjlH4slBG0HdGKPItSr+RdMLeThkPM2J9plnZ/4T il83r8gttyCacQLLAo+XM5RYisCEqJWqc7f/95PlXQwb++GApoQY8HNotfk5+dlYZP4Gbtzrj7D /+O8jCk8oo6fH3Qb4lyhWJ3h5PbMoISVeu5/pLZOiX X-Gm-Gg: ASbGncuDqLHSATKEfwOPT/+yLHEaUEQwx09J8fmpBH9uV6mgzBe3spIJGUiYemsbxE3 HCiuJmgQ0GRcZjeKmDaiwImplBTVC474s2wwHvOiwCB7Q8zHDI9h2VKRl+Q8V9wPOLox4wLv2XJ GgHAzsuRT1a6lOGsRipmK1eUOrwBBxKEjcjhXE4Ka0p71AjqdWuEw+FcLhHHF28u08MbPm1NVXm eLDfyK3qUOLQHLyJDu3QGZtiBrGM5I7/mPhn+t8lQtL8SaCgNt/JtvFWedvo1osyJ76n6fcLqzA Q4wvkRPWY4PP2c9vrOKz8YoHKRl8LeHp72frpCTRw3/lqtIkSRVeEKA492hMF8de7lWYazLdNpo g3ZOki+FWcGDedpul4n/w8suCKHZ2699sHhdfsHqqEms= X-Received: by 2002:a5d:40ca:0:b0:3e8:94d3:764c with SMTP id ffacd0b85a97d-3e894d37bacmr732707f8f.61.1757751049356; Sat, 13 Sep 2025 01:10:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHv+pKxSz3wnrl0DsZvX5uU38yP3Gl/cL7ZpGhBfaKBXvqE4sZ8P4wkBI8U1xUa87fr9/+uFw== X-Received: by 2002:a5d:40ca:0:b0:3e8:94d3:764c with SMTP id ffacd0b85a97d-3e894d37bacmr732681f8f.61.1757751048696; Sat, 13 Sep 2025 01:10:48 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 22/61] meson, cargo: require Rust 1.83.0 Date: Sat, 13 Sep 2025 10:09:03 +0200 Message-ID: <20250913080943.11710-23-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751517325116600 Content-Type: text/plain; charset="utf-8" Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-4-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- docs/about/build-platforms.rst | 15 ++++++++------- docs/devel/rust.rst | 14 +++++--------- meson.build | 6 +++--- clippy.toml | 2 +- rust/Cargo.toml | 2 +- 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst index 8671c3be9cd..0160d3adb83 100644 --- a/docs/about/build-platforms.rst +++ b/docs/about/build-platforms.rst @@ -118,14 +118,15 @@ Rust build dependencies include bindgen or have an older version, it is recommended to install a newer version using ``cargo install bindgen-cli``. =20 - QEMU requires Rust 1.77.0. This is available on all supported platforms - with one exception, namely the ``mips64el`` architecture on Debian bookw= orm. - For all other architectures, Debian bookworm provides a new-enough Rust - compiler in the ``rustc-web`` package. + QEMU requires Rust 1.83.0. This is available on all supported platforms + with two exception: Ubuntu LTS releases 22.04 and 24.04, and the + ``mips64el`` architecture on Debian bookworm. For all other + architectures, Debian bookworm provides a new-enough Rust compiler + in the ``rustc-web`` package. =20 - Also, on Ubuntu 22.04 or 24.04 this requires the ``rustc-1.77`` - (or newer) package. The path to ``rustc`` and ``rustdoc`` must be - provided manually to the configure script. + It is expected that in the future Ubuntu will provide updated packages + like the existing ``rustc-1.82`` package. The path to ``rustc`` and + ``rustdoc`` will have to be provided manually to the configure script. =20 Some distros prefer to avoid vendored crate sources, and instead use local sources from e.g. ``/usr/share/cargo/registry``. QEMU includes a diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index b6737536c69..e0ee4a9837d 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -75,21 +75,17 @@ Note that doctests require all ``.o`` files from the bu= ild to be available. Supported tools ''''''''''''''' =20 -QEMU supports rustc version 1.77.0 and newer. Notably, the following feat= ures -are missing: +QEMU supports rustc version 1.83.0 and newer. The following features +from relatively new versions of Rust are not used for historical reasons; +patches are welcome: =20 * inline const expression (stable in 1.79.0), currently worked around with associated constants in the ``FnCall`` trait. =20 -* associated constants have to be explicitly marked ``'static`` (`changed = in +* associated constants are still explicitly marked ``'static`` (`changed in 1.81.0`__) =20 -* ``&raw`` (stable in 1.82.0). Use ``addr_of!`` and ``addr_of_mut!`` inst= ead, - though hopefully the need for raw pointers will go down over time. - -* ``new_uninit`` (stable in 1.82.0). This is used internally by the ``pin= ned_init`` - crate, which is planned for inclusion in QEMU, but it can be easily patc= hed - out. +* ``&raw`` (stable in 1.82.0). =20 * referencing statics in constants (stable in 1.83.0). For now use a const function; this is an important limitation for QEMU's migration stream diff --git a/meson.build b/meson.build index 3d738733566..a238df3f5e3 100644 --- a/meson.build +++ b/meson.build @@ -94,12 +94,12 @@ have_rust =3D have_rust and add_languages('rust', nativ= e: true, required: get_option('rust').disable_auto_if(not have_system)) if have_rust rustc =3D meson.get_compiler('rust') - if rustc.version().version_compare('<1.77.0') + if rustc.version().version_compare('<1.83.0') if get_option('rust').enabled() - error('rustc version ' + rustc.version() + ' is unsupported. Please = upgrade to at least 1.77.0') + error('rustc version ' + rustc.version() + ' is unsupported. Please = upgrade to at least 1.83.0') else warning('rustc version ' + rustc.version() + ' is unsupported, disab= ling Rust compilation.') - message('Please upgrade to at least 1.77.0 to use Rust.') + message('Please upgrade to at least 1.83.0 to use Rust.') have_rust =3D false endif endif diff --git a/clippy.toml b/clippy.toml index 90161729838..204f5713c00 100644 --- a/clippy.toml +++ b/clippy.toml @@ -1,3 +1,3 @@ doc-valid-idents =3D ["IrDA", "PrimeCell", ".."] allow-mixed-uninlined-format-args =3D false -msrv =3D "1.77.0" +msrv =3D "1.83.0" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 6f8884eb30b..99c275f2d9f 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -13,7 +13,7 @@ edition =3D "2021" homepage =3D "https://www.qemu.org" license =3D "GPL-2.0-or-later" repository =3D "https://gitlab.com/qemu-project/qemu/" -rust-version =3D "1.77.0" +rust-version =3D "1.83.0" =20 [workspace.dependencies] anyhow =3D "~1.0" --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751660; cv=none; d=zohomail.com; s=zohoarc; b=U+kAtkO1vszT9pdrNmDsRDZw96nUEXV9w6Piwd+Z6Dp1Bv+CAmJmexPxVRSNMwEJt6pKvr27Dgqsn1ZQ6sbI9SLpTFJ94v14eOxEBN9EPTOUFGh4vGIZ2heezfJJlsCDRtsM8b0i+n8l8Y78mtLWqW0RD2WHgLweuh8IRv9/jzU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751660; 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=j6HNlQI5AiN279T+74BTEF8oyAoPxNzfUhPnWZT1q4I=; b=jZPYuo+X2oxJnUSODGQM6d0dkFCQP5n7W6943rnrOleZsj9nA0UYdoC/uFggax+2+KjOuVaTDKKdv14PGH3+a1OufsiXNXEXbF/5V6Vr7jQacGpXj6fp5mOZIWRi+ueBfBLdgC26QjHEHCvc1xL5sJ3flRwlvdrXXUSvHyJLVAk= 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 1757751660723669.3779177058309; Sat, 13 Sep 2025 01:21:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLq-0006UL-1G; Sat, 13 Sep 2025 04:11:19 -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 1uxLLW-00063Y-Rf for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:00 -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 1uxLLU-000530-Ok for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:10:58 -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-558-JRsJk89kO5KTi3RCrKEcyA-1; Sat, 13 Sep 2025 04:10:54 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e4a8e6df10so1737308f8f.3 for ; Sat, 13 Sep 2025 01:10:53 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0157619fsm93000915e9.7.2025.09.13.01.10.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751055; 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=j6HNlQI5AiN279T+74BTEF8oyAoPxNzfUhPnWZT1q4I=; b=KzWuw9MA+ZL0zahzKTV1QKxoleqJ0+Xxwrx7uI+5ZbE2A4Z8E9dDttQTU/hV0T0mdwMLkZ hO99FbXgFkDk8MVGaHKmy38RkvkbpFDe2oOoYweEDyc3oRXuv5rbTmvxV4D/RI1qjmmMl3 7CWV+4wO2j/98XBVEqG60onjtF9DuU4= X-MC-Unique: JRsJk89kO5KTi3RCrKEcyA-1 X-Mimecast-MFC-AGG-ID: JRsJk89kO5KTi3RCrKEcyA_1757751053 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751052; x=1758355852; 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=j6HNlQI5AiN279T+74BTEF8oyAoPxNzfUhPnWZT1q4I=; b=dzJJkuiRvOoayyG2LB6fipJoiLo4MMI0EOg0l8rBM/qtBHjZJXMctm9C4dOKhNaR9R sPLKHz++hiy2kgceMMjgPXZgwVYqyDiu3WZ6TKzA7TCYHqTEhnNIrJNJTUhDX82pOmzT OV989mYrjdNhWwctJt933nQvFWvNkp79iJhc7Mdg48xc+/pVYxwsYl8oDRsOCXq0OT2O HcPg272oKv6vTkaT15BJs+CxMSv1E5+EFl+HzMOcuOHgHG9YcvfJCMuBndPH9lqQX4DK zjO7sYyr1Ag/whST4ZKkITo5IY7ZvYL9GyK915UnECHt0ZVa8ZvoI6qrpNGwvsJF07ym c9DQ== X-Gm-Message-State: AOJu0Yyl9BX2sOuS93EtF3JE1keXk5tJdysmWcWjepBGC2xFautXBGJu DRcJDAVbf4CZLJO+1/uvtt+ujGOTvNF3uP9jWgv35TrLJUsJo5jLz+eTt1i/audvFUMUqacyi8T U0s0ofQXxUMC5PTPqFihod7YmLIHKhnJIiOcqqR6KanaaPtKFqmdJgCp8Smol5TZ5oDU/aHQffd rVQk5yHX7Y3z6xihhrKcwP/Wy39KxmnsI40pYR8jL/ X-Gm-Gg: ASbGncuwwTHPj1DC0eWswPIX7LCK9MnuQlUC/iOAFsJ46dFl7y+bDiDMkqkbM9WxgDT YkTVC7fvRCpSriNbm5HP5NECfWmE/mdn1NgoEIw8oQvlBEARCquFXIyvzItyjMFyZSEYqz9yaqR w7FT3nz27r8tDXT3MkZTMjsA9I61Iuq07zv+x70HdwX46i7rA3jmTQuz8gwU1CRO0NWdS5H6L2/ Mx+MhMjUGeQRipPZPw05RyBxn2A+13km2UUiThaFq04s8gFLGSTrjhM9cdN5Y74OpOlqYZMKwVm 6nypeHLaNwkaF5IFEBTl4dXCNcLSdhWZk4GhiefnncsJVLVDOS+2uHhaFxKn/Y2KLxNdVnKlD0O xx41Sfvc7ojwEnMOUY/JKZ6SCut/dRAkv/dy4/2JNS3o= X-Received: by 2002:a05:6000:186a:b0:3e7:44f9:131f with SMTP id ffacd0b85a97d-3e76578138dmr5229416f8f.1.1757751051736; Sat, 13 Sep 2025 01:10:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGajTSr9MN2qO8SWZw4w3/iUMWI4rK8/oSHgOy1tN3aiOyTSdJPB6TYwj8zhP0iGw6iX44Z4g== X-Received: by 2002:a05:6000:186a:b0:3e7:44f9:131f with SMTP id ffacd0b85a97d-3e76578138dmr5229384f8f.1.1757751051201; Sat, 13 Sep 2025 01:10:51 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 23/61] rust: add missing const markers for MSRV==1.83.0 Date: Sat, 13 Sep 2025 10:09:04 +0200 Message-ID: <20250913080943.11710-24-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751663182116600 Content-Type: text/plain; charset="utf-8" Rust 1.83 allows more functions to be marked const. Fix clippy with bumped minimum supported Rust version. Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-5-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- rust/bits/src/lib.rs | 6 +++--- rust/qemu-api/src/assertions.rs | 4 ++-- rust/qemu-api/src/cell.rs | 6 ++---- rust/qemu-api/src/qom.rs | 6 +++--- rust/qemu-api/src/timer.rs | 2 +- rust/qemu-api/src/uninit.rs | 6 +++--- 6 files changed, 14 insertions(+), 16 deletions(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index d485d6bd110..e9d15ad0cb5 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -165,19 +165,19 @@ pub const fn into_bits(self) -> $type { =20 #[allow(dead_code)] #[inline(always)] - pub fn set(&mut self, rhs: Self) { + pub const fn set(&mut self, rhs: Self) { self.0 |=3D rhs.0; } =20 #[allow(dead_code)] #[inline(always)] - pub fn clear(&mut self, rhs: Self) { + pub const fn clear(&mut self, rhs: Self) { self.0 &=3D !rhs.0; } =20 #[allow(dead_code)] #[inline(always)] - pub fn toggle(&mut self, rhs: Self) { + pub const fn toggle(&mut self, rhs: Self) { self.0 ^=3D rhs.0; } =20 diff --git a/rust/qemu-api/src/assertions.rs b/rust/qemu-api/src/assertions= .rs index a2d38c877df..e74fa3ef826 100644 --- a/rust/qemu-api/src/assertions.rs +++ b/rust/qemu-api/src/assertions.rs @@ -81,8 +81,8 @@ macro_rules! assert_field_type { (@internal $param_name:ident, $ti:ty, $t:ty, $($field:tt)*) =3D> { const _: () =3D { #[allow(unused)] - fn assert_field_type($param_name: &$t) { - fn types_must_be_equal(_: &T) + const fn assert_field_type($param_name: &$t) { + const fn types_must_be_equal(_: &T) where T: $crate::assertions::EqType, { diff --git a/rust/qemu-api/src/cell.rs b/rust/qemu-api/src/cell.rs index 27063b049d5..148a13e3f56 100644 --- a/rust/qemu-api/src/cell.rs +++ b/rust/qemu-api/src/cell.rs @@ -980,8 +980,7 @@ pub unsafe fn from_raw<'a>(ptr: *mut T) -> &'a Self { /// but the functions containing the dereference are usually safe. The /// value returned from `uninit()` must be initialized and pinned befo= re /// calling them. - #[allow(clippy::missing_const_for_fn)] - pub unsafe fn uninit() -> Self { + pub const unsafe fn uninit() -> Self { Self { value: UnsafeCell::new(MaybeUninit::uninit()), _pin: PhantomPinned, @@ -997,8 +996,7 @@ pub unsafe fn uninit() -> Self { /// but the functions containing the dereference are usually safe. The /// value returned from `uninit()` must be pinned (and possibly initia= lized) /// before calling them. - #[allow(clippy::missing_const_for_fn)] - pub unsafe fn zeroed() -> Self { + pub const unsafe fn zeroed() -> Self { Self { value: UnsafeCell::new(MaybeUninit::zeroed()), _pin: PhantomPinned, diff --git a/rust/qemu-api/src/qom.rs b/rust/qemu-api/src/qom.rs index e20ee014cb1..014ffb1fd88 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qemu-api/src/qom.rs @@ -307,7 +307,7 @@ impl ParentInit<'_, T> { /// Fields beyond `Object` could be uninitialized and it's your /// responsibility to avoid that they're used when the pointer is /// dereferenced, either directly or through a cast. - pub fn as_object_mut_ptr(&self) -> *mut bindings::Object { + pub const fn as_object_mut_ptr(&self) -> *mut bindings::Object { self.as_object_ptr().cast_mut() } =20 @@ -318,7 +318,7 @@ pub fn as_object_mut_ptr(&self) -> *mut bindings::Objec= t { /// Fields beyond `Object` could be uninitialized and it's your /// responsibility to avoid that they're used when the pointer is /// dereferenced, either directly or through a cast. - pub fn as_object_ptr(&self) -> *const bindings::Object { + pub const fn as_object_ptr(&self) -> *const bindings::Object { self.0.as_ptr().cast() } } @@ -336,7 +336,7 @@ impl<'a, T: ObjectImpl> ParentInit<'a, T> { /// However, while the fields of the resulting reference are initializ= ed, /// calls might use uninitialized fields of the subclass. It is your /// responsibility to avoid this. - pub unsafe fn upcast(&self) -> &'a U + pub const unsafe fn upcast(&self) -> &'a U where T::ParentType: IsA, { diff --git a/rust/qemu-api/src/timer.rs b/rust/qemu-api/src/timer.rs index 0a2d111d490..0daec62f926 100644 --- a/rust/qemu-api/src/timer.rs +++ b/rust/qemu-api/src/timer.rs @@ -39,7 +39,7 @@ impl Timer { /// /// The timer must be initialized before it is armed with /// [`modify`](Self::modify). - pub unsafe fn new() -> Self { + pub const unsafe fn new() -> Self { // SAFETY: requirements relayed to callers of Timer::new Self(unsafe { Opaque::zeroed() }) } diff --git a/rust/qemu-api/src/uninit.rs b/rust/qemu-api/src/uninit.rs index 04123b4ae99..b0a829729dd 100644 --- a/rust/qemu-api/src/uninit.rs +++ b/rust/qemu-api/src/uninit.rs @@ -12,7 +12,7 @@ pub struct MaybeUninitField<'a, T, U> { =20 impl<'a, T, U> MaybeUninitField<'a, T, U> { #[doc(hidden)] - pub fn new(parent: &'a mut MaybeUninit, child: *mut U) -> Self { + pub const fn new(parent: &'a mut MaybeUninit, child: *mut U) -> Sel= f { MaybeUninitField { parent, child } } =20 @@ -21,7 +21,7 @@ pub fn new(parent: &'a mut MaybeUninit, child: *mut U)= -> Self { /// Because the `MaybeUninitField` remembers the containing object, /// it is possible to use it in foreign APIs that initialize the /// child. - pub fn parent(f: &Self) -> *const T { + pub const fn parent(f: &Self) -> *const T { f.parent.as_ptr() } =20 @@ -30,7 +30,7 @@ pub fn parent(f: &Self) -> *const T { /// Because the `MaybeUninitField` remembers the containing object, /// it is possible to use it in foreign APIs that initialize the /// child. - pub fn parent_mut(f: &mut Self) -> *mut T { + pub const fn parent_mut(f: &mut Self) -> *mut T { f.parent.as_mut_ptr() } } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751644; cv=none; d=zohomail.com; s=zohoarc; b=A//JbtWbm7PJAV0bZa2qNCMn2CEOwf5FhoPfObd1t6xqNW9NAil8+8L2al6qBDBpbXGoiKCMWw4HYhn9liPBrKmDnoyNxjuCdz4wmTwjtVpAtWb+J/Tw+7bS+wnqwzclOhATKMdaeVLZSX2NX4aCUzDqyMsnEtDNdE0/2NkJnIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751644; 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=wpHg6YqRiBR1PtKo5xZZoZMNrYFH8NvU1cbHwz4R770=; b=Zk345dtNbiQb4UMp3EcjYRzzmmuogj20N2GeeeLj4ILL/+qhOqUluKJefitX1FJFg6wAnsxb+OkhclKyWCA2XH7rmtHaiXDjvwUjQi+5WiIDciClvxAy8fxErn1/ThohEEPEmmvWd9hNSWPHLY0Q8DV81rJhjEor2AW8UI3eW08= 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 1757751644221790.4196098714634; Sat, 13 Sep 2025 01:20:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM4-00081a-7Q; Sat, 13 Sep 2025 04:11:32 -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 1uxLLe-0006Lv-4t for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:09 -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 1uxLLa-00053c-8V for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11: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-692-dwodwQLbMkqvpG52SdLW4Q-1; Sat, 13 Sep 2025 04:10:57 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e5190bcba1so1790983f8f.2 for ; Sat, 13 Sep 2025 01:10:57 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e774a3fb5bsm4862034f8f.58.2025.09.13.01.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751059; 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=wpHg6YqRiBR1PtKo5xZZoZMNrYFH8NvU1cbHwz4R770=; b=Mg3djGngX27Rh3CwfNYhU3xZgWouRdTdmERLUdHqobw94VoscLCBXdRjrZSmG9YMZxxJQm DoE+ciItElNDO5vqyR/MvNZIk2jZ6yCGmq5SfPfM69cgbqMG/IVNZ4ngZHXsP22BJ8lZk3 HTdrWl37MnK8SHaE1iYT8OQkxRu4QuY= X-MC-Unique: dwodwQLbMkqvpG52SdLW4Q-1 X-Mimecast-MFC-AGG-ID: dwodwQLbMkqvpG52SdLW4Q_1757751057 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751056; x=1758355856; 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=wpHg6YqRiBR1PtKo5xZZoZMNrYFH8NvU1cbHwz4R770=; b=RcCOtCBA72B9HuWHnJZfGGBpG3xzghkyLmesXcy8aK6w4S/zZ3rpY1sTENuwJbYpKh hw5pK+sZtjOhfSwuZ9+IsT8zWvKWs1pFNgtWzRLQrqwgQgx7n/o1uhrk3klHW9B+ccw6 HVL6NclRwL4rHSf8rPO23scPlzP60bu9gDjqhSBoUVjcbpX8pvOU9KaSLEEQ1rT033d/ EOkVpdp1wBejynth9wYqohiNCdcwdgpJ2kdoJ1ER8Wsr/gIFjd92g+upVfcBUkqyNAF6 joHA6JMvSvTmDBQo5IYsMkD5Z6x6/taMK9FittManPh0+X3lsKSmKizHELU0KCjB2ea1 e3TA== X-Gm-Message-State: AOJu0YxPBAbU0G5gzV/2zAbVku/bfynvdDS9hke2KwOa1HaaVC9XvYmd P+rN71mwBwuCCZKVnDIAvpzAGBU2Yq9IdzpOXv5yLt3XSMadrXqTUCfJ8dnzFo/9Pg7DT4sbGpA U7F+rTbIETa0LRJNxm2T46AUYteUemSIB49odGUV1faYR+/VQK5fLX+2YIXKRDbmz9OusO5WeOM jzOENdFPXfH2ym6sacLLAe6Ls+iopLIRjZ+paioQaD X-Gm-Gg: ASbGncu0W5OEzLYgntEskDyFXCXjaveGNYF0coon6UukhkCKeQLlm+u0shNY9c2UQ/X tUcIHguoZ2BcdpqbL4UKLmFDlz7fUOGK9OCav8Y2sBlM5CZFWjFMB2YdGpplA5o2zUYbWxcyXQV dTQsCnLldHK/G7ydi/4evmq6Z42on98oP29WcWLQ7Zq88WpmQQ2ubXZOYDCGQJJPOqI0+Bd6iYN EzAmqRjoLyMXH1RzptFSGzSMMcSpo3Sjp7/m8IH9ysOZ9aW0eoB57OB1tWQ8IgBNKoKvKKXK4Gl TmwAVQHsqEZTxJIg8Vz3FcQAXKrThttXQJldO15ZCcCj99+6/xM+Hv/HdI75pRMxG+T5MuvPgGm c3etyyOXIAXcjEAQstcO0JZQA/0Y6ZGHx6f77dSwgqHc= X-Received: by 2002:a05:6000:2289:b0:3e5:47a9:1c7a with SMTP id ffacd0b85a97d-3e765a157b7mr4992675f8f.62.1757751055703; Sat, 13 Sep 2025 01:10:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEWs0wSSxGAD3pl88yLEV7nFo7Yb95VY+lwx62kvJ7BCDruDMxtthSf8nSbI/2f+DQeRvHIyA== X-Received: by 2002:a05:6000:2289:b0:3e5:47a9:1c7a with SMTP id ffacd0b85a97d-3e765a157b7mr4992644f8f.62.1757751055201; Sat, 13 Sep 2025 01:10:55 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 24/61] rust: use inline const expressions Date: Sat, 13 Sep 2025 10:09:05 +0200 Message-ID: <20250913080943.11710-25-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751644718116600 Content-Type: text/plain; charset="utf-8" They were stabilized in Rust 1.79.0. Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-6-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 9 +++------ rust/qemu-api/src/callbacks.rs | 27 +-------------------------- rust/qemu-api/src/chardev.rs | 2 +- rust/qemu-api/src/qdev.rs | 2 +- rust/qemu-api/src/timer.rs | 2 +- rust/qemu-api/src/vmstate.rs | 2 +- 6 files changed, 8 insertions(+), 36 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index e0ee4a9837d..98e3a33a3ce 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -79,9 +79,6 @@ QEMU supports rustc version 1.83.0 and newer. The follow= ing features from relatively new versions of Rust are not used for historical reasons; patches are welcome: =20 -* inline const expression (stable in 1.79.0), currently worked around with - associated constants in the ``FnCall`` trait. - * associated constants are still explicitly marked ``'static`` (`changed in 1.81.0`__) =20 @@ -97,9 +94,9 @@ patches are welcome: before QEMU can use them. For now, there is special code in ``util/error.c`` to support non-NUL-terminated file names. =20 -* associated const equality would be nice to have for some users of - ``callbacks::FnCall``, but is still experimental. ``ASSERT_IS_SOME`` - replaces it. +Associated const equality would be nice to have for some users of +``callbacks::FnCall``, but is still experimental. Const assertions +are used instead. =20 __ https://github.com/rust-lang/rust/pull/125258 =20 diff --git a/rust/qemu-api/src/callbacks.rs b/rust/qemu-api/src/callbacks.rs index 9642a16eb89..dbe2305f509 100644 --- a/rust/qemu-api/src/callbacks.rs +++ b/rust/qemu-api/src/callbacks.rs @@ -113,31 +113,6 @@ /// This is always true for zero-capture closures and function pointers, a= s long /// as the code is able to name the function in the first place. pub unsafe trait FnCall: 'static + Sync + Sized { - /// Referring to this internal constant asserts that the `Self` type is - /// zero-sized. Can be replaced by an inline const expression in - /// Rust 1.79.0+. - const ASSERT_ZERO_SIZED: () =3D { assert!(mem::size_of::() =3D= =3D 0) }; - - /// Referring to this constant asserts that the `Self` type is an actu= al - /// function type, which can be used to catch incorrect use of `()` - /// at compile time. - /// - /// # Examples - /// - /// ```compile_fail - /// # use qemu_api::callbacks::FnCall; - /// fn call_it FnCall<(&'a str,), String>>(_f: &F, s: &str)= -> String { - /// let _: () =3D F::ASSERT_IS_SOME; - /// F::call((s,)) - /// } - /// - /// let s: String =3D call_it((), "hello world"); // does not compile - /// ``` - /// - /// Note that this can be more simply `const { assert!(F::IS_SOME) }` = in - /// Rust 1.79.0 or newer. - const ASSERT_IS_SOME: () =3D { assert!(Self::IS_SOME) }; - /// `true` if `Self` is an actual function type and not `()`. /// /// # Examples @@ -195,7 +170,7 @@ unsafe impl FnCall<($($args,)*), R> fo= r F =20 #[inline(always)] fn call(a: ($($args,)*)) -> R { - let _: () =3D Self::ASSERT_ZERO_SIZED; + const { assert!(mem::size_of::() =3D=3D 0) }; =20 // SAFETY: the safety of this method is the condition for = implementing // `FnCall`. As to the `NonNull` idiom to create a zero-s= ized type, diff --git a/rust/qemu-api/src/chardev.rs b/rust/qemu-api/src/chardev.rs index 6e0590d758e..cb27be52569 100644 --- a/rust/qemu-api/src/chardev.rs +++ b/rust/qemu-api/src/chardev.rs @@ -138,7 +138,7 @@ pub fn enable_handlers< F::call((owner, event)) } =20 - let _: () =3D CanReceiveFn::ASSERT_IS_SOME; + const { assert!(CanReceiveFn::IS_SOME) }; let receive_cb: Option =3D if ReceiveFn::is_some() { Some(rust_receive_cb::) diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 36f02fb57db..52d54a4494e 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -373,7 +373,7 @@ fn do_init_gpio_in( } } =20 - let _: () =3D F::ASSERT_IS_SOME; + const { assert!(F::IS_SOME) }; unsafe extern "C" fn rust_irq_handler FnCall<(&'a T,= u32, u32)>>( opaque: *mut c_void, line: c_int, diff --git a/rust/qemu-api/src/timer.rs b/rust/qemu-api/src/timer.rs index 0daec62f926..1e639eaf221 100644 --- a/rust/qemu-api/src/timer.rs +++ b/rust/qemu-api/src/timer.rs @@ -56,7 +56,7 @@ pub fn init_full<'timer, 'opaque: 'timer, T, F>( ) where F: for<'a> FnCall<(&'a T,)>, { - let _: () =3D F::ASSERT_IS_SOME; + const { assert!(F::IS_SOME) }; =20 /// timer expiration callback unsafe extern "C" fn rust_timer_handler FnCall<(&'a = T,)>>( diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 812f390d780..8515e382135 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -457,7 +457,7 @@ macro_rules! vmstate_exist_fn { const fn test_cb_builder__ $crate::callbacks::FnCall= <(&'a T, u8), bool>>( _phantom: ::core::marker::PhantomData, ) -> $crate::vmstate::VMSFieldExistCb { - let _: () =3D F::ASSERT_IS_SOME; + const { assert!(F::IS_SOME) }; $crate::vmstate::rust_vms_test_field_exists:: } =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751414; cv=none; d=zohomail.com; s=zohoarc; b=M2rtdp9dfCDygZ8XCzt0aW9swjiTWzk6DWd9f8KYBypgDW/o3F8dzper8t4Q+tHwXNpQPM7pAH98Lydj3HPx2RzyeCmLeN3ZKmqYYKljyK0cTWFKPCF7DYcWFaLK+g1CgPucc1aRgTrEXHIO+tbetlOMyEv/pTM2x3Gq1/QP5Q8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751414; 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=vjgX+n0YL7NaL36A+i250gkEU3g2GmnLhI2b3ABRolQ=; b=BIhWIPZt0f/p/IpEfZMdKS3PSGZ4JabR5Awg0ZRP7HtpWcBzdhR42EfG1csjU/6zBXIHi1oBLOV5LB/JicDItbpA1kFSig/rEqiE6r79lW9MgBeFwJkkJJzofxFbVsBwCRbmEhMStChcudbEBuqvrxLtPxj4Qde6AYFkAkvKNUQ= 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 1757751414189308.5251249688731; Sat, 13 Sep 2025 01:16:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM0-0007lQ-Bb; Sat, 13 Sep 2025 04:11: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 1uxLLi-0006Mb-2f for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:11 -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 1uxLLe-00053x-Kh for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:09 -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-455-7DJK_J6uPz2sTpGguzesEA-1; Sat, 13 Sep 2025 04:11:01 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3df2f4aedd1so1861963f8f.3 for ; Sat, 13 Sep 2025 01:11:00 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0156abecsm92241915e9.4.2025.09.13.01.10.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751063; 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=vjgX+n0YL7NaL36A+i250gkEU3g2GmnLhI2b3ABRolQ=; b=I2aPld06kr9JUPfMQgjsDtUaYnV2zNuwfpGtK0lZgcmHXcRLs9Bucm+sOzLN3PGUnw7+qo iXuuTszINtvohdAOpJGTCL8wulvvcla7Z9YIy50gobxWNYm8ckv/lfE5WnAD2xq/J53xpX U7tqfIhHNlrigV5IPRQZa1eHPZoWBOA= X-MC-Unique: 7DJK_J6uPz2sTpGguzesEA-1 X-Mimecast-MFC-AGG-ID: 7DJK_J6uPz2sTpGguzesEA_1757751060 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751058; x=1758355858; 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=vjgX+n0YL7NaL36A+i250gkEU3g2GmnLhI2b3ABRolQ=; b=pvzgO8B3CDMvOEZtdjQ3NtEOa1YQEaZUtmTZOuywPqFR0is39+Yb9tw1MjbdFziLTc 3alPUgWaFOiklNGHig5C89g/pBXJW55mywyvWu0OXUePz76xjlyUzrhh730Jz1RwK6tP 6rlPRCac8Y7UcYLA5QIDIwaf0tbkuqGtoA2Jc+LhKnlsAFpReAGMy2zkEsALkaOEIKSc 15VQ/HSb6smHSi42k4xWTqdsC/MSGC9LkG4PS2q5k1CAdGtr8YyOw+9GUe7FgIuazy3K kQtgu7nXA4zvue4xsrNATWFW8e2XNLevAq6C4iLJ5fHG4S9ssOqBWVAEeKMowiyq9OF9 5tbA== X-Gm-Message-State: AOJu0Yxy8D44ekqm4eS5MMc5dJyRvLaV/yCp/VIifnGLh5sCQa4Xxi7t SIkPmcJsJ5SsIFeMF1hyQFdsj/3pGVwshBdhVZslayG+bQTKN9asK1nsMUGC5DYqDTGG0pUsdlT c2DGRv9d0hRYFXLsi9oPhGAXu13NFlyOssTSRtJZeaxOpsbUh7Fvsd4u/kD2G+JZFSmc9bumhOL USZWfvZkQni9Z+GoKbzt+TJNh4sm4RDS79NQ0jGcs+ X-Gm-Gg: ASbGncugLsh6TJ+Ios42reIBQ1DZnL4gmjIkLAoUO4GDrcNENzxt8gVTi7oOhSDbQFh imCJjkTejUVFN4/X6I4/nCJHSDMsinrR8BNINny7ZZngqn+x2Q4W3jIcUKCjeT6r8oCUngLBn1u 8kKrUXLVAqk5bapPi17a1PDNAXlLtLPHm12WvfSQgnARM7hAwAAKJjpnBTpN+jbgs7PUuGDlsH2 VDvq1xpRjSxYYEXNtYU6eq5m1VcSOLRZPvm3JinWZ7tCVZz9/fSOq6NchfknCBnA5PE8RLYDZFO 8oPSnTMZKWsCPyRerZ3E8LKswnup1qB/0fWVAX1D6W9DL2Ca+DgrbXkCTuII7SCGFUYzhHlFR6b alHs4mtsuRITkbCyYWzif/AAOILp9DXR/SDbZrJPgZRE= X-Received: by 2002:a05:6000:2c13:b0:3e7:4701:d1c7 with SMTP id ffacd0b85a97d-3e7657b6a21mr5914091f8f.27.1757751058347; Sat, 13 Sep 2025 01:10:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHN4uW5DTV8UBi12D0QW0DjQaBdjofnAdz4slAu8hQw8cRP6g45Xyh7kYpQSUyCDRAiFfvwnw== X-Received: by 2002:a05:6000:2c13:b0:3e7:4701:d1c7 with SMTP id ffacd0b85a97d-3e7657b6a21mr5914048f8f.27.1757751057504; Sat, 13 Sep 2025 01:10:57 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Manos Pitsidianakis , Zhao Liu Subject: [PULL 25/61] rust: add qdev Device derive macro Date: Sat, 13 Sep 2025 10:09:06 +0200 Message-ID: <20250913080943.11710-26-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751416160116600 Content-Type: text/plain; charset="utf-8" From: Manos Pitsidianakis Add derive macro for declaring qdev properties directly above the field definitions. To do this, we split DeviceImpl::properties method on a separate trait so we can implement only that part in the derive macro expansion (we cannot partially implement the DeviceImpl trait). Adding a `property` attribute above the field declaration will generate a `qemu_api::bindings::Property` array member in the device's property list. Signed-off-by: Manos Pitsidianakis Link: https://lore.kernel.org/r/20250711-rust-qdev-properties-v3-1-e1986244= 16fb@linaro.org Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 31 +----- rust/hw/timer/hpet/src/device.rs | 6 +- rust/qemu-api-macros/src/lib.rs | 152 +++++++++++++++++++++++++++++- rust/qemu-api-macros/src/tests.rs | 111 ++++++++++++++++++++++ rust/qemu-api/src/qdev.rs | 70 ++++++++++++-- rust/qemu-api/tests/tests.rs | 24 +---- 6 files changed, 336 insertions(+), 58 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index ceb71dd99b6..37944635202 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -9,7 +9,6 @@ }; =20 use qemu_api::{ - bindings::{qdev_prop_bool, qdev_prop_chr}, chardev::{CharBackend, Chardev, Event}, impl_vmstate_forward, irq::{IRQState, InterruptSource}, @@ -17,7 +16,7 @@ log_mask_ln, memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, - qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, Property, ResetType= , ResettablePhasesImpl}, + qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, qom::{ObjectImpl, Owned, ParentField, ParentInit}, static_assert, sysbus::{SysBusDevice, SysBusDeviceImpl}, @@ -105,12 +104,13 @@ pub struct PL011Registers { } =20 #[repr(C)] -#[derive(qemu_api_macros::Object)] +#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] /// PL011 Device Model in QEMU pub struct PL011State { pub parent_obj: ParentField, pub iomem: MemoryRegion, #[doc(alias =3D "chr")] + #[property(rename =3D "chardev")] pub char_backend: CharBackend, pub regs: BqlRefCell, /// QEMU interrupts @@ -129,6 +129,7 @@ pub struct PL011State { #[doc(alias =3D "clk")] pub clock: Owned, #[doc(alias =3D "migrate_clk")] + #[property(rename =3D "migrate-clk", default =3D true)] pub migrate_clock: bool, } =20 @@ -176,9 +177,6 @@ impl ObjectImpl for PL011State { } =20 impl DeviceImpl for PL011State { - fn properties() -> &'static [Property] { - &PL011_PROPERTIES - } fn vmsd() -> Option<&'static VMStateDescription> { Some(&VMSTATE_PL011) } @@ -690,7 +688,7 @@ pub fn post_load(&self, _version_id: u32) -> Result<(),= ()> { } =20 #[repr(C)] -#[derive(qemu_api_macros::Object)] +#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] /// PL011 Luminary device model. pub struct PL011Luminary { parent_obj: ParentField, @@ -782,22 +780,3 @@ extern "C" fn pl011_post_load(opaque: *mut c_void, ver= sion_id: c_int) -> c_int { }, ..Zeroable::ZERO }; - -qemu_api::declare_properties! { - PL011_PROPERTIES, - qemu_api::define_property!( - c"chardev", - PL011State, - char_backend, - unsafe { &qdev_prop_chr }, - CharBackend - ), - qemu_api::define_property!( - c"migrate-clk", - PL011State, - migrate_clock, - unsafe { &qdev_prop_bool }, - bool, - default =3D true - ), -} diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index acf7251029e..01d5a0dd70c 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -1031,11 +1031,15 @@ impl ObjectImpl for HPETState { ..Zeroable::ZERO }; =20 -impl DeviceImpl for HPETState { +// SAFETY: HPET_PROPERTIES is a valid Property array constructed with the +// qemu_api::declare_properties macro. +unsafe impl qemu_api::qdev::DevicePropertiesImpl for HPETState { fn properties() -> &'static [Property] { &HPET_PROPERTIES } +} =20 +impl DeviceImpl for HPETState { fn vmsd() -> Option<&'static VMStateDescription> { Some(&VMSTATE_HPET) } diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index 959726efe6d..97b2c214b62 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -3,10 +3,11 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 use proc_macro::TokenStream; -use quote::quote; +use quote::{quote, quote_spanned, ToTokens}; use syn::{ - parse_macro_input, parse_quote, punctuated::Punctuated, spanned::Spann= ed, token::Comma, Data, - DeriveInput, Error, Field, Fields, FieldsUnnamed, Ident, Meta, Path, T= oken, Variant, + parse::Parse, parse_macro_input, parse_quote, punctuated::Punctuated, = spanned::Spanned, + token::Comma, Data, DeriveInput, Error, Field, Fields, FieldsUnnamed, = Ident, Meta, Path, Token, + Variant, }; mod bits; use bits::BitsConstInternal; @@ -152,6 +153,151 @@ pub const fn raw_get(slot: *mut Self) -> *mut , + defval: Option, +} + +impl Parse for DeviceProperty { + fn parse(input: syn::parse::ParseStream) -> syn::Result { + let _: syn::Token![#] =3D input.parse()?; + let bracketed; + _ =3D syn::bracketed!(bracketed in input); + let attribute =3D bracketed.parse::()?; + debug_assert_eq!(&attribute.to_string(), "property"); + let mut retval =3D Self { + rename: None, + defval: None, + }; + let content; + _ =3D syn::parenthesized!(content in bracketed); + while !content.is_empty() { + let value: syn::Ident =3D content.parse()?; + if value =3D=3D "rename" { + let _: syn::Token![=3D] =3D content.parse()?; + if retval.rename.is_some() { + return Err(syn::Error::new( + value.span(), + "`rename` can only be used at most once", + )); + } + if content.peek(syn::LitStr) { + retval.rename =3D Some(DevicePropertyName::Str(content= .parse::()?)); + } else { + retval.rename =3D + Some(DevicePropertyName::CStr(content.parse::()?)); + } + } else if value =3D=3D "default" { + let _: syn::Token![=3D] =3D content.parse()?; + if retval.defval.is_some() { + return Err(syn::Error::new( + value.span(), + "`default` can only be used at most once", + )); + } + retval.defval =3D Some(content.parse()?); + } else { + return Err(syn::Error::new( + value.span(), + format!("unrecognized field `{value}`"), + )); + } + + if !content.is_empty() { + let _: syn::Token![,] =3D content.parse()?; + } + } + Ok(retval) + } +} + +#[proc_macro_derive(Device, attributes(property))] +pub fn derive_device(input: TokenStream) -> TokenStream { + let input =3D parse_macro_input!(input as DeriveInput); + + derive_device_or_error(input) + .unwrap_or_else(syn::Error::into_compile_error) + .into() +} + +fn derive_device_or_error(input: DeriveInput) -> Result { + is_c_repr(&input, "#[derive(Device)]")?; + let properties: Vec<(syn::Field, DeviceProperty)> =3D get_fields(&inpu= t, "#[derive(Device)]")? + .iter() + .flat_map(|f| { + f.attrs + .iter() + .filter(|a| a.path().is_ident("property")) + .map(|a| Ok((f.clone(), syn::parse2(a.to_token_stream())?)= )) + }) + .collect::, Error>>()?; + let name =3D &input.ident; + let mut properties_expanded =3D vec![]; + + for (field, prop) in properties { + let DeviceProperty { rename, defval } =3D prop; + let field_name =3D field.ident.unwrap(); + macro_rules! str_to_c_str { + ($value:expr, $span:expr) =3D> {{ + let (value, span) =3D ($value, $span); + let cstr =3D std::ffi::CString::new(value.as_str()).map_er= r(|err| { + Error::new( + span, + format!( + "Property name `{value}` cannot be represented= as a C string: {err}" + ), + ) + })?; + let cstr_lit =3D syn::LitCStr::new(&cstr, span); + Ok(quote! { #cstr_lit }) + }}; + } + + let prop_name =3D rename.map_or_else( + || str_to_c_str!(field_name.to_string(), field_name.span()), + |rename| -> Result { + match rename { + DevicePropertyName::CStr(cstr_lit) =3D> Ok(quote! { #c= str_lit }), + DevicePropertyName::Str(str_lit) =3D> { + str_to_c_str!(str_lit.value(), str_lit.span()) + } + } + }, + )?; + let field_ty =3D field.ty.clone(); + let qdev_prop =3D quote! { <#field_ty as ::qemu_api::qdev::QDevPro= p>::VALUE }; + let set_default =3D defval.is_some(); + let defval =3D defval.unwrap_or(syn::Expr::Verbatim(quote! { 0 })); + properties_expanded.push(quote! { + ::qemu_api::bindings::Property { + name: ::std::ffi::CStr::as_ptr(#prop_name), + info: #qdev_prop , + offset: ::core::mem::offset_of!(#name, #field_name) as isi= ze, + set_default: #set_default, + defval: ::qemu_api::bindings::Property__bindgen_ty_1 { u: = #defval as u64 }, + ..::qemu_api::zeroable::Zeroable::ZERO + } + }); + } + + Ok(quote_spanned! {input.span() =3D> + unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for #name { + fn properties() -> &'static [::qemu_api::bindings::Property] { + static PROPERTIES: &[::qemu_api::bindings::Property] =3D &= [#(#properties_expanded),*]; + + PROPERTIES + } + } + }) +} + #[proc_macro_derive(Wrapper)] pub fn derive_opaque(input: TokenStream) -> TokenStream { let input =3D parse_macro_input!(input as DeriveInput); diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index 6028cdbc4c3..aafffcdce91 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -36,6 +36,117 @@ macro_rules! derive_compile { }}; } =20 +#[test] +fn test_derive_device() { + // Check that repr(C) is used + derive_compile_fail!( + derive_device_or_error, + quote! { + #[derive(Device)] + struct Foo { + _unused: [u8; 0], + } + }, + "#[repr(C)] required for #[derive(Device)]" + ); + // Check that invalid/misspelled attributes raise an error + derive_compile_fail!( + derive_device_or_error, + quote! { + #[repr(C)] + #[derive(Device)] + struct DummyState { + #[property(defalt =3D true)] + migrate_clock: bool, + } + }, + "unrecognized field `defalt`" + ); + // Check that repeated attributes are not allowed: + derive_compile_fail!( + derive_device_or_error, + quote! { + #[repr(C)] + #[derive(Device)] + struct DummyState { + #[property(rename =3D "migrate-clk", rename =3D "migrate-c= lk", default =3D true)] + migrate_clock: bool, + } + }, + "`rename` can only be used at most once" + ); + derive_compile_fail!( + derive_device_or_error, + quote! { + #[repr(C)] + #[derive(Device)] + struct DummyState { + #[property(default =3D true, default =3D true)] + migrate_clock: bool, + } + }, + "`default` can only be used at most once" + ); + // Check that the field name is preserved when `rename` isn't used: + derive_compile!( + derive_device_or_error, + quote! { + #[repr(C)] + #[derive(Device)] + pub struct DummyState { + parent: ParentField, + #[property(default =3D true)] + migrate_clock: bool, + } + }, + quote! { + unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { + fn properties() -> &'static [::qemu_api::bindings::Propert= y] { + static PROPERTIES: &[::qemu_api::bindings::Property] = =3D + &[::qemu_api::bindings::Property { + name: ::std::ffi::CStr::as_ptr(c"migrate_clock= "), + info: ::VA= LUE, + offset: ::core::mem::offset_of!(DummyState, mi= grate_clock) as isize, + set_default: true, + defval: ::qemu_api::bindings::Property__bindge= n_ty_1 { u: true as u64 }, + ..::qemu_api::zeroable::Zeroable::ZERO + }]; + PROPERTIES + } + } + } + ); + // Check that `rename` value is used for the property name when used: + derive_compile!( + derive_device_or_error, + quote! { + #[repr(C)] + #[derive(Device)] + pub struct DummyState { + parent: ParentField, + #[property(rename =3D "migrate-clk", default =3D true)] + migrate_clock: bool, + } + }, + quote! { + unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { + fn properties() -> &'static [::qemu_api::bindings::Propert= y] { + static PROPERTIES: &[::qemu_api::bindings::Property] = =3D + &[::qemu_api::bindings::Property { + name: ::std::ffi::CStr::as_ptr(c"migrate-clk"), + info: ::VA= LUE, + offset: ::core::mem::offset_of!(DummyState, mi= grate_clock) as isize, + set_default: true, + defval: ::qemu_api::bindings::Property__bindge= n_ty_1 { u: true as u64 }, + ..::qemu_api::zeroable::Zeroable::ZERO + }]; + PROPERTIES + } + } + } + ); +} + #[test] fn test_derive_object() { derive_compile_fail!( diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 52d54a4494e..6a58a00e3fc 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -101,8 +101,67 @@ pub trait ResettablePhasesImpl { T::EXIT.unwrap()(unsafe { state.as_ref() }, typ); } =20 +/// Helper trait to return pointer to a [`bindings::PropertyInfo`] for a t= ype. +/// +/// This trait is used by [`qemu_api_macros::Device`] derive macro. +/// +/// Base types that already have `qdev_prop_*` globals in the QEMU API sho= uld +/// use those values as exported by the [`bindings`] module, instead of +/// redefining them. +/// +/// # Safety +/// +/// This trait is marked as `unsafe` because currently having a `const` re= fer to +/// an `extern static` as a reference instead of a raw pointer results in = this +/// compiler error: +/// +/// ```text +/// constructing invalid value: encountered reference to `extern` static i= n `const` +/// ``` +/// +/// This is because the compiler generally might dereference a normal refe= rence +/// during const evaluation, but not in this case (if it did, it'd need to +/// dereference the raw pointer so this would fail to compile). +/// +/// It is the implementer's responsibility to provide a valid +/// [`bindings::PropertyInfo`] pointer for the trait implementation to be = safe. +pub unsafe trait QDevProp { + const VALUE: *const bindings::PropertyInfo; +} + +/// Use [`bindings::qdev_prop_bool`] for `bool`. +unsafe impl QDevProp for bool { + const VALUE: *const bindings::PropertyInfo =3D unsafe { &bindings::qde= v_prop_bool }; +} + +/// Use [`bindings::qdev_prop_uint64`] for `u64`. +unsafe impl QDevProp for u64 { + const VALUE: *const bindings::PropertyInfo =3D unsafe { &bindings::qde= v_prop_uint64 }; +} + +/// Use [`bindings::qdev_prop_chr`] for [`crate::chardev::CharBackend`]. +unsafe impl QDevProp for crate::chardev::CharBackend { + const VALUE: *const bindings::PropertyInfo =3D unsafe { &bindings::qde= v_prop_chr }; +} + +/// Trait to define device properties. +/// +/// # Safety +/// +/// Caller is responsible for the validity of properties array. +pub unsafe trait DevicePropertiesImpl { + /// An array providing the properties that the user can set on the + /// device. Not a `const` because referencing statics in constants + /// is unstable until Rust 1.83.0. + fn properties() -> &'static [Property] { + &[] + } +} + /// Trait providing the contents of [`DeviceClass`]. -pub trait DeviceImpl: ObjectImpl + ResettablePhasesImpl + IsA= { +pub trait DeviceImpl: + ObjectImpl + ResettablePhasesImpl + DevicePropertiesImpl + IsA +{ /// _Realization_ is the second stage of device creation. It contains /// all operations that depend on device properties and can fail (note: /// this is not yet supported for Rust devices). @@ -111,13 +170,6 @@ pub trait DeviceImpl: ObjectImpl + ResettablePhasesImp= l + IsA { /// with the function pointed to by `REALIZE`. const REALIZE: Option Result<()>> =3D None; =20 - /// An array providing the properties that the user can set on the - /// device. Not a `const` because referencing statics in constants - /// is unstable until Rust 1.83.0. - fn properties() -> &'static [Property] { - &[] - } - /// A `VMStateDescription` providing the migration format for the devi= ce /// Not a `const` because referencing statics in constants is unstable /// until Rust 1.83.0. @@ -175,7 +227,7 @@ pub fn class_init(&mut self) { if let Some(vmsd) =3D ::vmsd() { self.vmsd =3D vmsd; } - let prop =3D ::properties(); + let prop =3D ::properties(); if !prop.is_empty() { unsafe { bindings::device_class_set_props_n(self, prop.as_ptr(), pr= op.len()); diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index a658a49fcfd..aff3eecd654 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -5,11 +5,10 @@ use std::{ffi::CStr, ptr::addr_of}; =20 use qemu_api::{ - bindings::{module_call_init, module_init_type, qdev_prop_bool}, + bindings::{module_call_init, module_init_type}, cell::{self, BqlCell}, - declare_properties, define_property, prelude::*, - qdev::{DeviceImpl, DeviceState, Property, ResettablePhasesImpl}, + qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, qom::{ObjectImpl, ParentField}, sysbus::SysBusDevice, vmstate::VMStateDescription, @@ -26,9 +25,10 @@ }; =20 #[repr(C)] -#[derive(qemu_api_macros::Object)] +#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] pub struct DummyState { parent: ParentField, + #[property(rename =3D "migrate-clk", default =3D true)] migrate_clock: bool, } =20 @@ -44,17 +44,6 @@ pub fn class_init(self: &mut DummyClass) { } } =20 -declare_properties! { - DUMMY_PROPERTIES, - define_property!( - c"migrate-clk", - DummyState, - migrate_clock, - unsafe { &qdev_prop_bool }, - bool - ), -} - unsafe impl ObjectType for DummyState { type Class =3D DummyClass; const TYPE_NAME: &'static CStr =3D c"dummy"; @@ -69,16 +58,13 @@ impl ObjectImpl for DummyState { impl ResettablePhasesImpl for DummyState {} =20 impl DeviceImpl for DummyState { - fn properties() -> &'static [Property] { - &DUMMY_PROPERTIES - } fn vmsd() -> Option<&'static VMStateDescription> { Some(&VMSTATE) } } =20 #[repr(C)] -#[derive(qemu_api_macros::Object)] +#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] pub struct DummyChildState { parent: ParentField, } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751449; cv=none; d=zohomail.com; s=zohoarc; b=cIbAe3o5B9k0ZuK6d9d9zSEha85SMfml/zINoh6Ddirzv6uPRgzSCDkghCQCpzQ+sNxHWnxIxJi3sk5dMhj9D+0U8iQfGcFBl66w5pEAOSH45twpaX0Akgs31FbzmbbMEpLtWBjJR4FI7EE5RpjG3Cw4P9pmSlxt/U9GcnxgI+A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751449; 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=Lfirx2kZYYCEplKndn2wDEwZWJbsR+GjjK+U+Kzw1hg=; b=mWg/JyKvat+sY93xr1GJySm5CPrNQPKvfLVpbZwgMJtE3GJoFoI2HUFyUCC4UH89o7VTIijvXGqxlUqTwRqkYSDBa3mQ1WXOEVGw6x29iVGlcvSRFCTgoVDnAo9fDv0SUYhSmHiOkHzlNr2x4AVvAhwzFyjYxTecu3K1fT0io7s= 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 1757751449339682.2046981149591; Sat, 13 Sep 2025 01:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLx-0007M0-JF; Sat, 13 Sep 2025 04:11:25 -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 1uxLLm-0006NI-M6 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:15 -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 1uxLLf-000548-Au for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:14 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-505-eupngmVbNhmcP-_CkskwNw-1; Sat, 13 Sep 2025 04:11:03 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45e05ff0b36so9846295e9.0 for ; Sat, 13 Sep 2025 01:11:02 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e03718eb1sm89595185e9.4.2025.09.13.01.10.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:10:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751065; 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=Lfirx2kZYYCEplKndn2wDEwZWJbsR+GjjK+U+Kzw1hg=; b=bXlZHfnPoGO6LBO7K2RKkffLW1hI6ZvhIVl6ONuXvzQoE7Ez4pzc0vQAdXx0Qiw8ffpTgu UvsGRaoUhuzK3nAZeHX6NHCu/e3pgupNhbr0sCaU1OqbM5BkjGNK02Zm9/XM+conioDMWT Hx84FHyv8JPIqoAFlQdLFYB8zmpkXmU= X-MC-Unique: eupngmVbNhmcP-_CkskwNw-1 X-Mimecast-MFC-AGG-ID: eupngmVbNhmcP-_CkskwNw_1757751062 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751060; x=1758355860; 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=Lfirx2kZYYCEplKndn2wDEwZWJbsR+GjjK+U+Kzw1hg=; b=dB54TQ+L+LTGYhzWmcCfZabH7GMJXYxt0uU7IXdfOU+r9od3J+4AP8rc7GKNxB/Uyb 8vBFJHFSXwiSx1iRcjgQcstc+ZsfWcmJobhFrTDBqBATzILoMkXwa/hteotT1ZbrF0om +sLC9NXOeGvYXxPzc9UvQFFU0KKR3j05j+No8gdB0+zsQ6cz01qf7UWJKP/wOa/Ue04D dBoKri/7ocgnITyKSrkESlm7pFWGVFUx6mdT2BH8w16TMYhUJ0xYGrU9OSALZ0RHdJ9l Telt29y774x86m9hMhWWYwIYkbUc3OXSrg0rtmu0fZMBMKHf4VziBdd9eZE6pbGSrk05 OxdQ== X-Gm-Message-State: AOJu0YxZlPkZUj2wPiMYd8F7Spc8NglpokP8wbCr4E3drbURzzfeUVGM ArYZ8cKdpAoySZ+3GfJJ7DPLH5RgLbtnAsMLfa6Sx+mHGx7LO0IS9fz0OwCVK+oUdfoOIh6XcFk n4T8o3PQCR0G2UfEqym6fjKd4Ue3RKW4yG0oJz3ykCYWyNYbSbQZmyNsqOtn/ALE1erCOmx1ZYp 1YGDdS7cFoPOTVR0GtMnn28l+ArK0AJFqpQP2J/Mec X-Gm-Gg: ASbGncsPulnsw/0vCKcab5GVz/SRAnGfUW2N30CCxlEA40X4SZR0NQa9Vk4AV2SAkCU pmwVUeFZ9Wq+Pgnh48cWLszW2aoOIDe5mWEyckezh50omETECKeFD6OU1Xw8SyvT9eiMGFtIM+H yjT8broitK8x/TTdi9ir+gIT/RyF5OTDtJK/7KJqNS0wgGNjYk3k8vwCcnpqHS7u6Wot6rcL14r IXTo9NzK4EEra2ekjbsUyhlnWVROLpMAp6kgXVLSXang7ljdE4fqT1sysjJ/m5QlhyqdSt4jQy2 73JNS91Iwy3AfAGbanAo8xrsghMXJzLUAxytaFR/y7j1fHLzYzM+5n05CGCrQhXAYKaJ7cuLqiC 28sUTujB2+Pe7K56W0+eWY7PEgT7clvJz1mOLQ9TAk2E= X-Received: by 2002:a05:600c:3b93:b0:45b:8ac2:9761 with SMTP id 5b1f17b1804b1-45f2698a026mr16278235e9.13.1757751060021; Sat, 13 Sep 2025 01:11:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHkTqc/b+eq4E5ouB0f32SBOdknt72jlTXtdi0E041RJGDZfhdYV18slwRuCHFPqGWmXzD+TA== X-Received: by 2002:a05:600c:3b93:b0:45b:8ac2:9761 with SMTP id 5b1f17b1804b1-45f2698a026mr16277785e9.13.1757751059287; Sat, 13 Sep 2025 01:10:59 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 26/61] rust: vmstate: convert to use builder pattern Date: Sat, 13 Sep 2025 10:09:07 +0200 Message-ID: <20250913080943.11710-27-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751450736116600 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Similar to MemoryRegionOps, the builder pattern has two advantages: 1) it makes it possible to build a VMStateDescription that knows which types it will be invoked on; 2) it provides a way to wrap the callbacks and let devices avoid "unsafe". Unfortunately, building a static VMStateDescription requires the builder methods to be "const", and because the VMStateFields are *also* static, this requires const_refs_static. So this requires Rust 1.83.0. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-8-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 2 +- rust/hw/char/pl011/src/device.rs | 131 +++++++-------- rust/hw/timer/hpet/src/device.rs | 162 ++++++++---------- rust/qemu-api/src/errno.rs | 11 +- rust/qemu-api/src/qdev.rs | 6 +- rust/qemu-api/src/vmstate.rs | 242 ++++++++++++++++++++++++++- rust/qemu-api/tests/tests.rs | 16 +- rust/qemu-api/tests/vmstate_tests.rs | 124 +++++++------- 8 files changed, 450 insertions(+), 244 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 98e3a33a3ce..aca29e55c05 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -162,7 +162,7 @@ module status ``qom`` stable ``sysbus`` stable ``timer`` stable -``vmstate`` proof of concept +``vmstate`` stable ``zeroable`` stable =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 37944635202..21611d9c099 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -3,9 +3,8 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 use std::{ - ffi::{c_int, c_void, CStr}, - mem::size_of, - ptr::NonNull, + ffi::CStr, + mem::size_of }; =20 use qemu_api::{ @@ -21,9 +20,8 @@ static_assert, sysbus::{SysBusDevice, SysBusDeviceImpl}, uninit_field_mut, - vmstate::VMStateDescription, + vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_clock, vmstate_fields, vmstate_of, vmstate_struct, vmstate_sub= sections, vmstate_unused, - zeroable::Zeroable, }; =20 use crate::registers::{self, Interrupt, RegisterOffset}; @@ -177,8 +175,8 @@ impl ObjectImpl for PL011State { } =20 impl DeviceImpl for PL011State { - fn vmsd() -> Option<&'static VMStateDescription> { - Some(&VMSTATE_PL011) + fn vmsd() -> Option> { + Some(VMSTATE_PL011) } const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); } @@ -467,10 +465,10 @@ pub fn fifo_rx_put(&mut self, value: registers::Data)= -> bool { false } =20 - pub fn post_load(&mut self) -> Result<(), ()> { + pub fn post_load(&mut self) -> Result<(), vmstate::InvalidError> { /* Sanity-check input state */ if self.read_pos >=3D self.read_fifo.len() || self.read_count > se= lf.read_fifo.len() { - return Err(()); + return Err(vmstate::InvalidError); } =20 if !self.fifo_enabled() && self.read_count > 0 && self.read_pos > = 0 { @@ -529,6 +527,10 @@ const fn clock_update(&self, _event: ClockEvent) { /* pl011_trace_baudrate_change(s); */ } =20 + pub fn clock_needed(&self) -> bool { + self.migrate_clock + } + fn post_init(&self) { self.init_mmio(&self.iomem); for irq in self.interrupts.iter() { @@ -645,7 +647,7 @@ fn update(&self) { } } =20 - pub fn post_load(&self, _version_id: u32) -> Result<(), ()> { + pub fn post_load(&self, _version_id: u8) -> Result<(), vmstate::Invali= dError> { self.regs.borrow_mut().post_load() } } @@ -715,68 +717,53 @@ impl DeviceImpl for PL011Luminary {} impl ResettablePhasesImpl for PL011Luminary {} impl SysBusDeviceImpl for PL011Luminary {} =20 -extern "C" fn pl011_clock_needed(opaque: *mut c_void) -> bool { - let state =3D NonNull::new(opaque).unwrap().cast::(); - unsafe { state.as_ref().migrate_clock } -} - /// Migration subsection for [`PL011State`] clock. -static VMSTATE_PL011_CLOCK: VMStateDescription =3D VMStateDescription { - name: c"pl011/clock".as_ptr(), - version_id: 1, - minimum_version_id: 1, - needed: Some(pl011_clock_needed), - fields: vmstate_fields! { - vmstate_clock!(PL011State, clock), - }, - ..Zeroable::ZERO -}; +static VMSTATE_PL011_CLOCK: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"pl011/clock") + .version_id(1) + .minimum_version_id(1) + .needed(&PL011State::clock_needed) + .fields(vmstate_fields! { + vmstate_clock!(PL011State, clock), + }) + .build(); =20 -extern "C" fn pl011_post_load(opaque: *mut c_void, version_id: c_int) -> c= _int { - let state =3D NonNull::new(opaque).unwrap().cast::(); - let result =3D unsafe { state.as_ref().post_load(version_id as u32) }; - if result.is_err() { - -1 - } else { - 0 - } -} +static VMSTATE_PL011_REGS: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"pl011/regs") + .version_id(2) + .minimum_version_id(2) + .fields(vmstate_fields! { + vmstate_of!(PL011Registers, flags), + vmstate_of!(PL011Registers, line_control), + vmstate_of!(PL011Registers, receive_status_error_clear), + vmstate_of!(PL011Registers, control), + vmstate_of!(PL011Registers, dmacr), + vmstate_of!(PL011Registers, int_enabled), + vmstate_of!(PL011Registers, int_level), + vmstate_of!(PL011Registers, read_fifo), + vmstate_of!(PL011Registers, ilpr), + vmstate_of!(PL011Registers, ibrd), + vmstate_of!(PL011Registers, fbrd), + vmstate_of!(PL011Registers, ifl), + vmstate_of!(PL011Registers, read_pos), + vmstate_of!(PL011Registers, read_count), + vmstate_of!(PL011Registers, read_trigger), + }) + .build(); =20 -static VMSTATE_PL011_REGS: VMStateDescription =3D VMStateDescription { - name: c"pl011/regs".as_ptr(), - version_id: 2, - minimum_version_id: 2, - fields: vmstate_fields! { - vmstate_of!(PL011Registers, flags), - vmstate_of!(PL011Registers, line_control), - vmstate_of!(PL011Registers, receive_status_error_clear), - vmstate_of!(PL011Registers, control), - vmstate_of!(PL011Registers, dmacr), - vmstate_of!(PL011Registers, int_enabled), - vmstate_of!(PL011Registers, int_level), - vmstate_of!(PL011Registers, read_fifo), - vmstate_of!(PL011Registers, ilpr), - vmstate_of!(PL011Registers, ibrd), - vmstate_of!(PL011Registers, fbrd), - vmstate_of!(PL011Registers, ifl), - vmstate_of!(PL011Registers, read_pos), - vmstate_of!(PL011Registers, read_count), - vmstate_of!(PL011Registers, read_trigger), - }, - ..Zeroable::ZERO -}; - -pub static VMSTATE_PL011: VMStateDescription =3D VMStateDescription { - name: c"pl011".as_ptr(), - version_id: 2, - minimum_version_id: 2, - post_load: Some(pl011_post_load), - fields: vmstate_fields! { - vmstate_unused!(core::mem::size_of::()), - vmstate_struct!(PL011State, regs, &VMSTATE_PL011_REGS, BqlRefCell<= PL011Registers>), - }, - subsections: vmstate_subsections! { - VMSTATE_PL011_CLOCK - }, - ..Zeroable::ZERO -}; +pub const VMSTATE_PL011: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"pl011") + .version_id(2) + .minimum_version_id(2) + .post_load(&PL011State::post_load) + .fields(vmstate_fields! { + vmstate_unused!(core::mem::size_of::()), + vmstate_struct!(PL011State, regs, &VMSTATE_PL011_REGS, BqlRefC= ell), + }) + .subsections(vmstate_subsections! { + VMSTATE_PL011_CLOCK + }) + .build(); diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 01d5a0dd70c..955cf869ff6 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -3,7 +3,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 use std::{ - ffi::{c_int, c_void, CStr}, + ffi::CStr, mem::MaybeUninit, pin::Pin, ptr::{addr_of_mut, null_mut, NonNull}, @@ -27,9 +27,8 @@ sysbus::{SysBusDevice, SysBusDeviceImpl}, timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, uninit_field_mut, - vmstate::VMStateDescription, + vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_fields, vmstate_of, vmstate_struct, vmstate_subsections, vmsta= te_validate, - zeroable::Zeroable, }; =20 use crate::fw_cfg::HPETFwConfig; @@ -213,6 +212,10 @@ pub struct HPETTimer { last: u64, } =20 +// SAFETY: Sync is not automatically derived due to the `state` field, +// which is always dereferenced to a shared reference. +unsafe impl Sync for HPETTimer {} + impl HPETTimer { fn new(index: u8, state: *const HPETState) -> HPETTimer { HPETTimer { @@ -841,7 +844,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { } } =20 - fn pre_save(&self) -> i32 { + fn pre_save(&self) -> Result<(), vmstate::Infallible> { if self.is_hpet_enabled() { self.counter.set(self.get_ticks()); } @@ -852,10 +855,10 @@ fn pre_save(&self) -> i32 { * that was configured. */ self.num_timers_save.set(self.num_timers as u8); - 0 + Ok(()) } =20 - fn post_load(&self, _version_id: u8) -> i32 { + fn post_load(&self, _version_id: u8) -> Result<(), vmstate::Infallible= > { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); =20 @@ -869,7 +872,7 @@ fn post_load(&self, _version_id: u8) -> i32 { .set(ticks_to_ns(self.counter.get()) - CLOCK_VIRTUAL.get_n= s()); } =20 - 0 + Ok(()) } =20 fn is_rtc_irq_level_needed(&self) -> bool { @@ -939,97 +942,66 @@ impl ObjectImpl for HPETState { ), } =20 -unsafe extern "C" fn hpet_rtc_irq_level_needed(opaque: *mut c_void) -> boo= l { - // SAFETY: - // the pointer is convertible to a reference - let state: &HPETState =3D unsafe { NonNull::new(opaque.cast::()).unwrap().as_ref() }; - state.is_rtc_irq_level_needed() -} +static VMSTATE_HPET_RTC_IRQ_LEVEL: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"hpet/rtc_irq_level") + .version_id(1) + .minimum_version_id(1) + .needed(&HPETState::is_rtc_irq_level_needed) + .fields(vmstate_fields! { + vmstate_of!(HPETState, rtc_irq_level), + }) + .build(); =20 -unsafe extern "C" fn hpet_offset_needed(opaque: *mut c_void) -> bool { - // SAFETY: - // the pointer is convertible to a reference - let state: &HPETState =3D unsafe { NonNull::new(opaque.cast::()).unwrap().as_ref() }; - state.is_offset_needed() -} +static VMSTATE_HPET_OFFSET: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"hpet/offset") + .version_id(1) + .minimum_version_id(1) + .needed(&HPETState::is_offset_needed) + .fields(vmstate_fields! { + vmstate_of!(HPETState, hpet_offset), + }) + .build(); =20 -unsafe extern "C" fn hpet_pre_save(opaque: *mut c_void) -> c_int { - // SAFETY: - // the pointer is convertible to a reference - let state: &mut HPETState =3D - unsafe { NonNull::new(opaque.cast::()).unwrap().as_mut(= ) }; - state.pre_save() as c_int -} - -unsafe extern "C" fn hpet_post_load(opaque: *mut c_void, version_id: c_int= ) -> c_int { - // SAFETY: - // the pointer is convertible to a reference - let state: &mut HPETState =3D - unsafe { NonNull::new(opaque.cast::()).unwrap().as_mut(= ) }; - let version: u8 =3D version_id.try_into().unwrap(); - state.post_load(version) as c_int -} - -static VMSTATE_HPET_RTC_IRQ_LEVEL: VMStateDescription =3D VMStateDescripti= on { - name: c"hpet/rtc_irq_level".as_ptr(), - version_id: 1, - minimum_version_id: 1, - needed: Some(hpet_rtc_irq_level_needed), - fields: vmstate_fields! { - vmstate_of!(HPETState, rtc_irq_level), - }, - ..Zeroable::ZERO -}; - -static VMSTATE_HPET_OFFSET: VMStateDescription =3D VMStateDescription { - name: c"hpet/offset".as_ptr(), - version_id: 1, - minimum_version_id: 1, - needed: Some(hpet_offset_needed), - fields: vmstate_fields! { - vmstate_of!(HPETState, hpet_offset), - }, - ..Zeroable::ZERO -}; - -static VMSTATE_HPET_TIMER: VMStateDescription =3D VMStateDescription { - name: c"hpet_timer".as_ptr(), - version_id: 1, - minimum_version_id: 1, - fields: vmstate_fields! { - vmstate_of!(HPETTimer, index), - vmstate_of!(HPETTimer, config), - vmstate_of!(HPETTimer, cmp), - vmstate_of!(HPETTimer, fsb), - vmstate_of!(HPETTimer, period), - vmstate_of!(HPETTimer, wrap_flag), - vmstate_of!(HPETTimer, qemu_timer), - }, - ..Zeroable::ZERO -}; +static VMSTATE_HPET_TIMER: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"hpet_timer") + .version_id(1) + .minimum_version_id(1) + .fields(vmstate_fields! { + vmstate_of!(HPETTimer, index), + vmstate_of!(HPETTimer, config), + vmstate_of!(HPETTimer, cmp), + vmstate_of!(HPETTimer, fsb), + vmstate_of!(HPETTimer, period), + vmstate_of!(HPETTimer, wrap_flag), + vmstate_of!(HPETTimer, qemu_timer), + }) + .build(); =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; =20 -static VMSTATE_HPET: VMStateDescription =3D VMStateDescription { - name: c"hpet".as_ptr(), - version_id: 2, - minimum_version_id: 2, - pre_save: Some(hpet_pre_save), - post_load: Some(hpet_post_load), - fields: vmstate_fields! { - vmstate_of!(HPETState, config), - vmstate_of!(HPETState, int_status), - vmstate_of!(HPETState, counter), - vmstate_of!(HPETState, num_timers_save), - vmstate_validate!(HPETState, VALIDATE_TIMERS_NAME, HPETState::vali= date_num_timers), - vmstate_struct!(HPETState, timers[0 .. num_timers_save], &VMSTATE_= HPET_TIMER, BqlRefCell, HPETState::validate_num_timers).with_ver= sion_id(0), - }, - subsections: vmstate_subsections! { - VMSTATE_HPET_RTC_IRQ_LEVEL, - VMSTATE_HPET_OFFSET, - }, - ..Zeroable::ZERO -}; +const VMSTATE_HPET: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"hpet") + .version_id(2) + .minimum_version_id(2) + .pre_save(&HPETState::pre_save) + .post_load(&HPETState::post_load) + .fields(vmstate_fields! { + vmstate_of!(HPETState, config), + vmstate_of!(HPETState, int_status), + vmstate_of!(HPETState, counter), + vmstate_of!(HPETState, num_timers_save), + vmstate_validate!(HPETState, VALIDATE_TIMERS_NAME, HPETState::= validate_num_timers), + vmstate_struct!(HPETState, timers[0 .. num_timers_save], &VMST= ATE_HPET_TIMER, BqlRefCell, HPETState::validate_num_timers).with= _version_id(0), + }) + .subsections(vmstate_subsections!( + VMSTATE_HPET_RTC_IRQ_LEVEL, + VMSTATE_HPET_OFFSET, + )) + .build(); =20 // SAFETY: HPET_PROPERTIES is a valid Property array constructed with the // qemu_api::declare_properties macro. @@ -1040,8 +1012,8 @@ fn properties() -> &'static [Property] { } =20 impl DeviceImpl for HPETState { - fn vmsd() -> Option<&'static VMStateDescription> { - Some(&VMSTATE_HPET) + fn vmsd() -> Option> { + Some(VMSTATE_HPET) } =20 const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); diff --git a/rust/qemu-api/src/errno.rs b/rust/qemu-api/src/errno.rs index 18d101448b9..507850fe33c 100644 --- a/rust/qemu-api/src/errno.rs +++ b/rust/qemu-api/src/errno.rs @@ -7,7 +7,10 @@ //! convention. This module provides functions to portably convert an int= eger //! into an [`io::Result`] and back. =20 -use std::{convert::TryFrom, io, io::ErrorKind}; +use std::{ + convert::{self, TryFrom}, + io::{self, ErrorKind}, +}; =20 /// An `errno` value that can be converted into an [`io::Error`] pub struct Errno(pub u16); @@ -99,6 +102,12 @@ fn from(value: io::Error) -> Errno { } } =20 +impl From for Errno { + fn from(_value: convert::Infallible) -> Errno { + panic!("unreachable") + } +} + /// Internal traits; used to enable [`into_io_result`] and [`into_neg_errn= o`] /// for the "right" set of types. mod traits { diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 6a58a00e3fc..4dda8c81131 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -173,7 +173,7 @@ pub trait DeviceImpl: /// A `VMStateDescription` providing the migration format for the devi= ce /// Not a `const` because referencing statics in constants is unstable /// until Rust 1.83.0. - fn vmsd() -> Option<&'static VMStateDescription> { + fn vmsd() -> Option> { None } } @@ -225,7 +225,9 @@ pub fn class_init(&mut self) { self.realize =3D Some(rust_realize_fn::); } if let Some(vmsd) =3D ::vmsd() { - self.vmsd =3D vmsd; + // Give a 'static lifetime to the return value of vmsd(). + // Temporary until vmsd() can be changed into a const. + self.vmsd =3D Box::leak(Box::new(vmsd.get())); } let prop =3D ::properties(); if !prop.is_empty() { diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 8515e382135..f5f1ea5590f 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -24,12 +24,24 @@ //! `include/migration/vmstate.h`. These are not type-safe and only prov= ide //! functionality that is missing from `vmstate_of!`. =20 -use core::{marker::PhantomData, mem, ptr::NonNull}; -use std::ffi::{c_int, c_void}; +pub use std::convert::Infallible; +use std::{ + error::Error, + ffi::{c_int, c_void, CStr}, + fmt, io, + marker::PhantomData, + mem, + ptr::NonNull, +}; =20 -pub use crate::bindings::{VMStateDescription, VMStateField}; +pub use crate::bindings::{MigrationPriority, VMStateField}; use crate::{ - bindings::VMStateFlags, callbacks::FnCall, prelude::*, qom::Owned, zer= oable::Zeroable, + bindings::{self, VMStateFlags}, + callbacks::FnCall, + errno::{into_neg_errno, Errno}, + prelude::*, + qom::Owned, + zeroable::Zeroable, }; =20 /// This macro is used to call a function with a generic argument bound @@ -440,7 +452,7 @@ pub extern "C" fn rust_vms_test_field_exists bool { - // SAFETY: the opaque was passed as a reference to `T`. + // SAFETY: assumes vmstate_struct! is used correctly let owner: &T =3D unsafe { &*(opaque.cast::()) }; let version: u8 =3D version_id.try_into().unwrap(); F::call((owner, version)) @@ -490,7 +502,7 @@ macro_rules! vmstate_struct { }, size: ::core::mem::size_of::<$type>(), flags: $crate::bindings::VMStateFlags::VMS_STRUCT, - vmsd: $vmsd, + vmsd: $vmsd.as_ref(), $(field_exists: $crate::vmstate_exist_fn!($struct_name, $test_= fn),)? ..$crate::zeroable::Zeroable::ZERO } $(.with_varray_flag_unchecked( @@ -594,11 +606,225 @@ macro_rules! vmstate_subsections { ($($subsection:expr),*$(,)*) =3D> {{ static _SUBSECTIONS: $crate::vmstate::VMStateSubsectionsWrapper = =3D $crate::vmstate::VMStateSubsectionsWrapper(&[ $({ - static _SUBSECTION: $crate::bindings::VMStateDescription = =3D $subsection; + static _SUBSECTION: $crate::bindings::VMStateDescription = =3D $subsection.get(); ::core::ptr::addr_of!(_SUBSECTION) }),*, ::core::ptr::null() ]); - _SUBSECTIONS.0.as_ptr() + &_SUBSECTIONS }} } + +pub struct VMStateDescription(bindings::VMStateDescription, PhantomData= ); + +// SAFETY: When a *const T is passed to the callbacks, the call itself +// is done in a thread-safe manner. The invocation is okay as long as +// T itself is `Sync`. +unsafe impl Sync for VMStateDescription {} + +#[derive(Clone)] +pub struct VMStateDescriptionBuilder(bindings::VMStateDescription, Phan= tomData); + +#[derive(Debug)] +pub struct InvalidError; + +impl Error for InvalidError {} + +impl std::fmt::Display for InvalidError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "invalid migration data") + } +} + +impl From for Errno { + fn from(_value: InvalidError) -> Errno { + io::ErrorKind::InvalidInput.into() + } +} + +unsafe extern "C" fn vmstate_no_version_cb< + T, + F: for<'a> FnCall<(&'a T,), Result<(), impl Into>>, +>( + opaque: *mut c_void, +) -> c_int { + // SAFETY: assumes vmstate_struct! is used correctly + let result =3D F::call((unsafe { &*(opaque.cast::()) },)); + into_neg_errno(result) +} + +unsafe extern "C" fn vmstate_post_load_cb< + T, + F: for<'a> FnCall<(&'a T, u8), Result<(), impl Into>>, +>( + opaque: *mut c_void, + version_id: c_int, +) -> c_int { + // SAFETY: assumes vmstate_struct! is used correctly + let owner: &T =3D unsafe { &*(opaque.cast::()) }; + let version: u8 =3D version_id.try_into().unwrap(); + let result =3D F::call((owner, version)); + into_neg_errno(result) +} + +unsafe extern "C" fn vmstate_needed_cb FnCall<(&'a T,), bool= >>( + opaque: *mut c_void, +) -> bool { + // SAFETY: assumes vmstate_struct! is used correctly + F::call((unsafe { &*(opaque.cast::()) },)) +} + +unsafe extern "C" fn vmstate_dev_unplug_pending_cb FnCall<(&= 'a T,), bool>>( + opaque: *mut c_void, +) -> bool { + // SAFETY: assumes vmstate_struct! is used correctly + F::call((unsafe { &*(opaque.cast::()) },)) +} + +impl VMStateDescriptionBuilder { + #[must_use] + pub const fn name(mut self, name_str: &CStr) -> Self { + self.0.name =3D ::std::ffi::CStr::as_ptr(name_str); + self + } + + #[must_use] + pub const fn unmigratable(mut self) -> Self { + self.0.unmigratable =3D true; + self + } + + #[must_use] + pub const fn early_setup(mut self) -> Self { + self.0.early_setup =3D true; + self + } + + #[must_use] + pub const fn version_id(mut self, version: u8) -> Self { + self.0.version_id =3D version as c_int; + self + } + + #[must_use] + pub const fn minimum_version_id(mut self, min_version: u8) -> Self { + self.0.minimum_version_id =3D min_version as c_int; + self + } + + #[must_use] + pub const fn priority(mut self, priority: MigrationPriority) -> Self { + self.0.priority =3D priority; + self + } + + #[must_use] + pub const fn pre_load FnCall<(&'a T,), Result<(), impl Into= >>>( + mut self, + _f: &F, + ) -> Self { + self.0.pre_load =3D if F::IS_SOME { + Some(vmstate_no_version_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn post_load FnCall<(&'a T, u8), Result<(), impl = Into>>>( + mut self, + _f: &F, + ) -> Self { + self.0.post_load =3D if F::IS_SOME { + Some(vmstate_post_load_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn pre_save FnCall<(&'a T,), Result<(), impl Into= >>>( + mut self, + _f: &F, + ) -> Self { + self.0.pre_save =3D if F::IS_SOME { + Some(vmstate_no_version_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn post_save FnCall<(&'a T,), Result<(), impl Int= o>>>( + mut self, + _f: &F, + ) -> Self { + self.0.post_save =3D if F::IS_SOME { + Some(vmstate_no_version_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn needed FnCall<(&'a T,), bool>>(mut self, _f: &= F) -> Self { + self.0.needed =3D if F::IS_SOME { + Some(vmstate_needed_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn unplug_pending FnCall<(&'a T,), bool>>(mut sel= f, _f: &F) -> Self { + self.0.dev_unplug_pending =3D if F::IS_SOME { + Some(vmstate_dev_unplug_pending_cb::) + } else { + None + }; + self + } + + #[must_use] + pub const fn fields(mut self, fields: *const VMStateField) -> Self { + self.0.fields =3D fields; + self + } + + #[must_use] + pub const fn subsections(mut self, subs: &'static VMStateSubsectionsWr= apper) -> Self { + self.0.subsections =3D subs.0.as_ptr(); + self + } + + #[must_use] + pub const fn build(self) -> VMStateDescription { + VMStateDescription::(self.0, PhantomData) + } + + #[must_use] + pub const fn new() -> Self { + Self(bindings::VMStateDescription::ZERO, PhantomData) + } +} + +impl Default for VMStateDescriptionBuilder { + fn default() -> Self { + Self::new() + } +} + +impl VMStateDescription { + pub const fn get(&self) -> bindings::VMStateDescription { + self.0 + } + + pub const fn as_ref(&self) -> &bindings::VMStateDescription { + &self.0 + } +} diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index aff3eecd654..4d4e4653f38 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -11,18 +11,16 @@ qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, qom::{ObjectImpl, ParentField}, sysbus::SysBusDevice, - vmstate::VMStateDescription, - zeroable::Zeroable, + vmstate::{VMStateDescription, VMStateDescriptionBuilder}, }; =20 mod vmstate_tests; =20 // Test that macros can compile. -pub static VMSTATE: VMStateDescription =3D VMStateDescription { - name: c"name".as_ptr(), - unmigratable: true, - ..Zeroable::ZERO -}; +pub const VMSTATE: VMStateDescription =3D VMStateDescriptionBu= ilder::::new() + .name(c"name") + .unmigratable() + .build(); =20 #[repr(C)] #[derive(qemu_api_macros::Object, qemu_api_macros::Device)] @@ -58,8 +56,8 @@ impl ObjectImpl for DummyState { impl ResettablePhasesImpl for DummyState {} =20 impl DeviceImpl for DummyState { - fn vmsd() -> Option<&'static VMStateDescription> { - Some(&VMSTATE) + fn vmsd() -> Option> { + Some(VMSTATE) } } =20 diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index bded836eb60..8ffc2779d46 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -16,9 +16,8 @@ }, cell::{BqlCell, Opaque}, impl_vmstate_forward, - vmstate::{VMStateDescription, VMStateField}, + vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, vmstate_fields, vmstate_of, vmstate_struct, vmstate_unused, vmstate_va= lidate, - zeroable::Zeroable, }; =20 const FOO_ARRAY_MAX: usize =3D 3; @@ -41,22 +40,22 @@ struct FooA { elem: i8, } =20 -static VMSTATE_FOOA: VMStateDescription =3D VMStateDescription { - name: c"foo_a".as_ptr(), - version_id: 1, - minimum_version_id: 1, - fields: vmstate_fields! { +static VMSTATE_FOOA: VMStateDescription =3D VMStateDescriptionBuilde= r::::new() + .name(c"foo_a") + .version_id(1) + .minimum_version_id(1) + .fields(vmstate_fields! { vmstate_of!(FooA, elem), vmstate_unused!(size_of::()), vmstate_of!(FooA, arr[0 .. num]).with_version_id(0), vmstate_of!(FooA, arr_mul[0 .. num_mul * 16]), - }, - ..Zeroable::ZERO -}; + }) + .build(); =20 #[test] fn test_vmstate_uint16() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOA.fields, 5) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOA.as_ref().fields, 5) }; =20 // 1st VMStateField ("elem") in VMSTATE_FOOA (corresponding to VMSTATE= _UINT16) assert_eq!( @@ -76,7 +75,8 @@ fn test_vmstate_uint16() { =20 #[test] fn test_vmstate_unused() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOA.fields, 5) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOA.as_ref().fields, 5) }; =20 // 2nd VMStateField ("unused") in VMSTATE_FOOA (corresponding to VMSTA= TE_UNUSED) assert_eq!( @@ -96,7 +96,8 @@ fn test_vmstate_unused() { =20 #[test] fn test_vmstate_varray_uint16_unsafe() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOA.fields, 5) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOA.as_ref().fields, 5) }; =20 // 3rd VMStateField ("arr") in VMSTATE_FOOA (corresponding to // VMSTATE_VARRAY_UINT16_UNSAFE) @@ -117,7 +118,8 @@ fn test_vmstate_varray_uint16_unsafe() { =20 #[test] fn test_vmstate_varray_multiply() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOA.fields, 5) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOA.as_ref().fields, 5) }; =20 // 4th VMStateField ("arr_mul") in VMSTATE_FOOA (corresponding to // VMSTATE_VARRAY_MULTIPLY) @@ -171,24 +173,25 @@ fn validate_foob(_state: &FooB, _version_id: u8) -> b= ool { true } =20 -static VMSTATE_FOOB: VMStateDescription =3D VMStateDescription { - name: c"foo_b".as_ptr(), - version_id: 2, - minimum_version_id: 1, - fields: vmstate_fields! { - vmstate_of!(FooB, val).with_version_id(2), - vmstate_of!(FooB, wrap), - vmstate_struct!(FooB, arr_a[0 .. num_a], &VMSTATE_FOOA, FooA).with= _version_id(1), - vmstate_struct!(FooB, arr_a_mul[0 .. num_a_mul * 32], &VMSTATE_FOO= A, FooA).with_version_id(2), - vmstate_of!(FooB, arr_i64), - vmstate_struct!(FooB, arr_a_wrap[0 .. num_a_wrap], &VMSTATE_FOOA, = FooA, validate_foob), - }, - ..Zeroable::ZERO -}; +static VMSTATE_FOOB: VMStateDescription =3D + VMStateDescriptionBuilder::::new() + .name(c"foo_b") + .version_id(2) + .minimum_version_id(1) + .fields(vmstate_fields! { + vmstate_of!(FooB, val).with_version_id(2), + vmstate_of!(FooB, wrap), + vmstate_struct!(FooB, arr_a[0 .. num_a], &VMSTATE_FOOA, FooA).= with_version_id(1), + vmstate_struct!(FooB, arr_a_mul[0 .. num_a_mul * 32], &VMSTATE= _FOOA, FooA).with_version_id(2), + vmstate_of!(FooB, arr_i64), + vmstate_struct!(FooB, arr_a_wrap[0 .. num_a_wrap], &VMSTATE_FO= OA, FooA, validate_foob), + }) + .build(); =20 #[test] fn test_vmstate_bool_v() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; =20 // 1st VMStateField ("val") in VMSTATE_FOOB (corresponding to VMSTATE_= BOOL_V) assert_eq!( @@ -208,7 +211,8 @@ fn test_vmstate_bool_v() { =20 #[test] fn test_vmstate_uint64() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; =20 // 2nd VMStateField ("wrap") in VMSTATE_FOOB (corresponding to VMSTATE= _U64) assert_eq!( @@ -228,7 +232,8 @@ fn test_vmstate_uint64() { =20 #[test] fn test_vmstate_struct_varray_uint8() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; =20 // 3rd VMStateField ("arr_a") in VMSTATE_FOOB (corresponding to // VMSTATE_STRUCT_VARRAY_UINT8) @@ -246,13 +251,14 @@ fn test_vmstate_struct_varray_uint8() { foo_fields[2].flags.0, VMStateFlags::VMS_STRUCT.0 | VMStateFlags::VMS_VARRAY_UINT8.0 ); - assert_eq!(foo_fields[2].vmsd, &VMSTATE_FOOA); + assert_eq!(foo_fields[2].vmsd, VMSTATE_FOOA.as_ref()); assert!(foo_fields[2].field_exists.is_none()); } =20 #[test] fn test_vmstate_struct_varray_uint32_multiply() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; =20 // 4th VMStateField ("arr_a_mul") in VMSTATE_FOOB (corresponding to // (no C version) MULTIPLY variant of VMSTATE_STRUCT_VARRAY_UINT32) @@ -272,13 +278,14 @@ fn test_vmstate_struct_varray_uint32_multiply() { | VMStateFlags::VMS_VARRAY_UINT32.0 | VMStateFlags::VMS_MULTIPLY_ELEMENTS.0 ); - assert_eq!(foo_fields[3].vmsd, &VMSTATE_FOOA); + assert_eq!(foo_fields[3].vmsd, VMSTATE_FOOA.as_ref()); assert!(foo_fields[3].field_exists.is_none()); } =20 #[test] fn test_vmstate_macro_array() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; =20 // 5th VMStateField ("arr_i64") in VMSTATE_FOOB (corresponding to // VMSTATE_ARRAY) @@ -299,7 +306,8 @@ fn test_vmstate_macro_array() { =20 #[test] fn test_vmstate_struct_varray_uint8_wrapper() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOB.as_ref().fields, 7) }; let mut foo_b: FooB =3D Default::default(); let foo_b_p =3D std::ptr::addr_of_mut!(foo_b).cast::(); =20 @@ -335,26 +343,28 @@ struct FooC { arr_ptr_wrap: FooCWrapper, } =20 -static VMSTATE_FOOC: VMStateDescription =3D VMStateDescription { - name: c"foo_c".as_ptr(), - version_id: 3, - minimum_version_id: 1, - fields: vmstate_fields! { +unsafe impl Sync for FooC {} + +static VMSTATE_FOOC: VMStateDescription =3D VMStateDescriptionBuilde= r::::new() + .name(c"foo_c") + .version_id(3) + .minimum_version_id(1) + .fields(vmstate_fields! { vmstate_of!(FooC, ptr).with_version_id(2), // FIXME: Currently vmstate_struct doesn't support the pointer to = structure. // VMSTATE_STRUCT_POINTER: vmstate_struct!(FooC, ptr_a, VMSTATE_FO= OA, NonNull) vmstate_unused!(size_of::>()), vmstate_of!(FooC, arr_ptr), vmstate_of!(FooC, arr_ptr_wrap), - }, - ..Zeroable::ZERO -}; + }) + .build(); =20 const PTR_SIZE: usize =3D size_of::<*mut ()>(); =20 #[test] fn test_vmstate_pointer() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOC.fields, 6) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOC.as_ref().fields, 6) }; =20 // 1st VMStateField ("ptr") in VMSTATE_FOOC (corresponding to VMSTATE_= POINTER) assert_eq!( @@ -377,7 +387,8 @@ fn test_vmstate_pointer() { =20 #[test] fn test_vmstate_macro_array_of_pointer() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOC.fields, 6) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOC.as_ref().fields, 6) }; =20 // 3rd VMStateField ("arr_ptr") in VMSTATE_FOOC (corresponding to // VMSTATE_ARRAY_OF_POINTER) @@ -401,7 +412,8 @@ fn test_vmstate_macro_array_of_pointer() { =20 #[test] fn test_vmstate_macro_array_of_pointer_wrapped() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOC.fields, 6) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOC.as_ref().fields, 6) }; =20 // 4th VMStateField ("arr_ptr_wrap") in VMSTATE_FOOC (corresponding to // VMSTATE_ARRAY_OF_POINTER) @@ -450,21 +462,21 @@ fn validate_food_2(_state: &FooD, _version_id: u8) ->= bool { true } =20 -static VMSTATE_FOOD: VMStateDescription =3D VMStateDescription { - name: c"foo_d".as_ptr(), - version_id: 3, - minimum_version_id: 1, - fields: vmstate_fields! { +static VMSTATE_FOOD: VMStateDescription =3D VMStateDescriptionBuilde= r::::new() + .name(c"foo_d") + .version_id(3) + .minimum_version_id(1) + .fields(vmstate_fields! { vmstate_validate!(FooD, c"foo_d_0", FooD::validate_food_0), vmstate_validate!(FooD, c"foo_d_1", FooD::validate_food_1), vmstate_validate!(FooD, c"foo_d_2", validate_food_2), - }, - ..Zeroable::ZERO -}; + }) + .build(); =20 #[test] fn test_vmstate_validate() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOD.fields, 4) }; + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOD.as_ref().fields, 4) }; let mut foo_d =3D FooD; let foo_d_p =3D std::ptr::addr_of_mut!(foo_d).cast::(); =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751164; cv=none; d=zohomail.com; s=zohoarc; b=fmo9pRzjEzW2M0JTJy5rwQxJi68JrKEqVXzvuNRdF7oc2UkaiMhtdAOUcOl6gT5zhron5stOg6zroZyFmBC46tUOTlxuGo5vGZ58ClYLTl+SHkUvaZfhVWj7hHtHLxJgT3gianTh5AEiI3egZJbs/E4l/4B2aioYMjaMaT4W+Ko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751164; 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=OPJwR3zfOjvgokak3yNdC2/ULc804Arf8g+9VLZWBBo=; b=HuabxigwhNGrfbhUrl9r82OM4zB53uFX8dDJ9G0zJE3ntGTQR/iQYTdqFpN5P25E0+M+3yk2ZNBjy0He78XwXAhgXNP2TXnEQxQ4lqOYqyv8LEfX+H/dMq3tm0ZCeJL/DfWcTYsdxHR4xpnxGKttNCGSrxGPsUFinpBs7KjyzZg= 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 1757751164545554.525440966789; Sat, 13 Sep 2025 01:12:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLu-0006wc-OH; Sat, 13 Sep 2025 04:11: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 1uxLLm-0006NF-4a for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:15 -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 1uxLLh-00054L-A6 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:13 -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-25-PmWN5ZPzMDewPkeUDDXGjQ-1; Sat, 13 Sep 2025 04:11:06 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e40057d90aso1013511f8f.0 for ; Sat, 13 Sep 2025 01:11:05 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037b9215sm90477085e9.12.2025.09.13.01.11.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751068; 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=OPJwR3zfOjvgokak3yNdC2/ULc804Arf8g+9VLZWBBo=; b=LNhxVjb47Tk8M+n3kZ4xMDx9lHbCnqbug+FeXyI6E60jy5xZhyB2fh1oao32JO0vPDWIQ7 KFXiRnmQhX62t2NX5sRe47bKNXyxNAT7u+c8HofMfLfykt4u1xTttfza2sEa0CkL+5q+KX 6bJ3Ei3GXkXzraBlIAfo56btRMidOJQ= X-MC-Unique: PmWN5ZPzMDewPkeUDDXGjQ-1 X-Mimecast-MFC-AGG-ID: PmWN5ZPzMDewPkeUDDXGjQ_1757751065 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751064; x=1758355864; 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=OPJwR3zfOjvgokak3yNdC2/ULc804Arf8g+9VLZWBBo=; b=IilT04EG8KIeUWFYVHoJZPoYQqOn6D8P3LqDQ2yCpcYKIm+rWrxaTWXGSEa4IUQltO IxkGwK8AkZ9NkhQz2+RczgXZzH3Hx4+aueR/VFKekeFDjY/xlp4N0IZ3ODQtadLLabM8 jatScuHzPX6S1AtPq/5GOQtzsjIuAJPprQ3UrkWCAzAmwIfBuuNhD9BekWuPVwcOFuqs o4T0/ftAEbZesbdB50yB2FLZLY8ylCQnF/M6gi4d/wvhjqYbavlp/yL2GBAD9h/MBzgP +zowCaPT0Apo/Nx+hKKi/yDKdUjBa2ZwhXahgKsL/Qy2erELgd1eN4U6ehQqurHx5MbG cM4g== X-Gm-Message-State: AOJu0YxU2TGM1Tt/dKosOOdH5Ucs8QiXuRaf7A3tSO3MF7wQyYCWVyGF LQpM6ei6X+8rNVYCKyr//xW1mkUpbATsNCd7LDV8+z0uQZUFYFZBs0EOnMHMIwyiiKeI3qyCoQR wWTzCZPb/ojgI91gpZMR2kGL2IfuT7uA4IFbqly49+6im8SbTvq1B7AXymDT4hMFkacM8Zeu3uO Sa9WFyJ+G/iOuczPHKuEnCcOIq5a1gSHoOjTUkieHR X-Gm-Gg: ASbGncve0NlSYlmJrmvYHsMYPGUW/Mxb/hQ+sFB3duIpsuPMMwsif2Y3h23We3YMhlC PIV2PbSNqYvtCmP/XVIB3WsMZznJJbQUVjAJ0SOJpvq3//IJ3O43IYsEDB9XPEgmbpcvcWokJxQ QZW9MgyNxPhhnoRJzh147vdXqOu3b9VeB9A4QEPQABz3PSoU0XKxXNcegQfOGn0bgLZ+LhDaT41 H63FlECCKLwwt+oJOYhBAYvZGgtk79gEP2HRObAxv1/6AKKCrngtJHf3iyFxBsrE4WohhZAJEt8 C+xuJTGxZrSrkHp94ODAPwVgpU8+YxSV/CIhBe13PKroIXIqZOD3BK3lguybTYPVmLBebzXYD11 nXd29e1RAK797S5cJUhuebky1mIp7PlyS1MjDlyWCqvU= X-Received: by 2002:a05:6000:228a:b0:3a4:d6ed:8df8 with SMTP id ffacd0b85a97d-3e7659e7a52mr4894042f8f.39.1757751063672; Sat, 13 Sep 2025 01:11:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGLWzZlargOJBgoHE2p3dXrnTLEFTHypKbAbzPtJf3YSnW68/Kh0C8lagg7eZ5bwkquzqUVqQ== X-Received: by 2002:a05:6000:228a:b0:3a4:d6ed:8df8 with SMTP id ffacd0b85a97d-3e7659e7a52mr4893996f8f.39.1757751062831; Sat, 13 Sep 2025 01:11:02 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 27/61] rust: vmstate: use const_refs_to_static Date: Sat, 13 Sep 2025 10:09:08 +0200 Message-ID: <20250913080943.11710-28-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751165296116600 Content-Type: text/plain; charset="utf-8" The VMStateDescriptionBuilder already needs const_refs_static, so use it to remove the need for vmstate_clock! and vmstate_struct!, as well as to simplify the implementation for scalars. If the consts in the VMState trait can reference to static VMStateDescription, scalars do not need the info_enum_to_ref! indirection and structs can implement the VMState trait themselves. Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-9-pbonzini@redhat.com Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 5 - rust/hw/char/pl011/src/device.rs | 19 ++- rust/hw/timer/hpet/src/device.rs | 8 +- rust/qemu-api/src/assertions.rs | 4 - rust/qemu-api/src/vmstate.rs | 229 +++++++-------------------- rust/qemu-api/tests/vmstate_tests.rs | 65 +++++--- 6 files changed, 113 insertions(+), 217 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index aca29e55c05..10b0590b56c 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -84,11 +84,6 @@ patches are welcome: =20 * ``&raw`` (stable in 1.82.0). =20 -* referencing statics in constants (stable in 1.83.0). For now use a const - function; this is an important limitation for QEMU's migration stream - architecture (VMState). Right now, VMState lacks type safety because - it is hard to place the ``VMStateField`` definitions in traits. - * NUL-terminated file names with ``#[track_caller]`` are scheduled for inclusion as ``#![feature(location_file_nul)]``, but it will be a while before QEMU can use them. For now, there is special code in diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 21611d9c099..87a17716fed 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -2,14 +2,11 @@ // Author(s): Manos Pitsidianakis // SPDX-License-Identifier: GPL-2.0-or-later =20 -use std::{ - ffi::CStr, - mem::size_of -}; +use std::{ffi::CStr, mem::size_of}; =20 use qemu_api::{ chardev::{CharBackend, Chardev, Event}, - impl_vmstate_forward, + impl_vmstate_forward, impl_vmstate_struct, irq::{IRQState, InterruptSource}, log::Log, log_mask_ln, @@ -21,7 +18,7 @@ sysbus::{SysBusDevice, SysBusDeviceImpl}, uninit_field_mut, vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, - vmstate_clock, vmstate_fields, vmstate_of, vmstate_struct, vmstate_sub= sections, vmstate_unused, + vmstate_fields, vmstate_of, vmstate_subsections, vmstate_unused, }; =20 use crate::registers::{self, Interrupt, RegisterOffset}; @@ -725,11 +722,12 @@ impl SysBusDeviceImpl for PL011Luminary {} .minimum_version_id(1) .needed(&PL011State::clock_needed) .fields(vmstate_fields! { - vmstate_clock!(PL011State, clock), + vmstate_of!(PL011State, clock), }) .build(); =20 -static VMSTATE_PL011_REGS: VMStateDescription =3D +impl_vmstate_struct!( + PL011Registers, VMStateDescriptionBuilder::::new() .name(c"pl011/regs") .version_id(2) @@ -751,7 +749,8 @@ impl SysBusDeviceImpl for PL011Luminary {} vmstate_of!(PL011Registers, read_count), vmstate_of!(PL011Registers, read_trigger), }) - .build(); + .build() +); =20 pub const VMSTATE_PL011: VMStateDescription =3D VMStateDescriptionBuilder::::new() @@ -761,7 +760,7 @@ impl SysBusDeviceImpl for PL011Luminary {} .post_load(&PL011State::post_load) .fields(vmstate_fields! { vmstate_unused!(core::mem::size_of::()), - vmstate_struct!(PL011State, regs, &VMSTATE_PL011_REGS, BqlRefC= ell), + vmstate_of!(PL011State, regs), }) .subsections(vmstate_subsections! { VMSTATE_PL011_CLOCK diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 955cf869ff6..eb5bd042b1c 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -16,6 +16,7 @@ qdev_prop_uint32, qdev_prop_usize, }, cell::{BqlCell, BqlRefCell}, + impl_vmstate_struct, irq::InterruptSource, memory::{ hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEM= TXATTRS_UNSPECIFIED, @@ -28,7 +29,7 @@ timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, uninit_field_mut, vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, - vmstate_fields, vmstate_of, vmstate_struct, vmstate_subsections, vmsta= te_validate, + vmstate_fields, vmstate_of, vmstate_subsections, vmstate_validate, }; =20 use crate::fw_cfg::HPETFwConfig; @@ -964,7 +965,7 @@ impl ObjectImpl for HPETState { }) .build(); =20 -static VMSTATE_HPET_TIMER: VMStateDescription =3D +const VMSTATE_HPET_TIMER: VMStateDescription =3D VMStateDescriptionBuilder::::new() .name(c"hpet_timer") .version_id(1) @@ -979,6 +980,7 @@ impl ObjectImpl for HPETState { vmstate_of!(HPETTimer, qemu_timer), }) .build(); +impl_vmstate_struct!(HPETTimer, VMSTATE_HPET_TIMER); =20 const VALIDATE_TIMERS_NAME: &CStr =3D c"num_timers must match"; =20 @@ -995,7 +997,7 @@ impl ObjectImpl for HPETState { vmstate_of!(HPETState, counter), vmstate_of!(HPETState, num_timers_save), vmstate_validate!(HPETState, VALIDATE_TIMERS_NAME, HPETState::= validate_num_timers), - vmstate_struct!(HPETState, timers[0 .. num_timers_save], &VMST= ATE_HPET_TIMER, BqlRefCell, HPETState::validate_num_timers).with= _version_id(0), + vmstate_of!(HPETState, timers[0 .. num_timers_save], HPETState= ::validate_num_timers).with_version_id(0), }) .subsections(vmstate_subsections!( VMSTATE_HPET_RTC_IRQ_LEVEL, diff --git a/rust/qemu-api/src/assertions.rs b/rust/qemu-api/src/assertions= .rs index e74fa3ef826..e4fe23b674e 100644 --- a/rust/qemu-api/src/assertions.rs +++ b/rust/qemu-api/src/assertions.rs @@ -95,10 +95,6 @@ const fn types_must_be_equal(_: &T) ($t:ty, $i:tt, $ti:ty) =3D> { $crate::assert_field_type!(@internal v, $ti, $t, v.$i); }; - - ($t:ty, $i:tt, $ti:ty, num =3D $num:ident) =3D> { - $crate::assert_field_type!(@internal v, $ti, $t, v.$i[0]); - }; } =20 /// Assert that an expression matches a pattern. This can also be diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index f5f1ea5590f..b5c6b764fbb 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -11,10 +11,11 @@ //! migration format for a struct. This is based on the [`VMState`] tra= it, //! which is defined by all migratable types. //! -//! * [`impl_vmstate_forward`](crate::impl_vmstate_forward) and -//! [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), which help = with -//! the definition of the [`VMState`] trait (respectively for transparent -//! structs and for `bilge`-defined types) +//! * [`impl_vmstate_forward`](crate::impl_vmstate_forward), +//! [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and +//! [`impl_vmstate_struct`](crate::impl_vmstate_struct), which help with= the +//! definition of the [`VMState`] trait (respectively for transparent st= ructs, +//! nested structs and `bilge`-defined types) //! //! * helper macros to declare a device model state struct, in particular //! [`vmstate_subsections`](crate::vmstate_subsections) and @@ -31,7 +32,7 @@ fmt, io, marker::PhantomData, mem, - ptr::NonNull, + ptr::{addr_of, NonNull}, }; =20 pub use crate::bindings::{MigrationPriority, VMStateField}; @@ -40,6 +41,7 @@ callbacks::FnCall, errno::{into_neg_errno, Errno}, prelude::*, + qdev, qom::Owned, zeroable::Zeroable, }; @@ -81,70 +83,6 @@ const fn phantom__(_: &T) -> ::core::marker::PhantomD= ata { ::core::marker: }; } =20 -/// Workaround for lack of `const_refs_static`: references to global varia= bles -/// can be included in a `static`, but not in a `const`; unfortunately, th= is -/// is exactly what would go in the `VMStateField`'s `info` member. -/// -/// This enum contains the contents of the `VMStateField`'s `info` member, -/// but as an `enum` instead of a pointer. -#[allow(non_camel_case_types)] -pub enum VMStateFieldType { - null, - vmstate_info_bool, - vmstate_info_int8, - vmstate_info_int16, - vmstate_info_int32, - vmstate_info_int64, - vmstate_info_uint8, - vmstate_info_uint16, - vmstate_info_uint32, - vmstate_info_uint64, - vmstate_info_timer, -} - -/// Workaround for lack of `const_refs_static`. Converts a `VMStateFieldT= ype` -/// to a `*const VMStateInfo`, for inclusion in a `VMStateField`. -#[macro_export] -macro_rules! info_enum_to_ref { - ($e:expr) =3D> { - unsafe { - match $e { - $crate::vmstate::VMStateFieldType::null =3D> ::core::ptr::= null(), - $crate::vmstate::VMStateFieldType::vmstate_info_bool =3D> { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_b= ool) - } - $crate::vmstate::VMStateFieldType::vmstate_info_int8 =3D> { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_i= nt8) - } - $crate::vmstate::VMStateFieldType::vmstate_info_int16 =3D>= { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_i= nt16) - } - $crate::vmstate::VMStateFieldType::vmstate_info_int32 =3D>= { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_i= nt32) - } - $crate::vmstate::VMStateFieldType::vmstate_info_int64 =3D>= { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_i= nt64) - } - $crate::vmstate::VMStateFieldType::vmstate_info_uint8 =3D>= { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_u= int8) - } - $crate::vmstate::VMStateFieldType::vmstate_info_uint16 =3D= > { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_u= int16) - } - $crate::vmstate::VMStateFieldType::vmstate_info_uint32 =3D= > { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_u= int32) - } - $crate::vmstate::VMStateFieldType::vmstate_info_uint64 =3D= > { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_u= int64) - } - $crate::vmstate::VMStateFieldType::vmstate_info_timer =3D>= { - ::core::ptr::addr_of!($crate::bindings::vmstate_info_t= imer) - } - } - } - }; -} - /// A trait for types that can be included in a device's migration stream.= It /// provides the base contents of a `VMStateField` (minus the name and off= set). /// @@ -155,12 +93,6 @@ macro_rules! info_enum_to_ref { /// to implement it except via macros that do it for you, such as /// `impl_vmstate_bitsized!`. pub unsafe trait VMState { - /// The `info` member of a `VMStateField` is a pointer and as such can= not - /// yet be included in the [`BASE`](VMState::BASE) associated constant; - /// this is only allowed by Rust 1.83.0 and newer. For now, include t= he - /// member as an enum which is stored in a separate constant. - const SCALAR_TYPE: VMStateFieldType =3D VMStateFieldType::null; - /// The base contents of a `VMStateField` (minus the name and offset) = for /// the type that is implementing the trait. const BASE: VMStateField; @@ -175,12 +107,6 @@ pub unsafe trait VMState { }; } =20 -/// Internal utility function to retrieve a type's `VMStateFieldType`; -/// used by [`vmstate_of!`](crate::vmstate_of). -pub const fn vmstate_scalar_type(_: PhantomData) -> VMState= FieldType { - T::SCALAR_TYPE -} - /// Internal utility function to retrieve a type's `VMStateField`; /// used by [`vmstate_of!`](crate::vmstate_of). pub const fn vmstate_base(_: PhantomData) -> VMStateField { @@ -207,9 +133,9 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// * an array of any of the above /// /// In order to support other types, the trait `VMState` must be implement= ed -/// for them. The macros -/// [`impl_vmstate_bitsized!`](crate::impl_vmstate_bitsized) -/// and [`impl_vmstate_forward!`](crate::impl_vmstate_forward) help with t= his. +/// for them. The macros [`impl_vmstate_forward`](crate::impl_vmstate_for= ward), +/// [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and +/// [`impl_vmstate_struct`](crate::impl_vmstate_struct) help with this. #[macro_export] macro_rules! vmstate_of { ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])? $(, $test_fn:expr)? $(,)?) =3D> { @@ -222,11 +148,6 @@ macro_rules! vmstate_of { $(field_exists: $crate::vmstate_exist_fn!($struct_name, $test_= fn),)? // The calls to `call_func_with_field!` are the magic that // computes most of the VMStateField from the type of the fiel= d. - info: $crate::info_enum_to_ref!($crate::call_func_with_field!( - $crate::vmstate::vmstate_scalar_type, - $struct_name, - $field_name - )), ..$crate::call_func_with_field!( $crate::vmstate::vmstate_base, $struct_name, @@ -327,8 +248,6 @@ macro_rules! impl_vmstate_forward { // the first field of the tuple ($tuple:ty) =3D> { unsafe impl $crate::vmstate::VMState for $tuple { - const SCALAR_TYPE: $crate::vmstate::VMStateFieldType =3D - $crate::call_func_with_field!($crate::vmstate::vmstate_sca= lar_type, $tuple, 0); const BASE: $crate::bindings::VMStateField =3D $crate::call_func_with_field!($crate::vmstate::vmstate_bas= e, $tuple, 0); } @@ -340,7 +259,6 @@ unsafe impl $crate::vmstate::VMState for $tuple { macro_rules! impl_vmstate_transparent { ($type:ty where $base:tt: VMState $($where:tt)*) =3D> { unsafe impl<$base> VMState for $type where $base: VMState $($where= )* { - const SCALAR_TYPE: VMStateFieldType =3D <$base as VMState>::SC= ALAR_TYPE; const BASE: VMStateField =3D VMStateField { size: mem::size_of::<$type>(), ..<$base as VMState>::BASE @@ -361,10 +279,6 @@ unsafe impl<$base> VMState for $type where $base: VMSt= ate $($where)* { macro_rules! impl_vmstate_bitsized { ($type:ty) =3D> { unsafe impl $crate::vmstate::VMState for $type { - const SCALAR_TYPE: $crate::vmstate::VMStateFieldType =3D - <<<$type as ::bilge::prelude::Bits= ized>::ArbitraryInt - as ::bilge::prelude::Number>::Un= derlyingType - as $crate::vmstate::VMState>::SCA= LAR_TYPE; const BASE: $crate::bindings::VMStateField =3D <<<$type as ::bilge::prelude::Bits= ized>::ArbitraryInt as ::bilge::prelude::Number>::Un= derlyingType @@ -382,8 +296,8 @@ unsafe impl $crate::vmstate::VMState for $type { macro_rules! impl_vmstate_scalar { ($info:ident, $type:ty$(, $varray_flag:ident)?) =3D> { unsafe impl VMState for $type { - const SCALAR_TYPE: VMStateFieldType =3D VMStateFieldType::$inf= o; const BASE: VMStateField =3D VMStateField { + info: addr_of!(bindings::$info), size: mem::size_of::<$type>(), flags: VMStateFlags::VMS_SINGLE, ..Zeroable::ZERO @@ -404,6 +318,21 @@ unsafe impl VMState for $type { impl_vmstate_scalar!(vmstate_info_uint64, u64); impl_vmstate_scalar!(vmstate_info_timer, crate::timer::Timer); =20 +macro_rules! impl_vmstate_c_struct { + ($type:ty, $vmsd:expr) =3D> { + unsafe impl VMState for $type { + const BASE: VMStateField =3D $crate::bindings::VMStateField { + vmsd: addr_of!($vmsd), + size: mem::size_of::<$type>(), + flags: VMStateFlags::VMS_STRUCT, + ..Zeroable::ZERO + }; + } + }; +} + +impl_vmstate_c_struct!(qdev::Clock, bindings::vmstate_clock); + // Pointer types using the underlying type's VMState plus VMS_POINTER // Note that references are not supported, though references to cells // could be allowed. @@ -411,7 +340,6 @@ unsafe impl VMState for $type { macro_rules! impl_vmstate_pointer { ($type:ty where $base:tt: VMState $($where:tt)*) =3D> { unsafe impl<$base> VMState for $type where $base: VMState $($where= )* { - const SCALAR_TYPE: VMStateFieldType =3D ::SCALAR= _TYPE; const BASE: VMStateField =3D <$base as VMState>::BASE.with_poi= nter_flag(); } }; @@ -430,7 +358,6 @@ unsafe impl<$base> VMState for $type where $base: VMSta= te $($where)* { // VMS_ARRAY/VMS_ARRAY_OF_POINTER =20 unsafe impl VMState for [T; N] { - const SCALAR_TYPE: VMStateFieldType =3D ::SCALAR_TYPE; const BASE: VMStateField =3D ::BASE.with_array_flag(N); } =20 @@ -452,7 +379,7 @@ pub extern "C" fn rust_vms_test_field_exists bool { - // SAFETY: assumes vmstate_struct! is used correctly + // SAFETY: the function is used in T's implementation of VMState let owner: &T =3D unsafe { &*(opaque.cast::()) }; let version: u8 =3D version_id.try_into().unwrap(); F::call((owner, version)) @@ -480,76 +407,6 @@ const fn phantom__(_: &T) -> ::core::marker::Phanto= mData { }}; } =20 -// FIXME: including the `vmsd` field in a `const` is not possible without -// the const_refs_static feature (stabilized in Rust 1.83.0). Without it, -// it is not possible to use VMS_STRUCT in a transparent manner using -// `vmstate_of!`. While VMSTATE_CLOCK can at least try to be type-safe, -// VMSTATE_STRUCT includes $type only for documentation purposes; it -// is checked against $field_name and $struct_name, but not against $vmsd -// which is what really would matter. -#[doc(alias =3D "VMSTATE_STRUCT")] -#[macro_export] -macro_rules! vmstate_struct { - ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])?, $vmsd:expr, $type:ty $(, $test_fn:expr)? $(,)?) =3D> { - $crate::bindings::VMStateField { - name: ::core::concat!(::core::stringify!($field_name), "\0") - .as_bytes() - .as_ptr() as *const ::std::os::raw::c_char, - $(num_offset: ::std::mem::offset_of!($struct_name, $num),)? - offset: { - $crate::assert_field_type!($struct_name, $field_name, $typ= e $(, num =3D $num)?); - ::std::mem::offset_of!($struct_name, $field_name) - }, - size: ::core::mem::size_of::<$type>(), - flags: $crate::bindings::VMStateFlags::VMS_STRUCT, - vmsd: $vmsd.as_ref(), - $(field_exists: $crate::vmstate_exist_fn!($struct_name, $test_= fn),)? - ..$crate::zeroable::Zeroable::ZERO - } $(.with_varray_flag_unchecked( - $crate::call_func_with_field!( - $crate::vmstate::vmstate_varray_flag, - $struct_name, - $num - ) - ) - $(.with_varray_multiply($factor))?)? - }; -} - -#[doc(alias =3D "VMSTATE_CLOCK")] -#[macro_export] -macro_rules! vmstate_clock { - ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])?) =3D> {{ - $crate::bindings::VMStateField { - name: ::core::concat!(::core::stringify!($field_name), "\0") - .as_bytes() - .as_ptr() as *const ::std::os::raw::c_char, - offset: { - $crate::assert_field_type!( - $struct_name, - $field_name, - $crate::qom::Owned<$crate::qdev::Clock> $(, num =3D $n= um)? - ); - ::std::mem::offset_of!($struct_name, $field_name) - }, - size: ::core::mem::size_of::<*const $crate::qdev::Clock>(), - flags: $crate::bindings::VMStateFlags( - $crate::bindings::VMStateFlags::VMS_STRUCT.0 - | $crate::bindings::VMStateFlags::VMS_POINTER.0, - ), - vmsd: unsafe { ::core::ptr::addr_of!($crate::bindings::vmstate= _clock) }, - ..$crate::zeroable::Zeroable::ZERO - } $(.with_varray_flag_unchecked( - $crate::call_func_with_field!( - $crate::vmstate::vmstate_varray_flag, - $struct_name, - $num - ) - ) - $(.with_varray_multiply($factor))?)? - }}; -} - /// Helper macro to declare a list of /// ([`VMStateField`](`crate::bindings::VMStateField`)) into a static and = return /// a pointer to the array of values it created. @@ -584,6 +441,30 @@ macro_rules! vmstate_validate { }; } =20 +/// Helper macro to allow using a struct in [`vmstate_of!`] +/// +/// # Safety +/// +/// The [`VMStateDescription`] constant `$vmsd` must be an accurate +/// description of the struct. +#[macro_export] +macro_rules! impl_vmstate_struct { + ($type:ty, $vmsd:expr) =3D> { + unsafe impl $crate::vmstate::VMState for $type { + const BASE: $crate::bindings::VMStateField =3D { + static VMSD: &$crate::bindings::VMStateDescription =3D $vm= sd.as_ref(); + + $crate::bindings::VMStateField { + vmsd: ::core::ptr::addr_of!(*VMSD), + size: ::core::mem::size_of::<$type>(), + flags: $crate::bindings::VMStateFlags::VMS_STRUCT, + ..$crate::zeroable::Zeroable::ZERO + } + }; + } + }; +} + /// A transparent wrapper type for the `subsections` field of /// [`VMStateDescription`]. /// @@ -648,7 +529,7 @@ fn from(_value: InvalidError) -> Errno { >( opaque: *mut c_void, ) -> c_int { - // SAFETY: assumes vmstate_struct! is used correctly + // SAFETY: the function is used in T's implementation of VMState let result =3D F::call((unsafe { &*(opaque.cast::()) },)); into_neg_errno(result) } @@ -660,7 +541,7 @@ fn from(_value: InvalidError) -> Errno { opaque: *mut c_void, version_id: c_int, ) -> c_int { - // SAFETY: assumes vmstate_struct! is used correctly + // SAFETY: the function is used in T's implementation of VMState let owner: &T =3D unsafe { &*(opaque.cast::()) }; let version: u8 =3D version_id.try_into().unwrap(); let result =3D F::call((owner, version)); @@ -670,14 +551,14 @@ fn from(_value: InvalidError) -> Errno { unsafe extern "C" fn vmstate_needed_cb FnCall<(&'a T,), bool= >>( opaque: *mut c_void, ) -> bool { - // SAFETY: assumes vmstate_struct! is used correctly + // SAFETY: the function is used in T's implementation of VMState F::call((unsafe { &*(opaque.cast::()) },)) } =20 unsafe extern "C" fn vmstate_dev_unplug_pending_cb FnCall<(&= 'a T,), bool>>( opaque: *mut c_void, ) -> bool { - // SAFETY: assumes vmstate_struct! is used correctly + // SAFETY: the function is used in T's implementation of VMState F::call((unsafe { &*(opaque.cast::()) },)) } =20 diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index 8ffc2779d46..2c0670ba0ee 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -15,9 +15,9 @@ vmstate_info_uint64, vmstate_info_uint8, vmstate_info_unused_buffe= r, VMStateFlags, }, cell::{BqlCell, Opaque}, - impl_vmstate_forward, + impl_vmstate_forward, impl_vmstate_struct, vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, - vmstate_fields, vmstate_of, vmstate_struct, vmstate_unused, vmstate_va= lidate, + vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate, }; =20 const FOO_ARRAY_MAX: usize =3D 3; @@ -52,6 +52,8 @@ struct FooA { }) .build(); =20 +impl_vmstate_struct!(FooA, VMSTATE_FOOA); + #[test] fn test_vmstate_uint16() { let foo_fields: &[VMStateField] =3D @@ -173,20 +175,19 @@ fn validate_foob(_state: &FooB, _version_id: u8) -> b= ool { true } =20 -static VMSTATE_FOOB: VMStateDescription =3D - VMStateDescriptionBuilder::::new() - .name(c"foo_b") - .version_id(2) - .minimum_version_id(1) - .fields(vmstate_fields! { - vmstate_of!(FooB, val).with_version_id(2), - vmstate_of!(FooB, wrap), - vmstate_struct!(FooB, arr_a[0 .. num_a], &VMSTATE_FOOA, FooA).= with_version_id(1), - vmstate_struct!(FooB, arr_a_mul[0 .. num_a_mul * 32], &VMSTATE= _FOOA, FooA).with_version_id(2), - vmstate_of!(FooB, arr_i64), - vmstate_struct!(FooB, arr_a_wrap[0 .. num_a_wrap], &VMSTATE_FO= OA, FooA, validate_foob), - }) - .build(); +static VMSTATE_FOOB: VMStateDescription =3D VMStateDescriptionBuilde= r::::new() + .name(c"foo_b") + .version_id(2) + .minimum_version_id(1) + .fields(vmstate_fields! { + vmstate_of!(FooB, val).with_version_id(2), + vmstate_of!(FooB, wrap), + vmstate_of!(FooB, arr_a[0 .. num_a]).with_version_id(1), + vmstate_of!(FooB, arr_a_mul[0 .. num_a_mul * 32]).with_version_id(= 2), + vmstate_of!(FooB, arr_i64), + vmstate_of!(FooB, arr_a_wrap[0 .. num_a_wrap], validate_foob), + }) + .build(); =20 #[test] fn test_vmstate_bool_v() { @@ -351,9 +352,7 @@ unsafe impl Sync for FooC {} .minimum_version_id(1) .fields(vmstate_fields! { vmstate_of!(FooC, ptr).with_version_id(2), - // FIXME: Currently vmstate_struct doesn't support the pointer to = structure. - // VMSTATE_STRUCT_POINTER: vmstate_struct!(FooC, ptr_a, VMSTATE_FO= OA, NonNull) - vmstate_unused!(size_of::>()), + vmstate_of!(FooC, ptr_a), vmstate_of!(FooC, arr_ptr), vmstate_of!(FooC, arr_ptr_wrap), }) @@ -385,6 +384,31 @@ fn test_vmstate_pointer() { assert!(foo_fields[0].field_exists.is_none()); } =20 +#[test] +fn test_vmstate_struct_pointer() { + let foo_fields: &[VMStateField] =3D + unsafe { slice::from_raw_parts(VMSTATE_FOOC.as_ref().fields, 6) }; + + // 2st VMStateField ("ptr_a") in VMSTATE_FOOC (corresponding to + // VMSTATE_STRUCT_POINTER) + assert_eq!( + unsafe { CStr::from_ptr(foo_fields[1].name) }.to_bytes_with_nul(), + b"ptr_a\0" + ); + assert_eq!(foo_fields[1].offset, PTR_SIZE); + assert_eq!(foo_fields[1].num_offset, 0); + assert_eq!(foo_fields[1].vmsd, VMSTATE_FOOA.as_ref()); + assert_eq!(foo_fields[1].version_id, 0); + assert_eq!(foo_fields[1].size, size_of::()); + assert_eq!(foo_fields[1].num, 0); + assert_eq!( + foo_fields[1].flags.0, + VMStateFlags::VMS_STRUCT.0 | VMStateFlags::VMS_POINTER.0 + ); + assert!(foo_fields[1].info.is_null()); + assert!(foo_fields[1].field_exists.is_none()); +} + #[test] fn test_vmstate_macro_array_of_pointer() { let foo_fields: &[VMStateField] =3D @@ -444,8 +468,7 @@ fn test_vmstate_macro_array_of_pointer_wrapped() { // * VMSTATE_FOOD: // - VMSTATE_VALIDATE =20 -// Add more member fields when vmstate_of/vmstate_struct support "test" -// parameter. +// Add more member fields when vmstate_of support "test" parameter. struct FooD; =20 impl FooD { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751586; cv=none; d=zohomail.com; s=zohoarc; b=eJ5xLdvCp7ZLtBjvucnosrjt9ZkSrsGVXGXOIof8UMoRygb6TWlrZA6JIp1e+5fUb1e+szcBZnmlNSG6CiyU8ZFHWco8vcyiSBlnuAPStd7qDcIFd/gUQEBG8g+FAPLqfIQLom13683pt2oxDh1kzrEDZZzidkd2o/1lYN0KxL8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751586; 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=abpJhzSiEvSBxp/thG7p1BXuYoKn4R+kKTAYQkjtF8A=; b=IKISet/4HLQL7+u6LEsG2qhOP2sebiLjzBYZCwiI8uvmSfeHCreYjnBi1+IyFPPkEVf+CjmlCDHLrlmkgt8cOWW9QxqDtmvji/0JhCKNp5ddnPv+MAsEXQjrE3Wp596dAxeWpzfJOHyeppVEnmMiOkUTpMusugMjsp91v6rxNsQ= 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 1757751586065100.96424812934231; Sat, 13 Sep 2025 01:19:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM2-0007sz-4t; Sat, 13 Sep 2025 04:11:30 -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 1uxLLu-000706-TD for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11: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 1uxLLr-00055D-84 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11: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-330-zENST5IwNj2oyDolaFvohA-1; Sat, 13 Sep 2025 04:11:08 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e3f8616125so2193037f8f.1 for ; Sat, 13 Sep 2025 01:11:08 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e04cf2870sm46739375e9.1.2025.09.13.01.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751077; 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=abpJhzSiEvSBxp/thG7p1BXuYoKn4R+kKTAYQkjtF8A=; b=PINNXHn+/rB7hwW34KIuhiX1tPWVyBhAoGom89t4MY9U/fU3Vy2zrvjHVj66mH0vQKvXsS nVb5CcialQ6IzJggQE8RJeyzYmmtt+GxgdXy4gMqqJ/VoqYLQ2sBBeozlD85hZ22waOh1a 4mED539w/ROqNOj8q9oOYSmyabgD3pE= X-MC-Unique: zENST5IwNj2oyDolaFvohA-1 X-Mimecast-MFC-AGG-ID: zENST5IwNj2oyDolaFvohA_1757751067 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751066; x=1758355866; 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=abpJhzSiEvSBxp/thG7p1BXuYoKn4R+kKTAYQkjtF8A=; b=A+Z/IWuzuARPerKqsyYQvl1rvgbuhuGTItJdkcAuk4oQt5TFD3dJAN8bPaPTs3axJD LzlRnQaYiaS7Dywnv/ykGUjTfc+sNgp0hZoaEN6QEmr+QZBiPh+1na+jgbxUmmVp+0CM CGAqQRVNNhRqbEo8Aq4SYzLVffDwtg5EZGrrIbMpu0UkmRzYJs8W0wjX3xiJroB8zUE3 hQ5Sg5tc2x3akwjISNbSxmYLTeLQgvldkaNOGXB6CsgxuzltUUTNWpW0rVaSbnG+UV1f J/TR2iF6e2B8svugQiyMVF+3XF2UkEI5tZOX976t5wqIZvCcliZfpD/e7BzS+k1m3Asz WOEw== X-Gm-Message-State: AOJu0YwzTw+XFPLqP0Jh8v4fyR8t0U1e9q8PGinNAKHOZNlXeeWnKb7q Sfd7z1ShIcj/D8aBaD6SwEhG1WNaA2FRdXCncbgBenPqw22gQG7zikLMOmG67pOSB0eki3VDkGG D2S0/F0ruqfQwh4KiI3aUfGt8thMrKKTM6DQYiiKvSPPT75sHNtyBG7ZXsv+i3HaWRM6oK1yGif w9z9rhJW4AxtqjRDT7D5WpDFpr07jaIil5/vmQtTGW X-Gm-Gg: ASbGncufHW6dwiy8tveKzLjEhKanUhqHg51oe4ZW3sPoxcpUhL9dBmXE9yC0zR40Gdd ZAClLp1VobHqGVCUfn+imtyW2KvbH1sdIDKT632JTFiqHmVdezRMrPXDAqOehLk/LsBTBhd/vHc 1doOWZQpf3hc4dnSq46Ulo+TPpeQCzFjsab7dIqdGwpa6XfEimTkKfgDvFv52xWXaQwrcudUeF8 EESYsCP0uOSdxOsQ+XmkvUK/gLsLF8jVrDTtWQ05PaTeUz09NiAztNZPDk1QR6dQmuO9w7bDqjq AIiSoxdJnyS3ayhfXPph+rbFqbemX2kAbFKpiMPebrLmLd7lA7PA1iE/hO04rhdyx/vbBpUJMow GK8SvvgHwxw2TvgVQnqp6D9rzgMLMLAlGYeJIIc6+RSQ= X-Received: by 2002:a05:6000:288c:b0:3e2:a7b2:d2f with SMTP id ffacd0b85a97d-3e75e15ccdcmr7255966f8f.26.1757751066286; Sat, 13 Sep 2025 01:11:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTKl8gXeE2ppbLrHMs1PLfhXZlLD1z/CDRjcKRXRbMp5SBTQm8+R6n+tIJOlo80DTttiD5yg== X-Received: by 2002:a05:6000:288c:b0:3e2:a7b2:d2f with SMTP id ffacd0b85a97d-3e75e15ccdcmr7255942f8f.26.1757751065742; Sat, 13 Sep 2025 01:11:05 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 28/61] rust: qdev: const_refs_to_static Date: Sat, 13 Sep 2025 10:09:09 +0200 Message-ID: <20250913080943.11710-29-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751588129116600 Content-Type: text/plain; charset="utf-8" Now that const_refs_static can be assumed, convert the members of the DeviceImpl trait from functions to constants. This lets the compiler know that they have a 'static lifetime, and removes the need for the weird "Box::leak()". Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-10-pbonzini@redhat.c= om Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/src/device.rs | 4 +-- rust/hw/timer/hpet/src/device.rs | 9 ++----- rust/qemu-api-macros/src/lib.rs | 8 +++--- rust/qemu-api-macros/src/tests.rs | 44 ++++++++++++++----------------- rust/qemu-api/src/qdev.rs | 19 +++++-------- rust/qemu-api/tests/tests.rs | 4 +-- 6 files changed, 33 insertions(+), 55 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 87a17716fed..8411db8d00c 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -172,9 +172,7 @@ impl ObjectImpl for PL011State { } =20 impl DeviceImpl for PL011State { - fn vmsd() -> Option> { - Some(VMSTATE_PL011) - } + const VMSTATE: Option> =3D Some(VMSTATE_PL011= ); const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); } =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index eb5bd042b1c..dd5326a40d4 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -1008,16 +1008,11 @@ impl ObjectImpl for HPETState { // SAFETY: HPET_PROPERTIES is a valid Property array constructed with the // qemu_api::declare_properties macro. unsafe impl qemu_api::qdev::DevicePropertiesImpl for HPETState { - fn properties() -> &'static [Property] { - &HPET_PROPERTIES - } + const PROPERTIES: &'static [Property] =3D &HPET_PROPERTIES; } =20 impl DeviceImpl for HPETState { - fn vmsd() -> Option> { - Some(VMSTATE_HPET) - } - + const VMSTATE: Option> =3D Some(VMSTATE_HPET); const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); } =20 diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index 97b2c214b62..a65a7ce2fe9 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -289,11 +289,9 @@ macro_rules! str_to_c_str { =20 Ok(quote_spanned! {input.span() =3D> unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for #name { - fn properties() -> &'static [::qemu_api::bindings::Property] { - static PROPERTIES: &[::qemu_api::bindings::Property] =3D &= [#(#properties_expanded),*]; - - PROPERTIES - } + const PROPERTIES: &'static [::qemu_api::bindings::Property] = =3D &[ + #(#properties_expanded),* + ]; } }) } diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index aafffcdce91..0e5a5728908 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -101,18 +101,16 @@ pub struct DummyState { }, quote! { unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { - fn properties() -> &'static [::qemu_api::bindings::Propert= y] { - static PROPERTIES: &[::qemu_api::bindings::Property] = =3D - &[::qemu_api::bindings::Property { - name: ::std::ffi::CStr::as_ptr(c"migrate_clock= "), - info: ::VA= LUE, - offset: ::core::mem::offset_of!(DummyState, mi= grate_clock) as isize, - set_default: true, - defval: ::qemu_api::bindings::Property__bindge= n_ty_1 { u: true as u64 }, - ..::qemu_api::zeroable::Zeroable::ZERO - }]; - PROPERTIES - } + const PROPERTIES: &'static [::qemu_api::bindings::Property= ] =3D &[ + ::qemu_api::bindings::Property { + name: ::std::ffi::CStr::as_ptr(c"migrate_clock"), + info: ::VALUE, + offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, + set_default: true, + defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, + ..::qemu_api::zeroable::Zeroable::ZERO + } + ]; } } ); @@ -130,18 +128,16 @@ pub struct DummyState { }, quote! { unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { - fn properties() -> &'static [::qemu_api::bindings::Propert= y] { - static PROPERTIES: &[::qemu_api::bindings::Property] = =3D - &[::qemu_api::bindings::Property { - name: ::std::ffi::CStr::as_ptr(c"migrate-clk"), - info: ::VA= LUE, - offset: ::core::mem::offset_of!(DummyState, mi= grate_clock) as isize, - set_default: true, - defval: ::qemu_api::bindings::Property__bindge= n_ty_1 { u: true as u64 }, - ..::qemu_api::zeroable::Zeroable::ZERO - }]; - PROPERTIES - } + const PROPERTIES: &'static [::qemu_api::bindings::Property= ] =3D &[ + ::qemu_api::bindings::Property { + name: ::std::ffi::CStr::as_ptr(c"migrate-clk"), + info: ::VALUE, + offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, + set_default: true, + defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, + ..::qemu_api::zeroable::Zeroable::ZERO + } + ]; } } ); diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 4dda8c81131..436142d8aef 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -151,11 +151,8 @@ unsafe impl QDevProp for crate::chardev::CharBackend { /// Caller is responsible for the validity of properties array. pub unsafe trait DevicePropertiesImpl { /// An array providing the properties that the user can set on the - /// device. Not a `const` because referencing statics in constants - /// is unstable until Rust 1.83.0. - fn properties() -> &'static [Property] { - &[] - } + /// device. + const PROPERTIES: &'static [Property] =3D &[]; } =20 /// Trait providing the contents of [`DeviceClass`]. @@ -173,9 +170,7 @@ pub trait DeviceImpl: /// A `VMStateDescription` providing the migration format for the devi= ce /// Not a `const` because referencing statics in constants is unstable /// until Rust 1.83.0. - fn vmsd() -> Option> { - None - } + const VMSTATE: Option> =3D None; } =20 /// # Safety @@ -224,12 +219,10 @@ pub fn class_init(&mut self) { if ::REALIZE.is_some() { self.realize =3D Some(rust_realize_fn::); } - if let Some(vmsd) =3D ::vmsd() { - // Give a 'static lifetime to the return value of vmsd(). - // Temporary until vmsd() can be changed into a const. - self.vmsd =3D Box::leak(Box::new(vmsd.get())); + if let Some(ref vmsd) =3D ::VMSTATE { + self.vmsd =3D vmsd.as_ref(); } - let prop =3D ::properties(); + let prop =3D ::PROPERTIES; if !prop.is_empty() { unsafe { bindings::device_class_set_props_n(self, prop.as_ptr(), pr= op.len()); diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index 4d4e4653f38..13495687419 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -56,9 +56,7 @@ impl ObjectImpl for DummyState { impl ResettablePhasesImpl for DummyState {} =20 impl DeviceImpl for DummyState { - fn vmsd() -> Option> { - Some(VMSTATE) - } + const VMSTATE: Option> =3D Some(VMSTATE); } =20 #[repr(C)] --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751096; cv=none; d=zohomail.com; s=zohoarc; b=gSnVzRu0lEHTAZisVIgM/tedLfkTg/bLf4MPh712lAoCV+vlBe6SmS1l868OYaoO/w7fRuDh+8dprGCCisMQPFSbxet4kapffCRovfalKEpv9rf7OOPRHcqXAEeee0Usmzh4mwU2HYvKtuSLP+3vFGMqLOkJUVkg+lN4fYtNKaY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751096; 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=vGRqjHwieFM87pfRpp5jcSbmSM8dksQ/vT35ARHbgik=; b=DZM5psx18SGZ/KsxdH6SEnFqnWbXT0NG/7CSU1oUTBuVse5xj4wuvHaoH0nMA8ghuk40AD/KMvmni8lBvvqSTyiaDH7Nv7j6+TTtGyT83xGp+bynAk+X8pkVuTGPpfiAYsC9BSK0ZjL85x4Z1tEbRzZRPdfy5f5ZMCCN052tLz0= 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 1757751096665805.439747475701; Sat, 13 Sep 2025 01:11:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLLz-0007fx-PR; Sat, 13 Sep 2025 04:11:27 -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 1uxLLn-0006Ni-Ou for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:16 -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 1uxLLl-00054e-Te for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:15 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-1wmOlWwwNzeQBbv9aoB5nQ-1; Sat, 13 Sep 2025 04:11:11 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45b99c18484so9753895e9.1 for ; Sat, 13 Sep 2025 01:11:11 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e015313a0sm48488825e9.4.2025.09.13.01.11.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751073; 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=vGRqjHwieFM87pfRpp5jcSbmSM8dksQ/vT35ARHbgik=; b=Xb0/wcsnHkVzoykuyWxHQeOjelf/yEQtS1o1YbQIz+cDmJqouopTXP+Uqhi6SEhD1114nr uBbx1t9te/FEejplh0Wl6rX05X+7t0+U0C0TXL7G+fA/VbYmd1S8m7yk8NeSWRb8hWF6kC fcK/LXmVVFmrZAfzZRHt95f35TqtAYg= X-MC-Unique: 1wmOlWwwNzeQBbv9aoB5nQ-1 X-Mimecast-MFC-AGG-ID: 1wmOlWwwNzeQBbv9aoB5nQ_1757751070 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751069; x=1758355869; 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=vGRqjHwieFM87pfRpp5jcSbmSM8dksQ/vT35ARHbgik=; b=Pd0KcMUKuTvjpky32NUxFNLYJ975ajVsy/m3PbJAQPfk/gJVConBl+KvdbRzChed6S BRYaIk/jba5lZpqYNHRx2iAe457mBeeuyOBnixFfD0TZ4YfKXPu5u63NrZin3m2Rq5ur Uyfcv/Z2BIQkISPUoQLMtPG1xmf12pX9vM+D1OR/R8dcCS9oks7PS63/9RgFlpi+2X+Q YsN9LOT64j2L6aOtZWbRMT0fkzVevQoU2iFAmNJd2s456WmEwm4H4QPRSgCgExyTd6/Z Sj3KJpE8VFqpLar5wFo8t1YBZt6wgra1aZQWXI7+VBa3NRcJ8dGq+M2tRWfDidgTkUrr FFDA== X-Gm-Message-State: AOJu0YzSmdGTb5oLxGdJs52z0SCxSlc6V6+PZQXFVx+TdQyLk/ZhNzVg TsVQv0a1x2bMBEAGCGOciHRyoJ0EOJP6UvTmQZKkDjJyR2dvNUYq98HGNO2LqAsWesqWKpZwiqX Ucs8qnPsVID4WPGK90HYbSnvAR3ZGuUyS6Eng/VoIPBh/sttkrAiLoCL95+dYlwDSx9JnxQJOJv YOSkF54wXKDjnAMihNXgVHIJo1F9ng7EfNar7cAcIL X-Gm-Gg: ASbGncuUj1qh9Vr8f+2Wj8fD7/a5NoODBJ/uWCRHhyQ3YnQyQgcorCiY+2uSe7xPixk UoT1Qsb8Kgu2OzWEcZphhze9vQ3OF0TqYdW2VZZpltoIxClcfsTf5inWFx0Y1z2faucWeSIf780 zAv5uIR1hZvVLAhUjqrgsZAqDQ41ymMuuEAH9tLKCV4l4LM0qjLXVf0iJLLf1vucjA6iegpUd3G QB5bNEeFHf+FePkySw28CWXwY5fMbXSSkt0Q4vBZQtR0upj/xj9GS5BZWrn+o9cEN6ygTQIQsbS V2QW9yWbCWdACpss3AuTfRa0H842B6vSrxVryhVAuQYQ8iHZs67o8Mq5z1skHeU1iVYXSRgszHx BXegPmO2Mub6hw+jB5yMry8AgMDdZs2fu9MTgcYGlFEg= X-Received: by 2002:a05:600c:696:b0:45d:e5ff:e38c with SMTP id 5b1f17b1804b1-45f211ffdacmr29316375e9.32.1757751069606; Sat, 13 Sep 2025 01:11:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH9XStQZWoqtYlA8FJWsuqi+wXM1pB3ehc3WdG5fgcO9TqKw2SPoQOFdl48RvhN6Lp0W2e2oA== X-Received: by 2002:a05:600c:696:b0:45d:e5ff:e38c with SMTP id 5b1f17b1804b1-45f211ffdacmr29316125e9.32.1757751069024; Sat, 13 Sep 2025 01:11:09 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 29/61] docs/rust: update msrv Date: Sat, 13 Sep 2025 10:09:10 +0200 Message-ID: <20250913080943.11710-30-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751098190116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-2-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 2 +- rust/Cargo.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 10b0590b56c..20d15347def 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -1,4 +1,4 @@ -.. |msrv| replace:: 1.63.0 +.. |msrv| replace:: 1.83.0 =20 Rust in QEMU =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 99c275f2d9f..9b26aa07cec 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -13,6 +13,7 @@ edition =3D "2021" homepage =3D "https://www.qemu.org" license =3D "GPL-2.0-or-later" repository =3D "https://gitlab.com/qemu-project/qemu/" +# don't forget to update docs/devel/rust.rst msrv rust-version =3D "1.83.0" =20 [workspace.dependencies] --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751638; cv=none; d=zohomail.com; s=zohoarc; b=gcyHFk6jadpiij2w9NfEXfDHkQZf/A6tkVKvBReUiWck/aVSP+LqIiBUO38RgemiVz7Q8gabYvrQuKGVZ/IEWt7CCcTkIwHry4Ce4y5HIm1zEwnCWKX/kb6R0doIX6d+1cmPujYGUxAkZrmVyI+VyEzWbIXpBJ6WyH4cRXr2Lqc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751638; 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=z3trzyiIR+rZO3QKqNH95GCrY7VMI5Rb/NRzaRuAYO4=; b=Ag/d0A8uy3v3omfGzuO7IRVvHhqwWWrbFJIzE7KtMfP2IuBmlBXiw17vPp6GPt0StFcUdTuCEtOnV9iVqLl2W2dcZWps9cyVbMqoglWfCgPcHgqvKZUTxjkf0VZa/X4T7QbcDzUKSpI8ZLzCfudRyHKJgHLXb2VpFkV4OvL0dLM= 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 1757751638339255.93311215983022; Sat, 13 Sep 2025 01:20:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM4-000816-3k; Sat, 13 Sep 2025 04:11:32 -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 1uxLLs-0006gx-Vy for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:21 -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 1uxLLo-00054s-80 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:19 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-471-e0CQIkR8NbmgQuBlMej6PQ-1; Sat, 13 Sep 2025 04:11:13 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45b96c2f4ccso14224255e9.0 for ; Sat, 13 Sep 2025 01:11:13 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e017b4222sm93435625e9.20.2025.09.13.01.11.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751075; 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=z3trzyiIR+rZO3QKqNH95GCrY7VMI5Rb/NRzaRuAYO4=; b=KTUnCs9njKox9MCo+okA2IELhf/eF8/+KZryxRMmZ6zIiqL7jWHfjlHoqBG2XeuhNO39E9 W7+CPYVexSX1ffBJ+2WRFaNW+siOBpdHt92FcDCxli/wo3oksWRWgyqgEh7A8YiQ0zdL5W khImDyH8HRqNOZyL7y/RqKJ/bCmLOWM= X-MC-Unique: e0CQIkR8NbmgQuBlMej6PQ-1 X-Mimecast-MFC-AGG-ID: e0CQIkR8NbmgQuBlMej6PQ_1757751072 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751072; x=1758355872; 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=z3trzyiIR+rZO3QKqNH95GCrY7VMI5Rb/NRzaRuAYO4=; b=Tq9WvAVzN5dUr3xFgMTKdLc5yDFNe6jiVr0SlOhR1/SwNPwuyeiLNg/QVAwBveUQUd LEnk4da86Zms1gMUzcI8Xs+evKHTINGoeDk295YC6XLoYI0aEpMipBVlZOFOixYxqTGp KXjijvErfFLpBAY47e5RtrFxvW+0bcIQtukJ95k9TFD1M12wZAyTzO5KaQL3IbgWMCWU 9IaHtEHalXelMZBXtU9AHkDXbGx26FaxMQWC8NwJPRmXB3Fdbg3UBPh2kH/wMTs/Qr2W HhMWcdzivQWAOz/N2imrmXO45/6TKR7VQ4OYuqDoX2Yjvz1U8EVEgRmFNK9ir/u06NCp DTnQ== X-Gm-Message-State: AOJu0YwkYInbZqFwB2VQk0/SBiXih4CNE9TTFwgQ4FbZ0sOKwaaU5HWd /e0LZ8QsM8aUG97iHVn+gMtM9Pf+MvZUwPalDsWO5aRRJ8hnnmrIXjv19B4EW380ozYt68yJWuy lbjU3B5lZDOKzBBmXDWPh/CW18P705zxkSqfPU9Bic0cR61oWQ+S4Bn/qOrKFpA1bga57WZbQR2 AfZw3t/LoAlPrYKsd3ODbeGYNiQxF9tR5axiN+yqVE X-Gm-Gg: ASbGnctLMxLZ6GDeVl2ay1CW6Fx7+PKSJfQenIKi4R4OCGyiAJ8L0pfpQcUideLo0kS YAVBcvonN/y+bji02k0KJai9hgeKcmk2+/ICBjlsAd66zroFTlNT5opRuk1YhS7QQ1Ju/iBYSQO vCvVnFw58o3QC5SA3EGP6o/1DxLjCPj2RgcVpV7N9URqXBNtRTeyjfYaXIBuwqPXfqwbxwZAtry SCBEOALDbwMjWjWGS4gUUc1q9c8V472StCBxLHnaKvNaOBO1EFWgKThFjT3omdNJ8MP9wiYWyxB GnqaB24fS5WQZ8qSRV4HDYQqevgXf0j1NPdFlDUh6qsOsp4wSjHrDt3M7WHqH+wm3f2KO9hlJn5 0rT5cHQxYxh9IWIp2e2CpPlFU3uFkG8BgOJWvePAcpFo= X-Received: by 2002:a05:600c:1f8c:b0:45b:64bc:56ea with SMTP id 5b1f17b1804b1-45f211f8841mr45993775e9.23.1757751071762; Sat, 13 Sep 2025 01:11:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHdW6vjLv1klGa8RwK/ePRw1iW92Mp6y60bQ215floaRcdsRhXbiyNCPl9Qzxnp9p/UCgn/MQ== X-Received: by 2002:a05:600c:1f8c:b0:45b:64bc:56ea with SMTP id 5b1f17b1804b1-45f211f8841mr45993515e9.23.1757751071320; Sat, 13 Sep 2025 01:11:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 30/61] rust: remove unused global qemu "allocator" Date: Sat, 13 Sep 2025 10:09:11 +0200 Message-ID: <20250913080943.11710-31-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751640749116601 From: Marc-Andr=C3=A9 Lureau The global allocator has always been disabled. There is no clear reason Rust and C should use the same allocator. Allocations made from Rust must be freed by Rust, and same for C, otherwise we head into troubles. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-3-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- meson.build | 4 -- rust/Cargo.toml | 2 +- rust/qemu-api/Cargo.toml | 1 - rust/qemu-api/meson.build | 1 - rust/qemu-api/src/lib.rs | 135 -------------------------------------- 5 files changed, 1 insertion(+), 142 deletions(-) diff --git a/meson.build b/meson.build index a238df3f5e3..6ade30f36ad 100644 --- a/meson.build +++ b/meson.build @@ -1086,9 +1086,6 @@ glib =3D declare_dependency(dependencies: [glib_pc, g= module], # TODO: remove this check and the corresponding workaround (qtree) when # the minimum supported glib is >=3D 2.75.3 glib_has_gslice =3D glib.version().version_compare('<2.75.3') -# Check whether glib has the aligned_alloc family of functions. -# -glib_has_aligned_alloc =3D glib.version().version_compare('>=3D2.72.0') =20 # override glib dep to include the above refinements meson.override_dependency('glib-2.0', glib) @@ -2702,7 +2699,6 @@ config_host_data.set('CONFIG_GETLOADAVG', cc.has_func= tion('getloadavg')) config_host_data.set('HAVE_COPY_FILE_RANGE', cc.has_function('copy_file_ra= nge')) config_host_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs')) config_host_data.set('HAVE_GLIB_WITH_SLICE_ALLOCATOR', glib_has_gslice) -config_host_data.set('HAVE_GLIB_WITH_ALIGNED_ALLOC', glib_has_aligned_allo= c) config_host_data.set('HAVE_OPENPTY', cc.has_function('openpty', dependenci= es: util)) config_host_data.set('HAVE_STRCHRNUL', cc.has_function('strchrnul', prefix= : osdep_prefix)) config_host_data.set('HAVE_SYSTEM_FUNCTION', cc.has_function('system', pre= fix: '#include ')) diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 9b26aa07cec..d98d2b77026 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -23,7 +23,7 @@ libc =3D "0.2.162" =20 [workspace.lints.rust] unexpected_cfgs =3D { level =3D "deny", check-cfg =3D [ - 'cfg(MESON)', 'cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)', + 'cfg(MESON)', ] } =20 # Occasionally, we may need to silence warnings and clippy lints that diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index c07a17a28b0..c5ed78035b6 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -21,7 +21,6 @@ libc =3D { workspace =3D true } =20 [features] default =3D ["debug_cell"] -allocator =3D [] debug_cell =3D [] =20 [lints] diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index a090297c458..062009f1618 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -2,7 +2,6 @@ _qemu_api_cfg =3D run_command(rustc_args, '--config-headers', config_host_h, '--features', files('Cargo.toml'), capture: true, check: true).stdout().strip().splitlines() =20 -# _qemu_api_cfg +=3D ['--cfg', 'feature=3D"allocator"'] if get_option('debug_mutex') _qemu_api_cfg +=3D ['--cfg', 'feature=3D"debug_cell"'] endif diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index bcb51c7986a..daa2493bb69 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -36,139 +36,4 @@ // crate). extern crate self as qemu_api; =20 -use std::{ - alloc::{GlobalAlloc, Layout}, - ffi::c_void, -}; - pub use error::{Error, Result}; - -#[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)] -extern "C" { - fn g_aligned_alloc0( - n_blocks: bindings::gsize, - n_block_bytes: bindings::gsize, - alignment: bindings::gsize, - ) -> bindings::gpointer; - fn g_aligned_free(mem: bindings::gpointer); -} - -#[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))] -extern "C" { - fn qemu_memalign(alignment: usize, size: usize) -> *mut c_void; - fn qemu_vfree(ptr: *mut c_void); -} - -extern "C" { - fn g_malloc0(n_bytes: bindings::gsize) -> bindings::gpointer; - fn g_free(mem: bindings::gpointer); -} - -/// An allocator that uses the same allocator as QEMU in C. -/// -/// It is enabled by default with the `allocator` feature. -/// -/// To set it up manually as a global allocator in your crate: -/// -/// ```ignore -/// use qemu_api::QemuAllocator; -/// -/// #[global_allocator] -/// static GLOBAL: QemuAllocator =3D QemuAllocator::new(); -/// ``` -#[derive(Clone, Copy, Debug)] -#[repr(C)] -pub struct QemuAllocator { - _unused: [u8; 0], -} - -#[cfg_attr(all(feature =3D "allocator", not(test)), global_allocator)] -pub static GLOBAL: QemuAllocator =3D QemuAllocator::new(); - -impl QemuAllocator { - // From the glibc documentation, on GNU systems, malloc guarantees 16-= byte - // alignment on 64-bit systems and 8-byte alignment on 32-bit systems.= See - // https://www.gnu.org/software/libc/manual/html_node/Malloc-Examples.= html. - // This alignment guarantee also applies to Windows and Android. On Da= rwin - // and OpenBSD, the alignment is 16 bytes on both 64-bit and 32-bit sy= stems. - #[cfg(all( - target_pointer_width =3D "32", - not(any(target_os =3D "macos", target_os =3D "openbsd")) - ))] - pub const DEFAULT_ALIGNMENT_BYTES: Option =3D Some(8); - #[cfg(all( - target_pointer_width =3D "64", - not(any(target_os =3D "macos", target_os =3D "openbsd")) - ))] - pub const DEFAULT_ALIGNMENT_BYTES: Option =3D Some(16); - #[cfg(all( - any(target_pointer_width =3D "32", target_pointer_width =3D "64"), - any(target_os =3D "macos", target_os =3D "openbsd") - ))] - pub const DEFAULT_ALIGNMENT_BYTES: Option =3D Some(16); - #[cfg(not(any(target_pointer_width =3D "32", target_pointer_width =3D = "64")))] - pub const DEFAULT_ALIGNMENT_BYTES: Option =3D None; - - pub const fn new() -> Self { - Self { _unused: [] } - } -} - -impl Default for QemuAllocator { - fn default() -> Self { - Self::new() - } -} - -// Sanity check. -const _: [(); 8] =3D [(); ::core::mem::size_of::<*mut c_void>()]; - -unsafe impl GlobalAlloc for QemuAllocator { - unsafe fn alloc(&self, layout: Layout) -> *mut u8 { - if matches!(Self::DEFAULT_ALIGNMENT_BYTES, Some(default) if defaul= t.checked_rem(layout.align()) =3D=3D Some(0)) - { - // SAFETY: g_malloc0() is safe to call. - unsafe { g_malloc0(layout.size().try_into().unwrap()).cast::() } - } else { - #[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)] - { - // SAFETY: g_aligned_alloc0() is safe to call. - unsafe { - g_aligned_alloc0( - layout.size().try_into().unwrap(), - 1, - layout.align().try_into().unwrap(), - ) - .cast::() - } - } - #[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))] - { - // SAFETY: qemu_memalign() is safe to call. - unsafe { qemu_memalign(layout.align(), layout.size()).cast= ::() } - } - } - } - - unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { - if matches!(Self::DEFAULT_ALIGNMENT_BYTES, Some(default) if defaul= t.checked_rem(layout.align()) =3D=3D Some(0)) - { - // SAFETY: `ptr` must have been allocated by Self::alloc thus = a valid - // glib-allocated pointer, so `g_free`ing is safe. - unsafe { g_free(ptr.cast::<_>()) } - } else { - #[cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)] - { - // SAFETY: `ptr` must have been allocated by Self::alloc t= hus a valid aligned - // glib-allocated pointer, so `g_aligned_free`ing is safe. - unsafe { g_aligned_free(ptr.cast::<_>()) } - } - #[cfg(not(HAVE_GLIB_WITH_ALIGNED_ALLOC))] - { - // SAFETY: `ptr` must have been allocated by Self::alloc t= hus a valid aligned - // glib-allocated pointer, so `qemu_vfree`ing is safe. - unsafe { qemu_vfree(ptr.cast::<_>()) } - } - } - } -} --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751298; cv=none; d=zohomail.com; s=zohoarc; b=A/7CAAe2AXjOKoS/N0+oSvFpPGI4TaPiU9SSJLWeZekw5ODQW70Qn5dURmI/SB0ZOoWGzhbjIxEdeeh3Y6iN4s1b7V98+v/R5An0gCh1nTWjahiSM0kdndNRc3yGOWrLJfOLTeLhwAYFr6kZHOoXKLVAEDtWk+JBXWD+JHI5FdM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751298; 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=ABafy0vcY+MsNIbM2LnwMwiYEaVEtYekkYweL02toaQ=; b=h7UXEvqwxd1V7nDBskM3jsxOBTGw3xhPSUnSRvyEhp7yJ1v33UoTXYi8Hi0+FBUKo5xV50VNzCWltgfjBQVeJCuUu2Ih5F+rgFx+GhF0PQRxhZbf+1+oNAqWy4IN1J42wb/6Km5kQf4yuRZjlaI6CualBNeEySyI5coqN6zhdzU= 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 175775129849983.2827375742338; Sat, 13 Sep 2025 01:14:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM6-0008FP-HF; Sat, 13 Sep 2025 04:11:34 -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 1uxLLu-0006zh-T1 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11: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 1uxLLq-00055A-8G for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:21 -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-246-fyhBv58sMaOOTjNoFZ8G2Q-1; Sat, 13 Sep 2025 04:11:15 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e8c4aa37bbso114732f8f.3 for ; Sat, 13 Sep 2025 01:11:15 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037c3ee8sm94424185e9.18.2025.09.13.01.11.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751076; 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=ABafy0vcY+MsNIbM2LnwMwiYEaVEtYekkYweL02toaQ=; b=BWog1mqK+ZWJ9prFlwnOWIMfMdEX9PjrXLPJ+uMIez7CHMqLdZA+4aW+Ga2Yj/7NgZcwz+ BBp8q0Cp6N/vKsdZwCDxEHA4uw79plDQ2xcY26koW5QcPKFXNeWQgjBOKO5mRDoTAYCtfQ I1l9O0fHn63jx6D31M+8CKLoH1OrttQ= X-MC-Unique: fyhBv58sMaOOTjNoFZ8G2Q-1 X-Mimecast-MFC-AGG-ID: fyhBv58sMaOOTjNoFZ8G2Q_1757751074 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751074; x=1758355874; 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=ABafy0vcY+MsNIbM2LnwMwiYEaVEtYekkYweL02toaQ=; b=MPYo6i+1QxyXbJ1wesZ+XCVgBV0xsZjE0wcPzNFl70ZttOKgPj1g0aoNlOye06s5tK Ze/b1Vjwp73OLgUkTOaJp30Vs+vkGJcQZEWlnidpovMj9WNh+HY0SN4soPn+DRzEkNWw jNYufhTUMxfnpSfkPaoqoiaUIylsXysO9/sdTjiIwWyfO+PmH6VhCtNKVkret72rSsOo 6wHt6z+8NixinsljVV33zUbDKfhSFnJbi1SD2mVgNaEuYXfg0DSHS/r2ic7n9cZAvEPX RjVNqG8272qN0XYUEwwGBmVx1Q9JSEoikQQlfT1Gm7oI7d0Jwz1MXcz2AUtEbYATUs6y dO0Q== X-Gm-Message-State: AOJu0YyPbI28LENIMZkao8qGCo+WZN0nqVad5DqpsIUUvlk/AU6nbh5a ar7V41GGB8Z5iirkyeGiQID96tE06MVVGj4pjxN7XWEUIBJQ97l5ZbSIDjGIfAK6tHztRcLjykx 3hNFII1Fogn+P/vyR9Qb14lIfTin1Fl5G9jzgpBB2Y3C/3vn7NSQYpRpqr8+kzSWFsWeS8V6HrX g5dhe888QnU+kJn1hZFuMTAe3PudbZeGgR9IcZ1vKH X-Gm-Gg: ASbGncuOG9yIIv6TWOztxG++j/9gbnm2UjmmYhpXTotr9hpasetZm0B8s0LWmocjzzl cF27KtoZ6gWlPDz/kCD1J7EyEnyHkhkHO2akXfiuaHioOMuc5QSZDFtDlAd6FjBFmwoizaHVkWz FAS/7fUtoNb2o5hCN4lE7GXn5s7qAsnHP4GbY47YDxoy6Yu6C/3/477A2aUrFt1Z2Wi0XCflULA Vt354YF4f9PyvF+SsbGvLwqxZs7na6qnUII6VAmC5qOwYzZYTlXidG0ZKMMp77eSYwrm0dbwAHp x5peh6mmM/GywBjzGLWAyPaL2g4MbK8eginNdV/TOXu5yB9TdsGGIl3yGSNlIEsrRJkkB8qr1kr z0Nw89jWkf/+A+VOwDBTzeh4YdbzC2G9CFnr2ZbmS+kk= X-Received: by 2002:a05:6000:268a:b0:3dc:2f0e:5e2d with SMTP id ffacd0b85a97d-3e765541a08mr4721451f8f.0.1757751074049; Sat, 13 Sep 2025 01:11:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEL/reFYrfMgxcIPa/Kz0pokjli7R2KDTihRNIGDg0X4iNWf3JBrjvxqLlnzlqb08M5ZI7k5w== X-Received: by 2002:a05:6000:268a:b0:3dc:2f0e:5e2d with SMTP id ffacd0b85a97d-3e765541a08mr4721426f8f.0.1757751073624; Sat, 13 Sep 2025 01:11:13 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 31/61] rust: add workspace authors Date: Sat, 13 Sep 2025 10:09:12 +0200 Message-ID: <20250913080943.11710-32-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751300588116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-4-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/rust/Cargo.toml b/rust/Cargo.toml index d98d2b77026..cd4bf8ef8e1 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -15,6 +15,7 @@ license =3D "GPL-2.0-or-later" repository =3D "https://gitlab.com/qemu-project/qemu/" # don't forget to update docs/devel/rust.rst msrv rust-version =3D "1.83.0" +authors =3D ["The QEMU Project Developers "] =20 [workspace.dependencies] anyhow =3D "~1.0" --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751780; cv=none; d=zohomail.com; s=zohoarc; b=EH7lD8zILz48FspveEnaWKeaaNDmhM+ik7YAE6nh8bSXtkYWzGOJ16WUDrxWMTQIKFAYiQ0frUy+uUSIzvDdD3YAhntt8yR7Q4XHASKQxAFHux07+EFQGOXPxuudVMwBDCtJ0EbrsHIM2fSLd0FGpbxfqcfXhfx6WAKVD/MdUyc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751780; 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=Iluv+QIb78kWuCIudcMWz/g7umwpNBxkwVQHtsNc6TQ=; b=Ly0ETzD1Aw6UhytcGvbmZkj7ZSgneG7ir8uglUv+OYH6EH+29vTs1HeybV5pS6DmqNKQAwy0pxKC4vd2PlrikAbynktmQ7ZS6kjfZ0W210W2wS0bUz8sqln52ZikqgE9Ie/X1pB0zU44U7I9F5Ef66ARA7N081c4ph/1r1twi28= 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 1757751780509922.2545111778281; Sat, 13 Sep 2025 01:23:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM5-00087O-Tz; Sat, 13 Sep 2025 04:11:33 -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 1uxLLz-0007jP-FM for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:27 -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 1uxLLu-00055Q-Gj for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:27 -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-92-BDYhZ4fENGCXR-vLqkJkYg-1; Sat, 13 Sep 2025 04:11:18 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3dbf3054ac4so1336446f8f.3 for ; Sat, 13 Sep 2025 01:11:17 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e85610cc17sm2113807f8f.54.2025.09.13.01.11.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751080; 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=Iluv+QIb78kWuCIudcMWz/g7umwpNBxkwVQHtsNc6TQ=; b=A4D6Xz2twWXbM47GB5h+9ksXoAz4dUF7me3aryGk8FW0IXUW2R8akzUUxnUZemfHimsAHW ywROlhqm1yy4ZoC/LvBiUq0fJnBjY1uv/2xZaf2D3YHXCzZBtRZ5zhC8L19QOk/sFADKo5 5pe424ev81Y2+yrqhHr0IW9hTNFlSy8= X-MC-Unique: BDYhZ4fENGCXR-vLqkJkYg-1 X-Mimecast-MFC-AGG-ID: BDYhZ4fENGCXR-vLqkJkYg_1757751077 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751076; x=1758355876; 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=Iluv+QIb78kWuCIudcMWz/g7umwpNBxkwVQHtsNc6TQ=; b=EeoY6KDeWbTJsur12yjUl40990bejJOgqOWtcZ+2HwIZ41LwGAk3sC8eFN4/Ye1Wc2 eq/4zX3dsQhiNX4slpLz0QzwSJZCKBP33LdI6EzmJ2uUECY787500ZQmR6nGR4F1C4YJ ZAa3xYkxxCTljE/7gv9ILXbghen+bub3pkewaVFb4FW+SSdx3mxgHlPXlQMN43kJZpM7 gzG9HQvJkLF1XfWQU2H3o3Mogbul6XjdaoQjQutl1z7gvNjO4LepR+y72Z4nzSzpJA/p 8RhqaC8qP49wfrdk9V6+JFjPOH5IRPZndReWfaz3B1n1rBEb+YBZSzuIoyGy0aRxvuib g/Cw== X-Gm-Message-State: AOJu0YwWix0V8fj2EEOD2j2k9hbUBiYEjIp2Idk0G0LSFdgIW7M0lczl rG7Xb7hT/zo+Jt7Gaw89eWvf/4FKEqcWhTrrBK8BcPUB7unr8ywAkszW3OxUpS6QdZ6MtIvFOWG 6FY58xO5DrXwQWvGrdrVArST8/jvKTS71Iv1IzesumGZiCWefpMHUWjqoKGU1WAOZm2ZlwiQWS2 DSW81wfT/Qzhabq3VY/69VLCwTYzjDfBosNJSJASD3 X-Gm-Gg: ASbGncvhxFOnZ8uY6O5qnJUsrknY8ffKifGlqyyVewQjoKC1PFTpHVx4JkVrBz1qtic BvWlf5zhR4ADic+0P/cqWPjhGwFbLctCkt5p/8FzAaodfyoTIQi6IF3S0lIqr0496x6LPEI96Yf NaiYpqzgBUCGX/L4guGaaw9kzmiTLF/sQqAlCsDWSp4Scfka2rLGR3EgjjIpJvXEzS+26hOkGUF Rft5zvkrSM7I38cTofjXkuPh9ZnNIMwWvrhbc3WT8z/Fc/BftsrpKXNAw+twHpISfakEGCCNcXt yLI14DwJbGvrhnNDGc4lcjg01uktHGJh9nK4jx6Q/yk6VY2IMSmjXsC6Do22ayqcvx6nYM6QLQJ 4v6Ch+Xe9ibycJCGXIhUCadAP9b5o5TI7coeH/PWaa9Y= X-Received: by 2002:a05:6000:270e:b0:3e7:9d76:beb5 with SMTP id ffacd0b85a97d-3e79d76c25emr2423555f8f.14.1757751075916; Sat, 13 Sep 2025 01:11:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHK/YG3JEqhn9sJQCjq+gGScehDmcQVqIaQjnDKY17LGki0kDxLyZ1OZFOFrRdspYtkNIDPKQ== X-Received: by 2002:a05:6000:270e:b0:3e7:9d76:beb5 with SMTP id ffacd0b85a97d-3e79d76c25emr2423532f8f.14.1757751075445; Sat, 13 Sep 2025 01:11:15 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 32/61] rust: move vmstate_clock!() to qdev module Date: Sat, 13 Sep 2025 10:09:13 +0200 Message-ID: <20250913080943.11710-33-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751782223116600 From: Marc-Andr=C3=A9 Lureau This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-8-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/qdev.rs | 3 +++ rust/qemu-api/src/vmstate.rs | 14 ++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 436142d8aef..e2b4121cac5 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -17,6 +17,7 @@ cell::{bql_locked, Opaque}, chardev::Chardev, error::{Error, Result}, + impl_vmstate_c_struct, irq::InterruptSource, prelude::*, qom::{ObjectClass, ObjectImpl, Owned, ParentInit}, @@ -455,3 +456,5 @@ unsafe impl ObjectType for Clock { unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_CLOCK)= }; } qom_isa!(Clock: Object); + +impl_vmstate_c_struct!(Clock, bindings::vmstate_clock); diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index b5c6b764fbb..59c7950a5aa 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -41,7 +41,6 @@ callbacks::FnCall, errno::{into_neg_errno, Errno}, prelude::*, - qdev, qom::Owned, zeroable::Zeroable, }; @@ -318,21 +317,20 @@ unsafe impl VMState for $type { impl_vmstate_scalar!(vmstate_info_uint64, u64); impl_vmstate_scalar!(vmstate_info_timer, crate::timer::Timer); =20 +#[macro_export] macro_rules! impl_vmstate_c_struct { ($type:ty, $vmsd:expr) =3D> { unsafe impl VMState for $type { - const BASE: VMStateField =3D $crate::bindings::VMStateField { - vmsd: addr_of!($vmsd), - size: mem::size_of::<$type>(), - flags: VMStateFlags::VMS_STRUCT, - ..Zeroable::ZERO + const BASE: $crate::bindings::VMStateField =3D $crate::binding= s::VMStateField { + vmsd: ::std::ptr::addr_of!($vmsd), + size: ::std::mem::size_of::<$type>(), + flags: $crate::bindings::VMStateFlags::VMS_STRUCT, + ..$crate::zeroable::Zeroable::ZERO }; } }; } =20 -impl_vmstate_c_struct!(qdev::Clock, bindings::vmstate_clock); - // Pointer types using the underlying type's VMState plus VMS_POINTER // Note that references are not supported, though references to cells // could be allowed. --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751260; cv=none; d=zohomail.com; s=zohoarc; b=O16+nT0yMvT2NccjYiborRNLohbJ26ZThObAWXeMfkqmGG9KALXeBS76+NkA1qN5fVPxcGaau48FWSkKzlGEge7suFKWe4qyD/z1LbblaH0aSntXjL1QPkZFZxWMSgLYz3/sAHg0AO3FBSdPTIsiI0bnJWF67Eai7P5dFgRVvFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751260; 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=NPKlaqghrOHsPLYrmGUDyXPckj2KbtMRtLHKQbrgvNc=; b=EhnKT2dAjMdEZL04s5tpvUIz7WpgB6VbLqyYsqMsFXmD8V+eB+f+GNryMGd8jopI5w7b2VY1GhUEW+pwvf38PCmime5VfiTiluiU9JDiqiQh2iBfCMRjhvUFZUSGO/j2T4w70gKEEXdmSmTSBvtPCCFuxXqBnwRNs9ax5RFdodQ= 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 175775126056422.718210743520785; Sat, 13 Sep 2025 01:14:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM1-0007pP-27; Sat, 13 Sep 2025 04:11:29 -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 1uxLLy-0007cX-KT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:26 -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 1uxLLu-00055Z-VI for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:26 -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-55-XqQpuwbuOw2Cs67mNXHM2w-1; Sat, 13 Sep 2025 04:11:20 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-45de5fdda1aso13460165e9.1 for ; Sat, 13 Sep 2025 01:11:19 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037c3cbdsm96129125e9.17.2025.09.13.01.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751081; 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=NPKlaqghrOHsPLYrmGUDyXPckj2KbtMRtLHKQbrgvNc=; b=fzrkZPmVW1DNP48E+FVz4YZRJT3eHzB2rr/E9t441bub3GcabgsJEpJhYVtr6okJYqLxpr PTElidaAsfe7PACf/WQKf85XRGnADno1I0Yz5XotL4ifSdG9yc0lvgQCF3IcoVT1DzargZ ta59k61/UMQw7KSXZzacIczLnNo03zQ= X-MC-Unique: XqQpuwbuOw2Cs67mNXHM2w-1 X-Mimecast-MFC-AGG-ID: XqQpuwbuOw2Cs67mNXHM2w_1757751079 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751078; x=1758355878; 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=NPKlaqghrOHsPLYrmGUDyXPckj2KbtMRtLHKQbrgvNc=; b=pMo+Ekvkn7u2rEJkGhrpB5HJxwny71IgaVIBORn99Hqnbo70cQu5LWOw6MIwJ0n6Uk FGA6xBK0MVVOF3w7aM5QId3omMq+6zMcQwdMGV6RdndFqXARpCTl1FPEq9zmtVmwd7pT YoJsbbVsGdbVplkdoObY2fLdjsQonia5nvv1E3lxzi6JT1t4xCiSpZUbXdti4TrxHGIY CKkD1Teev49y4fZuVqJ2PKx21wBvFRpjeKgaN2UyUdsq8cSNh/11ypcAc+kjF3BH2jJL ZOUOdLFSVpNkSlVEgdB+izmb/l2p4ndd6vqVsY3fyGw/77B9t3NwqGuKVMBGNHo87H5/ FJ6A== X-Gm-Message-State: AOJu0YyLda0aYgVEMjT8BvyyMaDczHaLNhQsOENI2Zg7DXI0+go3BOGT TeAeWxPKIeZlRKyITdkrFzyOH17hx75LW9j/x48YlKzMmCBp2mp+nfjar2l/TwQdtgL5a5RIqet JrAZ8LxE8hkyqATzBWsF08s5DFpWGMNKPv4WF4FdSmpkPcGZxMFcYvSzALTrwcN/W7YetQhlpTN uv3slv1tLrZM0ucIVbjMqCIzAtQ+tNcamWpQmkef5x X-Gm-Gg: ASbGncs3JG7w9VndEVw3jp5uu7dmXcd66NNsthB46K7ITLOWvxhUw41qlr1tt96yDER ukQfWefhn2ucWoJCzpEuDbgjG3m0ewjUSExsKPG6H0DuJTNexwNzb3TTNbMz4GUW/ORsK3SplyM 4Au/jdkmhcnl/8heAW29uropqYCeDD1Nsh3uD5DXLT5HgbIlKG8CizEt1A0o1K695DHuifmSRqV SkoUc9A3etofDCsoNPxsZpPmd4UyrsbMOjnSXwPtu1EYqEEf8l4R9SGFy1leWe/8uKRLR1gk/uv r3vVqhdXoy8RmpVo7SnUlEbmDvcecvdaIy3USim69esVZtCGutPS24gCilcNNmkyI21BIr0pQv6 bTPzV2L/WNLYD5D/OavEa4+Mg3hfZ1tlhKgamTiZonUM= X-Received: by 2002:a05:600c:3b1f:b0:45c:b6fa:352e with SMTP id 5b1f17b1804b1-45f2130999emr56672945e9.18.1757751078292; Sat, 13 Sep 2025 01:11:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGLZxsqZmn/6f5dxt+hQlSele7k9N5HhNQN605HifFw4Gky3/BmrqGML91LF8u9ztXpTLWjDw== X-Received: by 2002:a05:600c:3b1f:b0:45c:b6fa:352e with SMTP id 5b1f17b1804b1-45f2130999emr56672555e9.18.1757751077821; Sat, 13 Sep 2025 01:11:17 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 33/61] rust: move VMState handling to QOM module Date: Sat, 13 Sep 2025 10:09:14 +0200 Message-ID: <20250913080943.11710-34-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751262116116600 From: Marc-Andr=C3=A9 Lureau This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-9-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/qom.rs | 3 +++ rust/qemu-api/src/vmstate.rs | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/rust/qemu-api/src/qom.rs b/rust/qemu-api/src/qom.rs index 014ffb1fd88..12c6fc6752c 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qemu-api/src/qom.rs @@ -109,6 +109,7 @@ object_get_typename, object_new, object_ref, object_unref, TypeInf= o, }, cell::{bql_locked, Opaque}, + impl_vmstate_pointer, }; =20 /// A safe wrapper around [`bindings::Object`]. @@ -948,3 +949,5 @@ fn debug_fmt(&self, f: &mut fmt::Formatter) -> fmt::Res= ult { =20 impl ObjectClassMethods for T where T: IsA {} impl ObjectMethods for R where R::Target: IsA {} + +impl_vmstate_pointer!(Owned where T: VMState + ObjectType); diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 59c7950a5aa..4e1086779ac 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -40,8 +40,6 @@ bindings::{self, VMStateFlags}, callbacks::FnCall, errno::{into_neg_errno, Errno}, - prelude::*, - qom::Owned, zeroable::Zeroable, }; =20 @@ -128,7 +126,8 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// * a transparent wrapper for any of the above (`Cell`, `UnsafeCell`, /// [`BqlCell`], [`BqlRefCell`] /// * a raw pointer to any of the above -/// * a `NonNull` pointer, a `Box` or an [`Owned`] for any of the above +/// * a `NonNull` pointer, a `Box` or an [`Owned`](crate::qom::Owned) for = any of +/// the above /// * an array of any of the above /// /// In order to support other types, the trait `VMState` must be implement= ed @@ -335,10 +334,11 @@ unsafe impl VMState for $type { // Note that references are not supported, though references to cells // could be allowed. =20 +#[macro_export] macro_rules! impl_vmstate_pointer { ($type:ty where $base:tt: VMState $($where:tt)*) =3D> { - unsafe impl<$base> VMState for $type where $base: VMState $($where= )* { - const BASE: VMStateField =3D <$base as VMState>::BASE.with_poi= nter_flag(); + unsafe impl<$base> $crate::vmstate::VMState for $type where $base:= $crate::vmstate::VMState $($where)* { + const BASE: $crate::vmstate::VMStateField =3D <$base as $crate= ::vmstate::VMState>::BASE.with_pointer_flag(); } }; } @@ -350,7 +350,6 @@ unsafe impl<$base> VMState for $type where $base: VMSta= te $($where)* { // Unlike C pointers, Box is always non-null therefore there is no need // to specify VMS_ALLOC. impl_vmstate_pointer!(Box where T: VMState); -impl_vmstate_pointer!(Owned where T: VMState + ObjectType); =20 // Arrays using the underlying type's VMState plus // VMS_ARRAY/VMS_ARRAY_OF_POINTER --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751221; cv=none; d=zohomail.com; s=zohoarc; b=cnwXbmjEYzoFF3VU708wN2xFl8XgOsh0Dcnz9M+PeD1GLJN5u+ZiI9/UXvSKlGdw6QKIvVR87rCrDb9FvSYEnJeoCCl/2KTarYdsEiaHB7YimbVp3GoRtR0EICS2DrW7UCfAsCyxe5GToS/ckryqdJZb6rQAC8Tq5mj8GifuVEw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751221; 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=YZRZj3xQEand5ugY5kt3w0beYXz2rYMkRq6Ld6OQVjg=; b=NY9Pv/ZU3cZ8aq71x3Lsmq5ly/81OfCpCMvOzkG0K9UolssOmtJo1XaTlGNXRq22gZJ1MMPWH9EE/zZHyk2FMQ1H2ticpv0xuVbknQKe+asWHAk4VnihJ7qPY8rEQzGYQefDyY6L5R1tzlIP+hBfHv7TqM0uOW58/Z1cN2VxkDE= 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 1757751221390533.130563741792; Sat, 13 Sep 2025 01:13:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLM8-0008MB-PJ; Sat, 13 Sep 2025 04:11:37 -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 1uxLM2-0007ue-4R for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:30 -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 1uxLLy-00055p-Az for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:29 -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-465-1uqkIvsMOUe70SSPHGSH6Q-1; Sat, 13 Sep 2025 04:11:22 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45df7e734e0so16319075e9.0 for ; Sat, 13 Sep 2025 01:11:22 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037b91e6sm89445105e9.14.2025.09.13.01.11.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751084; 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=YZRZj3xQEand5ugY5kt3w0beYXz2rYMkRq6Ld6OQVjg=; b=hTyAyDyRUySJDtaag/IGkuPboxMZlud1VcJvqiFbW9Y8PIKkIiIjFR7RyhzD9kexGXLYs0 jpcQ/keZaxY7KrSLc3My0Vj35xgALJ1iTz1YO70nEgk0yfHmC7XPFiC3FsGRFopX0mTSYj cxjlA9OvlnvZh4i6HaTcavnjwWHv/3U= X-MC-Unique: 1uqkIvsMOUe70SSPHGSH6Q-1 X-Mimecast-MFC-AGG-ID: 1uqkIvsMOUe70SSPHGSH6Q_1757751082 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751081; x=1758355881; 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=YZRZj3xQEand5ugY5kt3w0beYXz2rYMkRq6Ld6OQVjg=; b=KRIaLoX+zVXcjJnYQHPSXVwqRcEt8O4gqL5Hb0CYbh3pI+a45l7vxlzv830tQz93sy eEoRfSlPqT8qaouLLm93pgC0IEhUqwMMR69ijvBxL+azWq4gpTLwCN9/49apcu1IybwY fmnEMvZ5RzLaRTPMBXqekCBz8jZa28JeaQf5vX1VhDsWh7p9knolmX+qnjUcfmzDztKC a0nTTfPtsba8e+7H7zqjNLlHRDvKaXqn4tz6i4ci+G9/pjrvuGQhWyqNc7NBgcWjmn6a BqvvlPkCoEf8li72uvkVMSfGbRzHVWixH4PKMLy1JtviLsdQ2XNzMlLk5uuOwzUiBo1d MnnQ== X-Gm-Message-State: AOJu0YxNrLNjSp0pIgUzdrfxaCzB5fEqVbxhL2Kh6KwG+Vq6R/t3pjDR +qTr4EpG6dbhBRzDuDFDCOhnsNHBxoHoWX/lU4aPXqntd8fUiNEydo87pRuEfPtcXL2jXl33hQp T3kYWOapFOGjhYue6SlccY7llnl1uEsWMJ3OlzlhMU/3NZivbGUjuen9DV+sFMKZmc1FSO9EDMT M9V8r0x7uCizV2MbnTo6UgZfmlWCk92BDzzl/SPc9N X-Gm-Gg: ASbGnctP4b1esAfzNilOpuHuZG/BCDvIpEOnGX/GogYXsS0zbrfHQCsGY/U0rkm1NXN i5DBBek6k9MMBtnh2Obql2EDEStBSXjMW/j5qKKjxQqB7GlF9OPHWwFxL7gVrOeuuhhNZhV2kOG 65z5vIKhoEYaHljIpVMS32WYlwPOVnySBXfsEWflFsH3xIwM4HGqi1EyKRCby9g+0oTTAsRQc/p Tx4WjSXTMtjCJJuVfeyHcVgENmMMXkmUyTk3A7jjgMtc6EkYcoWpWwMq30G2aXJewI+zfvaVUgC mfWacBZUwrCX3q6YTQq4aV8DfTwR+2PPKAbihyCdT8CkPnqPw3q8K0lsvNYoHdC96ZBouFbqVZj zbHen7ojOk6BxEvsD3abxdd/S1JxUY5E4uhRuLbVAVP0= X-Received: by 2002:a05:600c:46ca:b0:458:a992:6f1e with SMTP id 5b1f17b1804b1-45f211c4c8bmr71741885e9.5.1757751080576; Sat, 13 Sep 2025 01:11:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFF2yMpDjIHRJ7Tzz66XWWfm61RCG2asf0x0C1cdih5CEHSeqUFHOZvkZFKUHQjA2YVsiHDAA== X-Received: by 2002:a05:600c:46ca:b0:458:a992:6f1e with SMTP id 5b1f17b1804b1-45f211c4c8bmr71741495e9.5.1757751080047; Sat, 13 Sep 2025 01:11:20 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 34/61] rust: move Cell vmstate impl Date: Sat, 13 Sep 2025 10:09:15 +0200 Message-ID: <20250913080943.11710-35-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751223687116600 From: Marc-Andr=C3=A9 Lureau This will allow to split vmstate to a standalone crate next. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-10-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/cell.rs | 6 +++++- rust/qemu-api/src/vmstate.rs | 14 +++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/rust/qemu-api/src/cell.rs b/rust/qemu-api/src/cell.rs index 148a13e3f56..9943d7286b6 100644 --- a/rust/qemu-api/src/cell.rs +++ b/rust/qemu-api/src/cell.rs @@ -221,7 +221,7 @@ ptr::NonNull, }; =20 -use crate::bindings; +use crate::{bindings, impl_vmstate_transparent}; =20 /// An internal function that is used by doctests. pub fn bql_start_test() { @@ -456,6 +456,8 @@ pub fn take(&self) -> T { } } =20 +impl_vmstate_transparent!(crate::cell::BqlCell where T: VMState); + /// A mutable memory location with dynamically checked borrow rules, /// protected by the Big QEMU Lock. /// @@ -764,6 +766,8 @@ fn from(t: T) -> BqlRefCell { } } =20 +impl_vmstate_transparent!(crate::cell::BqlRefCell where T: VMState); + struct BorrowRef<'b> { borrow: &'b Cell, } diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 4e1086779ac..ce42b031bc1 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -124,7 +124,8 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// * scalar types (integer and `bool`) /// * the C struct `QEMUTimer` /// * a transparent wrapper for any of the above (`Cell`, `UnsafeCell`, -/// [`BqlCell`], [`BqlRefCell`] +/// [`BqlCell`](crate::cell::BqlCell), +/// [`BqlRefCell`](crate::cell::BqlRefCell)), /// * a raw pointer to any of the above /// * a `NonNull` pointer, a `Box` or an [`Owned`](crate::qom::Owned) for = any of /// the above @@ -254,14 +255,15 @@ unsafe impl $crate::vmstate::VMState for $tuple { =20 // Transparent wrappers: just use the internal type =20 +#[macro_export] macro_rules! impl_vmstate_transparent { ($type:ty where $base:tt: VMState $($where:tt)*) =3D> { - unsafe impl<$base> VMState for $type where $base: VMState $($where= )* { - const BASE: VMStateField =3D VMStateField { + unsafe impl<$base> $crate::vmstate::VMState for $type where $base:= $crate::vmstate::VMState $($where)* { + const BASE: $crate::vmstate::VMStateField =3D $crate::vmstate:= :VMStateField { size: mem::size_of::<$type>(), - ..<$base as VMState>::BASE + ..<$base as $crate::vmstate::VMState>::BASE }; - const VARRAY_FLAG: VMStateFlags =3D <$base as VMState>::VARRAY= _FLAG; + const VARRAY_FLAG: $crate::bindings::VMStateFlags =3D <$base a= s $crate::vmstate::VMState>::VARRAY_FLAG; } }; } @@ -269,8 +271,6 @@ unsafe impl<$base> VMState for $type where $base: VMSta= te $($where)* { impl_vmstate_transparent!(std::cell::Cell where T: VMState); impl_vmstate_transparent!(std::cell::UnsafeCell where T: VMState); impl_vmstate_transparent!(std::pin::Pin where T: VMState); -impl_vmstate_transparent!(crate::cell::BqlCell where T: VMState); -impl_vmstate_transparent!(crate::cell::BqlRefCell where T: VMState); impl_vmstate_transparent!(crate::cell::Opaque where T: VMState); =20 #[macro_export] --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751994; cv=none; d=zohomail.com; s=zohoarc; b=GVacHJ8w+FDHszlImlafhLw1/8BPyAga8bgBSkp+ao7dEvqtSB6HOWYa5jEsgmuU6E95jR1bPsUU6o46KD+LRtqXjegVUpi74N3IbonGqpqlTpg+YVtEgWdmoTA+EsNrEEeHBvg48yIZqMLB7W1lSYuftlhzdm+jG23d+ighKhI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751994; 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=K81C6uk9t9Dg2b6Iz8EY9jhnxIIs4JTIXVttzHXc7Yg=; b=RCnzUslOIwDlYWkUiOxMxONKi/Vuo/CDtLL52n4ABckywWsuVhguAwnnjxGmFaFGEZNWvPWX+BqjTuzF+OVvosy5fKUS7XCz2dFvqJsn5iY3lZ7hRdCo2/xP9AmkBU0LhxZ4FYcVXnv6XNcrbt33WyNe3YuE5ny/B/GrbVl/vio= 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 1757751994759308.5846991907432; Sat, 13 Sep 2025 01:26:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMO-00009k-OT; Sat, 13 Sep 2025 04:11:53 -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 1uxLMA-0008Pe-Ok for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:39 -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 1uxLM5-00056V-CR for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:38 -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-634-1lwu7rHdOzqO3Ba9lQioQg-1; Sat, 13 Sep 2025 04:11:28 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e7c2273e69so599616f8f.1 for ; Sat, 13 Sep 2025 01:11:28 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e86602a7d5sm1931665f8f.62.2025.09.13.01.11.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751091; 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=K81C6uk9t9Dg2b6Iz8EY9jhnxIIs4JTIXVttzHXc7Yg=; b=eQysX7cic30pWd/SvFgqklUB0Gk3gJH6FrRnyzB++OFb0IWn+gBw89VrQKRTZXiu+WceNv 202cSZFeSLVuholJmtibAY1mwDMBKui5YS8sMFRVGXgXDiL7S3glWBG5bvXhvMbeFo6rNd tlVAvGY3SdY6lzA4FaCOUW93o59wMrs= X-MC-Unique: 1lwu7rHdOzqO3Ba9lQioQg-1 X-Mimecast-MFC-AGG-ID: 1lwu7rHdOzqO3Ba9lQioQg_1757751087 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751086; x=1758355886; 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=K81C6uk9t9Dg2b6Iz8EY9jhnxIIs4JTIXVttzHXc7Yg=; b=fOZahmntpAFr4NsPpMyp2HlbSu7xEZ3mZkgXGzQ8XCBYi24Obi4q8OuR3wLVQ9B6J8 OWFEIVhOdBF6YdWR5dGYi2FsSHCzonsfeiMqEu/jR5+qKF/5aJv2FcfPshy0J97YZhvJ gPHvmAl41k/TPA6qE6Ba4OV6lpv/4FmpjeqT8Y82d8IwD1PM2ltCix1Wsx9Lu/nt/N1Z KC4ekdBB50MV41YY5X6IgO94HLZ2LAyTqYz2Ta+g/15VYxTujppxUz+vZyb3hL9byrB8 ltvN37YrAj41bBZFjld71slyc/UjRPdhvQDAB4BSo0kYwO1XADineELqXBWwEsetf7Qh bu8w== X-Gm-Message-State: AOJu0Yx8DL3X9co+9zVVTM/0L8fxmxIMZWHD8hHp4SvPdTdHqezY/s0i nwnGj0X8ac410ICiZ8M3btVd9LxAXKCs4woK7FzaSanOWscVau76Ji/NA6hcCyVq1E7O+I8/uNG o1zHkcWJYfP4+WTdzfP8+rgYJ/1Ca5hG4ZUZ5P+DgSVJ7VfKn22cSmRWpleNTBpofzUFs2shBIx blSw1F+z8HmWJHAWj+baE+WZ9KNiAIcyDjfxDuJ4ri X-Gm-Gg: ASbGncuXQ6UX0CulkCgijl3qo32Ev4pZnoA4JNqjBkE1tCEB62y6TR33RDsWrPYC/Th ztcomeP2dyuj4gkwh25nAtvZ3QAuVSwPAEJ4B55ii8JL2Angwqz/tHNcNxzUL/ieknjf1TonJoN AYC73CrGt4ZlnEVDShiNy1F6R2cR187HM1Dgi0jEWA/kjnvaSpzX+alE2AV7RbyP15Ool3QvQ48 XKSVI10cvVU9zkOhU6yJrdgF6KSZ4Y0VEyMyAkfoyIwA2my6T2the+CgVeN3nNC2QVXKkqZCY4m MRAgkqxW3SVr5bwJglomRlR9YXKvsyeqH02wihNLgxwSHU/Gh6rjfBZu35NdzcNh2wWMw6xzqSa eQ65o+moEoTltsj92d7yT1C1jdaIAXk1Y1lNLvj0K/Gc= X-Received: by 2002:a5d:5f49:0:b0:3dc:15d2:b92a with SMTP id ffacd0b85a97d-3e765a05285mr4166617f8f.41.1757751084755; Sat, 13 Sep 2025 01:11:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFSVcRmlujwM1qTqDyo7Pw6OcMgsMUu/BsPI0BoEcmTTZHyGKpKw/0SBQ5LQnDhWNI9Q1WWXQ== X-Received: by 2002:a5d:5f49:0:b0:3dc:15d2:b92a with SMTP id ffacd0b85a97d-3e765a05285mr4166552f8f.41.1757751083370; Sat, 13 Sep 2025 01:11:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 35/61] rust: split Rust-only "common" crate Date: Sat, 13 Sep 2025 10:09:16 +0200 Message-ID: <20250913080943.11710-36-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751996464116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-6-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/Cargo.lock | 10 + rust/Cargo.toml | 1 + rust/common/Cargo.toml | 19 ++ rust/common/meson.build | 34 +++ rust/{qemu-api =3D> common}/src/assertions.rs | 16 +- rust/{qemu-api =3D> common}/src/bitops.rs | 1 - rust/{qemu-api =3D> common}/src/callbacks.rs | 10 +- rust/{qemu-api =3D> common}/src/errno.rs | 8 +- rust/common/src/lib.rs | 20 ++ rust/common/src/opaque.rs | 238 ++++++++++++++++++++ rust/{qemu-api =3D> common}/src/uninit.rs | 2 +- rust/common/src/zeroable.rs | 18 ++ rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 3 +- rust/hw/char/pl011/src/device.rs | 3 +- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 3 +- rust/hw/timer/hpet/src/device.rs | 2 +- rust/hw/timer/hpet/src/fw_cfg.rs | 3 +- rust/meson.build | 1 + rust/qemu-api-macros/src/lib.rs | 16 +- rust/qemu-api-macros/src/tests.rs | 6 +- rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 14 +- rust/qemu-api/src/bindings.rs | 21 ++ rust/qemu-api/src/cell.rs | 235 +------------------ rust/qemu-api/src/chardev.rs | 5 +- rust/qemu-api/src/error.rs | 3 +- rust/qemu-api/src/irq.rs | 3 +- rust/qemu-api/src/lib.rs | 6 - rust/qemu-api/src/log.rs | 4 +- rust/qemu-api/src/memory.rs | 5 +- rust/qemu-api/src/prelude.rs | 6 +- rust/qemu-api/src/qdev.rs | 10 +- rust/qemu-api/src/qom.rs | 3 +- rust/qemu-api/src/sysbus.rs | 3 +- rust/qemu-api/src/timer.rs | 8 +- rust/qemu-api/src/vmstate.rs | 23 +- rust/qemu-api/src/zeroable.rs | 37 --- rust/qemu-api/tests/vmstate_tests.rs | 3 +- 41 files changed, 448 insertions(+), 359 deletions(-) create mode 100644 rust/common/Cargo.toml create mode 100644 rust/common/meson.build rename rust/{qemu-api =3D> common}/src/assertions.rs (92%) rename rust/{qemu-api =3D> common}/src/bitops.rs (98%) rename rust/{qemu-api =3D> common}/src/callbacks.rs (97%) rename rust/{qemu-api =3D> common}/src/errno.rs (98%) create mode 100644 rust/common/src/lib.rs create mode 100644 rust/common/src/opaque.rs rename rust/{qemu-api =3D> common}/src/uninit.rs (98%) create mode 100644 rust/common/src/zeroable.rs delete mode 100644 rust/qemu-api/src/zeroable.rs diff --git a/MAINTAINERS b/MAINTAINERS index fb045388b92..cee5a342062 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3515,6 +3515,7 @@ F: include/hw/registerfields.h Rust M: Manos Pitsidianakis S: Maintained +F: rust/common/ F: rust/qemu-api F: rust/qemu-api-macros F: rust/rustfmt.toml diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 4baf6ba663c..71e8c7ed62a 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -44,6 +44,13 @@ dependencies =3D [ "qemu_api_macros", ] =20 +[[package]] +name =3D "common" +version =3D "0.1.0" +dependencies =3D [ + "libc", +] + [[package]] name =3D "either" version =3D "1.12.0" @@ -63,6 +70,7 @@ dependencies =3D [ name =3D "hpet" version =3D "0.1.0" dependencies =3D [ + "common", "qemu_api", "qemu_api_macros", ] @@ -89,6 +97,7 @@ dependencies =3D [ "bilge", "bilge-impl", "bits", + "common", "qemu_api", "qemu_api_macros", ] @@ -130,6 +139,7 @@ name =3D "qemu_api" version =3D "0.1.0" dependencies =3D [ "anyhow", + "common", "foreign", "libc", "qemu_api_macros", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index cd4bf8ef8e1..c0426d42430 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -2,6 +2,7 @@ resolver =3D "2" members =3D [ "bits", + "common", "qemu-api-macros", "qemu-api", "hw/char/pl011", diff --git a/rust/common/Cargo.toml b/rust/common/Cargo.toml new file mode 100644 index 00000000000..5e106427e80 --- /dev/null +++ b/rust/common/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name =3D "common" +version =3D "0.1.0" +description =3D "Rust common code for QEMU" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +libc.workspace =3D true + +[lints] +workspace =3D true diff --git a/rust/common/meson.build b/rust/common/meson.build new file mode 100644 index 00000000000..230a967760d --- /dev/null +++ b/rust/common/meson.build @@ -0,0 +1,34 @@ +_common_cfg =3D run_command(rustc_args, + '--config-headers', config_host_h, '--features', files('Cargo.toml'), + capture: true, check: true).stdout().strip().splitlines() + +_common_rs =3D static_library( + 'common', + structured_sources( + [ + 'src/lib.rs', + 'src/assertions.rs', + 'src/bitops.rs', + 'src/callbacks.rs', + 'src/errno.rs', + 'src/opaque.rs', + 'src/uninit.rs', + 'src/zeroable.rs', + ], + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + rust_args: _common_cfg, + dependencies: [libc_rs], +) + +common_rs =3D declare_dependency(link_with: [_common_rs]) + +# Doctests are essentially integration tests, so they need the same depend= encies. +# Note that running them requires the object files for C code, so place th= em +# in a separate suite that is run by the "build" CI jobs rather than "chec= k". +rust.doctest('rust-common-doctests', + _common_rs, + protocol: 'rust', + dependencies: common_rs, + suite: ['doc', 'rust']) diff --git a/rust/qemu-api/src/assertions.rs b/rust/common/src/assertions.rs similarity index 92% rename from rust/qemu-api/src/assertions.rs rename to rust/common/src/assertions.rs index e4fe23b674e..91f83a5d3d4 100644 --- a/rust/qemu-api/src/assertions.rs +++ b/rust/common/src/assertions.rs @@ -8,7 +8,7 @@ //! types match the expectations of C code. //! //! Documentation is hidden because it only exposes macros, which -//! are exported directly from `qemu_api`. +//! are exported directly from `common`. =20 // Based on https://stackoverflow.com/questions/64251852/x/70978292#709782= 92 // (stackoverflow answers are released under MIT license). @@ -27,7 +27,7 @@ impl EqType for T { /// # Examples /// /// ``` -/// # use qemu_api::assert_same_type; +/// # use common::assert_same_type; /// # use std::ops::Deref; /// assert_same_type!(u32, u32); /// assert_same_type!( as Deref>::Target, u32); @@ -36,7 +36,7 @@ impl EqType for T { /// Different types will cause a compile failure /// /// ```compile_fail -/// # use qemu_api::assert_same_type; +/// # use common::assert_same_type; /// assert_same_type!(&Box, &u32); /// ``` #[macro_export] @@ -61,7 +61,7 @@ fn types_must_be_equal(_: T) /// # Examples /// /// ``` -/// # use qemu_api::assert_field_type; +/// # use common::assert_field_type; /// pub struct A { /// field1: u32, /// } @@ -72,7 +72,7 @@ fn types_must_be_equal(_: T) /// Different types will cause a compile failure /// /// ```compile_fail -/// # use qemu_api::assert_field_type; +/// # use common::assert_field_type; /// # pub struct A { field1: u32 } /// assert_field_type!(A, field1, i32); /// ``` @@ -103,7 +103,7 @@ const fn types_must_be_equal(_: &T) /// # Examples /// /// ``` -/// # use qemu_api::assert_match; +/// # use common::assert_match; /// // JoinHandle does not implement `Eq`, therefore the result /// // does not either. /// let result: Result, u32> =3D Err(42); @@ -132,12 +132,12 @@ macro_rules! assert_match { /// # Examples /// /// ``` -/// # use qemu_api::static_assert; +/// # use common::static_assert; /// static_assert!("abc".len() =3D=3D 3); /// ``` /// /// ```compile_fail -/// # use qemu_api::static_assert; +/// # use common::static_assert; /// static_assert!("abc".len() =3D=3D 2); // does not compile /// ``` #[macro_export] diff --git a/rust/qemu-api/src/bitops.rs b/rust/common/src/bitops.rs similarity index 98% rename from rust/qemu-api/src/bitops.rs rename to rust/common/src/bitops.rs index b1e3a530ab5..06c78c3b8a7 100644 --- a/rust/qemu-api/src/bitops.rs +++ b/rust/common/src/bitops.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 //! This module provides bit operation extensions to integer types. -//! It is usually included via the `qemu_api` prelude. =20 use std::ops::{ Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitX= orAssign, Div, DivAssign, diff --git a/rust/qemu-api/src/callbacks.rs b/rust/common/src/callbacks.rs similarity index 97% rename from rust/qemu-api/src/callbacks.rs rename to rust/common/src/callbacks.rs index dbe2305f509..b8898fe96f7 100644 --- a/rust/qemu-api/src/callbacks.rs +++ b/rust/common/src/callbacks.rs @@ -55,7 +55,7 @@ /// # Examples /// /// ``` -/// # use qemu_api::callbacks::FnCall; +/// # use common::callbacks::FnCall; /// fn call_it FnCall<(&'a str,), String>>(_f: &F, s: &str) -> = String { /// F::call((s,)) /// } @@ -71,7 +71,7 @@ /// Attempting to pass a non-zero-sized closure causes a compile-time fail= ure: /// /// ```compile_fail -/// # use qemu_api::callbacks::FnCall; +/// # use common::callbacks::FnCall; /// # fn call_it<'a, F: FnCall<(&'a str,), String>>(_f: &F, s: &'a str) ->= String { /// # F::call((s,)) /// # } @@ -82,7 +82,7 @@ /// `()` can be used to indicate "no function": /// /// ``` -/// # use qemu_api::callbacks::FnCall; +/// # use common::callbacks::FnCall; /// fn optional FnCall<(&'a str,), String>>(_f: &F, s: &str) ->= Option { /// if F::IS_SOME { /// Some(F::call((s,))) @@ -97,7 +97,7 @@ /// Invoking `F::call` will then be a run-time error. /// /// ```should_panic -/// # use qemu_api::callbacks::FnCall; +/// # use common::callbacks::FnCall; /// # fn call_it FnCall<(&'a str,), String>>(_f: &F, s: &str) -= > String { /// # F::call((s,)) /// # } @@ -120,7 +120,7 @@ pub unsafe trait FnCall: 'static + Sync= + Sized { /// You can use `IS_SOME` to catch this at compile time: /// /// ```compile_fail - /// # use qemu_api::callbacks::FnCall; + /// # use common::callbacks::FnCall; /// fn call_it FnCall<(&'a str,), String>>(_f: &F, s: &str)= -> String { /// const { assert!(F::IS_SOME) } /// F::call((s,)) diff --git a/rust/qemu-api/src/errno.rs b/rust/common/src/errno.rs similarity index 98% rename from rust/qemu-api/src/errno.rs rename to rust/common/src/errno.rs index 507850fe33c..64b2933b078 100644 --- a/rust/qemu-api/src/errno.rs +++ b/rust/common/src/errno.rs @@ -185,7 +185,7 @@ fn map_ok(self) -> i32 { /// are interpreted as negated `errno` and turned into an `Err`. /// /// ``` -/// # use qemu_api::errno::into_io_result; +/// # use common::errno::into_io_result; /// # use std::io::ErrorKind; /// let ok =3D into_io_result(1i32).unwrap(); /// assert_eq!(ok, 1u32); @@ -201,7 +201,7 @@ fn map_ok(self) -> i32 { /// likely overflows and will panic: /// /// ```should_panic -/// # use qemu_api::errno::into_io_result; +/// # use common::errno::into_io_result; /// # #[allow(dead_code)] /// let err =3D into_io_result(-0x1234_5678i32); // panic /// ``` @@ -213,7 +213,7 @@ pub fn into_io_result(value: T) -> io::Res= ult { /// values to report errors. /// /// ``` -/// # use qemu_api::errno::into_neg_errno; +/// # use common::errno::into_neg_errno; /// # use std::io::{self, ErrorKind}; /// let ok: io::Result<()> =3D Ok(()); /// assert_eq!(into_neg_errno(ok), 0); @@ -232,7 +232,7 @@ pub fn into_io_result(value: T) -> io::Res= ult { /// positive: /// /// ```should_panic -/// # use qemu_api::errno::into_neg_errno; +/// # use common::errno::into_neg_errno; /// # use std::io; /// let err: io::Result =3D Ok(0x8899_AABB); /// into_neg_errno(err) // panic diff --git a/rust/common/src/lib.rs b/rust/common/src/lib.rs new file mode 100644 index 00000000000..25216503aab --- /dev/null +++ b/rust/common/src/lib.rs @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod assertions; + +pub mod bitops; + +pub mod callbacks; +pub use callbacks::FnCall; + +pub mod errno; +pub use errno::Errno; + +pub mod opaque; +pub use opaque::{Opaque, Wrapper}; + +pub mod uninit; +pub use uninit::MaybeUninitField; + +pub mod zeroable; +pub use zeroable::Zeroable; diff --git a/rust/common/src/opaque.rs b/rust/common/src/opaque.rs new file mode 100644 index 00000000000..d25a5f3ae1a --- /dev/null +++ b/rust/common/src/opaque.rs @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: MIT + +//! ## Opaque wrappers +//! +//! The cell types from the previous section are useful at the boundaries +//! of code that requires interior mutability. When writing glue code that +//! interacts directly with C structs, however, it is useful to operate +//! at a lower level. +//! +//! C functions often violate Rust's fundamental assumptions about memory +//! safety by modifying memory even if it is shared. Furthermore, C struc= ts +//! often start their life uninitialized and may be populated lazily. +//! +//! For this reason, this module provides the [`Opaque`] type to opt out +//! of Rust's usual guarantees about the wrapped type. Access to the wrapp= ed +//! value is always through raw pointers, obtained via methods like +//! [`as_mut_ptr()`](Opaque::as_mut_ptr) and [`as_ptr()`](Opaque::as_ptr).= These +//! pointers can then be passed to C functions or dereferenced; both actio= ns +//! require `unsafe` blocks, making it clear where safety guarantees must = be +//! manually verified. For example +//! +//! ```ignore +//! unsafe { +//! let state =3D Opaque::::uninit(); +//! qemu_struct_init(state.as_mut_ptr()); +//! } +//! ``` +//! +//! [`Opaque`] will usually be wrapped one level further, so that +//! bridge methods can be added to the wrapper: +//! +//! ```ignore +//! pub struct MyStruct(Opaque); +//! +//! impl MyStruct { +//! fn new() -> Pin> { +//! let result =3D Box::pin(unsafe { Opaque::uninit() }); +//! unsafe { qemu_struct_init(result.as_mut_ptr()) }; +//! result +//! } +//! } +//! ``` +//! +//! This pattern of wrapping bindgen-generated types in [`Opaque`] prov= ides +//! several advantages: +//! +//! * The choice of traits to be implemented is not limited by the +//! bindgen-generated code. For example, [`Drop`] can be added without +//! disabling [`Copy`] on the underlying bindgen type +//! +//! * [`Send`] and [`Sync`] implementations can be controlled by the wrapp= er +//! type rather than being automatically derived from the C struct's lay= out +//! +//! * Methods can be implemented in a separate crate from the bindgen-gene= rated +//! bindings +//! +//! * [`Debug`](std::fmt::Debug) and [`Display`](std::fmt::Display) +//! implementations can be customized to be more readable than the raw C +//! struct representation +//! +//! The [`Opaque`] type does not include BQL validation; it is possible= to +//! assert in the code that the right lock is taken, to use it together +//! with a custom lock guard type, or to let C code take the lock, as +//! appropriate. It is also possible to use it with non-thread-safe +//! types, since by default (unlike [`BqlCell`] and [`BqlRefCell`] +//! it is neither `Sync` nor `Send`. +//! +//! While [`Opaque`] is necessary for C interop, it should be used spar= ingly +//! and only at FFI boundaries. For QEMU-specific types that need interior +//! mutability, prefer [`BqlCell`] or [`BqlRefCell`]. +//! +//! [`BqlCell`]: ../../qemu_api/cell/struct.BqlCell.html +//! [`BqlRefCell`]: ../../qemu_api/cell/struct.BqlRefCell.html +use std::{cell::UnsafeCell, fmt, marker::PhantomPinned, mem::MaybeUninit, = ptr::NonNull}; + +/// Stores an opaque value that is shared with C code. +/// +/// Often, C structs can changed when calling a C function even if they are +/// behind a shared Rust reference, or they can be initialized lazily and = have +/// invalid bit patterns (e.g. `3` for a [`bool`]). This goes against Rus= t's +/// strict aliasing rules, which normally prevent mutation through shared +/// references. +/// +/// Wrapping the struct with `Opaque` ensures that the Rust compiler do= es not +/// assume the usual constraints that Rust structs require, and allows usi= ng +/// shared references on the Rust side. +/// +/// `Opaque` is `#[repr(transparent)]`, so that it matches the memory l= ayout +/// of `T`. +#[repr(transparent)] +pub struct Opaque { + value: UnsafeCell>, + // PhantomPinned also allows multiple references to the `Opaque`, i= .e. + // one `&mut Opaque` can coexist with a `&mut T` or any number of `= &T`; + // see https://docs.rs/pinned-aliasable/latest/pinned_aliasable/. + _pin: PhantomPinned, +} + +impl Opaque { + /// Creates a new shared reference from a C pointer + /// + /// # Safety + /// + /// The pointer must be valid, though it need not point to a valid val= ue. + pub unsafe fn from_raw<'a>(ptr: *mut T) -> &'a Self { + let ptr =3D NonNull::new(ptr).unwrap().cast::(); + // SAFETY: Self is a transparent wrapper over T + unsafe { ptr.as_ref() } + } + + /// Creates a new opaque object with uninitialized contents. + /// + /// # Safety + /// + /// Ultimately the pointer to the returned value will be dereferenced + /// in another `unsafe` block, for example when passing it to a C func= tion, + /// but the functions containing the dereference are usually safe. The + /// value returned from `uninit()` must be initialized and pinned befo= re + /// calling them. + pub const unsafe fn uninit() -> Self { + Self { + value: UnsafeCell::new(MaybeUninit::uninit()), + _pin: PhantomPinned, + } + } + + /// Creates a new opaque object with zeroed contents. + /// + /// # Safety + /// + /// Ultimately the pointer to the returned value will be dereferenced + /// in another `unsafe` block, for example when passing it to a C func= tion, + /// but the functions containing the dereference are usually safe. The + /// value returned from `uninit()` must be pinned (and possibly initia= lized) + /// before calling them. + pub const unsafe fn zeroed() -> Self { + Self { + value: UnsafeCell::new(MaybeUninit::zeroed()), + _pin: PhantomPinned, + } + } + + /// Returns a raw mutable pointer to the opaque data. + pub const fn as_mut_ptr(&self) -> *mut T { + UnsafeCell::get(&self.value).cast() + } + + /// Returns a raw pointer to the opaque data. + pub const fn as_ptr(&self) -> *const T { + self.as_mut_ptr().cast_const() + } + + /// Returns a raw pointer to the opaque data that can be passed to a + /// C function as `void *`. + pub const fn as_void_ptr(&self) -> *mut std::ffi::c_void { + UnsafeCell::get(&self.value).cast() + } + + /// Converts a raw pointer to the wrapped type. + pub const fn raw_get(slot: *mut Self) -> *mut T { + // Compare with Linux's raw_get method, which goes through an Unsa= feCell + // because it takes a *const Self instead. + slot.cast() + } +} + +impl fmt::Debug for Opaque { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let mut name: String =3D "Opaque<".to_string(); + name +=3D std::any::type_name::(); + name +=3D ">"; + f.debug_tuple(&name).field(&self.as_ptr()).finish() + } +} + +impl Opaque { + /// Creates a new opaque object with default contents. + /// + /// # Safety + /// + /// Ultimately the pointer to the returned value will be dereferenced + /// in another `unsafe` block, for example when passing it to a C func= tion, + /// but the functions containing the dereference are usually safe. The + /// value returned from `uninit()` must be pinned before calling them. + pub unsafe fn new() -> Self { + Self { + value: UnsafeCell::new(MaybeUninit::new(T::default())), + _pin: PhantomPinned, + } + } +} + +/// Annotates [`Self`] as a transparent wrapper for another type. +/// +/// Usually defined via the [`qemu_api_macros::Wrapper`] derive macro. +/// +/// # Examples +/// +/// ``` +/// # use std::mem::ManuallyDrop; +/// # use common::opaque::Wrapper; +/// #[repr(transparent)] +/// pub struct Example { +/// inner: ManuallyDrop, +/// } +/// +/// unsafe impl Wrapper for Example { +/// type Wrapped =3D String; +/// } +/// ``` +/// +/// # Safety +/// +/// `Self` must be a `#[repr(transparent)]` wrapper for the `Wrapped` type, +/// whether directly or indirectly. +/// +/// # Methods +/// +/// By convention, types that implement Wrapper also implement the followi= ng +/// methods: +/// +/// ```ignore +/// pub const unsafe fn from_raw<'a>(value: *mut Self::Wrapped) -> &'a Sel= f; +/// pub const unsafe fn as_mut_ptr(&self) -> *mut Self::Wrapped; +/// pub const unsafe fn as_ptr(&self) -> *const Self::Wrapped; +/// pub const unsafe fn raw_get(slot: *mut Self) -> *const Self::Wrapped; +/// ``` +/// +/// They are not defined here to allow them to be `const`. +/// +/// [`qemu_api_macros::Wrapper`]: ../../qemu_api_macros/derive.Wrapper.html +pub unsafe trait Wrapper { + type Wrapped; +} + +unsafe impl Wrapper for Opaque { + type Wrapped =3D T; +} diff --git a/rust/qemu-api/src/uninit.rs b/rust/common/src/uninit.rs similarity index 98% rename from rust/qemu-api/src/uninit.rs rename to rust/common/src/uninit.rs index b0a829729dd..e7f9fcd2e3f 100644 --- a/rust/qemu-api/src/uninit.rs +++ b/rust/common/src/uninit.rs @@ -63,7 +63,7 @@ fn deref_mut(&mut self) -> &mut MaybeUninit { /// } /// /// # use std::mem::MaybeUninit; -/// # use qemu_api::{assert_match, uninit_field_mut}; +/// # use common::{assert_match, uninit_field_mut}; /// /// let mut s: MaybeUninit =3D MaybeUninit::zeroed(); /// uninit_field_mut!(s, x).write(5); diff --git a/rust/common/src/zeroable.rs b/rust/common/src/zeroable.rs new file mode 100644 index 00000000000..fd056deb1f6 --- /dev/null +++ b/rust/common/src/zeroable.rs @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +//! Defines a trait for structs that can be safely initialized with zero b= ytes. + +/// Encapsulates the requirement that +/// `MaybeUninit::::zeroed().assume_init()` does not cause undefined +/// behavior. +/// +/// # Safety +/// +/// Do not add this trait to a type unless all-zeroes is a valid value for= the +/// type. In particular, raw pointers can be zero, but references and +/// `NonNull` cannot. +pub unsafe trait Zeroable: Default { + /// Return a value of Self whose memory representation consists of all + /// zeroes, with the possible exclusion of padding bytes. + const ZERO: Self =3D unsafe { ::core::mem::MaybeUninit::::zeroed= ().assume_init() }; +} diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 88ef110507d..6d15f107dfa 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -16,6 +16,7 @@ rust-version.workspace =3D true bilge =3D { version =3D "0.2.0" } bilge-impl =3D { version =3D "0.2.0" } bits =3D { path =3D "../../../bits" } +common =3D { path =3D "../../../common" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 2a1be329abc..c4a9f531f7d 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -7,7 +7,8 @@ _libpl011_rs =3D static_library( bilge_rs, bilge_impl_rs, bits_rs, - qemu_api, + common_rs, + qemu_api_rs, qemu_api_macros, ], ) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 8411db8d00c..b4aa6c45f87 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -4,6 +4,7 @@ =20 use std::{ffi::CStr, mem::size_of}; =20 +use common::{static_assert, uninit_field_mut}; use qemu_api::{ chardev::{CharBackend, Chardev, Event}, impl_vmstate_forward, impl_vmstate_struct, @@ -14,9 +15,7 @@ prelude::*, qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, qom::{ObjectImpl, Owned, ParentField, ParentInit}, - static_assert, sysbus::{SysBusDevice, SysBusDeviceImpl}, - uninit_field_mut, vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_fields, vmstate_of, vmstate_subsections, vmstate_unused, }; diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index ac5df23c1d0..ba7354f07e0 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -11,6 +11,7 @@ repository.workspace =3D true rust-version.workspace =3D true =20 [dependencies] +common =3D { path =3D "../../../common" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index c2d7c0532ca..c91d330439a 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -4,7 +4,8 @@ _libhpet_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', dependencies: [ - qemu_api, + common_rs, + qemu_api_rs, qemu_api_macros, ], ) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index dd5326a40d4..72375d31550 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -10,6 +10,7 @@ slice::from_ref, }; =20 +use common::{bitops::IntegerExt, uninit_field_mut}; use qemu_api::{ bindings::{ address_space_memory, address_space_stl_le, qdev_prop_bit, qdev_pr= op_bool, @@ -27,7 +28,6 @@ qom_isa, sysbus::{SysBusDevice, SysBusDeviceImpl}, timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, - uninit_field_mut, vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_fields, vmstate_of, vmstate_subsections, vmstate_validate, }; diff --git a/rust/hw/timer/hpet/src/fw_cfg.rs b/rust/hw/timer/hpet/src/fw_c= fg.rs index 619d662ee1e..0605225fbb1 100644 --- a/rust/hw/timer/hpet/src/fw_cfg.rs +++ b/rust/hw/timer/hpet/src/fw_cfg.rs @@ -4,7 +4,8 @@ =20 use std::ptr::addr_of_mut; =20 -use qemu_api::{cell::bql_locked, zeroable::Zeroable}; +use common::Zeroable; +use qemu_api::cell::bql_locked; =20 /// Each `HPETState` represents a Event Timer Block. The v1 spec supports /// up to 8 blocks. QEMU only uses 1 block (in PC machine). diff --git a/rust/meson.build b/rust/meson.build index 331f11b7e72..402f8d66007 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -22,6 +22,7 @@ qemuutil_rs =3D qemuutil.partial_dependency(link_args: tr= ue, links: true) =20 genrs =3D [] =20 +subdir('common') subdir('qemu-api-macros') subdir('bits') subdir('qemu-api') diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index a65a7ce2fe9..49003a47801 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -97,7 +97,7 @@ fn derive_object_or_error(input: DeriveInput) -> Result::ParentType>); =20 ::qemu_api::module_init! { @@ -125,20 +125,20 @@ fn derive_opaque_or_error(input: DeriveInput) -> Resu= lt::Wrapped; + unsafe impl ::common::opaque::Wrapper for #name { + type Wrapped =3D <#typ as ::common::opaque::Wrapper>::Wrapped; } impl #name { - pub unsafe fn from_raw<'a>(ptr: *mut ::Wrapped) -> &'a Self { + pub unsafe fn from_raw<'a>(ptr: *mut ::Wrapped) -> &'a Self { let ptr =3D ::std::ptr::NonNull::new(ptr).unwrap().cast::<= Self>(); unsafe { ptr.as_ref() } } =20 - pub const fn as_mut_ptr(&self) -> *mut ::Wrapped { + pub const fn as_mut_ptr(&self) -> *mut ::Wrapped { self.0.as_mut_ptr() } =20 - pub const fn as_ptr(&self) -> *const ::Wrapped { + pub const fn as_ptr(&self) -> *const ::Wrapped { self.0.as_ptr() } =20 @@ -146,7 +146,7 @@ pub const fn as_void_ptr(&self) -> *mut ::core::ffi::c_= void { self.0.as_void_ptr() } =20 - pub const fn raw_get(slot: *mut Self) -> *mut ::Wrapped { + pub const fn raw_get(slot: *mut Self) -> *mut ::Wrapped { slot.cast() } } @@ -282,7 +282,7 @@ macro_rules! str_to_c_str { offset: ::core::mem::offset_of!(#name, #field_name) as isi= ze, set_default: #set_default, defval: ::qemu_api::bindings::Property__bindgen_ty_1 { u: = #defval as u64 }, - ..::qemu_api::zeroable::Zeroable::ZERO + ..::common::Zeroable::ZERO } }); } diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index 0e5a5728908..ef2806368d2 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -108,7 +108,7 @@ unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for = DummyState { offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, set_default: true, defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, - ..::qemu_api::zeroable::Zeroable::ZERO + ..::common::Zeroable::ZERO } ]; } @@ -135,7 +135,7 @@ unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for = DummyState { offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, set_default: true, defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, - ..::qemu_api::zeroable::Zeroable::ZERO + ..::common::Zeroable::ZERO } ]; } @@ -165,7 +165,7 @@ struct Foo { } }, quote! { - ::qemu_api::assert_field_type!( + ::common::assert_field_type!( Foo, _unused, ::qemu_api::qom::ParentField<::ParentType> diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index c5ed78035b6..2e0e2044912 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -14,6 +14,7 @@ repository.workspace =3D true rust-version.workspace =3D true =20 [dependencies] +common =3D { path =3D "../common" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } anyhow =3D { workspace =3D true } foreign =3D { workspace =3D true } diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 062009f1618..64af3caef58 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -52,13 +52,9 @@ _qemu_api_rs =3D static_library( structured_sources( [ 'src/lib.rs', - 'src/assertions.rs', 'src/bindings.rs', - 'src/bitops.rs', - 'src/callbacks.rs', 'src/cell.rs', 'src/chardev.rs', - 'src/errno.rs', 'src/error.rs', 'src/irq.rs', 'src/log.rs', @@ -69,23 +65,21 @@ _qemu_api_rs =3D static_library( 'src/qom.rs', 'src/sysbus.rs', 'src/timer.rs', - 'src/uninit.rs', 'src/vmstate.rs', - 'src/zeroable.rs', ], {'.' : _qemu_api_bindings_inc_rs}, ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, foreign_rs, libc_rs, qemu_api_macros, qemuutil= _rs, + dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, qemu_api_macro= s, qemuutil_rs, qom, hwcore, chardev, migration], ) =20 rust.test('rust-qemu-api-tests', _qemu_api_rs, suite: ['unit', 'rust']) =20 -qemu_api =3D declare_dependency(link_with: [_qemu_api_rs], +qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], dependencies: [qemu_api_macros, qom, hwcore, chardev, migration]) =20 # Doctests are essentially integration tests, so they need the same depend= encies. @@ -94,7 +88,7 @@ qemu_api =3D declare_dependency(link_with: [_qemu_api_rs], rust.doctest('rust-qemu-api-doctests', _qemu_api_rs, protocol: 'rust', - dependencies: qemu_api, + dependencies: [qemu_api_rs], suite: ['doc', 'rust']) =20 test('rust-qemu-api-integration', @@ -104,7 +98,7 @@ test('rust-qemu-api-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [qemu_api]), + dependencies: [common_rs, qemu_api_rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index b8104dea8be..3acdd903b52 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -20,6 +20,8 @@ =20 //! `bindgen`-generated declarations. =20 +use common::Zeroable; + #[cfg(MESON)] include!("bindings.inc.rs"); =20 @@ -56,3 +58,22 @@ unsafe impl Sync for VMStateField {} =20 unsafe impl Send for VMStateInfo {} unsafe impl Sync for VMStateInfo {} + +// bindgen does not derive Default here +#[allow(clippy::derivable_impls)] +impl Default for crate::bindings::VMStateFlags { + fn default() -> Self { + Self(0) + } +} + +unsafe impl Zeroable for crate::bindings::Property__bindgen_ty_1 {} +unsafe impl Zeroable for crate::bindings::Property {} +unsafe impl Zeroable for crate::bindings::VMStateFlags {} +unsafe impl Zeroable for crate::bindings::VMStateField {} +unsafe impl Zeroable for crate::bindings::VMStateDescription {} +unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_1 {} +unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_2 {} +unsafe impl Zeroable for crate::bindings::MemoryRegionOps {} +unsafe impl Zeroable for crate::bindings::MemTxAttrs {} +unsafe impl Zeroable for crate::bindings::CharBackend {} diff --git a/rust/qemu-api/src/cell.rs b/rust/qemu-api/src/cell.rs index 9943d7286b6..d13848df200 100644 --- a/rust/qemu-api/src/cell.rs +++ b/rust/qemu-api/src/cell.rs @@ -141,82 +141,13 @@ //! Multiple immutable borrows are allowed via [`borrow`](BqlRefCell::borr= ow), //! or a single mutable borrow via [`borrow_mut`](BqlRefCell::borrow_mut).= The //! thread will panic if these rules are violated or if the BQL is not hel= d. -//! -//! ## Opaque wrappers -//! -//! The cell types from the previous section are useful at the boundaries -//! of code that requires interior mutability. When writing glue code that -//! interacts directly with C structs, however, it is useful to operate -//! at a lower level. -//! -//! C functions often violate Rust's fundamental assumptions about memory -//! safety by modifying memory even if it is shared. Furthermore, C struc= ts -//! often start their life uninitialized and may be populated lazily. -//! -//! For this reason, this module provides the [`Opaque`] type to opt out -//! of Rust's usual guarantees about the wrapped type. Access to the wrapp= ed -//! value is always through raw pointers, obtained via methods like -//! [`as_mut_ptr()`](Opaque::as_mut_ptr) and [`as_ptr()`](Opaque::as_ptr).= These -//! pointers can then be passed to C functions or dereferenced; both actio= ns -//! require `unsafe` blocks, making it clear where safety guarantees must = be -//! manually verified. For example -//! -//! ```ignore -//! unsafe { -//! let state =3D Opaque::::uninit(); -//! qemu_struct_init(state.as_mut_ptr()); -//! } -//! ``` -//! -//! [`Opaque`] will usually be wrapped one level further, so that -//! bridge methods can be added to the wrapper: -//! -//! ```ignore -//! pub struct MyStruct(Opaque); -//! -//! impl MyStruct { -//! fn new() -> Pin> { -//! let result =3D Box::pin(unsafe { Opaque::uninit() }); -//! unsafe { qemu_struct_init(result.as_mut_ptr()) }; -//! result -//! } -//! } -//! ``` -//! -//! This pattern of wrapping bindgen-generated types in [`Opaque`] prov= ides -//! several advantages: -//! -//! * The choice of traits to be implemented is not limited by the -//! bindgen-generated code. For example, [`Drop`] can be added without -//! disabling [`Copy`] on the underlying bindgen type -//! -//! * [`Send`] and [`Sync`] implementations can be controlled by the wrapp= er -//! type rather than being automatically derived from the C struct's lay= out -//! -//! * Methods can be implemented in a separate crate from the bindgen-gene= rated -//! bindings -//! -//! * [`Debug`](std::fmt::Debug) and [`Display`](std::fmt::Display) -//! implementations can be customized to be more readable than the raw C -//! struct representation -//! -//! The [`Opaque`] type does not include BQL validation; it is possible= to -//! assert in the code that the right lock is taken, to use it together -//! with a custom lock guard type, or to let C code take the lock, as -//! appropriate. It is also possible to use it with non-thread-safe -//! types, since by default (unlike [`BqlCell`] and [`BqlRefCell`] -//! it is neither `Sync` nor `Send`. -//! -//! While [`Opaque`] is necessary for C interop, it should be used spar= ingly -//! and only at FFI boundaries. For QEMU-specific types that need interior -//! mutability, prefer [`BqlCell`] or [`BqlRefCell`]. =20 use std::{ cell::{Cell, UnsafeCell}, cmp::Ordering, fmt, - marker::{PhantomData, PhantomPinned}, - mem::{self, MaybeUninit}, + marker::PhantomData, + mem, ops::{Deref, DerefMut}, ptr::NonNull, }; @@ -939,165 +870,3 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Res= ult { (**self).fmt(f) } } - -/// Stores an opaque value that is shared with C code. -/// -/// Often, C structs can changed when calling a C function even if they are -/// behind a shared Rust reference, or they can be initialized lazily and = have -/// invalid bit patterns (e.g. `3` for a [`bool`]). This goes against Rus= t's -/// strict aliasing rules, which normally prevent mutation through shared -/// references. -/// -/// Wrapping the struct with `Opaque` ensures that the Rust compiler do= es not -/// assume the usual constraints that Rust structs require, and allows usi= ng -/// shared references on the Rust side. -/// -/// `Opaque` is `#[repr(transparent)]`, so that it matches the memory l= ayout -/// of `T`. -#[repr(transparent)] -pub struct Opaque { - value: UnsafeCell>, - // PhantomPinned also allows multiple references to the `Opaque`, i= .e. - // one `&mut Opaque` can coexist with a `&mut T` or any number of `= &T`; - // see https://docs.rs/pinned-aliasable/latest/pinned_aliasable/. - _pin: PhantomPinned, -} - -impl Opaque { - /// Creates a new shared reference from a C pointer - /// - /// # Safety - /// - /// The pointer must be valid, though it need not point to a valid val= ue. - pub unsafe fn from_raw<'a>(ptr: *mut T) -> &'a Self { - let ptr =3D NonNull::new(ptr).unwrap().cast::(); - // SAFETY: Self is a transparent wrapper over T - unsafe { ptr.as_ref() } - } - - /// Creates a new opaque object with uninitialized contents. - /// - /// # Safety - /// - /// Ultimately the pointer to the returned value will be dereferenced - /// in another `unsafe` block, for example when passing it to a C func= tion, - /// but the functions containing the dereference are usually safe. The - /// value returned from `uninit()` must be initialized and pinned befo= re - /// calling them. - pub const unsafe fn uninit() -> Self { - Self { - value: UnsafeCell::new(MaybeUninit::uninit()), - _pin: PhantomPinned, - } - } - - /// Creates a new opaque object with zeroed contents. - /// - /// # Safety - /// - /// Ultimately the pointer to the returned value will be dereferenced - /// in another `unsafe` block, for example when passing it to a C func= tion, - /// but the functions containing the dereference are usually safe. The - /// value returned from `uninit()` must be pinned (and possibly initia= lized) - /// before calling them. - pub const unsafe fn zeroed() -> Self { - Self { - value: UnsafeCell::new(MaybeUninit::zeroed()), - _pin: PhantomPinned, - } - } - - /// Returns a raw mutable pointer to the opaque data. - pub const fn as_mut_ptr(&self) -> *mut T { - UnsafeCell::get(&self.value).cast() - } - - /// Returns a raw pointer to the opaque data. - pub const fn as_ptr(&self) -> *const T { - self.as_mut_ptr().cast_const() - } - - /// Returns a raw pointer to the opaque data that can be passed to a - /// C function as `void *`. - pub const fn as_void_ptr(&self) -> *mut std::ffi::c_void { - UnsafeCell::get(&self.value).cast() - } - - /// Converts a raw pointer to the wrapped type. - pub const fn raw_get(slot: *mut Self) -> *mut T { - // Compare with Linux's raw_get method, which goes through an Unsa= feCell - // because it takes a *const Self instead. - slot.cast() - } -} - -impl fmt::Debug for Opaque { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let mut name: String =3D "Opaque<".to_string(); - name +=3D std::any::type_name::(); - name +=3D ">"; - f.debug_tuple(&name).field(&self.as_ptr()).finish() - } -} - -impl Opaque { - /// Creates a new opaque object with default contents. - /// - /// # Safety - /// - /// Ultimately the pointer to the returned value will be dereferenced - /// in another `unsafe` block, for example when passing it to a C func= tion, - /// but the functions containing the dereference are usually safe. The - /// value returned from `uninit()` must be pinned before calling them. - pub unsafe fn new() -> Self { - Self { - value: UnsafeCell::new(MaybeUninit::new(T::default())), - _pin: PhantomPinned, - } - } -} - -/// Annotates [`Self`] as a transparent wrapper for another type. -/// -/// Usually defined via the [`qemu_api_macros::Wrapper`] derive macro. -/// -/// # Examples -/// -/// ``` -/// # use std::mem::ManuallyDrop; -/// # use qemu_api::cell::Wrapper; -/// #[repr(transparent)] -/// pub struct Example { -/// inner: ManuallyDrop, -/// } -/// -/// unsafe impl Wrapper for Example { -/// type Wrapped =3D String; -/// } -/// ``` -/// -/// # Safety -/// -/// `Self` must be a `#[repr(transparent)]` wrapper for the `Wrapped` type, -/// whether directly or indirectly. -/// -/// # Methods -/// -/// By convention, types that implement Wrapper also implement the followi= ng -/// methods: -/// -/// ```ignore -/// pub const unsafe fn from_raw<'a>(value: *mut Self::Wrapped) -> &'a Sel= f; -/// pub const unsafe fn as_mut_ptr(&self) -> *mut Self::Wrapped; -/// pub const unsafe fn as_ptr(&self) -> *const Self::Wrapped; -/// pub const unsafe fn raw_get(slot: *mut Self) -> *const Self::Wrapped; -/// ``` -/// -/// They are not defined here to allow them to be `const`. -pub unsafe trait Wrapper { - type Wrapped; -} - -unsafe impl Wrapper for Opaque { - type Wrapped =3D T; -} diff --git a/rust/qemu-api/src/chardev.rs b/rust/qemu-api/src/chardev.rs index cb27be52569..5a351dcecb0 100644 --- a/rust/qemu-api/src/chardev.rs +++ b/rust/qemu-api/src/chardev.rs @@ -18,10 +18,11 @@ slice, }; =20 +use common::{callbacks::FnCall, errno, Opaque}; + use crate::{ bindings, - callbacks::FnCall, - cell::{BqlRefMut, Opaque}, + cell::{BqlRefCell, BqlRefMut}, prelude::*, }; =20 diff --git a/rust/qemu-api/src/error.rs b/rust/qemu-api/src/error.rs index e114fc4178b..8bac3cbec81 100644 --- a/rust/qemu-api/src/error.rs +++ b/rust/qemu-api/src/error.rs @@ -316,10 +316,11 @@ mod tests { use std::ffi::CStr; =20 use anyhow::anyhow; + use common::assert_match; use foreign::OwnedPointer; =20 use super::*; - use crate::{assert_match, bindings}; + use crate::bindings; =20 #[track_caller] fn error_for_test(msg: &CStr) -> OwnedPointer { diff --git a/rust/qemu-api/src/irq.rs b/rust/qemu-api/src/irq.rs index 1526e6f63a1..ea6b32848c5 100644 --- a/rust/qemu-api/src/irq.rs +++ b/rust/qemu-api/src/irq.rs @@ -10,9 +10,10 @@ ptr, }; =20 +use common::Opaque; + use crate::{ bindings::{self, qemu_set_irq}, - cell::Opaque, prelude::*, qom::ObjectClass, }; diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index daa2493bb69..6232e39e711 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -13,12 +13,8 @@ #[rustfmt::skip] pub mod prelude; =20 -pub mod assertions; -pub mod bitops; -pub mod callbacks; pub mod cell; pub mod chardev; -pub mod errno; pub mod error; pub mod irq; pub mod log; @@ -28,9 +24,7 @@ pub mod qom; pub mod sysbus; pub mod timer; -pub mod uninit; pub mod vmstate; -pub mod zeroable; =20 // Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this // crate). diff --git a/rust/qemu-api/src/log.rs b/rust/qemu-api/src/log.rs index a441b8c1f2e..d07f6272dc1 100644 --- a/rust/qemu-api/src/log.rs +++ b/rust/qemu-api/src/log.rs @@ -8,7 +8,9 @@ ptr::NonNull, }; =20 -use crate::{bindings, errno}; +use common::errno; + +use crate::bindings; =20 #[repr(u32)] /// Represents specific error categories within QEMU's logging system. diff --git a/rust/qemu-api/src/memory.rs b/rust/qemu-api/src/memory.rs index e40fad6cf19..f790cb5fd2d 100644 --- a/rust/qemu-api/src/memory.rs +++ b/rust/qemu-api/src/memory.rs @@ -10,14 +10,11 @@ }; =20 pub use bindings::{hwaddr, MemTxAttrs}; +use common::{callbacks::FnCall, uninit::MaybeUninitField, zeroable::Zeroab= le, Opaque}; =20 use crate::{ bindings::{self, device_endian, memory_region_init_io}, - callbacks::FnCall, - cell::Opaque, prelude::*, - uninit::MaybeUninitField, - zeroable::Zeroable, }; =20 pub struct MemoryRegionOps( diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index 8f9e23ee2c5..dcfe71497f0 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -4,13 +4,9 @@ =20 //! Commonly used traits and types for QEMU. =20 -pub use crate::bitops::IntegerExt; - pub use crate::cell::BqlCell; pub use crate::cell::BqlRefCell; =20 -pub use crate::errno; - pub use crate::log_mask_ln; =20 pub use crate::qdev::DeviceMethods; @@ -19,8 +15,8 @@ pub use crate::qom::IsA; pub use crate::qom::Object; pub use crate::qom::ObjectCast; -pub use crate::qom::ObjectDeref; pub use crate::qom::ObjectClassMethods; +pub use crate::qom::ObjectDeref; pub use crate::qom::ObjectMethods; pub use crate::qom::ObjectType; =20 diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index e2b4121cac5..8be125fae47 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -10,11 +10,11 @@ }; =20 pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; +use common::{callbacks::FnCall, Opaque}; =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, - callbacks::FnCall, - cell::{bql_locked, Opaque}, + cell::bql_locked, chardev::Chardev, error::{Error, Result}, impl_vmstate_c_struct, @@ -246,7 +246,7 @@ macro_rules! define_property { bitnr: $bitnr, set_default: true, defval: $crate::bindings::Property__bindgen_ty_1 { u: $defval = as u64 }, - ..$crate::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO } }; ($name:expr, $state:ty, $field:ident, $prop:expr, $type:ty, default = =3D $defval:expr$(,)*) =3D> { @@ -257,7 +257,7 @@ macro_rules! define_property { offset: ::std::mem::offset_of!($state, $field) as isize, set_default: true, defval: $crate::bindings::Property__bindgen_ty_1 { u: $defval = as u64 }, - ..$crate::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO } }; ($name:expr, $state:ty, $field:ident, $prop:expr, $type:ty$(,)*) =3D> { @@ -267,7 +267,7 @@ macro_rules! define_property { info: $prop, offset: ::std::mem::offset_of!($state, $field) as isize, set_default: false, - ..$crate::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO } }; } diff --git a/rust/qemu-api/src/qom.rs b/rust/qemu-api/src/qom.rs index 12c6fc6752c..49b4f03ccfc 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qemu-api/src/qom.rs @@ -102,13 +102,14 @@ }; =20 pub use bindings::ObjectClass; +use common::Opaque; =20 use crate::{ bindings::{ self, object_class_dynamic_cast, object_dynamic_cast, object_get_c= lass, object_get_typename, object_new, object_ref, object_unref, TypeInf= o, }, - cell::{bql_locked, Opaque}, + cell::bql_locked, impl_vmstate_pointer, }; =20 diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index e92502a8fe6..4a5b4cbbf67 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -7,10 +7,11 @@ use std::{ffi::CStr, ptr::addr_of_mut}; =20 pub use bindings::SysBusDeviceClass; +use common::Opaque; =20 use crate::{ bindings, - cell::{bql_locked, Opaque}, + cell::bql_locked, irq::{IRQState, InterruptSource}, memory::MemoryRegion, prelude::*, diff --git a/rust/qemu-api/src/timer.rs b/rust/qemu-api/src/timer.rs index 1e639eaf221..383e1a6e774 100644 --- a/rust/qemu-api/src/timer.rs +++ b/rust/qemu-api/src/timer.rs @@ -7,10 +7,10 @@ pin::Pin, }; =20 -use crate::{ - bindings::{self, qemu_clock_get_ns, timer_del, timer_init_full, timer_= mod, QEMUClockType}, - callbacks::FnCall, - cell::Opaque, +use common::{callbacks::FnCall, Opaque}; + +use crate::bindings::{ + self, qemu_clock_get_ns, timer_del, timer_init_full, timer_mod, QEMUCl= ockType, }; =20 /// A safe wrapper around [`bindings::QEMUTimer`]. diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index ce42b031bc1..06aac3a73f4 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -35,14 +35,15 @@ ptr::{addr_of, NonNull}, }; =20 -pub use crate::bindings::{MigrationPriority, VMStateField}; -use crate::{ - bindings::{self, VMStateFlags}, +use common::{ callbacks::FnCall, errno::{into_neg_errno, Errno}, - zeroable::Zeroable, + Zeroable, }; =20 +use crate::bindings::{self, VMStateFlags}; +pub use crate::bindings::{MigrationPriority, VMStateField}; + /// This macro is used to call a function with a generic argument bound /// to the type of a field. The function must take a /// [`PhantomData`]`` argument; `T` is the type of @@ -271,7 +272,7 @@ unsafe impl<$base> $crate::vmstate::VMState for $type w= here $base: $crate::vmsta impl_vmstate_transparent!(std::cell::Cell where T: VMState); impl_vmstate_transparent!(std::cell::UnsafeCell where T: VMState); impl_vmstate_transparent!(std::pin::Pin where T: VMState); -impl_vmstate_transparent!(crate::cell::Opaque where T: VMState); +impl_vmstate_transparent!(::common::Opaque where T: VMState); =20 #[macro_export] macro_rules! impl_vmstate_bitsized { @@ -324,7 +325,7 @@ unsafe impl VMState for $type { vmsd: ::std::ptr::addr_of!($vmsd), size: ::std::mem::size_of::<$type>(), flags: $crate::bindings::VMStateFlags::VMS_STRUCT, - ..$crate::zeroable::Zeroable::ZERO + ..common::zeroable::Zeroable::ZERO }; } }; @@ -367,7 +368,7 @@ macro_rules! vmstate_unused { size: $size, info: unsafe { ::core::ptr::addr_of!($crate::bindings::vmstate= _info_unused_buffer) }, flags: $crate::bindings::VMStateFlags::VMS_BUFFER, - ..$crate::zeroable::Zeroable::ZERO + ..::common::Zeroable::ZERO } }}; } @@ -390,7 +391,7 @@ pub extern "C" fn rust_vms_test_field_exists {{ - const fn test_cb_builder__ $crate::callbacks::FnCall= <(&'a T, u8), bool>>( + const fn test_cb_builder__ ::common::callbacks::FnCa= ll<(&'a T, u8), bool>>( _phantom: ::core::marker::PhantomData, ) -> $crate::vmstate::VMSFieldExistCb { const { assert!(F::IS_SOME) }; @@ -414,7 +415,7 @@ macro_rules! vmstate_fields { $($field),*, $crate::bindings::VMStateField { flags: $crate::bindings::VMStateFlags::VMS_END, - ..$crate::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO } ]; _FIELDS.as_ptr() @@ -433,7 +434,7 @@ macro_rules! vmstate_validate { | $crate::bindings::VMStateFlags::VMS_ARRAY.0, ), num: 0, // 0 elements: no data, only run test_fn callback - ..$crate::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO } }; } @@ -455,7 +456,7 @@ unsafe impl $crate::vmstate::VMState for $type { vmsd: ::core::ptr::addr_of!(*VMSD), size: ::core::mem::size_of::<$type>(), flags: $crate::bindings::VMStateFlags::VMS_STRUCT, - ..$crate::zeroable::Zeroable::ZERO + ..common::Zeroable::ZERO } }; } diff --git a/rust/qemu-api/src/zeroable.rs b/rust/qemu-api/src/zeroable.rs deleted file mode 100644 index d8239d08563..00000000000 --- a/rust/qemu-api/src/zeroable.rs +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later - -//! Defines a trait for structs that can be safely initialized with zero b= ytes. - -/// Encapsulates the requirement that -/// `MaybeUninit::::zeroed().assume_init()` does not cause undefined -/// behavior. -/// -/// # Safety -/// -/// Do not add this trait to a type unless all-zeroes is a valid value for= the -/// type. In particular, raw pointers can be zero, but references and -/// `NonNull` cannot. -pub unsafe trait Zeroable: Default { - /// Return a value of Self whose memory representation consists of all - /// zeroes, with the possible exclusion of padding bytes. - const ZERO: Self =3D unsafe { ::core::mem::MaybeUninit::::zeroed= ().assume_init() }; -} - -// bindgen does not derive Default here -#[allow(clippy::derivable_impls)] -impl Default for crate::bindings::VMStateFlags { - fn default() -> Self { - Self(0) - } -} - -unsafe impl Zeroable for crate::bindings::Property__bindgen_ty_1 {} -unsafe impl Zeroable for crate::bindings::Property {} -unsafe impl Zeroable for crate::bindings::VMStateFlags {} -unsafe impl Zeroable for crate::bindings::VMStateField {} -unsafe impl Zeroable for crate::bindings::VMStateDescription {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_1 {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_2 {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps {} -unsafe impl Zeroable for crate::bindings::MemTxAttrs {} -unsafe impl Zeroable for crate::bindings::CharBackend {} diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index 2c0670ba0ee..d9e5bcc4987 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -9,12 +9,13 @@ slice, }; =20 +use common::Opaque; use qemu_api::{ bindings::{ vmstate_info_bool, vmstate_info_int32, vmstate_info_int64, vmstate= _info_int8, vmstate_info_uint64, vmstate_info_uint8, vmstate_info_unused_buffe= r, VMStateFlags, }, - cell::{BqlCell, Opaque}, + cell::BqlCell, impl_vmstate_forward, impl_vmstate_struct, vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate, --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757752008; cv=none; d=zohomail.com; s=zohoarc; b=J7BngBsZZAqnLJ1XCOLJTmQveREYH5DQq0fXQr5Ga9PrKXAut00sQUWbmV1E1iEvSRPD60s5gUNkJu7ZW8dwkZs48689jF5rFzKJRLcTLfgiSMfPmMN9uwS3UK5qufrO8V3PLHWsVnaaeaQJLbLCX1Hg4jNQlZlUqmGsMjH1y3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757752008; 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=w+Gmr9avOyH4kcrD2JY9Se7d2/kh9aUf1Iv46OmMGuE=; b=Gc1JipADySzKFraJLqZoWUws8lYuyai4MrcbaFB08jRJMfb+/Wi+IhU9BCB67ArX/5H7QfsYFSKLx27uSzlNM/RJ12eF4U248OIDnf+tecw6cSBVg9yERbUpEvoIRBPy+uU03mZFg3cmqb2sayHiG6MMgYw/9u8UqCNl5lMQkyU= 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 1757752008902869.664138729224; Sat, 13 Sep 2025 01:26:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMO-00008F-Ak; Sat, 13 Sep 2025 04:11:52 -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 1uxLM6-0008GG-GM for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11: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 1uxLM2-00056E-5y for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:34 -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-261-CbUEkvcLOdiSq6bJIQfIDg-1; Sat, 13 Sep 2025 04:11:28 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3df9f185b82so1007449f8f.1 for ; Sat, 13 Sep 2025 01:11:27 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e76078708bsm9680866f8f.15.2025.09.13.01.11.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751089; 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=w+Gmr9avOyH4kcrD2JY9Se7d2/kh9aUf1Iv46OmMGuE=; b=XEpfPtSnSjJCmnoqXeqnNxHduNR3GTTglfi8mSAlUaLsAms7ae5Q8e2HXO2xAXmM9H0vnm fthFBVwQ7Rf8y6EFkRcHKYWba6yvCYaGT9ITosl16Iqo7Izf9WMNfIy81ynu6lbOSIVLjJ MUrb13h/rgXwo7+zuGqX8gY7NA3zER8= X-MC-Unique: CbUEkvcLOdiSq6bJIQfIDg-1 X-Mimecast-MFC-AGG-ID: CbUEkvcLOdiSq6bJIQfIDg_1757751087 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751086; x=1758355886; 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=w+Gmr9avOyH4kcrD2JY9Se7d2/kh9aUf1Iv46OmMGuE=; b=Nhsf9kNiGhwD1X7WI2+apqMZ0IBEoL5s+KwLFaHOTHsR2ar1l+wvTZtEuSv57YxlJB snTw5EyYcikIQAiH+HgLf2Kj76v1JqDchsbtVOlZ8nIl0A1QAebmhSqGUZz4SvJbEmak qZ22WdEiv/IXiH7LamVHFODw6j+1QgRUKPhhAtAZu6c13BeKm9pnMBFFwBtCE1HeHKpQ qSj2QsV6XmgbaZv105P5mK4uUIGE9Ur/ArVCHfvSab0sYe5w7NOZdmR6QSGPggg2f5Yl z+jMYCapMpEtKwglxOBMYbYawIUx9XnaL9KMs33zMD+K27mjjkqW0bVIL2r7cPow1nrA uQ/w== X-Gm-Message-State: AOJu0Yy6W3dDnf9g+VFHGTmyxHFWUEn3bCC8+xGu+Hb+5sT78OKpBsMg 1i4CmGOM7LMEpMNrf7viQkAT5eqyJlQ6DhKwa9WMpUkABL/vwCntzeMweHOz8SWLcj5HaVBQ2GR 2jQLeRMlWH6xhvuLxO/73UNyXYYmSwYJPdYhO0UHB5ku7XBfFQW0GYFyeJ94QCNcbscd8D4xSyK AvIyjmt9ow4EXUcXya6zgDGzg8Y1qGerSTQUuGij5P X-Gm-Gg: ASbGncuL9WYv9coKBVsGXnLuJ7XQc9a89NUGwG4cA5Pp14t+q4wWc4gnCa6KA4LknXw dg6NFwxarGg7dUu7yymL624pHJcnKxocRDvDcI2J1dzrU1R1Lo8BvKxMG6xwoYYUSzfzJCCl0Fr 2NHHKjkopQGZVBC5Zl+QUyVJCcWOUyfULs4/kgsXW7IIt1rckoj+mVZAJHu7gwQBt9hCmTXvkw8 kS5Z1plSCIlrwTSNcRAWhmnijyZBJMzb7eG53QA6jVJdXgMjMHYKorUdMqVyK3iyVX3ylkwtGLa aMNVtI+pu5jMatVsBsOz1+nUwvZY4olwC0PE4db26RB9+z/4NzGVB5ethWj2uU0Z4S6hCoCsGY0 RXM0pINy0+bOT+bKl6lpEuYB6+sdWVwrEJiI9zWedxm8= X-Received: by 2002:adf:e6d2:0:b0:3e8:e61:b067 with SMTP id ffacd0b85a97d-3e80e61b06fmr1927824f8f.13.1757751085769; Sat, 13 Sep 2025 01:11:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFSoEKuOL0agXGlVMsMDVrWHh+ro+xBFP3GxT94nryNqnq55s6fJVV6yXJad2iPMKFit/1lRA== X-Received: by 2002:adf:e6d2:0:b0:3e8:e61:b067 with SMTP id ffacd0b85a97d-3e80e61b06fmr1927800f8f.13.1757751085313; Sat, 13 Sep 2025 01:11:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 36/61] rust: make build.rs generic over various ./rust/projects Date: Sat, 13 Sep 2025 10:09:17 +0200 Message-ID: <20250913080943.11710-37-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757752010578116600 From: Marc-Andr=C3=A9 Lureau Guess the name of the subdir from the manifest directory, instead of hard-coding it. In the following commits, other crates can then link to this file, instead of maintaining their own copy. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-5-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/qemu-api/build.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rust/qemu-api/build.rs b/rust/qemu-api/build.rs index 29d09456257..5654d1d5624 100644 --- a/rust/qemu-api/build.rs +++ b/rust/qemu-api/build.rs @@ -9,12 +9,14 @@ use std::{env, fs::remove_file, io::Result, path::Path}; =20 fn main() -> Result<()> { + let manifest_dir =3D env!("CARGO_MANIFEST_DIR"); let file =3D if let Ok(root) =3D env::var("MESON_BUILD_ROOT") { - format!("{root}/rust/qemu-api/bindings.inc.rs") + let sub =3D get_rust_subdir(manifest_dir).unwrap(); + format!("{root}/{sub}/bindings.inc.rs") } else { // Placing bindings.inc.rs in the source directory is supported // but not documented or encouraged. - format!("{}/src/bindings.inc.rs", env!("CARGO_MANIFEST_DIR")) + format!("{manifest_dir}/src/bindings.inc.rs") }; =20 let file =3D Path::new(&file); @@ -41,3 +43,7 @@ fn main() -> Result<()> { println!("cargo:rerun-if-changed=3Dbuild.rs"); Ok(()) } + +fn get_rust_subdir(path: &str) -> Option<&str> { + path.find("/rust").map(|index| &path[index + 1..]) +} --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751735; cv=none; d=zohomail.com; s=zohoarc; b=E14ZE2vH77FDyDZgMzyFTAg8F9EGwFwVvbHTG+YRCGBHjfXE/WfXKgv72U8p7SodD+KIJGqYw3v3aCjO1aOHkWIqBrh8ofJUY8HwSLAM80n9d4DP/mi2hZ7OI5bCJOU8wiBwRFLk13BOzBHelsEyzx05pEl7hKn/aiFbSvlLxHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751735; 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=imKtYE1VIpkUY1c3hyyMnDVKt/4llrsbgdc+ASu2/Cw=; b=P3/ro14MrRwtRaxD92e4WeK5kxgAVdx91/aec/hJ1uzk9BYZeeo84M+qyAi/IzZHRCdxOQjqpqLJNJaoivw9uiVmTHXNVGl3bqkdUKKHYjvohvr64Oggb1LIa+c8eRtMaVw7ZVBmAu9EeokghfC+/XUx1zWr50/gqxsfzCb/R6A= 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 1757751735164302.39104907533783; Sat, 13 Sep 2025 01:22:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMT-0000Mv-AA; Sat, 13 Sep 2025 04:11:57 -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 1uxLMC-0008QH-2l for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:42 -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 1uxLM7-00056n-NL for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:39 -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-649-5O0qIDhxN8-6Rtn0tuCJoQ-1; Sat, 13 Sep 2025 04:11:31 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3e067ef24aaso1708201f8f.3 for ; Sat, 13 Sep 2025 01:11:31 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e85610cc17sm2114350f8f.54.2025.09.13.01.11.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751094; 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=imKtYE1VIpkUY1c3hyyMnDVKt/4llrsbgdc+ASu2/Cw=; b=gv9eBOqnqTvKSo1uMegiee7AH1yJM6kee99s8X7Mizn5WrxPotK8rB+VXh+Z8pK5aYpQV/ TxVfA63ZIcE7dj0J4vEaoMju8dBkjp2eU6My4kH5w+5Hh53CA7dJ9UtVeYrfo6ym9lVYIl xUa4EGmVBx+5zIOOA+tuLuuxdX+OcYI= X-MC-Unique: 5O0qIDhxN8-6Rtn0tuCJoQ-1 X-Mimecast-MFC-AGG-ID: 5O0qIDhxN8-6Rtn0tuCJoQ_1757751091 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751090; x=1758355890; 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=imKtYE1VIpkUY1c3hyyMnDVKt/4llrsbgdc+ASu2/Cw=; b=No57q6gffSB/cLstIEOQXLyNF9nEuDeNW57AFZ9G55YqOazu5Bx5Xhwm6BvWMVjEid Ivr4sOgOVEDwYu9GyvT/+uvlQNk63qAuTQ8BDevInb6gTx7e/MYUc8LfWjboPlqFX36a qJvkUhchP4cVh/9WAZ6QbvjdoEX+hxsE4NcZmo2DeQphpLmebt+WYQCqIBoWKsb6Iy8i hyoL2NYvRYwJ2JGD5oIrY8/eTGyetzEzrjkhBzCGomQZS4RlwQcNsyp6UhYD7oDnIPL3 nY0Z9hxeTKWtlsmz81pFTOkS0JE896GhhL6E4u5lq3I1s+DR4HKfb1cK5rrKBOFGaExm 3OKA== X-Gm-Message-State: AOJu0Yz/4xwSPnKTCrdO6eyxD1YYnibnekkorVO7ehHNRWBve3G5C2hb 09644uAYlkugiNVbS2qCmbbkv0b8hmLM7/0tIM+9AX3aHvmU83ZA3f6SX3PbfQvZrLxMa2KqdXW mEtAQtT1G3jAnbUT7poh5oI5TMSRpTtMjddcDUMtWbq0hxhDl3Fi/2pW1VC/PoiofzIYNL851Jb gsQE3ZC7pLwtoHwde34kdraonm0derhslghELD15rW X-Gm-Gg: ASbGncsw8RmO9T+yze9+hI2CiJvli6sPASfNSBLu439Z7nfj84EsOG74VDti+1pf8mO 8bh1tobm9AEnUC86HE/8p+v5WFuB60hc84/opiYkaCmk20EtWcY2EeFw/fw1k07apa/+o+dLosb N3p7eskRrNewBcNxKZAxbrA7F8D+/NxQamlQXranm2ndOKKByluZYcG7E0NHwUiq7K3UE94yvL8 fw8Nf9LdyUJFiLPlFuoiLCxv51X3GiVE0ewqHtRabNLpc/to1vC28S4+eiAcyYSM3f4Wr1mQ2+1 oJzsZd7lBHsF7UMP41aDD2dA/7yzkSgJdNlxtc2wCU+ZujQfGuK/jXX0ooUIlbD9SchuAxsD9r3 QMxXAbOTmKVQwWUUJqWIMQszFoceXhbouGKhCMuEgS1g= X-Received: by 2002:a5d:5d8a:0:b0:3dc:eb5:51f6 with SMTP id ffacd0b85a97d-3e7659d37b9mr5279699f8f.39.1757751089594; Sat, 13 Sep 2025 01:11:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHN/ExV7ps9RVLlCoTsbAbcBxfHxxzqZL+DKkvo99JOTzwabW+6rw/TP7a0YWhqRagzQ2wEsA== X-Received: by 2002:a5d:5d8a:0:b0:3dc:eb5:51f6 with SMTP id ffacd0b85a97d-3e7659d37b9mr5279651f8f.39.1757751088661; Sat, 13 Sep 2025 01:11:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 37/61] rust: split "util" crate Date: Sat, 13 Sep 2025 10:09:18 +0200 Message-ID: <20250913080943.11710-38-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751735957116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-7-marcandre.lureau@re= dhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/qemu-api/wrapper.h | 6 --- rust/util/wrapper.h | 32 ++++++++++++++++ rust/Cargo.lock | 17 +++++++-- rust/Cargo.toml | 5 +-- rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 7 ++-- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 6 +-- rust/meson.build | 1 + rust/qemu-api-macros/src/lib.rs | 2 +- rust/qemu-api-macros/src/tests.rs | 2 +- rust/qemu-api/Cargo.toml | 4 +- rust/qemu-api/build.rs | 50 +----------------------- rust/qemu-api/meson.build | 14 ++----- rust/qemu-api/src/bindings.rs | 1 + rust/qemu-api/src/lib.rs | 6 --- rust/qemu-api/src/prelude.rs | 2 - rust/qemu-api/src/qdev.rs | 4 +- rust/qemu-api/src/sysbus.rs | 2 +- rust/qemu-api/src/vmstate.rs | 2 +- rust/qemu-api/tests/tests.rs | 2 +- rust/util/Cargo.toml | 23 +++++++++++ rust/util/build.rs | 49 ++++++++++++++++++++++++ rust/util/meson.build | 55 +++++++++++++++++++++++++++ rust/util/src/bindings.rs | 25 ++++++++++++ rust/{qemu-api =3D> util}/src/error.rs | 5 +-- rust/util/src/lib.rs | 9 +++++ rust/{qemu-api =3D> util}/src/log.rs | 12 +++--- rust/{qemu-api =3D> util}/src/module.rs | 2 +- rust/{qemu-api =3D> util}/src/timer.rs | 0 33 files changed, 243 insertions(+), 107 deletions(-) create mode 100644 rust/util/wrapper.h mode change 100644 =3D> 120000 rust/qemu-api/build.rs create mode 100644 rust/util/Cargo.toml create mode 100644 rust/util/build.rs create mode 100644 rust/util/meson.build create mode 100644 rust/util/src/bindings.rs rename rust/{qemu-api =3D> util}/src/error.rs (98%) create mode 100644 rust/util/src/lib.rs rename rust/{qemu-api =3D> util}/src/log.rs (93%) rename rust/{qemu-api =3D> util}/src/module.rs (97%) rename rust/{qemu-api =3D> util}/src/timer.rs (100%) diff --git a/MAINTAINERS b/MAINTAINERS index cee5a342062..3d7b47873f8 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3519,6 +3519,7 @@ F: rust/common/ F: rust/qemu-api F: rust/qemu-api-macros F: rust/rustfmt.toml +F: rust/util/ F: scripts/get-wraps-from-cargo-registry.py =20 Rust-related patches CC here diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h index 15a1b19847f..cc7112406b2 100644 --- a/rust/qemu-api/wrapper.h +++ b/rust/qemu-api/wrapper.h @@ -48,9 +48,6 @@ typedef enum memory_order { #endif /* __CLANG_STDATOMIC_H */ =20 #include "qemu/osdep.h" -#include "qemu/log.h" -#include "qemu/log-for-trace.h" -#include "qemu/module.h" #include "qemu-io.h" #include "system/system.h" #include "hw/sysbus.h" @@ -61,11 +58,8 @@ typedef enum memory_order { #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/irq.h" -#include "qapi/error.h" -#include "qapi/error-internal.h" #include "migration/vmstate.h" #include "chardev/char-serial.h" #include "exec/memattrs.h" -#include "qemu/timer.h" #include "system/address-spaces.h" #include "hw/char/pl011.h" diff --git a/rust/util/wrapper.h b/rust/util/wrapper.h new file mode 100644 index 00000000000..b9ed68a01d8 --- /dev/null +++ b/rust/util/wrapper.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "qapi/error.h" +#include "qapi/error-internal.h" +#include "qemu/log-for-trace.h" +#include "qemu/log.h" +#include "qemu/module.h" +#include "qemu/timer.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 71e8c7ed62a..757c03cbdec 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -73,6 +73,7 @@ dependencies =3D [ "common", "qemu_api", "qemu_api_macros", + "util", ] =20 [[package]] @@ -100,6 +101,7 @@ dependencies =3D [ "common", "qemu_api", "qemu_api_macros", + "util", ] =20 [[package]] @@ -138,11 +140,9 @@ dependencies =3D [ name =3D "qemu_api" version =3D "0.1.0" dependencies =3D [ - "anyhow", "common", - "foreign", - "libc", "qemu_api_macros", + "util", ] =20 [[package]] @@ -180,6 +180,17 @@ version =3D "1.0.12" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0f= ee4b" =20 +[[package]] +name =3D "util" +version =3D "0.1.0" +dependencies =3D [ + "anyhow", + "common", + "foreign", + "libc", + "qemu_api_macros", +] + [[package]] name =3D "version_check" version =3D "0.9.4" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index c0426d42430..cfdd535e3bd 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -7,6 +7,7 @@ members =3D [ "qemu-api", "hw/char/pl011", "hw/timer/hpet", + "util", ] =20 [workspace.package] @@ -24,9 +25,7 @@ foreign =3D "~0.3.1" libc =3D "0.2.162" =20 [workspace.lints.rust] -unexpected_cfgs =3D { level =3D "deny", check-cfg =3D [ - 'cfg(MESON)', -] } +unexpected_cfgs =3D { level =3D "deny", check-cfg =3D ['cfg(MESON)'] } =20 # Occasionally, we may need to silence warnings and clippy lints that # were only introduced in newer Rust compiler versions. Do not croak diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 6d15f107dfa..0cf9943fe86 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -17,6 +17,7 @@ bilge =3D { version =3D "0.2.0" } bilge-impl =3D { version =3D "0.2.0" } bits =3D { path =3D "../../../bits" } common =3D { path =3D "../../../common" } +util =3D { path =3D "../../../util" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index c4a9f531f7d..8a931a4d03d 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -9,6 +9,7 @@ _libpl011_rs =3D static_library( bits_rs, common_rs, qemu_api_rs, + util_rs, qemu_api_macros, ], ) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index b4aa6c45f87..ab38d57fc41 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -9,8 +9,6 @@ chardev::{CharBackend, Chardev, Event}, impl_vmstate_forward, impl_vmstate_struct, irq::{IRQState, InterruptSource}, - log::Log, - log_mask_ln, memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, @@ -19,6 +17,7 @@ vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_fields, vmstate_of, vmstate_subsections, vmstate_unused, }; +use util::{log::Log, log_mask_ln}; =20 use crate::registers::{self, Interrupt, RegisterOffset}; =20 @@ -172,7 +171,7 @@ impl ObjectImpl for PL011State { =20 impl DeviceImpl for PL011State { const VMSTATE: Option> =3D Some(VMSTATE_PL011= ); - const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); + const REALIZE: Option util::Result<()>> =3D Some(Self::re= alize); } =20 impl ResettablePhasesImpl for PL011State { @@ -623,7 +622,7 @@ fn event(&self, event: Event) { } } =20 - fn realize(&self) -> qemu_api::Result<()> { + fn realize(&self) -> util::Result<()> { self.char_backend .enable_handlers(self, Self::can_receive, Self::receive, Self:= :event); Ok(()) diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index ba7354f07e0..dd9a5ed3d43 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -12,6 +12,7 @@ rust-version.workspace =3D true =20 [dependencies] common =3D { path =3D "../../../common" } +util =3D { path =3D "../../../util" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index c91d330439a..ca09660bf47 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -6,6 +6,7 @@ _libhpet_rs =3D static_library( dependencies: [ common_rs, qemu_api_rs, + util_rs, qemu_api_macros, ], ) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 72375d31550..2be180fdedd 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -27,10 +27,10 @@ qom::{ObjectImpl, ObjectType, ParentField, ParentInit}, qom_isa, sysbus::{SysBusDevice, SysBusDeviceImpl}, - timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, vmstate_fields, vmstate_of, vmstate_subsections, vmstate_validate, }; +use util::timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}; =20 use crate::fw_cfg::HPETFwConfig; =20 @@ -728,7 +728,7 @@ fn post_init(&self) { } } =20 - fn realize(&self) -> qemu_api::Result<()> { + fn realize(&self) -> util::Result<()> { if self.num_timers < HPET_MIN_TIMERS || self.num_timers > HPET_MAX= _TIMERS { Err(format!( "hpet.num_timers must be between {HPET_MIN_TIMERS} and {HP= ET_MAX_TIMERS}" @@ -1013,7 +1013,7 @@ unsafe impl qemu_api::qdev::DevicePropertiesImpl for = HPETState { =20 impl DeviceImpl for HPETState { const VMSTATE: Option> =3D Some(VMSTATE_HPET); - const REALIZE: Option qemu_api::Result<()>> =3D Some(Self= ::realize); + const REALIZE: Option util::Result<()>> =3D Some(Self::re= alize); } =20 impl ResettablePhasesImpl for HPETState { diff --git a/rust/meson.build b/rust/meson.build index 402f8d66007..a9d715e6e94 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -25,6 +25,7 @@ genrs =3D [] subdir('common') subdir('qemu-api-macros') subdir('bits') +subdir('util') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index 49003a47801..67650a9a269 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -100,7 +100,7 @@ fn derive_object_or_error(input: DeriveInput) -> Result= ::ParentType>); =20 - ::qemu_api::module_init! { + ::util::module_init! { MODULE_INIT_QOM =3D> unsafe { ::qemu_api::bindings::type_register_static(&<#name as ::qe= mu_api::qom::ObjectImpl>::TYPE_INFO); } diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index ef2806368d2..8e71ac6e677 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -170,7 +170,7 @@ struct Foo { _unused, ::qemu_api::qom::ParentField<::ParentType> ); - ::qemu_api::module_init! { + ::util::module_init! { MODULE_INIT_QOM =3D> unsafe { ::qemu_api::bindings::type_register_static(&::TYPE_INFO); } diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 2e0e2044912..fbfb894421d 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -15,10 +15,8 @@ rust-version.workspace =3D true =20 [dependencies] common =3D { path =3D "../common" } +util =3D { path =3D "../util" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } -anyhow =3D { workspace =3D true } -foreign =3D { workspace =3D true } -libc =3D { workspace =3D true } =20 [features] default =3D ["debug_cell"] diff --git a/rust/qemu-api/build.rs b/rust/qemu-api/build.rs deleted file mode 100644 index 5654d1d5624..00000000000 --- a/rust/qemu-api/build.rs +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2024, Linaro Limited -// Author(s): Manos Pitsidianakis -// SPDX-License-Identifier: GPL-2.0-or-later - -#[cfg(unix)] -use std::os::unix::fs::symlink as symlink_file; -#[cfg(windows)] -use std::os::windows::fs::symlink_file; -use std::{env, fs::remove_file, io::Result, path::Path}; - -fn main() -> Result<()> { - let manifest_dir =3D env!("CARGO_MANIFEST_DIR"); - let file =3D if let Ok(root) =3D env::var("MESON_BUILD_ROOT") { - let sub =3D get_rust_subdir(manifest_dir).unwrap(); - format!("{root}/{sub}/bindings.inc.rs") - } else { - // Placing bindings.inc.rs in the source directory is supported - // but not documented or encouraged. - format!("{manifest_dir}/src/bindings.inc.rs") - }; - - let file =3D Path::new(&file); - if !Path::new(&file).exists() { - panic!(concat!( - "\n", - " No generated C bindings found! Maybe you wanted one of\n", - " `make clippy`, `make rustfmt`, `make rustdoc`?\n", - "\n", - " For other uses of `cargo`, start a subshell with\n", - " `pyvenv/bin/meson devenv`, or point MESON_BUILD_ROOT to\n= ", - " the top of the build tree." - )); - } - - let out_dir =3D env::var("OUT_DIR").unwrap(); - let dest_path =3D format!("{out_dir}/bindings.inc.rs"); - let dest_path =3D Path::new(&dest_path); - if dest_path.symlink_metadata().is_ok() { - remove_file(dest_path)?; - } - symlink_file(file, dest_path)?; - - println!("cargo:rerun-if-changed=3Dbuild.rs"); - Ok(()) -} - -fn get_rust_subdir(path: &str) -> Option<&str> { - path.find("/rust").map(|index| &path[index + 1..]) -} diff --git a/rust/qemu-api/build.rs b/rust/qemu-api/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/qemu-api/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 64af3caef58..7734f656a26 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -14,10 +14,8 @@ c_enums =3D [ 'MigrationPolicy', 'MigrationPriority', 'QEMUChrEvent', - 'QEMUClockType', 'ResetType', 'device_endian', - 'module_init_type', ] _qemu_api_bindgen_args =3D [] foreach enum : c_enums @@ -31,6 +29,7 @@ foreach enum : c_bitfields _qemu_api_bindgen_args +=3D ['--bitfield-enum', enum] endforeach =20 +_qemu_api_bindgen_args +=3D ['--blocklist-type', 'Error'] # TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. # # Rust bindings generation with `bindgen` might fail in some cases where t= he @@ -55,16 +54,12 @@ _qemu_api_rs =3D static_library( 'src/bindings.rs', 'src/cell.rs', 'src/chardev.rs', - 'src/error.rs', 'src/irq.rs', - 'src/log.rs', 'src/memory.rs', - 'src/module.rs', 'src/prelude.rs', 'src/qdev.rs', 'src/qom.rs', 'src/sysbus.rs', - 'src/timer.rs', 'src/vmstate.rs', ], {'.' : _qemu_api_bindings_inc_rs}, @@ -72,13 +67,10 @@ _qemu_api_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, qemu_api_macro= s, qemuutil_rs, + dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, qemu_api_macro= s, util_rs, qom, hwcore, chardev, migration], ) =20 -rust.test('rust-qemu-api-tests', _qemu_api_rs, - suite: ['unit', 'rust']) - qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], dependencies: [qemu_api_macros, qom, hwcore, chardev, migration]) =20 @@ -98,7 +90,7 @@ test('rust-qemu-api-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [common_rs, qemu_api_rs]), + dependencies: [common_rs, util_rs, qemu_api_rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index 3acdd903b52..aedf42b652c 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -21,6 +21,7 @@ //! `bindgen`-generated declarations. =20 use common::Zeroable; +use util::bindings::Error; =20 #[cfg(MESON)] include!("bindings.inc.rs"); diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 6232e39e711..54b252fb2c5 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -15,19 +15,13 @@ =20 pub mod cell; pub mod chardev; -pub mod error; pub mod irq; -pub mod log; pub mod memory; -pub mod module; pub mod qdev; pub mod qom; pub mod sysbus; -pub mod timer; pub mod vmstate; =20 // Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this // crate). extern crate self as qemu_api; - -pub use error::{Error, Result}; diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index dcfe71497f0..3d771481e40 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -7,8 +7,6 @@ pub use crate::cell::BqlCell; pub use crate::cell::BqlRefCell; =20 -pub use crate::log_mask_ln; - pub use crate::qdev::DeviceMethods; =20 pub use crate::qom::InterfaceType; diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 8be125fae47..d87479ce13b 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -11,12 +11,12 @@ =20 pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; use common::{callbacks::FnCall, Opaque}; +use util::{Error, Result}; =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, cell::bql_locked, chardev::Chardev, - error::{Error, Result}, impl_vmstate_c_struct, irq::InterruptSource, prelude::*, @@ -183,7 +183,7 @@ pub trait DeviceImpl: /// readable/writeable from one thread at any time. unsafe extern "C" fn rust_realize_fn( dev: *mut bindings::DeviceState, - errp: *mut *mut bindings::Error, + errp: *mut *mut util::bindings::Error, ) { let state =3D NonNull::new(dev).unwrap().cast::(); let result =3D T::REALIZE.unwrap()(unsafe { state.as_ref() }); diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index 4a5b4cbbf67..2dbfc31dbda 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -114,7 +114,7 @@ fn sysbus_realize(&self) { unsafe { bindings::sysbus_realize( self.upcast().as_mut_ptr(), - addr_of_mut!(bindings::error_fatal), + addr_of_mut!(util::bindings::error_fatal), ); } } diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 06aac3a73f4..37e47cc4c6f 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -315,7 +315,7 @@ unsafe impl VMState for $type { impl_vmstate_scalar!(vmstate_info_uint16, u16, VMS_VARRAY_UINT16); impl_vmstate_scalar!(vmstate_info_uint32, u32, VMS_VARRAY_UINT32); impl_vmstate_scalar!(vmstate_info_uint64, u64); -impl_vmstate_scalar!(vmstate_info_timer, crate::timer::Timer); +impl_vmstate_scalar!(vmstate_info_timer, util::timer::Timer); =20 #[macro_export] macro_rules! impl_vmstate_c_struct { diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index 13495687419..70ef4a80d57 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -5,7 +5,6 @@ use std::{ffi::CStr, ptr::addr_of}; =20 use qemu_api::{ - bindings::{module_call_init, module_init_type}, cell::{self, BqlCell}, prelude::*, qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, @@ -13,6 +12,7 @@ sysbus::SysBusDevice, vmstate::{VMStateDescription, VMStateDescriptionBuilder}, }; +use util::bindings::{module_call_init, module_init_type}; =20 mod vmstate_tests; =20 diff --git a/rust/util/Cargo.toml b/rust/util/Cargo.toml new file mode 100644 index 00000000000..637df61060a --- /dev/null +++ b/rust/util/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name =3D "util" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/util" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +anyhow =3D { workspace =3D true } +foreign =3D { workspace =3D true } +libc =3D { workspace =3D true } +common =3D { path =3D "../common" } +qemu_api_macros =3D { path =3D "../qemu-api-macros" } + +[lints] +workspace =3D true diff --git a/rust/util/build.rs b/rust/util/build.rs new file mode 100644 index 00000000000..5654d1d5624 --- /dev/null +++ b/rust/util/build.rs @@ -0,0 +1,49 @@ +// Copyright 2024, Linaro Limited +// Author(s): Manos Pitsidianakis +// SPDX-License-Identifier: GPL-2.0-or-later + +#[cfg(unix)] +use std::os::unix::fs::symlink as symlink_file; +#[cfg(windows)] +use std::os::windows::fs::symlink_file; +use std::{env, fs::remove_file, io::Result, path::Path}; + +fn main() -> Result<()> { + let manifest_dir =3D env!("CARGO_MANIFEST_DIR"); + let file =3D if let Ok(root) =3D env::var("MESON_BUILD_ROOT") { + let sub =3D get_rust_subdir(manifest_dir).unwrap(); + format!("{root}/{sub}/bindings.inc.rs") + } else { + // Placing bindings.inc.rs in the source directory is supported + // but not documented or encouraged. + format!("{manifest_dir}/src/bindings.inc.rs") + }; + + let file =3D Path::new(&file); + if !Path::new(&file).exists() { + panic!(concat!( + "\n", + " No generated C bindings found! Maybe you wanted one of\n", + " `make clippy`, `make rustfmt`, `make rustdoc`?\n", + "\n", + " For other uses of `cargo`, start a subshell with\n", + " `pyvenv/bin/meson devenv`, or point MESON_BUILD_ROOT to\n= ", + " the top of the build tree." + )); + } + + let out_dir =3D env::var("OUT_DIR").unwrap(); + let dest_path =3D format!("{out_dir}/bindings.inc.rs"); + let dest_path =3D Path::new(&dest_path); + if dest_path.symlink_metadata().is_ok() { + remove_file(dest_path)?; + } + symlink_file(file, dest_path)?; + + println!("cargo:rerun-if-changed=3Dbuild.rs"); + Ok(()) +} + +fn get_rust_subdir(path: &str) -> Option<&str> { + path.find("/rust").map(|index| &path[index + 1..]) +} diff --git a/rust/util/meson.build b/rust/util/meson.build new file mode 100644 index 00000000000..56e929349b8 --- /dev/null +++ b/rust/util/meson.build @@ -0,0 +1,55 @@ +_util_bindgen_args =3D [] +c_enums =3D [ + 'module_init_type', + 'QEMUClockType', +] +foreach enum : c_enums + _util_bindgen_args +=3D ['--rustified-enum', enum] +endforeach + +# +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_util_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common + _util_bindgen_args, +) + +_util_rs =3D static_library( + 'util', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/error.rs', + 'src/log.rs', + 'src/module.rs', + 'src/timer.rs', + ], + {'.': _util_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qemu_api_macro= s, qom, qemuutil], +) + +util_rs =3D declare_dependency(link_with: [_util_rs], dependencies: [qemuu= til, qom]) + +# Doctests are essentially integration tests, so they need the same depend= encies. +# Note that running them requires the object files for C code, so place th= em +# in a separate suite that is run by the "build" CI jobs rather than "chec= k". +rust.doctest('rust-util-rs-doctests', + _util_rs, + protocol: 'rust', + dependencies: util_rs, + suite: ['doc', 'rust'] +) diff --git a/rust/util/src/bindings.rs b/rust/util/src/bindings.rs new file mode 100644 index 00000000000..9ffff12cded --- /dev/null +++ b/rust/util/src/bindings.rs @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); diff --git a/rust/qemu-api/src/error.rs b/rust/util/src/error.rs similarity index 98% rename from rust/qemu-api/src/error.rs rename to rust/util/src/error.rs index 8bac3cbec81..bfa5a8685bc 100644 --- a/rust/qemu-api/src/error.rs +++ b/rust/util/src/error.rs @@ -19,7 +19,7 @@ //! //! This module is most commonly used at the boundary between C and Rust c= ode; //! other code will usually access it through the -//! [`qemu_api::Result`](crate::Result) type alias, and will use the +//! [`utils::Result`](crate::Result) type alias, and will use the //! [`std::error::Error`] interface to let C errors participate in Rust's = error //! handling functionality. //! @@ -30,7 +30,7 @@ //! type up to C code, or from a combination of the two. //! //! The third case, corresponding to [`Error::with_error`], is the only on= e that -//! requires mentioning [`qemu_api::Error`](crate::Error) explicitly. Sim= ilar +//! requires mentioning [`utils::Error`](crate::Error) explicitly. Similar //! to how QEMU's C code handles errno values, the string and the //! `anyhow::Error` object will be concatenated with `:` as the separator. =20 @@ -320,7 +320,6 @@ mod tests { use foreign::OwnedPointer; =20 use super::*; - use crate::bindings; =20 #[track_caller] fn error_for_test(msg: &CStr) -> OwnedPointer { diff --git a/rust/util/src/lib.rs b/rust/util/src/lib.rs new file mode 100644 index 00000000000..16c89b95174 --- /dev/null +++ b/rust/util/src/lib.rs @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod bindings; +pub mod error; +pub mod log; +pub mod module; +pub mod timer; + +pub use error::{Error, Result}; diff --git a/rust/qemu-api/src/log.rs b/rust/util/src/log.rs similarity index 93% rename from rust/qemu-api/src/log.rs rename to rust/util/src/log.rs index d07f6272dc1..af9a3e91234 100644 --- a/rust/qemu-api/src/log.rs +++ b/rust/util/src/log.rs @@ -49,7 +49,7 @@ impl LogGuard { /// # Examples /// /// ``` - /// # use qemu_api::log::LogGuard; + /// # use util::log::LogGuard; /// # use std::io::Write; /// if let Some(mut log) =3D LogGuard::new() { /// writeln!(log, "test"); @@ -116,7 +116,7 @@ fn drop(&mut self) { /// # Example /// /// ``` -/// use qemu_api::{log::Log, log_mask_ln}; +/// use util::{log::Log, log_mask_ln}; /// /// let error_address =3D 0xbad; /// log_mask_ln!(Log::GuestError, "Address 0x{error_address:x} out of rang= e"); @@ -126,7 +126,7 @@ fn drop(&mut self) { /// trailing `,`: /// /// ``` -/// use qemu_api::{log::Log, log_mask_ln}; +/// use util::{log::Log, log_mask_ln}; /// /// let error_address =3D 0xbad; /// log_mask_ln!( @@ -139,12 +139,12 @@ fn drop(&mut self) { macro_rules! log_mask_ln { ($mask:expr, $fmt:tt $($args:tt)*) =3D> {{ // Type assertion to enforce type `Log` for $mask - let _: Log =3D $mask; + let _: $crate::log::Log =3D $mask; =20 if unsafe { - (::qemu_api::bindings::qemu_loglevel & ($mask as std::os::raw:= :c_int)) !=3D 0 + ($crate::bindings::qemu_loglevel & ($mask as std::os::raw::c_i= nt)) !=3D 0 } { - _ =3D ::qemu_api::log::LogGuard::log_fmt( + _ =3D $crate::log::LogGuard::log_fmt( format_args!("{}\n", format_args!($fmt $($args)*))); } }}; diff --git a/rust/qemu-api/src/module.rs b/rust/util/src/module.rs similarity index 97% rename from rust/qemu-api/src/module.rs rename to rust/util/src/module.rs index fa5cea3598f..06c45fc142b 100644 --- a/rust/qemu-api/src/module.rs +++ b/rust/util/src/module.rs @@ -36,7 +36,7 @@ extern "C" fn ctor_fn() { =20 // shortcut because it's quite common that $body needs unsafe {} ($type:ident =3D> unsafe $body:block) =3D> { - $crate::module_init! { + ::util::module_init! { $type =3D> { unsafe { $body } } } }; diff --git a/rust/qemu-api/src/timer.rs b/rust/util/src/timer.rs similarity index 100% rename from rust/qemu-api/src/timer.rs rename to rust/util/src/timer.rs --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751164; cv=none; d=zohomail.com; s=zohoarc; b=Rir+Ss1gQN1T1JJjL4v1aIR4mcFlPRiwo/+91mbIm21SYHw9gvZZFCcmyxc0GEXVpQcx6qQtddgvMCX5DwkETC588uMy4ukGBiHECAj2DgXQbqn6irHxjFc7KXLopu8j0JVg15GidOwlieLh9sAPLT/6s017KP3ak5eOHNWawng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751164; 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=lTJX030jGIXxdWLIHlrJmsv7ikGBg/AznKP+WA/tsVA=; b=CsLGWECsuc1BtkM7yzEuSBYOwwFlN6ClnoCYaxq2MXJxiNWpuMgxg9tD4d/X2C1JpfQ2i7nDSLRR3pd2U64R1D2hHc7xjt3M4nN8s58o/+kqabiq9MCFlbeP0KM9bQ5qN3HdEcHs8fmd4ZGm/v2tFzF3Tz599FccU3MaUoc0ntE= 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 1757751164866789.1573725471727; Sat, 13 Sep 2025 01:12:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMe-0000eF-N6; Sat, 13 Sep 2025 04:12:08 -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 1uxLMF-00004x-HF for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:44 -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 1uxLM9-00056s-O3 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:43 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-512-dVLlLauFOVGWBERCAOb1Eg-1; Sat, 13 Sep 2025 04:11:35 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45de18e7eccso14187955e9.0 for ; Sat, 13 Sep 2025 01:11:35 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e016b5cbcsm93547525e9.11.2025.09.13.01.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751097; 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=lTJX030jGIXxdWLIHlrJmsv7ikGBg/AznKP+WA/tsVA=; b=DUdhPi2JmRDIQ/KFdKMGgSWKdt2NTC/8JPyBX/BdX58YgrHDimcotNHNYekiQCHKyfCyMi UfHr8mKGtuOoN2rLPqernP4lEl5QzefhOcVf++yxA7hTMgLSpcIAeI1acnqZ3ar8KFSGV4 2KErD6Pap+ZaDECQkFEk4NDIu9Slk7k= X-MC-Unique: dVLlLauFOVGWBERCAOb1Eg-1 X-Mimecast-MFC-AGG-ID: dVLlLauFOVGWBERCAOb1Eg_1757751094 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751094; x=1758355894; 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=lTJX030jGIXxdWLIHlrJmsv7ikGBg/AznKP+WA/tsVA=; b=SmPAjmKlqovubJNDRpSxQ3psziosNujmwftM+2trtsPaYJXIJrhLZTuEz/ws/d/wHK q5idy7vr49ItxcDLztHc0kRja3KWSa0t1OSJoqR9W8DCQyoWfcTaE+bE0TJUqTjQxxnK 7vgaIfDUgjKR/6mJXgVoJWzDRQ0XdPzSar9JmpXvjFGgto411qob5hHpSjSgxNxIFSmm TiWhgpabUftftWNb9wnYKwFoudzPk6KaI8cMUs9KWVZR0cCLZeP9mp2iuTYEv9TRwne/ Ti2fDEoyLPYeDxhFQ5N2MMGgui6km6JXt8DAW+FWzRwgoUXpkF86m5CEeVaoJJ/I/L6Q LXqw== X-Gm-Message-State: AOJu0Yx1N7FYIKCGXUGZnv7kTbVJCavngJs2+2B0K0P73wRv9knRDd3J iMw/73Irw+6UOA3C/RFrKJeyCEheVKmcpsP3E4DoRMnc8LifNb+m2b1WlAz3gfpYws3V5vGfybI d7lEoFSM/YsBmnEn2aDOypRvGoZ4ZX5OytLIUGj+Ifzm6ol4rHKgn6m3C+ATeiN38Z37VFGqI8U c3yrBQHenGxMQeI3/uIl121T6KlJECnJZ1nQr2oCbf X-Gm-Gg: ASbGnctxm8u9Zm2oGkVsUp3rwD7XiH4mrqE11KhM68S4hRZX7r0tu6x8bhLY0eaD+Ve l1KPm0AW9qkCcqGRjlVTbPCymRDWNM+8xsLdr4prwjR8HmTnPJBonQQQqa/41iNmlMmuV1U5cC3 Rdv/t31JgP+kFGKhtjfpcaDztMIkg54YwRkJhy4/40aLnxEVkbGc5libDq3IIVRdxr/EcjcMcJi cAOs1ji7x3dbw76U/ZS2bwP7OH7MC0W6Gfeh4lTAZQhA3+xKODili0hd+PBbbnfnSPrxYt8gEnB HSbt5X0ZjIc9waCiS9IJk5wo5X9o1Dze+D7OaxqnxKFKZT152C/UaTht9yF9H5sDZKvSQ6k1ERE yudi4pHm4HzhEsEZUs6eWxV80DWA9a8Dm0WBHbuQeOyo= X-Received: by 2002:a05:600c:8a1b:20b0:45d:d3a1:70dd with SMTP id 5b1f17b1804b1-45f21221e50mr40102685e9.35.1757751093065; Sat, 13 Sep 2025 01:11:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHq26x+xmjoGayu35ffcrnB0QRQ0/MjzPvc4yOIcBq3MHhlQbdpVEhGuSh1wb5nYsKlUuUjqA== X-Received: by 2002:a05:600c:8a1b:20b0:45d:d3a1:70dd with SMTP id 5b1f17b1804b1-45f21221e50mr40102385e9.35.1757751092291; Sat, 13 Sep 2025 01:11:32 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 38/61] rust: split "migration" crate Date: Sat, 13 Sep 2025 10:09:19 +0200 Message-ID: <20250913080943.11710-39-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751167245116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-11-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/migration/wrapper.h | 51 ++++++++++++++++++++ rust/qemu-api/wrapper.h | 1 - rust/Cargo.lock | 12 +++++ rust/Cargo.toml | 1 + rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 13 ++--- rust/hw/char/pl011/src/registers.rs | 2 +- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 11 +++-- rust/meson.build | 1 + rust/migration/Cargo.toml | 21 ++++++++ rust/migration/build.rs | 1 + rust/migration/meson.build | 53 +++++++++++++++++++++ rust/migration/src/bindings.rs | 48 +++++++++++++++++++ rust/migration/src/lib.rs | 6 +++ rust/{qemu-api =3D> migration}/src/vmstate.rs | 42 +++++++++------- rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 12 ++--- rust/qemu-api/src/bindings.rs | 21 +------- rust/qemu-api/src/cell.rs | 4 +- rust/qemu-api/src/lib.rs | 1 - rust/qemu-api/src/prelude.rs | 2 - rust/qemu-api/src/qdev.rs | 3 +- rust/qemu-api/src/qom.rs | 2 +- rust/qemu-api/tests/tests.rs | 2 +- rust/qemu-api/tests/vmstate_tests.rs | 4 +- 29 files changed, 252 insertions(+), 68 deletions(-) create mode 100644 rust/migration/wrapper.h create mode 100644 rust/migration/Cargo.toml create mode 120000 rust/migration/build.rs create mode 100644 rust/migration/meson.build create mode 100644 rust/migration/src/bindings.rs create mode 100644 rust/migration/src/lib.rs rename rust/{qemu-api =3D> migration}/src/vmstate.rs (95%) diff --git a/MAINTAINERS b/MAINTAINERS index 3d7b47873f8..76dcf6ceb23 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3516,6 +3516,7 @@ Rust M: Manos Pitsidianakis S: Maintained F: rust/common/ +F: rust/migration/ F: rust/qemu-api F: rust/qemu-api-macros F: rust/rustfmt.toml diff --git a/rust/migration/wrapper.h b/rust/migration/wrapper.h new file mode 100644 index 00000000000..daf316aed41 --- /dev/null +++ b/rust/migration/wrapper.h @@ -0,0 +1,51 @@ +/* + * QEMU System Emulator + * + * Copyright (c) 2024 Linaro Ltd. + * + * Authors: Manos Pitsidianakis + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" +#include "migration/vmstate.h" diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h index cc7112406b2..b99df9f568a 100644 --- a/rust/qemu-api/wrapper.h +++ b/rust/qemu-api/wrapper.h @@ -58,7 +58,6 @@ typedef enum memory_order { #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/irq.h" -#include "migration/vmstate.h" #include "chardev/char-serial.h" #include "exec/memattrs.h" #include "system/address-spaces.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 757c03cbdec..048dd74757f 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -71,6 +71,7 @@ name =3D "hpet" version =3D "0.1.0" dependencies =3D [ "common", + "migration", "qemu_api", "qemu_api_macros", "util", @@ -91,6 +92,15 @@ version =3D "0.2.162" source =3D "registry+https://github.com/rust-lang/crates.io-index" checksum =3D "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef0150= 6398" =20 +[[package]] +name =3D "migration" +version =3D "0.1.0" +dependencies =3D [ + "common", + "qemu_api_macros", + "util", +] + [[package]] name =3D "pl011" version =3D "0.1.0" @@ -99,6 +109,7 @@ dependencies =3D [ "bilge-impl", "bits", "common", + "migration", "qemu_api", "qemu_api_macros", "util", @@ -141,6 +152,7 @@ name =3D "qemu_api" version =3D "0.1.0" dependencies =3D [ "common", + "migration", "qemu_api_macros", "util", ] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index cfdd535e3bd..e0958ef28a8 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -3,6 +3,7 @@ resolver =3D "2" members =3D [ "bits", "common", + "migration", "qemu-api-macros", "qemu-api", "hw/char/pl011", diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 0cf9943fe86..7fd7531823d 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -18,6 +18,7 @@ bilge-impl =3D { version =3D "0.2.0" } bits =3D { path =3D "../../../bits" } common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } +migration =3D { path =3D "../../../migration" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 8a931a4d03d..2198fcee9bc 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -10,6 +10,7 @@ _libpl011_rs =3D static_library( common_rs, qemu_api_rs, util_rs, + migration_rs, qemu_api_macros, ], ) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index ab38d57fc41..225be34e08b 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -5,17 +5,18 @@ use std::{ffi::CStr, mem::size_of}; =20 use common::{static_assert, uninit_field_mut}; +use migration::{ + self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, + vmstate_subsections, vmstate_unused, VMStateDescription, VMStateDescri= ptionBuilder, +}; use qemu_api::{ chardev::{CharBackend, Chardev, Event}, - impl_vmstate_forward, impl_vmstate_struct, irq::{IRQState, InterruptSource}, memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, qom::{ObjectImpl, Owned, ParentField, ParentInit}, sysbus::{SysBusDevice, SysBusDeviceImpl}, - vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, - vmstate_fields, vmstate_of, vmstate_subsections, vmstate_unused, }; use util::{log::Log, log_mask_ln}; =20 @@ -458,10 +459,10 @@ pub fn fifo_rx_put(&mut self, value: registers::Data)= -> bool { false } =20 - pub fn post_load(&mut self) -> Result<(), vmstate::InvalidError> { + pub fn post_load(&mut self) -> Result<(), migration::InvalidError> { /* Sanity-check input state */ if self.read_pos >=3D self.read_fifo.len() || self.read_count > se= lf.read_fifo.len() { - return Err(vmstate::InvalidError); + return Err(migration::InvalidError); } =20 if !self.fifo_enabled() && self.read_count > 0 && self.read_pos > = 0 { @@ -640,7 +641,7 @@ fn update(&self) { } } =20 - pub fn post_load(&self, _version_id: u8) -> Result<(), vmstate::Invali= dError> { + pub fn post_load(&self, _version_id: u8) -> Result<(), migration::Inva= lidError> { self.regs.borrow_mut().post_load() } } diff --git a/rust/hw/char/pl011/src/registers.rs b/rust/hw/char/pl011/src/r= egisters.rs index 7ececd39f86..2bfbd81095e 100644 --- a/rust/hw/char/pl011/src/registers.rs +++ b/rust/hw/char/pl011/src/registers.rs @@ -10,7 +10,7 @@ =20 use bilge::prelude::*; use bits::bits; -use qemu_api::{impl_vmstate_bitsized, impl_vmstate_forward}; +use migration::{impl_vmstate_bitsized, impl_vmstate_forward}; =20 /// Offset of each register from the base memory address of the device. #[doc(alias =3D "offset")] diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index dd9a5ed3d43..70acdf03d6e 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -13,6 +13,7 @@ rust-version.workspace =3D true [dependencies] common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } +migration =3D { path =3D "../../../migration" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index ca09660bf47..8cd70091e63 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -7,6 +7,7 @@ _libhpet_rs =3D static_library( common_rs, qemu_api_rs, util_rs, + migration_rs, qemu_api_macros, ], ) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 2be180fdedd..1c2253466d9 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -11,13 +11,16 @@ }; =20 use common::{bitops::IntegerExt, uninit_field_mut}; +use migration::{ + self, impl_vmstate_struct, vmstate_fields, vmstate_of, vmstate_subsect= ions, vmstate_validate, + VMStateDescription, VMStateDescriptionBuilder, +}; use qemu_api::{ bindings::{ address_space_memory, address_space_stl_le, qdev_prop_bit, qdev_pr= op_bool, qdev_prop_uint32, qdev_prop_usize, }, cell::{BqlCell, BqlRefCell}, - impl_vmstate_struct, irq::InterruptSource, memory::{ hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEM= TXATTRS_UNSPECIFIED, @@ -27,8 +30,6 @@ qom::{ObjectImpl, ObjectType, ParentField, ParentInit}, qom_isa, sysbus::{SysBusDevice, SysBusDeviceImpl}, - vmstate::{self, VMStateDescription, VMStateDescriptionBuilder}, - vmstate_fields, vmstate_of, vmstate_subsections, vmstate_validate, }; use util::timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}; =20 @@ -845,7 +846,7 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { } } =20 - fn pre_save(&self) -> Result<(), vmstate::Infallible> { + fn pre_save(&self) -> Result<(), migration::Infallible> { if self.is_hpet_enabled() { self.counter.set(self.get_ticks()); } @@ -859,7 +860,7 @@ fn pre_save(&self) -> Result<(), vmstate::Infallible> { Ok(()) } =20 - fn post_load(&self, _version_id: u8) -> Result<(), vmstate::Infallible= > { + fn post_load(&self, _version_id: u8) -> Result<(), migration::Infallib= le> { for timer in self.timers.iter().take(self.num_timers) { let mut t =3D timer.borrow_mut(); =20 diff --git a/rust/meson.build b/rust/meson.build index a9d715e6e94..826949b2e60 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -26,6 +26,7 @@ subdir('common') subdir('qemu-api-macros') subdir('bits') subdir('util') +subdir('migration') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/migration/Cargo.toml b/rust/migration/Cargo.toml new file mode 100644 index 00000000000..98e6df2109d --- /dev/null +++ b/rust/migration/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name =3D "migration" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/migration" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +common =3D { path =3D "../common" } +util =3D { path =3D "../util" } +qemu_api_macros =3D { path =3D "../qemu-api-macros" } + +[lints] +workspace =3D true diff --git a/rust/migration/build.rs b/rust/migration/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/migration/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/migration/meson.build b/rust/migration/meson.build new file mode 100644 index 00000000000..5e820d43f50 --- /dev/null +++ b/rust/migration/meson.build @@ -0,0 +1,53 @@ +_migration_bindgen_args =3D [] +c_bitfields =3D [ + 'MigrationPolicy', + 'MigrationPriority', + 'VMStateFlags', +] +foreach enum : c_bitfields + _migration_bindgen_args +=3D ['--bitfield-enum', enum] +endforeach +# +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_migration_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common + _migration_bindgen_args, + ) + +_migration_rs =3D static_library( + 'migration', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/vmstate.rs', + ], + {'.' : _migration_bindings_inc_rs}, + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + link_with: [_util_rs], + dependencies: [common_rs], +) + +migration_rs =3D declare_dependency(link_with: [_migration_rs], + dependencies: [migration, qemuutil]) + +# Doctests are essentially integration tests, so they need the same depend= encies. +# Note that running them requires the object files for C code, so place th= em +# in a separate suite that is run by the "build" CI jobs rather than "chec= k". +rust.doctest('rust-migration-rs-doctests', + _migration_rs, + protocol: 'rust', + dependencies: migration_rs, + suite: ['doc', 'rust']) diff --git a/rust/migration/src/bindings.rs b/rust/migration/src/bindings.rs new file mode 100644 index 00000000000..8ce13a9000e --- /dev/null +++ b/rust/migration/src/bindings.rs @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +use common::Zeroable; + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); + +unsafe impl Send for VMStateDescription {} +unsafe impl Sync for VMStateDescription {} + +unsafe impl Send for VMStateField {} +unsafe impl Sync for VMStateField {} + +unsafe impl Send for VMStateInfo {} +unsafe impl Sync for VMStateInfo {} + +// bindgen does not derive Default here +#[allow(clippy::derivable_impls)] +impl Default for VMStateFlags { + fn default() -> Self { + Self(0) + } +} + +unsafe impl Zeroable for VMStateFlags {} +unsafe impl Zeroable for VMStateField {} +unsafe impl Zeroable for VMStateDescription {} diff --git a/rust/migration/src/lib.rs b/rust/migration/src/lib.rs new file mode 100644 index 00000000000..5f51dde4406 --- /dev/null +++ b/rust/migration/src/lib.rs @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod bindings; + +pub mod vmstate; +pub use vmstate::*; diff --git a/rust/qemu-api/src/vmstate.rs b/rust/migration/src/vmstate.rs similarity index 95% rename from rust/qemu-api/src/vmstate.rs rename to rust/migration/src/vmstate.rs index 37e47cc4c6f..537d54e4368 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -52,7 +52,7 @@ /// # Examples /// /// ``` -/// # use qemu_api::call_func_with_field; +/// # use migration::call_func_with_field; /// # use core::marker::PhantomData; /// const fn size_of_field(_: PhantomData) -> usize { /// std::mem::size_of::() @@ -125,17 +125,19 @@ pub const fn vmstate_varray_flag(_: Phant= omData) -> VMStateFlags /// * scalar types (integer and `bool`) /// * the C struct `QEMUTimer` /// * a transparent wrapper for any of the above (`Cell`, `UnsafeCell`, -/// [`BqlCell`](crate::cell::BqlCell), -/// [`BqlRefCell`](crate::cell::BqlRefCell)), +/// [`BqlCell`], [`BqlRefCell`]) /// * a raw pointer to any of the above -/// * a `NonNull` pointer, a `Box` or an [`Owned`](crate::qom::Owned) for = any of -/// the above +/// * a `NonNull` pointer, a `Box` or an [`Owned`] for any of the above /// * an array of any of the above /// /// In order to support other types, the trait `VMState` must be implement= ed /// for them. The macros [`impl_vmstate_forward`](crate::impl_vmstate_for= ward), /// [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and /// [`impl_vmstate_struct`](crate::impl_vmstate_struct) help with this. +/// +/// [`BqlCell`]: ../../qemu_api/cell/struct.BqlCell.html +/// [`BqlRefCell`]: ../../qemu_api/cell/struct.BqlRefCell.html +/// [`Owned`]: ../../qemu_api/qom/struct.Owned.html #[macro_export] macro_rules! vmstate_of { ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])? $(, $test_fn:expr)? $(,)?) =3D> { @@ -161,7 +163,11 @@ macro_rules! vmstate_of { }; } =20 -impl VMStateFlags { +pub trait VMStateFlagsExt { + const VMS_VARRAY_FLAGS: VMStateFlags; +} + +impl VMStateFlagsExt for VMStateFlags { const VMS_VARRAY_FLAGS: VMStateFlags =3D VMStateFlags( VMStateFlags::VMS_VARRAY_INT32.0 | VMStateFlags::VMS_VARRAY_UINT8.0 @@ -207,7 +213,7 @@ pub const fn with_pointer_flag(mut self) -> Self { } =20 #[must_use] - pub const fn with_varray_flag_unchecked(mut self, flag: VMStateFlags) = -> VMStateField { + pub const fn with_varray_flag_unchecked(mut self, flag: VMStateFlags) = -> Self { self.flags =3D VMStateFlags(self.flags.0 & !VMStateFlags::VMS_ARRA= Y.0); self.flags =3D VMStateFlags(self.flags.0 | flag.0); self.num =3D 0; // varray uses num_offset instead of num. @@ -216,13 +222,13 @@ pub const fn with_varray_flag_unchecked(mut self, fla= g: VMStateFlags) -> VMState =20 #[must_use] #[allow(unused_mut)] - pub const fn with_varray_flag(mut self, flag: VMStateFlags) -> VMState= Field { + pub const fn with_varray_flag(mut self, flag: VMStateFlags) -> Self { assert!((self.flags.0 & VMStateFlags::VMS_ARRAY.0) !=3D 0); self.with_varray_flag_unchecked(flag) } =20 #[must_use] - pub const fn with_varray_multiply(mut self, num: u32) -> VMStateField { + pub const fn with_varray_multiply(mut self, num: u32) -> Self { assert!(num <=3D 0x7FFF_FFFFu32); self.flags =3D VMStateFlags(self.flags.0 | VMStateFlags::VMS_MULTI= PLY_ELEMENTS.0); self.num =3D num as i32; @@ -237,7 +243,7 @@ pub const fn with_varray_multiply(mut self, num: u32) -= > VMStateField { /// # Examples /// /// ``` -/// # use qemu_api::impl_vmstate_forward; +/// # use migration::impl_vmstate_forward; /// pub struct Fifo([u8; 16]); /// impl_vmstate_forward!(Fifo); /// ``` @@ -272,7 +278,7 @@ unsafe impl<$base> $crate::vmstate::VMState for $type w= here $base: $crate::vmsta impl_vmstate_transparent!(std::cell::Cell where T: VMState); impl_vmstate_transparent!(std::cell::UnsafeCell where T: VMState); impl_vmstate_transparent!(std::pin::Pin where T: VMState); -impl_vmstate_transparent!(::common::Opaque where T: VMState); +impl_vmstate_transparent!(common::Opaque where T: VMState); =20 #[macro_export] macro_rules! impl_vmstate_bitsized { @@ -294,12 +300,12 @@ unsafe impl $crate::vmstate::VMState for $type { =20 macro_rules! impl_vmstate_scalar { ($info:ident, $type:ty$(, $varray_flag:ident)?) =3D> { - unsafe impl VMState for $type { - const BASE: VMStateField =3D VMStateField { + unsafe impl $crate::vmstate::VMState for $type { + const BASE: $crate::vmstate::VMStateField =3D $crate::vmstate:= :VMStateField { info: addr_of!(bindings::$info), size: mem::size_of::<$type>(), - flags: VMStateFlags::VMS_SINGLE, - ..Zeroable::ZERO + flags: $crate::vmstate::VMStateFlags::VMS_SINGLE, + ..::common::zeroable::Zeroable::ZERO }; $(const VARRAY_FLAG: VMStateFlags =3D VMStateFlags::$varray_fl= ag;)? } @@ -320,12 +326,12 @@ unsafe impl VMState for $type { #[macro_export] macro_rules! impl_vmstate_c_struct { ($type:ty, $vmsd:expr) =3D> { - unsafe impl VMState for $type { + unsafe impl $crate::vmstate::VMState for $type { const BASE: $crate::bindings::VMStateField =3D $crate::binding= s::VMStateField { vmsd: ::std::ptr::addr_of!($vmsd), size: ::std::mem::size_of::<$type>(), flags: $crate::bindings::VMStateFlags::VMS_STRUCT, - ..common::zeroable::Zeroable::ZERO + ..::common::zeroable::Zeroable::ZERO }; } }; @@ -391,7 +397,7 @@ pub extern "C" fn rust_vms_test_field_exists {{ - const fn test_cb_builder__ ::common::callbacks::FnCa= ll<(&'a T, u8), bool>>( + const fn test_cb_builder__ ::common::FnCall<(&'a T, = u8), bool>>( _phantom: ::core::marker::PhantomData, ) -> $crate::vmstate::VMSFieldExistCb { const { assert!(F::IS_SOME) }; diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index fbfb894421d..7276e67aa97 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -15,6 +15,7 @@ rust-version.workspace =3D true =20 [dependencies] common =3D { path =3D "../common" } +migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } =20 diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 7734f656a26..a6b5772d194 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -11,8 +11,6 @@ c_enums =3D [ 'GpioPolarity', 'MachineInitPhase', 'MemoryDeviceInfoKind', - 'MigrationPolicy', - 'MigrationPriority', 'QEMUChrEvent', 'ResetType', 'device_endian', @@ -23,12 +21,13 @@ foreach enum : c_enums endforeach c_bitfields =3D [ 'ClockEvent', - 'VMStateFlags', ] foreach enum : c_bitfields _qemu_api_bindgen_args +=3D ['--bitfield-enum', enum] endforeach =20 +_qemu_api_bindgen_args +=3D ['--blocklist-type', 'VMStateDescription'] + _qemu_api_bindgen_args +=3D ['--blocklist-type', 'Error'] # TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. # @@ -60,15 +59,14 @@ _qemu_api_rs =3D static_library( 'src/qdev.rs', 'src/qom.rs', 'src/sysbus.rs', - 'src/vmstate.rs', ], {'.' : _qemu_api_bindings_inc_rs}, ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, qemu_api_macro= s, util_rs, - qom, hwcore, chardev, migration], + dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, migration_rs, = qemu_api_macros, + util_rs, qom, hwcore, chardev], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], @@ -90,7 +88,7 @@ test('rust-qemu-api-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [common_rs, util_rs, qemu_api_rs]), + dependencies: [common_rs, util_rs, migration_rs, qemu_api_rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index aedf42b652c..ce00a6e0e4c 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -21,6 +21,7 @@ //! `bindgen`-generated declarations. =20 use common::Zeroable; +use migration::bindings::VMStateDescription; use util::bindings::Error; =20 #[cfg(MESON)] @@ -51,28 +52,8 @@ unsafe impl Sync for Property {} unsafe impl Send for TypeInfo {} unsafe impl Sync for TypeInfo {} =20 -unsafe impl Send for VMStateDescription {} -unsafe impl Sync for VMStateDescription {} - -unsafe impl Send for VMStateField {} -unsafe impl Sync for VMStateField {} - -unsafe impl Send for VMStateInfo {} -unsafe impl Sync for VMStateInfo {} - -// bindgen does not derive Default here -#[allow(clippy::derivable_impls)] -impl Default for crate::bindings::VMStateFlags { - fn default() -> Self { - Self(0) - } -} - unsafe impl Zeroable for crate::bindings::Property__bindgen_ty_1 {} unsafe impl Zeroable for crate::bindings::Property {} -unsafe impl Zeroable for crate::bindings::VMStateFlags {} -unsafe impl Zeroable for crate::bindings::VMStateField {} -unsafe impl Zeroable for crate::bindings::VMStateDescription {} unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_1 {} unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_2 {} unsafe impl Zeroable for crate::bindings::MemoryRegionOps {} diff --git a/rust/qemu-api/src/cell.rs b/rust/qemu-api/src/cell.rs index d13848df200..b80a0fd80b7 100644 --- a/rust/qemu-api/src/cell.rs +++ b/rust/qemu-api/src/cell.rs @@ -152,7 +152,9 @@ ptr::NonNull, }; =20 -use crate::{bindings, impl_vmstate_transparent}; +use migration::impl_vmstate_transparent; + +use crate::bindings; =20 /// An internal function that is used by doctests. pub fn bql_start_test() { diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 54b252fb2c5..55386f66978 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -20,7 +20,6 @@ pub mod qdev; pub mod qom; pub mod sysbus; -pub mod vmstate; =20 // Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this // crate). diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index 3d771481e40..c10c1711581 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -21,5 +21,3 @@ pub use crate::qom_isa; =20 pub use crate::sysbus::SysBusDeviceMethods; - -pub use crate::vmstate::VMState; diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index d87479ce13b..c81ae7cf45c 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -11,17 +11,16 @@ =20 pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; use common::{callbacks::FnCall, Opaque}; +use migration::{impl_vmstate_c_struct, VMStateDescription}; use util::{Error, Result}; =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, cell::bql_locked, chardev::Chardev, - impl_vmstate_c_struct, irq::InterruptSource, prelude::*, qom::{ObjectClass, ObjectImpl, Owned, ParentInit}, - vmstate::VMStateDescription, }; =20 /// A safe wrapper around [`bindings::Clock`]. diff --git a/rust/qemu-api/src/qom.rs b/rust/qemu-api/src/qom.rs index 49b4f03ccfc..7f2f7797e44 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qemu-api/src/qom.rs @@ -103,6 +103,7 @@ =20 pub use bindings::ObjectClass; use common::Opaque; +use migration::impl_vmstate_pointer; =20 use crate::{ bindings::{ @@ -110,7 +111,6 @@ object_get_typename, object_new, object_ref, object_unref, TypeInf= o, }, cell::bql_locked, - impl_vmstate_pointer, }; =20 /// A safe wrapper around [`bindings::Object`]. diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index 70ef4a80d57..92e3534d3c1 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -4,13 +4,13 @@ =20 use std::{ffi::CStr, ptr::addr_of}; =20 +use migration::{VMStateDescription, VMStateDescriptionBuilder}; use qemu_api::{ cell::{self, BqlCell}, prelude::*, qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, qom::{ObjectImpl, ParentField}, sysbus::SysBusDevice, - vmstate::{VMStateDescription, VMStateDescriptionBuilder}, }; use util::bindings::{module_call_init, module_init_type}; =20 diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index d9e5bcc4987..47fc15149b4 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -10,16 +10,16 @@ }; =20 use common::Opaque; -use qemu_api::{ +use migration::{ bindings::{ vmstate_info_bool, vmstate_info_int32, vmstate_info_int64, vmstate= _info_int8, vmstate_info_uint64, vmstate_info_uint8, vmstate_info_unused_buffe= r, VMStateFlags, }, - cell::BqlCell, impl_vmstate_forward, impl_vmstate_struct, vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate, }; +use qemu_api::cell::BqlCell; =20 const FOO_ARRAY_MAX: usize =3D 3; =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751805; cv=none; d=zohomail.com; s=zohoarc; b=VaOgND/xhouO/xiF2d3cscFKdBGPB0Mabpm59DewDEMI9FQ3wSi9YFjn6U5MOXSr72D/EFPOjii9sE1grx5prBvnmqLdOK6zYtkEYXZNWqBy0Y7nvdwj62YV4xOH5FInr4bAfbQXHwYqwh0D1J537htXJAzjWuoF+iHATuq2uNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751805; 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=+p604xrlen9vjJnGr3kVYHxCh/9YSTgyayiSKBA2K9M=; b=hl24yfelP5iCW1Naps1IHRYQEm4YBhl+TZmh/4144F590tUUK/sDmF5yRLDRp2ydlag+kjUlpzTyvktXo9HoY53l2Va1a2dWy0iNIIeCxRrnutVU7zRsl3CgWVxvKn7NWCnWEDrt8Ld+u72SsXgLm2Jw5EXBbeznG2SnAgbrjfY= 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 1757751805963703.0759430188031; Sat, 13 Sep 2025 01:23:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMV-0000Oq-1w; Sat, 13 Sep 2025 04:11:59 -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 1uxLMJ-00008k-9m for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:51 -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 1uxLME-00057G-VT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:46 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-558-j3q7465sOdCXuaky3ZWDuA-1; Sat, 13 Sep 2025 04:11:39 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45dd9a66cfbso23969195e9.1 for ; Sat, 13 Sep 2025 01:11:38 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037d62besm88198055e9.21.2025.09.13.01.11.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751100; 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=+p604xrlen9vjJnGr3kVYHxCh/9YSTgyayiSKBA2K9M=; b=BiHu00nUn4aiPrQCLqjm461BuEQC3JQxSL4/aTpJdBiNb79JXC5W2kOuWoCnreUoq3bKEE KZ22Yvb+TWlivv4A0yfqTSM0753QoFZUnoVjjhISLlei8NLs5sLO2SR9Gubesnuh+d+Rvd DHhhZwDVyqpXDLrYDQqMyVy0+mnho8k= X-MC-Unique: j3q7465sOdCXuaky3ZWDuA-1 X-Mimecast-MFC-AGG-ID: j3q7465sOdCXuaky3ZWDuA_1757751098 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751097; x=1758355897; 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=+p604xrlen9vjJnGr3kVYHxCh/9YSTgyayiSKBA2K9M=; b=jt8afK99Qs0KlHyFcUmZXdK2+wAtYNihcOmYUfGJq/f9CB357G0CNq1EN3eSHj7pOt c9qzeVjn+kxjopFcnYzjvYRnPpDjsEK0/XLDP0HKJ69zmYhHnZtoShpN/eiUiOt5EtEo TqLOWXH0b4AR6SOhw+0U1pK9KXcEiw5RLxYUjYtILxiYpkuq2po5lJ8R1tJk0Eg5KDkd vR1JIu49BlpzW+b8Z5Ni7/6XsscYC4lrcjh1KjXGGN2vxWDm+GMrnkYEQnu65YJxtxCL kSgJSXtPLuq7SJHQ3VQ19S4RKwjvtufg6/ykS4DwObUzstZ069/hLz9mrfYF5UOcbDLZ UX3g== X-Gm-Message-State: AOJu0YxRm4EmIAwi4nrjPFRL21ju34REjTfJxVVn/rm+JmIla9pqPDwT UE45SdGV/aNdHeENBDYxxGxbLMOq6OgcafzwldrOQzAn788IMXniv6/3n7TKF2nfvthlTyJ9XHl gUdEO1QbeSF4Py6/12y6aaOX20YyMnBkgwsziyTtgzBt/9VsuFofrS2NObQsC4d5WDIxz7Pb3K4 KF8wIksoEg5bfS9AgEofGF4Oxd0twkDO2pb5Cs/Bvt X-Gm-Gg: ASbGncvbSpEFuwBDyxBcxlmgzKjebvdWPSsg2Vy99u9Gd7wo7VIeHx8W3AwF9ayc7IQ euCU9WiWxcuHfMHThYvfjecpkoZFzjwfNCnmki3G7C6k7ksQKXZKUselbaslC876mK0/BxlB11E hMzCZyQiKFq6CuUtqpctaVTIO5to0HqQvfzMr0uFthGCHf1Hgur8H/L9LOlYQaKfTolWDJdkHA3 z+IMnH+0yZGrTqa523WF2elSKHLgLtQcg0OWuhhcapqOaUH6HW3uGSOYCAeMuM3lXmLBkfObrsW /TLN8LkYzj6rjXprDt47NMsiQoAB5FJQNo8WG05aJUTmxJRh5mBaJP/erXOiK6IdrpiaOpHsRxY UqRmjSjz0j604bmY/CrjqYzryDI9+t78qLfXt20IQE4o= X-Received: by 2002:a05:600c:5609:b0:45d:db2a:ce32 with SMTP id 5b1f17b1804b1-45f211d56a1mr35955045e9.9.1757751096566; Sat, 13 Sep 2025 01:11:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH7/ecoDqzIHCJgQpF8ZucEF6YJAb1g7tRU/lZAnyFsRsa11fAg31iV2FfMyZrlOksgiPy/6Q== X-Received: by 2002:a05:600c:5609:b0:45d:db2a:ce32 with SMTP id 5b1f17b1804b1-45f211d56a1mr35954595e9.9.1757751095709; Sat, 13 Sep 2025 01:11:35 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 39/61] rust: split "bql" crate Date: Sat, 13 Sep 2025 10:09:20 +0200 Message-ID: <20250913080943.11710-40-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01 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: 1757751806746116600 From: Marc-Andr=C3=A9 Lureau Unfortunately, an example had to be compile-time disabled, since it relies on higher level crates (qdev, irq etc). The alternative is probably to move that code to an example in qemu-api or elsewere and make a link to it, or include_str. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-12-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/bql/wrapper.h | 27 ++++++++ rust/Cargo.lock | 10 +++ rust/Cargo.toml | 1 + rust/bql/Cargo.toml | 23 +++++++ rust/bql/build.rs | 1 + rust/bql/meson.build | 52 ++++++++++++++++ rust/bql/src/bindings.rs | 25 ++++++++ rust/{qemu-api =3D> bql}/src/cell.rs | 92 ++++++++++------------------ rust/bql/src/lib.rs | 29 +++++++++ rust/common/src/opaque.rs | 4 +- rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 1 + rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 2 +- rust/hw/timer/hpet/src/fw_cfg.rs | 5 +- rust/meson.build | 1 + rust/migration/src/vmstate.rs | 4 +- rust/qemu-api/Cargo.toml | 5 +- rust/qemu-api/meson.build | 18 +----- rust/qemu-api/src/chardev.rs | 17 +++-- rust/qemu-api/src/irq.rs | 1 + rust/qemu-api/src/lib.rs | 1 - rust/qemu-api/src/prelude.rs | 3 - rust/qemu-api/src/qdev.rs | 5 +- rust/qemu-api/src/qom.rs | 13 ++-- rust/qemu-api/src/sysbus.rs | 13 ++-- rust/qemu-api/tests/tests.rs | 4 +- rust/qemu-api/tests/vmstate_tests.rs | 2 +- 31 files changed, 244 insertions(+), 120 deletions(-) create mode 100644 rust/bql/wrapper.h create mode 100644 rust/bql/Cargo.toml create mode 120000 rust/bql/build.rs create mode 100644 rust/bql/meson.build create mode 100644 rust/bql/src/bindings.rs rename rust/{qemu-api =3D> bql}/src/cell.rs (92%) create mode 100644 rust/bql/src/lib.rs diff --git a/MAINTAINERS b/MAINTAINERS index 76dcf6ceb23..a55d5c95d73 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3515,6 +3515,7 @@ F: include/hw/registerfields.h Rust M: Manos Pitsidianakis S: Maintained +F: rust/bql/ F: rust/common/ F: rust/migration/ F: rust/qemu-api diff --git a/rust/bql/wrapper.h b/rust/bql/wrapper.h new file mode 100644 index 00000000000..2ef9a96e1d3 --- /dev/null +++ b/rust/bql/wrapper.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "qemu/main-loop.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 048dd74757f..73ca9582a56 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -44,6 +44,13 @@ dependencies =3D [ "qemu_api_macros", ] =20 +[[package]] +name =3D "bql" +version =3D "0.1.0" +dependencies =3D [ + "migration", +] + [[package]] name =3D "common" version =3D "0.1.0" @@ -70,6 +77,7 @@ dependencies =3D [ name =3D "hpet" version =3D "0.1.0" dependencies =3D [ + "bql", "common", "migration", "qemu_api", @@ -108,6 +116,7 @@ dependencies =3D [ "bilge", "bilge-impl", "bits", + "bql", "common", "migration", "qemu_api", @@ -151,6 +160,7 @@ dependencies =3D [ name =3D "qemu_api" version =3D "0.1.0" dependencies =3D [ + "bql", "common", "migration", "qemu_api_macros", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index e0958ef28a8..8be90da8ff7 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -2,6 +2,7 @@ resolver =3D "2" members =3D [ "bits", + "bql", "common", "migration", "qemu-api-macros", diff --git a/rust/bql/Cargo.toml b/rust/bql/Cargo.toml new file mode 100644 index 00000000000..1041bd4ea93 --- /dev/null +++ b/rust/bql/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name =3D "bql" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/BQL" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +migration =3D { path =3D "../migration" } + +[features] +default =3D ["debug_cell"] +debug_cell =3D [] + +[lints] +workspace =3D true diff --git a/rust/bql/build.rs b/rust/bql/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/bql/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/bql/meson.build b/rust/bql/meson.build new file mode 100644 index 00000000000..f369209dfdd --- /dev/null +++ b/rust/bql/meson.build @@ -0,0 +1,52 @@ +_bql_cfg =3D run_command(rustc_args, + '--config-headers', config_host_h, '--features', files('Cargo.toml'), + capture: true, check: true).stdout().strip().splitlines() + +if get_option('debug_mutex') + _bql_cfg +=3D ['--cfg', 'feature=3D"debug_cell"'] +endif + +# +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_bql_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common, +) + +_bql_rs =3D static_library( + 'bql', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/cell.rs', + ], + {'.': _bql_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + rust_args: _bql_cfg, + link_with: [_migration_rs], +) + +bql_rs =3D declare_dependency(link_with: [_bql_rs], + dependencies: [qemuutil]) + +# Doctests are essentially integration tests, so they need the same depend= encies. +# Note that running them requires the object files for C code, so place th= em +# in a separate suite that is run by the "build" CI jobs rather than "chec= k". +rust.doctest('rust-bql-rs-doctests', + _bql_rs, + protocol: 'rust', + dependencies: bql_rs, + suite: ['doc', 'rust']) diff --git a/rust/bql/src/bindings.rs b/rust/bql/src/bindings.rs new file mode 100644 index 00000000000..9ffff12cded --- /dev/null +++ b/rust/bql/src/bindings.rs @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); diff --git a/rust/qemu-api/src/cell.rs b/rust/bql/src/cell.rs similarity index 92% rename from rust/qemu-api/src/cell.rs rename to rust/bql/src/cell.rs index b80a0fd80b7..25007427edc 100644 --- a/rust/qemu-api/src/cell.rs +++ b/rust/bql/src/cell.rs @@ -75,9 +75,10 @@ //! //! ### Example //! -//! ``` +//! ```ignore +//! # use bql::BqlRefCell; //! # use qemu_api::prelude::*; -//! # use qemu_api::{cell::BqlRefCell, irq::InterruptSource, irq::IRQState= }; +//! # use qemu_api::{irq::InterruptSource, irq::IRQState}; //! # use qemu_api::{sysbus::SysBusDevice, qom::Owned, qom::ParentField}; //! # const N_GPIOS: usize =3D 8; //! # struct PL061Registers { /* ... */ } @@ -141,7 +142,6 @@ //! Multiple immutable borrows are allowed via [`borrow`](BqlRefCell::borr= ow), //! or a single mutable borrow via [`borrow_mut`](BqlRefCell::borrow_mut).= The //! thread will panic if these rules are violated or if the BQL is not hel= d. - use std::{ cell::{Cell, UnsafeCell}, cmp::Ordering, @@ -154,30 +154,6 @@ =20 use migration::impl_vmstate_transparent; =20 -use crate::bindings; - -/// An internal function that is used by doctests. -pub fn bql_start_test() { - // SAFETY: integration tests are run with --test-threads=3D1, while - // unit tests and doctests are not multithreaded and do not have - // any BQL-protected data. Just set bql_locked to true. - unsafe { - bindings::rust_bql_mock_lock(); - } -} - -pub fn bql_locked() -> bool { - // SAFETY: the function does nothing but return a thread-local bool - unsafe { bindings::bql_locked() } -} - -fn bql_block_unlock(increase: bool) { - // SAFETY: this only adjusts a counter - unsafe { - bindings::bql_block_unlock(increase); - } -} - /// A mutable memory location that is protected by the Big QEMU Lock. /// /// # Memory layout @@ -256,8 +232,8 @@ impl BqlCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// ``` @@ -273,8 +249,8 @@ pub const fn new(value: T) -> BqlCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// @@ -291,8 +267,8 @@ pub fn set(&self, val: T) { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let cell =3D BqlCell::new(5); /// assert_eq!(cell.get(), 5); @@ -301,7 +277,7 @@ pub fn set(&self, val: T) { /// ``` #[inline] pub fn replace(&self, val: T) -> T { - assert!(bql_locked()); + assert!(crate::is_locked()); // SAFETY: This can cause data races if called from multiple threa= ds, // but it won't happen as long as C code accesses the value // under BQL protection only. @@ -313,8 +289,8 @@ pub fn replace(&self, val: T) -> T { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// let five =3D c.into_inner(); @@ -322,7 +298,7 @@ pub fn replace(&self, val: T) -> T { /// assert_eq!(five, 5); /// ``` pub fn into_inner(self) -> T { - assert!(bql_locked()); + assert!(crate::is_locked()); self.value.into_inner() } } @@ -333,8 +309,8 @@ impl BqlCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// @@ -342,7 +318,7 @@ impl BqlCell { /// ``` #[inline] pub fn get(&self) -> T { - assert!(bql_locked()); + assert!(crate::is_locked()); // SAFETY: This can cause data races if called from multiple threa= ds, // but it won't happen as long as C code accesses the value // under BQL protection only. @@ -356,8 +332,8 @@ impl BqlCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// @@ -375,8 +351,8 @@ impl BqlCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlCell; + /// # bql::start_test(); /// /// let c =3D BqlCell::new(5); /// let five =3D c.take(); @@ -447,7 +423,7 @@ impl BqlRefCell { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlRefCell; + /// use bql::BqlRefCell; /// /// let c =3D BqlRefCell::new(5); /// ``` @@ -506,8 +482,8 @@ fn panic_already_borrowed(&self) -> ! { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlRefCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlRefCell; + /// # bql::start_test(); /// /// let c =3D BqlRefCell::new(5); /// @@ -518,8 +494,8 @@ fn panic_already_borrowed(&self) -> ! { /// An example of panic: /// /// ```should_panic - /// use qemu_api::cell::BqlRefCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlRefCell; + /// # bql::start_test(); /// /// let c =3D BqlRefCell::new(5); /// @@ -536,7 +512,7 @@ pub fn borrow(&self) -> BqlRef<'_, T> { self.borrowed_at.set(Some(std::panic::Location::caller())); } =20 - bql_block_unlock(true); + crate::block_unlock(true); =20 // SAFETY: `BorrowRef` ensures that there is only immutable ac= cess // to the value while borrowed. @@ -560,8 +536,8 @@ pub fn borrow(&self) -> BqlRef<'_, T> { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlRefCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlRefCell; + /// # bql::start_test(); /// /// let c =3D BqlRefCell::new("hello".to_owned()); /// @@ -573,8 +549,8 @@ pub fn borrow(&self) -> BqlRef<'_, T> { /// An example of panic: /// /// ```should_panic - /// use qemu_api::cell::BqlRefCell; - /// # qemu_api::cell::bql_start_test(); + /// use bql::BqlRefCell; + /// # bql::start_test(); /// /// let c =3D BqlRefCell::new(5); /// let m =3D c.borrow(); @@ -591,7 +567,7 @@ pub fn borrow_mut(&self) -> BqlRefMut<'_, T> { } =20 // SAFETY: this only adjusts a counter - bql_block_unlock(true); + crate::block_unlock(true); =20 // SAFETY: `BorrowRefMut` guarantees unique access. let value =3D unsafe { NonNull::new_unchecked(self.value.get()= ) }; @@ -610,7 +586,7 @@ pub fn borrow_mut(&self) -> BqlRefMut<'_, T> { /// # Examples /// /// ``` - /// use qemu_api::cell::BqlRefCell; + /// use bql::BqlRefCell; /// /// let c =3D BqlRefCell::new(5); /// @@ -737,7 +713,7 @@ fn drop(&mut self) { let borrow =3D self.borrow.get(); debug_assert!(is_reading(borrow)); self.borrow.set(borrow - 1); - bql_block_unlock(false) + crate::block_unlock(false) } } =20 @@ -827,7 +803,7 @@ fn drop(&mut self) { let borrow =3D self.borrow.get(); debug_assert!(is_writing(borrow)); self.borrow.set(borrow + 1); - bql_block_unlock(false) + crate::block_unlock(false) } } =20 diff --git a/rust/bql/src/lib.rs b/rust/bql/src/lib.rs new file mode 100644 index 00000000000..ef08221e9c1 --- /dev/null +++ b/rust/bql/src/lib.rs @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +mod bindings; +use bindings::{bql_block_unlock, bql_locked, rust_bql_mock_lock}; + +mod cell; +pub use cell::*; + +/// An internal function that is used by doctests. +pub fn start_test() { + // SAFETY: integration tests are run with --test-threads=3D1, while + // unit tests and doctests are not multithreaded and do not have + // any BQL-protected data. Just set bql_locked to true. + unsafe { + rust_bql_mock_lock(); + } +} + +pub fn is_locked() -> bool { + // SAFETY: the function does nothing but return a thread-local bool + unsafe { bql_locked() } +} + +pub fn block_unlock(increase: bool) { + // SAFETY: this only adjusts a counter + unsafe { + bql_block_unlock(increase); + } +} diff --git a/rust/common/src/opaque.rs b/rust/common/src/opaque.rs index d25a5f3ae1a..97ed3e84522 100644 --- a/rust/common/src/opaque.rs +++ b/rust/common/src/opaque.rs @@ -69,8 +69,8 @@ //! and only at FFI boundaries. For QEMU-specific types that need interior //! mutability, prefer [`BqlCell`] or [`BqlRefCell`]. //! -//! [`BqlCell`]: ../../qemu_api/cell/struct.BqlCell.html -//! [`BqlRefCell`]: ../../qemu_api/cell/struct.BqlRefCell.html +//! [`BqlCell`]: ../../bql/cell/struct.BqlCell.html +//! [`BqlRefCell`]: ../../bql/cell/struct.BqlRefCell.html use std::{cell::UnsafeCell, fmt, marker::PhantomPinned, mem::MaybeUninit, = ptr::NonNull}; =20 /// Stores an opaque value that is shared with C code. diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 7fd7531823d..1a1d4ba7152 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -18,6 +18,7 @@ bilge-impl =3D { version =3D "0.2.0" } bits =3D { path =3D "../../../bits" } common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } +bql =3D { path =3D "../../../bql" } migration =3D { path =3D "../../../migration" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 2198fcee9bc..8561c4c14ae 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -11,6 +11,7 @@ _libpl011_rs =3D static_library( qemu_api_rs, util_rs, migration_rs, + bql_rs, qemu_api_macros, ], ) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 225be34e08b..00ae4328250 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -4,6 +4,7 @@ =20 use std::{ffi::CStr, mem::size_of}; =20 +use bql::BqlRefCell; use common::{static_assert, uninit_field_mut}; use migration::{ self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 70acdf03d6e..9fcec38bfa6 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -14,6 +14,7 @@ rust-version.workspace =3D true common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } migration =3D { path =3D "../../../migration" } +bql =3D { path =3D "../../../bql" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 8cd70091e63..43a62db0d01 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -8,6 +8,7 @@ _libhpet_rs =3D static_library( qemu_api_rs, util_rs, migration_rs, + bql_rs, qemu_api_macros, ], ) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 1c2253466d9..9658e071c26 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -10,6 +10,7 @@ slice::from_ref, }; =20 +use bql::{BqlCell, BqlRefCell}; use common::{bitops::IntegerExt, uninit_field_mut}; use migration::{ self, impl_vmstate_struct, vmstate_fields, vmstate_of, vmstate_subsect= ions, vmstate_validate, @@ -20,7 +21,6 @@ address_space_memory, address_space_stl_le, qdev_prop_bit, qdev_pr= op_bool, qdev_prop_uint32, qdev_prop_usize, }, - cell::{BqlCell, BqlRefCell}, irq::InterruptSource, memory::{ hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEM= TXATTRS_UNSPECIFIED, diff --git a/rust/hw/timer/hpet/src/fw_cfg.rs b/rust/hw/timer/hpet/src/fw_c= fg.rs index 0605225fbb1..e569b57b93b 100644 --- a/rust/hw/timer/hpet/src/fw_cfg.rs +++ b/rust/hw/timer/hpet/src/fw_cfg.rs @@ -5,7 +5,6 @@ use std::ptr::addr_of_mut; =20 use common::Zeroable; -use qemu_api::cell::bql_locked; =20 /// Each `HPETState` represents a Event Timer Block. The v1 spec supports /// up to 8 blocks. QEMU only uses 1 block (in PC machine). @@ -38,7 +37,7 @@ unsafe impl Zeroable for HPETFwConfig {} =20 impl HPETFwConfig { pub(crate) fn assign_hpet_id() -> Result { - assert!(bql_locked()); + assert!(bql::is_locked()); // SAFETY: all accesses go through these methods, which guarantee // that the accesses are protected by the BQL. let mut fw_cfg =3D unsafe { *addr_of_mut!(hpet_fw_cfg) }; @@ -58,7 +57,7 @@ pub(crate) fn assign_hpet_id() -> Result { } =20 pub(crate) fn update_hpet_cfg(hpet_id: usize, timer_block_id: u32, add= ress: u64) { - assert!(bql_locked()); + assert!(bql::is_locked()); // SAFETY: all accesses go through these methods, which guarantee // that the accesses are protected by the BQL. let mut fw_cfg =3D unsafe { *addr_of_mut!(hpet_fw_cfg) }; diff --git a/rust/meson.build b/rust/meson.build index 826949b2e60..2ba1ea2280d 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -27,6 +27,7 @@ subdir('qemu-api-macros') subdir('bits') subdir('util') subdir('migration') +subdir('bql') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs index 537d54e4368..d714aacb7e3 100644 --- a/rust/migration/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -135,8 +135,8 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// [`impl_vmstate_bitsized`](crate::impl_vmstate_bitsized), and /// [`impl_vmstate_struct`](crate::impl_vmstate_struct) help with this. /// -/// [`BqlCell`]: ../../qemu_api/cell/struct.BqlCell.html -/// [`BqlRefCell`]: ../../qemu_api/cell/struct.BqlRefCell.html +/// [`BqlCell`]: ../../bql/cell/struct.BqlCell.html +/// [`BqlRefCell`]: ../../bql/cell/struct.BqlRefCell.html /// [`Owned`]: ../../qemu_api/qom/struct.Owned.html #[macro_export] macro_rules! vmstate_of { diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 7276e67aa97..6e9427f80c8 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -17,11 +17,8 @@ rust-version.workspace =3D true common =3D { path =3D "../common" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } +bql =3D { path =3D "../bql" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } =20 -[features] -default =3D ["debug_cell"] -debug_cell =3D [] - [lints] workspace =3D true diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index a6b5772d194..a47ee6c1a3d 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -2,10 +2,6 @@ _qemu_api_cfg =3D run_command(rustc_args, '--config-headers', config_host_h, '--features', files('Cargo.toml'), capture: true, check: true).stdout().strip().splitlines() =20 -if get_option('debug_mutex') - _qemu_api_cfg +=3D ['--cfg', 'feature=3D"debug_cell"'] -endif - c_enums =3D [ 'DeviceCategory', 'GpioPolarity', @@ -51,7 +47,6 @@ _qemu_api_rs =3D static_library( [ 'src/lib.rs', 'src/bindings.rs', - 'src/cell.rs', 'src/chardev.rs', 'src/irq.rs', 'src/memory.rs', @@ -65,22 +60,13 @@ _qemu_api_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, common_rs, foreign_rs, libc_rs, migration_rs, = qemu_api_macros, + dependencies: [anyhow_rs, bql_rs, common_rs, foreign_rs, libc_rs, migrat= ion_rs, qemu_api_macros, util_rs, qom, hwcore, chardev], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], dependencies: [qemu_api_macros, qom, hwcore, chardev, migration]) =20 -# Doctests are essentially integration tests, so they need the same depend= encies. -# Note that running them requires the object files for C code, so place th= em -# in a separate suite that is run by the "build" CI jobs rather than "chec= k". -rust.doctest('rust-qemu-api-doctests', - _qemu_api_rs, - protocol: 'rust', - dependencies: [qemu_api_rs], - suite: ['doc', 'rust']) - test('rust-qemu-api-integration', executable( 'rust-qemu-api-integration', @@ -88,7 +74,7 @@ test('rust-qemu-api-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [common_rs, util_rs, migration_rs, qemu_api_rs]), + dependencies: [bql_rs, common_rs, util_rs, migration_rs, qemu_api_= rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/qemu-api/src/chardev.rs b/rust/qemu-api/src/chardev.rs index 5a351dcecb0..2ec90cc0b2e 100644 --- a/rust/qemu-api/src/chardev.rs +++ b/rust/qemu-api/src/chardev.rs @@ -18,13 +18,10 @@ slice, }; =20 +use bql::{BqlRefCell, BqlRefMut}; use common::{callbacks::FnCall, errno, Opaque}; =20 -use crate::{ - bindings, - cell::{BqlRefCell, BqlRefMut}, - prelude::*, -}; +use crate::{bindings, prelude::*}; =20 /// A safe wrapper around [`bindings::Chardev`]. #[repr(transparent)] @@ -44,13 +41,15 @@ pub struct CharBackend { _pin: PhantomPinned, } =20 -impl Write for BqlRefMut<'_, bindings::CharBackend> { +pub struct CharBackendMut<'a>(BqlRefMut<'a, bindings::CharBackend>); + +impl Write for CharBackendMut<'_> { fn flush(&mut self) -> io::Result<()> { Ok(()) } =20 fn write(&mut self, buf: &[u8]) -> io::Result { - let chr: &mut bindings::CharBackend =3D self; + let chr: &mut bindings::CharBackend =3D &mut self.0; =20 let len =3D buf.len().try_into().unwrap(); let r =3D unsafe { bindings::qemu_chr_fe_write(addr_of_mut!(*chr),= buf.as_ptr(), len) }; @@ -58,7 +57,7 @@ fn write(&mut self, buf: &[u8]) -> io::Result { } =20 fn write_all(&mut self, buf: &[u8]) -> io::Result<()> { - let chr: &mut bindings::CharBackend =3D self; + let chr: &mut bindings::CharBackend =3D &mut self.0; =20 let len =3D buf.len().try_into().unwrap(); let r =3D unsafe { bindings::qemu_chr_fe_write_all(addr_of_mut!(*c= hr), buf.as_ptr(), len) }; @@ -198,7 +197,7 @@ pub fn accept_input(&self) { /// the big QEMU lock while the character device is borrowed, as /// that might cause C code to write to the character device. pub fn borrow_mut(&self) -> impl Write + '_ { - self.inner.borrow_mut() + CharBackendMut(self.inner.borrow_mut()) } =20 /// Send a continuous stream of zero bits on the line if `enabled` is diff --git a/rust/qemu-api/src/irq.rs b/rust/qemu-api/src/irq.rs index ea6b32848c5..3063fbe97aa 100644 --- a/rust/qemu-api/src/irq.rs +++ b/rust/qemu-api/src/irq.rs @@ -10,6 +10,7 @@ ptr, }; =20 +use bql::BqlCell; use common::Opaque; =20 use crate::{ diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 55386f66978..6cd9e5b9905 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -13,7 +13,6 @@ #[rustfmt::skip] pub mod prelude; =20 -pub mod cell; pub mod chardev; pub mod irq; pub mod memory; diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index c10c1711581..9da7313016d 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -4,9 +4,6 @@ =20 //! Commonly used traits and types for QEMU. =20 -pub use crate::cell::BqlCell; -pub use crate::cell::BqlRefCell; - pub use crate::qdev::DeviceMethods; =20 pub use crate::qom::InterfaceType; diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index c81ae7cf45c..74a82b87105 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -16,7 +16,6 @@ =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, - cell::bql_locked, chardev::Chardev, irq::InterruptSource, prelude::*, @@ -322,7 +321,7 @@ fn do_init_clock_in( cb: Option, events: ClockEvent, ) -> Owned { - assert!(bql_locked()); + assert!(bql::is_locked()); =20 // SAFETY: the clock is heap allocated, but qdev_init_clock_in= () // does not gift the reference to its caller; so use Owned::fr= om to @@ -393,7 +392,7 @@ pub trait DeviceMethods: ObjectDeref Self::Target: IsA, { fn prop_set_chr(&self, propname: &str, chr: &Owned) { - assert!(bql_locked()); + assert!(bql::is_locked()); let c_propname =3D CString::new(propname).unwrap(); let chr: &Chardev =3D chr; unsafe { diff --git a/rust/qemu-api/src/qom.rs b/rust/qemu-api/src/qom.rs index 7f2f7797e44..032701af652 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qemu-api/src/qom.rs @@ -105,12 +105,9 @@ use common::Opaque; use migration::impl_vmstate_pointer; =20 -use crate::{ - bindings::{ - self, object_class_dynamic_cast, object_dynamic_cast, object_get_c= lass, - object_get_typename, object_new, object_ref, object_unref, TypeInf= o, - }, - cell::bql_locked, +use crate::bindings::{ + self, object_class_dynamic_cast, object_dynamic_cast, object_get_class= , object_get_typename, + object_new, object_ref, object_unref, TypeInfo, }; =20 /// A safe wrapper around [`bindings::Object`]. @@ -873,7 +870,7 @@ impl ObjectDeref for Owned {} =20 impl Drop for Owned { fn drop(&mut self) { - assert!(bql_locked()); + assert!(bql::is_locked()); // SAFETY: creation method is unsafe, and whoever calls it has // responsibility that the pointer is valid, and remains valid // throughout the lifetime of the `Owned` and its clones. @@ -897,7 +894,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { pub trait ObjectClassMethods: IsA { /// Return a new reference counted instance of this class fn new() -> Owned { - assert!(bql_locked()); + assert!(bql::is_locked()); // SAFETY: the object created by object_new is allocated on // the heap and has a reference count of 1 unsafe { diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index 2dbfc31dbda..b21883246e9 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -11,7 +11,6 @@ =20 use crate::{ bindings, - cell::bql_locked, irq::{IRQState, InterruptSource}, memory::MemoryRegion, prelude::*, @@ -56,7 +55,7 @@ pub trait SysBusDeviceMethods: ObjectDeref /// region with a number that corresponds to the order of calls to /// `init_mmio`. fn init_mmio(&self, iomem: &MemoryRegion) { - assert!(bql_locked()); + assert!(bql::is_locked()); unsafe { bindings::sysbus_init_mmio(self.upcast().as_mut_ptr(), iomem.a= s_mut_ptr()); } @@ -67,7 +66,7 @@ fn init_mmio(&self, iomem: &MemoryRegion) { /// whoever creates the sysbus device will refer to the interrupts with /// a number that corresponds to the order of calls to `init_irq`. fn init_irq(&self, irq: &InterruptSource) { - assert!(bql_locked()); + assert!(bql::is_locked()); unsafe { bindings::sysbus_init_irq(self.upcast().as_mut_ptr(), irq.as_p= tr()); } @@ -75,7 +74,7 @@ fn init_irq(&self, irq: &InterruptSource) { =20 // TODO: do we want a type like GuestAddress here? fn mmio_addr(&self, id: u32) -> Option { - assert!(bql_locked()); + assert!(bql::is_locked()); // SAFETY: the BQL ensures that no one else writes to sbd.mmio[], = and // the SysBusDevice must be initialized to get an IsA. let sbd =3D unsafe { *self.upcast().as_ptr() }; @@ -89,7 +88,7 @@ fn mmio_addr(&self, id: u32) -> Option { =20 // TODO: do we want a type like GuestAddress here? fn mmio_map(&self, id: u32, addr: u64) { - assert!(bql_locked()); + assert!(bql::is_locked()); let id: i32 =3D id.try_into().unwrap(); unsafe { bindings::sysbus_mmio_map(self.upcast().as_mut_ptr(), id, addr= ); @@ -100,7 +99,7 @@ fn mmio_map(&self, id: u32, addr: u64) { // object_property_set_link) adds a reference to the IRQState, // which can prolong its life fn connect_irq(&self, id: u32, irq: &Owned) { - assert!(bql_locked()); + assert!(bql::is_locked()); let id: i32 =3D id.try_into().unwrap(); let irq: &IRQState =3D irq; unsafe { @@ -110,7 +109,7 @@ fn connect_irq(&self, id: u32, irq: &Owned) { =20 fn sysbus_realize(&self) { // TODO: return an Error - assert!(bql_locked()); + assert!(bql::is_locked()); unsafe { bindings::sysbus_realize( self.upcast().as_mut_ptr(), diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index 92e3534d3c1..e72ba08aefe 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -4,9 +4,9 @@ =20 use std::{ffi::CStr, ptr::addr_of}; =20 +use bql::BqlCell; use migration::{VMStateDescription, VMStateDescriptionBuilder}; use qemu_api::{ - cell::{self, BqlCell}, prelude::*, qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, qom::{ObjectImpl, ParentField}, @@ -94,7 +94,7 @@ pub fn class_init(self: &mut DummyChildCla= ss) { fn init_qom() { static ONCE: BqlCell =3D BqlCell::new(false); =20 - cell::bql_start_test(); + bql::start_test(); if !ONCE.get() { unsafe { module_call_init(module_init_type::MODULE_INIT_QOM); diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index 47fc15149b4..fa9bbd6a122 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -9,6 +9,7 @@ slice, }; =20 +use bql::BqlCell; use common::Opaque; use migration::{ bindings::{ @@ -19,7 +20,6 @@ vmstate::{VMStateDescription, VMStateDescriptionBuilder, VMStateField}, vmstate_fields, vmstate_of, vmstate_unused, vmstate_validate, }; -use qemu_api::cell::BqlCell; =20 const FOO_ARRAY_MAX: usize =3D 3; =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751217; cv=none; d=zohomail.com; s=zohoarc; b=OQIKH3cQa8eT2T62XfBiECyc8sHaJaecSiJ5h7AUVDXyC6M0VLnPBm7LNCjsmZew7X8fzKW1MBtobxSJT5keVZjgyTkQXpDP6YF8G1heD7Pou6rrtz0UUFHyo+tj24JLQhahTHW+kIyHFPZAAW9aF+hTUh71hLtsO1jM9E+16O0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751217; 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=SGKYdEzg1XiayDSaaJGwyExw+XzXAwhzH28n4zE4HHw=; b=Crv2znyCvY59VZu6j6EKnszyDUF1WU9/ycVHP8t4y6wLFaN3BdJy3nfiH9IMPrb3bugt1zbZq0UacoGw/t1A1QhMxoRMXK76c6yFBUkdUCypy5n7icSvEOVOOyZdqc+GHTVfYvVUqDasTMzvCbaM+RJjkJlsy3q7Y0YZBxv23KM= 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 175775121739174.84228845788527; Sat, 13 Sep 2025 01:13:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMl-0000z5-FQ; Sat, 13 Sep 2025 04:12:16 -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 1uxLMK-00009R-To for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:52 -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 1uxLMG-00057m-Qd for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:48 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-567-zmCIRTp4OmKKhWhVFNXd9w-1; Sat, 13 Sep 2025 04:11:41 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45f28552927so2973705e9.2 for ; Sat, 13 Sep 2025 01:11:41 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e017c1dd3sm51308735e9.2.2025.09.13.01.11.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751103; 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=SGKYdEzg1XiayDSaaJGwyExw+XzXAwhzH28n4zE4HHw=; b=FEjfQd8PHCjd6DhSapfGn0We1l+i1lJghZaSkL6E9cX4yp2vhSna1mTd6Uxj8U95xYMFLk HimCjkw/57TdgZqILb5xhQGGuKludBjj1UFF9EkmhfF0NvtdEQ/Ua/czcAUJMgzqsrMO/z y3jm5QKBSqEsn8OHYD6pe9QL/XUgurI= X-MC-Unique: zmCIRTp4OmKKhWhVFNXd9w-1 X-Mimecast-MFC-AGG-ID: zmCIRTp4OmKKhWhVFNXd9w_1757751100 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751100; x=1758355900; 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=SGKYdEzg1XiayDSaaJGwyExw+XzXAwhzH28n4zE4HHw=; b=Rp5nfD/pLY0qFY5GTrKtSeBi2WPIhdJKPb5CPIenwY0soywjYixj/m5Sq2Iq1vXUWe mTbNyCn0eSELR4QEv6zAEhRFDfD9gD38wLvLeGQbq+Mudy+XEYd7YwL/LWJN+sq5itNH v+IkikufjxGTao5Ewbblct0KO0bZuNoBTrp335i9Dgw3oBzivVaFZdD8B+IAXKJVsofs i7yyV+EGLXHV7zUiUzcpbidY2sXXW1ZufJNhfGQPuslkxseKv1srSvolm6f2CnRzwhG1 rHffCGY6MTXKtmlTv+wcHI4RUjjq7tVCcXP+DRdXaNmDsMWHPujXndlS5jm//6hxejUm StMQ== X-Gm-Message-State: AOJu0YxQ9jSnQ84T8p/dpr3i3e9LRTS8kity2Eu8hGl4ILzB/1dME+Xl ygMLUKtL+16HbjRQ6vDpU+q4O0OTNGPYROTvpi1CB82/dCNKGPpadtW3j56ZQ50d543lz5/6EW1 gtfaW9ROtnz/UIWbfFrBFenuinshyJeCMuW8XE73a9FrcVH5N7DTPPKyVWYO+rD2/16nyy2kuR+ WlrgYVIdfzC9JWB7l7S+xrNBiZ/616Kt3pSvNxNff4 X-Gm-Gg: ASbGnctsltzziScy6UEEi84HJneNhihEKNnEc/1t+5WjCl4p4vAJWXs/XnPJm39R/U8 k+6BxommDPSYvsnMcHC+HLjUqDj0cZvkRCBp2V+YhN/JhK/I7wQ9kgLlpDLDk0u8P1vF3x/Qlwx EjzkKO2WR9p9ZCAonM1vLKI1FAuZP5xv1CfsqMEPhKMP+Hh8vJ7YiDZH/mYRPUk8uCJumA+52En aSXBIptykFhGWlU/WR6aDT5/jt0OZ5AMcHvoD22xcedCtEEDSlcCjqFQyltP44bX6/WsF80HRgT 4f2DXs+ghZ0QaEFb19JKwJRJkZc6PNbABeTKIZ5ct+c2AkCzcWDj8SO8eVeuNEuE+Pgk8F/4C7b oS76LePCMo7L1UUL+6V1azdyg96w2ziytKIoO9vtVFx4= X-Received: by 2002:a5d:59ca:0:b0:3e8:f6e4:ad79 with SMTP id ffacd0b85a97d-3e8f6e4b453mr382254f8f.32.1757751099499; Sat, 13 Sep 2025 01:11:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHRbx0EvE587waf4Fbc/jiLkU0OMnbKMyT0epw74+nZNDf+XIE1TIiHm9O/7gdiZ8XfELSOyg== X-Received: by 2002:a5d:59ca:0:b0:3e8:f6e4:ad79 with SMTP id ffacd0b85a97d-3e8f6e4b453mr382221f8f.32.1757751098835; Sat, 13 Sep 2025 01:11:38 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 40/61] rust: split "qom" crate Date: Sat, 13 Sep 2025 10:09:21 +0200 Message-ID: <20250913080943.11710-41-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751219606116601 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250827104147.717203-13-marcandre.lureau@r= edhat.com Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/qom/wrapper.h | 27 +++++++++++++++++++ rust/Cargo.lock | 14 ++++++++++ rust/Cargo.toml | 1 + rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 3 +-- rust/meson.build | 1 + rust/migration/src/vmstate.rs | 2 +- rust/qemu-api-macros/src/lib.rs | 4 +-- rust/qemu-api-macros/src/tests.rs | 4 +-- rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 15 +++++++---- rust/qemu-api/src/bindings.rs | 1 + rust/qemu-api/src/chardev.rs | 3 ++- rust/qemu-api/src/irq.rs | 10 +++---- rust/qemu-api/src/lib.rs | 1 - rust/qemu-api/src/memory.rs | 7 +++-- rust/qemu-api/src/prelude.rs | 11 -------- rust/qemu-api/src/qdev.rs | 5 ++-- rust/qemu-api/src/sysbus.rs | 4 +-- rust/qemu-api/tests/tests.rs | 3 +-- rust/qom/Cargo.toml | 23 +++++++++++++++++ rust/qom/build.rs | 1 + rust/qom/meson.build | 43 +++++++++++++++++++++++++++++++ rust/qom/src/bindings.rs | 25 ++++++++++++++++++ rust/qom/src/lib.rs | 11 ++++++++ rust/qom/src/prelude.rs | 12 +++++++++ rust/{qemu-api =3D> qom}/src/qom.rs | 4 +-- 32 files changed, 199 insertions(+), 44 deletions(-) create mode 100644 rust/qom/wrapper.h create mode 100644 rust/qom/Cargo.toml create mode 120000 rust/qom/build.rs create mode 100644 rust/qom/meson.build create mode 100644 rust/qom/src/bindings.rs create mode 100644 rust/qom/src/lib.rs create mode 100644 rust/qom/src/prelude.rs rename rust/{qemu-api =3D> qom}/src/qom.rs (99%) diff --git a/MAINTAINERS b/MAINTAINERS index a55d5c95d73..c7bd02aef16 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3520,6 +3520,7 @@ F: rust/common/ F: rust/migration/ F: rust/qemu-api F: rust/qemu-api-macros +F: rust/qom/ F: rust/rustfmt.toml F: rust/util/ F: scripts/get-wraps-from-cargo-registry.py diff --git a/rust/qom/wrapper.h b/rust/qom/wrapper.h new file mode 100644 index 00000000000..3b71bcd3f5b --- /dev/null +++ b/rust/qom/wrapper.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "qom/object.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 73ca9582a56..442eadf08fa 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -82,6 +82,7 @@ dependencies =3D [ "migration", "qemu_api", "qemu_api_macros", + "qom", "util", ] =20 @@ -121,6 +122,7 @@ dependencies =3D [ "migration", "qemu_api", "qemu_api_macros", + "qom", "util", ] =20 @@ -164,6 +166,7 @@ dependencies =3D [ "common", "migration", "qemu_api_macros", + "qom", "util", ] =20 @@ -176,6 +179,17 @@ dependencies =3D [ "syn", ] =20 +[[package]] +name =3D "qom" +version =3D "0.1.0" +dependencies =3D [ + "bql", + "common", + "migration", + "qemu_api_macros", + "util", +] + [[package]] name =3D "quote" version =3D "1.0.36" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 8be90da8ff7..0516c16591c 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -7,6 +7,7 @@ members =3D [ "migration", "qemu-api-macros", "qemu-api", + "qom", "hw/char/pl011", "hw/timer/hpet", "util", diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 1a1d4ba7152..da89f78727f 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -20,6 +20,7 @@ common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } bql =3D { path =3D "../../../bql" } migration =3D { path =3D "../../../migration" } +qom =3D { path =3D "../../../qom" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 8561c4c14ae..af9393c9da9 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -13,6 +13,7 @@ _libpl011_rs =3D static_library( migration_rs, bql_rs, qemu_api_macros, + qom_rs, ], ) =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 00ae4328250..63651b9dcdf 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -16,9 +16,9 @@ memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, - qom::{ObjectImpl, Owned, ParentField, ParentInit}, sysbus::{SysBusDevice, SysBusDeviceImpl}, }; +use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; use util::{log::Log, log_mask_ln}; =20 use crate::registers::{self, Interrupt, RegisterOffset}; diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 9fcec38bfa6..19456ec72b5 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -15,6 +15,7 @@ common =3D { path =3D "../../../common" } util =3D { path =3D "../../../util" } migration =3D { path =3D "../../../migration" } bql =3D { path =3D "../../../bql" } +qom =3D { path =3D "../../../qom" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 43a62db0d01..50ccdee4a93 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -10,6 +10,7 @@ _libhpet_rs =3D static_library( migration_rs, bql_rs, qemu_api_macros, + qom_rs, ], ) =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 9658e071c26..404569aa2de 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -27,10 +27,9 @@ }, prelude::*, qdev::{DeviceImpl, DeviceState, Property, ResetType, ResettablePhasesI= mpl}, - qom::{ObjectImpl, ObjectType, ParentField, ParentInit}, - qom_isa, sysbus::{SysBusDevice, SysBusDeviceImpl}, }; +use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; use util::timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}; =20 use crate::fw_cfg::HPETFwConfig; diff --git a/rust/meson.build b/rust/meson.build index 2ba1ea2280d..043603d4169 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -28,6 +28,7 @@ subdir('bits') subdir('util') subdir('migration') subdir('bql') +subdir('qom') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/migration/src/vmstate.rs b/rust/migration/src/vmstate.rs index d714aacb7e3..c05c4a1fd66 100644 --- a/rust/migration/src/vmstate.rs +++ b/rust/migration/src/vmstate.rs @@ -137,7 +137,7 @@ pub const fn vmstate_varray_flag(_: Phantom= Data) -> VMStateFlags /// /// [`BqlCell`]: ../../bql/cell/struct.BqlCell.html /// [`BqlRefCell`]: ../../bql/cell/struct.BqlRefCell.html -/// [`Owned`]: ../../qemu_api/qom/struct.Owned.html +/// [`Owned`]: ../../qom/qom/struct.Owned.html #[macro_export] macro_rules! vmstate_of { ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])? $(, $test_fn:expr)? $(,)?) =3D> { diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index 67650a9a269..e643e57ebdf 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -98,11 +98,11 @@ fn derive_object_or_error(input: DeriveInput) -> Result= ::ParentType>); + ::qom::ParentField<<#name as ::qom::ObjectImpl>::ParentType>); =20 ::util::module_init! { MODULE_INIT_QOM =3D> unsafe { - ::qemu_api::bindings::type_register_static(&<#name as ::qe= mu_api::qom::ObjectImpl>::TYPE_INFO); + ::qom::type_register_static(&<#name as ::qom::ObjectImpl>:= :TYPE_INFO); } } }) diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index 8e71ac6e677..76e6c57479e 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -168,11 +168,11 @@ struct Foo { ::common::assert_field_type!( Foo, _unused, - ::qemu_api::qom::ParentField<::ParentType> + ::qom::ParentField<::ParentType> ); ::util::module_init! { MODULE_INIT_QOM =3D> unsafe { - ::qemu_api::bindings::type_register_static(&::TYPE_INFO); + ::qom::type_register_static(&::TYPE_INFO); } } } diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 6e9427f80c8..9d11becb284 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -18,6 +18,7 @@ common =3D { path =3D "../common" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } +qom =3D { path =3D "../qom" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } =20 [lints] diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index a47ee6c1a3d..11e43bb6468 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -22,9 +22,15 @@ foreach enum : c_bitfields _qemu_api_bindgen_args +=3D ['--bitfield-enum', enum] endforeach =20 -_qemu_api_bindgen_args +=3D ['--blocklist-type', 'VMStateDescription'] +blocked_type =3D [ + 'ObjectClass', + 'VMStateDescription', + 'Error', +] +foreach type: blocked_type + _qemu_api_bindgen_args +=3D ['--blocklist-type', type] +endforeach =20 -_qemu_api_bindgen_args +=3D ['--blocklist-type', 'Error'] # TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. # # Rust bindings generation with `bindgen` might fail in some cases where t= he @@ -52,7 +58,6 @@ _qemu_api_rs =3D static_library( 'src/memory.rs', 'src/prelude.rs', 'src/qdev.rs', - 'src/qom.rs', 'src/sysbus.rs', ], {'.' : _qemu_api_bindings_inc_rs}, @@ -61,7 +66,7 @@ _qemu_api_rs =3D static_library( rust_abi: 'rust', rust_args: _qemu_api_cfg, dependencies: [anyhow_rs, bql_rs, common_rs, foreign_rs, libc_rs, migrat= ion_rs, qemu_api_macros, - util_rs, qom, hwcore, chardev], + qom_rs, util_rs, hwcore, chardev], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], @@ -74,7 +79,7 @@ test('rust-qemu-api-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [bql_rs, common_rs, util_rs, migration_rs, qemu_api_= rs]), + dependencies: [bql_rs, common_rs, util_rs, migration_rs, qom_rs, q= emu_api_rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index ce00a6e0e4c..525f136ae2b 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -22,6 +22,7 @@ =20 use common::Zeroable; use migration::bindings::VMStateDescription; +use qom::bindings::ObjectClass; use util::bindings::Error; =20 #[cfg(MESON)] diff --git a/rust/qemu-api/src/chardev.rs b/rust/qemu-api/src/chardev.rs index 2ec90cc0b2e..072d806e4a3 100644 --- a/rust/qemu-api/src/chardev.rs +++ b/rust/qemu-api/src/chardev.rs @@ -20,8 +20,9 @@ =20 use bql::{BqlRefCell, BqlRefMut}; use common::{callbacks::FnCall, errno, Opaque}; +use qom::prelude::*; =20 -use crate::{bindings, prelude::*}; +use crate::bindings; =20 /// A safe wrapper around [`bindings::Chardev`]. #[repr(transparent)] diff --git a/rust/qemu-api/src/irq.rs b/rust/qemu-api/src/irq.rs index 3063fbe97aa..fead2bbe8e0 100644 --- a/rust/qemu-api/src/irq.rs +++ b/rust/qemu-api/src/irq.rs @@ -12,12 +12,9 @@ =20 use bql::BqlCell; use common::Opaque; +use qom::{prelude::*, ObjectClass}; =20 -use crate::{ - bindings::{self, qemu_set_irq}, - prelude::*, - qom::ObjectClass, -}; +use crate::bindings::{self, qemu_set_irq}; =20 /// An opaque wrapper around [`bindings::IRQState`]. #[repr(transparent)] @@ -36,7 +33,7 @@ /// /// Interrupts are implemented as a pointer to the interrupt "sink", which= has /// type [`IRQState`]. A device exposes its source as a QOM link property= using -/// a function such as [`SysBusDeviceMethods::init_irq`], and +/// a function such as [`crate::sysbus::SysBusDeviceMethods::init_irq`], a= nd /// initially leaves the pointer to a NULL value, representing an unconnec= ted /// interrupt. To connect it, whoever creates the device fills the pointer= with /// the sink's `IRQState *`, for example using `sysbus_connect_irq`. Beca= use @@ -114,4 +111,5 @@ unsafe impl ObjectType for IRQState { const TYPE_NAME: &'static CStr =3D unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_IRQ) }; } + qom_isa!(IRQState: Object); diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 6cd9e5b9905..0541050e667 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -17,7 +17,6 @@ pub mod irq; pub mod memory; pub mod qdev; -pub mod qom; pub mod sysbus; =20 // Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this diff --git a/rust/qemu-api/src/memory.rs b/rust/qemu-api/src/memory.rs index f790cb5fd2d..ecbbd9b6046 100644 --- a/rust/qemu-api/src/memory.rs +++ b/rust/qemu-api/src/memory.rs @@ -11,11 +11,9 @@ =20 pub use bindings::{hwaddr, MemTxAttrs}; use common::{callbacks::FnCall, uninit::MaybeUninitField, zeroable::Zeroab= le, Opaque}; +use qom::prelude::*; =20 -use crate::{ - bindings::{self, device_endian, memory_region_init_io}, - prelude::*, -}; +use crate::bindings::{self, device_endian, memory_region_init_io}; =20 pub struct MemoryRegionOps( bindings::MemoryRegionOps, @@ -186,6 +184,7 @@ unsafe impl ObjectType for MemoryRegion { const TYPE_NAME: &'static CStr =3D unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_MEMORY= _REGION) }; } + qom_isa!(MemoryRegion: Object); =20 /// A special `MemTxAttrs` constant, used to indicate that no memory diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index 9da7313016d..9e9d1c82474 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -6,15 +6,4 @@ =20 pub use crate::qdev::DeviceMethods; =20 -pub use crate::qom::InterfaceType; -pub use crate::qom::IsA; -pub use crate::qom::Object; -pub use crate::qom::ObjectCast; -pub use crate::qom::ObjectClassMethods; -pub use crate::qom::ObjectDeref; -pub use crate::qom::ObjectMethods; -pub use crate::qom::ObjectType; - -pub use crate::qom_isa; - pub use crate::sysbus::SysBusDeviceMethods; diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 74a82b87105..3daf9dda2b5 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -12,14 +12,13 @@ pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; use common::{callbacks::FnCall, Opaque}; use migration::{impl_vmstate_c_struct, VMStateDescription}; +use qom::{prelude::*, ObjectClass, ObjectImpl, Owned, ParentInit}; use util::{Error, Result}; =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, chardev::Chardev, irq::InterruptSource, - prelude::*, - qom::{ObjectClass, ObjectImpl, Owned, ParentInit}, }; =20 /// A safe wrapper around [`bindings::Clock`]. @@ -291,6 +290,7 @@ unsafe impl ObjectType for DeviceState { const TYPE_NAME: &'static CStr =3D unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_DEVICE= ) }; } + qom_isa!(DeviceState: Object); =20 /// Initialization methods take a [`ParentInit`] and can be called as @@ -453,6 +453,7 @@ unsafe impl ObjectType for Clock { const TYPE_NAME: &'static CStr =3D unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_CLOCK)= }; } + qom_isa!(Clock: Object); =20 impl_vmstate_c_struct!(Clock, bindings::vmstate_clock); diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index b21883246e9..b883d7eaf18 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -8,14 +8,13 @@ =20 pub use bindings::SysBusDeviceClass; use common::Opaque; +use qom::{prelude::*, Owned}; =20 use crate::{ bindings, irq::{IRQState, InterruptSource}, memory::MemoryRegion, - prelude::*, qdev::{DeviceImpl, DeviceState}, - qom::Owned, }; =20 /// A safe wrapper around [`bindings::SysBusDevice`]. @@ -31,6 +30,7 @@ unsafe impl ObjectType for SysBusDevice { const TYPE_NAME: &'static CStr =3D unsafe { CStr::from_bytes_with_nul_unchecked(bindings::TYPE_SYS_BU= S_DEVICE) }; } + qom_isa!(SysBusDevice: DeviceState, Object); =20 // TODO: add virtual methods diff --git a/rust/qemu-api/tests/tests.rs b/rust/qemu-api/tests/tests.rs index e72ba08aefe..f2e5eb9f4f4 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/qemu-api/tests/tests.rs @@ -7,11 +7,10 @@ use bql::BqlCell; use migration::{VMStateDescription, VMStateDescriptionBuilder}; use qemu_api::{ - prelude::*, qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, - qom::{ObjectImpl, ParentField}, sysbus::SysBusDevice, }; +use qom::{prelude::*, ObjectImpl, ParentField}; use util::bindings::{module_call_init, module_init_type}; =20 mod vmstate_tests; diff --git a/rust/qom/Cargo.toml b/rust/qom/Cargo.toml new file mode 100644 index 00000000000..46bbf7c7fe4 --- /dev/null +++ b/rust/qom/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name =3D "qom" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/QOM" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +common =3D { path =3D "../common" } +bql =3D { path =3D "../bql" } +migration =3D { path =3D "../migration" } +qemu_api_macros =3D { path =3D "../qemu-api-macros" } +util =3D { path =3D "../util" } + +[lints] +workspace =3D true diff --git a/rust/qom/build.rs b/rust/qom/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/qom/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/qom/meson.build b/rust/qom/meson.build new file mode 100644 index 00000000000..84a65cb737e --- /dev/null +++ b/rust/qom/meson.build @@ -0,0 +1,43 @@ +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_qom_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common, +) + +_qom_rs =3D static_library( + 'qom', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/prelude.rs', + 'src/qom.rs', + ], + {'.': _qom_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + link_with: [_bql_rs, _migration_rs], + dependencies: [common_rs, qemu_api_macros], +) + +qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ap= i_macros, qom]) + +# Doctests are essentially integration tests, so they need the same depend= encies. +# Note that running them requires the object files for C code, so place th= em +# in a separate suite that is run by the "build" CI jobs rather than "chec= k". +rust.doctest('rust-qom-rs-doctests', + _qom_rs, + protocol: 'rust', + dependencies: qom_rs, + suite: ['doc', 'rust']) diff --git a/rust/qom/src/bindings.rs b/rust/qom/src/bindings.rs new file mode 100644 index 00000000000..9ffff12cded --- /dev/null +++ b/rust/qom/src/bindings.rs @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); diff --git a/rust/qom/src/lib.rs b/rust/qom/src/lib.rs new file mode 100644 index 00000000000..204c6fea2ff --- /dev/null +++ b/rust/qom/src/lib.rs @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod bindings; + +// preserve one-item-per-"use" syntax, it is clearer +// for prelude-like modules +#[rustfmt::skip] +pub mod prelude; + +mod qom; +pub use qom::*; diff --git a/rust/qom/src/prelude.rs b/rust/qom/src/prelude.rs new file mode 100644 index 00000000000..00a60959771 --- /dev/null +++ b/rust/qom/src/prelude.rs @@ -0,0 +1,12 @@ +//! Traits and essential types intended for blanket imports. + +pub use crate::qom::InterfaceType; +pub use crate::qom::IsA; +pub use crate::qom::Object; +pub use crate::qom::ObjectCast; +pub use crate::qom::ObjectClassMethods; +pub use crate::qom::ObjectDeref; +pub use crate::qom::ObjectMethods; +pub use crate::qom::ObjectType; + +pub use crate::qom_isa; diff --git a/rust/qemu-api/src/qom.rs b/rust/qom/src/qom.rs similarity index 99% rename from rust/qemu-api/src/qom.rs rename to rust/qom/src/qom.rs index 032701af652..3ea1ad9c5be 100644 --- a/rust/qemu-api/src/qom.rs +++ b/rust/qom/src/qom.rs @@ -101,7 +101,6 @@ ptr::NonNull, }; =20 -pub use bindings::ObjectClass; use common::Opaque; use migration::impl_vmstate_pointer; =20 @@ -109,6 +108,7 @@ self, object_class_dynamic_cast, object_dynamic_cast, object_get_class= , object_get_typename, object_new, object_ref, object_unref, TypeInfo, }; +pub use crate::bindings::{type_register_static, ObjectClass}; =20 /// A safe wrapper around [`bindings::Object`]. #[repr(transparent)] @@ -146,7 +146,7 @@ macro_rules! qom_isa { $( // SAFETY: it is the caller responsibility to have $parent as = the // first field - unsafe impl $crate::qom::IsA<$parent> for $struct {} + unsafe impl $crate::IsA<$parent> for $struct {} =20 impl AsRef<$parent> for $struct { fn as_ref(&self) -> &$parent { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751727; cv=none; d=zohomail.com; s=zohoarc; b=QdEf8GwxnGyzgTRXEcAq95rn8WNK0aKM2TADJnnFtW02jFZ3X4rV5RenVr7OJhFK8pq+dFPdsOnFdLjwVHKkJ4x1J5ipi+GOmGCDeAdyz9A8JpJnGtNT5NzmH8d5mRkh20lSlv9aZI3w/1C9V45yw1lWMI2/DZfW7UKRNlTzkOk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751727; 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=MgxPLlDroWhRn3BSQjwfdEkrCc5qOstwikDJUyq/f9Q=; b=XuptQIMRgnK6jqBuxt4HPgOAtRRNkdb6LOyYKG+STG5jr9N0qPNp56qNMoOfIG/HIsWg2SfXJxLGNICCajpyaxY65b2en6Lgj4LdXbal6kT77xd5lH2XcYocyxXetCheCDxIyY0NbwW60IUbcCFioeJMDTs3Df/FnaQFLilYaE0= 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 1757751727585150.19620579924094; Sat, 13 Sep 2025 01:22:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMq-0001Ck-M0; Sat, 13 Sep 2025 04:12: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 1uxLMM-00009Y-Bz for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:52 -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 1uxLMJ-000586-At for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:50 -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-662-N40LqTehOU2wLWd0Yzc6pQ-1; Sat, 13 Sep 2025 04:11:43 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3df3e935ec8so1352011f8f.0 for ; Sat, 13 Sep 2025 01:11:43 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e84de17f9bsm2224963f8f.49.2025.09.13.01.11.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751106; 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=MgxPLlDroWhRn3BSQjwfdEkrCc5qOstwikDJUyq/f9Q=; b=g1WBxAqY1hgnke2kmKQnY4g7nxprRIiL/gCPQKsv35DQzgN8tpP2peFvmSgOGOWWttYZOP 66Imt6ZqfqkA7LH3WG7F3vYnHKhRtQ5nIcEcLfgE3/AElEWoF6w8xFgkHLPVuDFvA/M0T2 w3eu7yzp/M9c1XB39IMimqvSfkLPagQ= X-MC-Unique: N40LqTehOU2wLWd0Yzc6pQ-1 X-Mimecast-MFC-AGG-ID: N40LqTehOU2wLWd0Yzc6pQ_1757751103 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751102; x=1758355902; 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=MgxPLlDroWhRn3BSQjwfdEkrCc5qOstwikDJUyq/f9Q=; b=SOB0bMeKjn+dL5FKYRorubhmOAdGCXfH84SaiS57qFSFQcFUoz6lMN3Su/LuDS4K3f L8tL/hq8o7DcRLlAijKqZ05iPRkmUmWcR4OgoGiJZDiMM/HgcAI1Y+HgdAoBrT/mA24B ou8yOB/C65Vrfw6cgDSj2OWPHElFYOViN2uqKX7dhpqc0013xMuvwT4EHrzz/IucY4oV niZRELiLrSjkpyfMX75Nn+Dbz5oT+8DsUloUe7pOGn7ZTFBpjvSPcyxl4BiHDZAxDaMe viahMUBTBYin2OnQ5QBZiGkE3pG55zijBNlhQksYGOM5rhHMGThKklgWm8LrrXWo8ZZX bhng== X-Gm-Message-State: AOJu0Ywopn2tmcKyyR0P2SHL44pN+8o365c1dsvC3qwsjMyvp1kNzk3Y QEK5E0JYu0yfZHb7tqU9VDozTXUKOuxq64dFgKdCF1E2U7g29G3MyXDKuU50h8jShc8rVJxcXIU 5k0VWDcocJoQi8Syp8GVS/MrNeWwrEuID4GN5wvrqwF+Wm1ZOSuCJSVGbnpIo7Go4hE/8YiOkM3 9NO6DPV1E4JJuwwLamsAYyvjyuUqKTzlQ9WYMrXc57 X-Gm-Gg: ASbGnctWnj94ms3Yfw965BLFYRG574O7H7eCfER9uwZ6b6uDZW2ijnoJR9M2RV0WrgH 5VcmMb6AtkSAbqnWJfeBheE/ubaLGPl5eCHijJjGFiHvv+0WWdZLKlRBC6CfIyEj+T4WNawcs6h 64358acwlFoRKfJTT88po2w2/HSJd7oYNPImDwyPepYNHb5KvpP9yo+pjcZ9mzp/nbP1YQnq7rE hGd9AdJvhloO4GlGU2pEOR2hCVnNVsWGGxrx4vDEUJGFqxANfflBoNN0dZzv4zXe/t03tbpoKCg gigV2amcEvOjKW4ZXT46CZOB1S1Fia5Ov6WWY17/uFvYUNRkwHKUHcbkmOerfUxLmC52uP0XaPM MyqQEb0EHm/9Reg8BYOwMv3Z4cMBoANMshIX2E5Clezo= X-Received: by 2002:a05:6000:230c:b0:3e3:f89:ea31 with SMTP id ffacd0b85a97d-3e765a3e45dmr5133044f8f.61.1757751102090; Sat, 13 Sep 2025 01:11:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFYOvtXhW5fEwW5yGGQ30KmujXlzZNQVV19zbZkovXPVG5z+FTiF9nghieuo/KeKwE8nF/2ig== X-Received: by 2002:a05:6000:230c:b0:3e3:f89:ea31 with SMTP id ffacd0b85a97d-3e765a3e45dmr5133008f8f.61.1757751101448; Sat, 13 Sep 2025 01:11:41 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 41/61] rust: split "chardev" crate Date: Sat, 13 Sep 2025 10:09:22 +0200 Message-ID: <20250913080943.11710-42-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751729836116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-14-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/chardev/wrapper.h | 28 ++++++++++++++++ rust/qemu-api/wrapper.h | 2 -- rust/Cargo.lock | 14 ++++++++ rust/chardev/Cargo.toml | 24 +++++++++++++ rust/chardev/build.rs | 1 + rust/chardev/meson.build | 41 +++++++++++++++++++++++ rust/chardev/src/bindings.rs | 36 ++++++++++++++++++++ rust/{qemu-api =3D> chardev}/src/chardev.rs | 0 rust/chardev/src/lib.rs | 6 ++++ rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 2 +- rust/meson.build | 1 + rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 9 +++-- rust/qemu-api/src/bindings.rs | 9 +---- rust/qemu-api/src/lib.rs | 1 - rust/qemu-api/src/qdev.rs | 6 ++-- 19 files changed, 164 insertions(+), 20 deletions(-) create mode 100644 rust/chardev/wrapper.h create mode 100644 rust/chardev/Cargo.toml create mode 120000 rust/chardev/build.rs create mode 100644 rust/chardev/meson.build create mode 100644 rust/chardev/src/bindings.rs rename rust/{qemu-api =3D> chardev}/src/chardev.rs (100%) create mode 100644 rust/chardev/src/lib.rs diff --git a/MAINTAINERS b/MAINTAINERS index c7bd02aef16..cac6dcdc658 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3516,6 +3516,7 @@ Rust M: Manos Pitsidianakis S: Maintained F: rust/bql/ +F: rust/chardev/ F: rust/common/ F: rust/migration/ F: rust/qemu-api diff --git a/rust/chardev/wrapper.h b/rust/chardev/wrapper.h new file mode 100644 index 00000000000..65ede6ea6d7 --- /dev/null +++ b/rust/chardev/wrapper.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "chardev/char-fe.h" +#include "chardev/char-serial.h" diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h index b99df9f568a..07dbc9987a8 100644 --- a/rust/qemu-api/wrapper.h +++ b/rust/qemu-api/wrapper.h @@ -52,13 +52,11 @@ typedef enum memory_order { #include "system/system.h" #include "hw/sysbus.h" #include "system/memory.h" -#include "chardev/char-fe.h" #include "hw/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/irq.h" -#include "chardev/char-serial.h" #include "exec/memattrs.h" #include "system/address-spaces.h" #include "hw/char/pl011.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 442eadf08fa..ae852c55508 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -51,6 +51,18 @@ dependencies =3D [ "migration", ] =20 +[[package]] +name =3D "chardev" +version =3D "0.1.0" +dependencies =3D [ + "bql", + "common", + "migration", + "qemu_api_macros", + "qom", + "util", +] + [[package]] name =3D "common" version =3D "0.1.0" @@ -118,6 +130,7 @@ dependencies =3D [ "bilge-impl", "bits", "bql", + "chardev", "common", "migration", "qemu_api", @@ -163,6 +176,7 @@ name =3D "qemu_api" version =3D "0.1.0" dependencies =3D [ "bql", + "chardev", "common", "migration", "qemu_api_macros", diff --git a/rust/chardev/Cargo.toml b/rust/chardev/Cargo.toml new file mode 100644 index 00000000000..7df9c677fc7 --- /dev/null +++ b/rust/chardev/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name =3D "chardev" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/chardev" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +common =3D { path =3D "../common" } +bql =3D { path =3D "../bql" } +migration =3D { path =3D "../migration" } +qom =3D { path =3D "../qom" } +util =3D { path =3D "../util" } +qemu_api_macros =3D { path =3D "../qemu-api-macros" } + +[lints] +workspace =3D true diff --git a/rust/chardev/build.rs b/rust/chardev/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/chardev/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build new file mode 100644 index 00000000000..5d333e232bd --- /dev/null +++ b/rust/chardev/meson.build @@ -0,0 +1,41 @@ +c_enums =3D [ + 'QEMUChrEvent', +] +_chardev_bindgen_args =3D [] +foreach enum : c_enums + _chardev_bindgen_args +=3D ['--rustified-enum', enum] +endforeach + +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_chardev_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common + _chardev_bindgen_args, +) + +_chardev_rs =3D static_library( + 'chardev', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/chardev.rs', + ], + {'.': _chardev_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], + dependencies: [common_rs, qemu_api_macros], +) + +chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [qemu_api_macros, chardev, qemuutil]) diff --git a/rust/chardev/src/bindings.rs b/rust/chardev/src/bindings.rs new file mode 100644 index 00000000000..2d98026d627 --- /dev/null +++ b/rust/chardev/src/bindings.rs @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +use common::Zeroable; + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); + +// SAFETY: these are implemented in C; the bindings need to assert that the +// BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. +// When bindings for character devices are introduced, this can be +// moved to the Opaque<> wrapper in src/chardev.rs. +unsafe impl Send for CharBackend {} +unsafe impl Sync for CharBackend {} + +unsafe impl Zeroable for CharBackend {} diff --git a/rust/qemu-api/src/chardev.rs b/rust/chardev/src/chardev.rs similarity index 100% rename from rust/qemu-api/src/chardev.rs rename to rust/chardev/src/chardev.rs diff --git a/rust/chardev/src/lib.rs b/rust/chardev/src/lib.rs new file mode 100644 index 00000000000..2e549f99d91 --- /dev/null +++ b/rust/chardev/src/lib.rs @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod bindings; + +mod chardev; +pub use chardev::*; diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index da89f78727f..f7ad5f8e08f 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -21,6 +21,7 @@ util =3D { path =3D "../../../util" } bql =3D { path =3D "../../../bql" } migration =3D { path =3D "../../../migration" } qom =3D { path =3D "../../../qom" } +chardev =3D { path =3D "../../../chardev" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index af9393c9da9..aaf911c5f42 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -14,6 +14,7 @@ _libpl011_rs =3D static_library( bql_rs, qemu_api_macros, qom_rs, + chardev_rs, ], ) =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 63651b9dcdf..bc64061fb39 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -5,13 +5,13 @@ use std::{ffi::CStr, mem::size_of}; =20 use bql::BqlRefCell; +use chardev::{CharBackend, Chardev, Event}; use common::{static_assert, uninit_field_mut}; use migration::{ self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, vmstate_subsections, vmstate_unused, VMStateDescription, VMStateDescri= ptionBuilder, }; use qemu_api::{ - chardev::{CharBackend, Chardev, Event}, irq::{IRQState, InterruptSource}, memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, diff --git a/rust/meson.build b/rust/meson.build index 043603d4169..4d9e2912232 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -29,6 +29,7 @@ subdir('util') subdir('migration') subdir('bql') subdir('qom') +subdir('chardev') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 9d11becb284..3bf2dafa6df 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -15,6 +15,7 @@ rust-version.workspace =3D true =20 [dependencies] common =3D { path =3D "../common" } +chardev =3D { path =3D "../chardev" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 11e43bb6468..a47f178b698 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -7,7 +7,6 @@ c_enums =3D [ 'GpioPolarity', 'MachineInitPhase', 'MemoryDeviceInfoKind', - 'QEMUChrEvent', 'ResetType', 'device_endian', ] @@ -23,9 +22,10 @@ foreach enum : c_bitfields endforeach =20 blocked_type =3D [ + 'Chardev', + 'Error', 'ObjectClass', 'VMStateDescription', - 'Error', ] foreach type: blocked_type _qemu_api_bindgen_args +=3D ['--blocklist-type', type] @@ -53,7 +53,6 @@ _qemu_api_rs =3D static_library( [ 'src/lib.rs', 'src/bindings.rs', - 'src/chardev.rs', 'src/irq.rs', 'src/memory.rs', 'src/prelude.rs', @@ -65,8 +64,8 @@ _qemu_api_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, bql_rs, common_rs, foreign_rs, libc_rs, migrat= ion_rs, qemu_api_macros, - qom_rs, util_rs, hwcore, chardev], + dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, lib= c_rs, migration_rs, qemu_api_macros, + qom_rs, util_rs, hwcore], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index 525f136ae2b..526bcf8e31b 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -20,6 +20,7 @@ =20 //! `bindgen`-generated declarations. =20 +use chardev::bindings::Chardev; use common::Zeroable; use migration::bindings::VMStateDescription; use qom::bindings::ObjectClass; @@ -31,13 +32,6 @@ #[cfg(not(MESON))] include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); =20 -// SAFETY: these are implemented in C; the bindings need to assert that the -// BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. -// When bindings for character devices are introduced, this can be -// moved to the Opaque<> wrapper in src/chardev.rs. -unsafe impl Send for CharBackend {} -unsafe impl Sync for CharBackend {} - // SAFETY: this is a pure data struct unsafe impl Send for CoalescedMemoryRange {} unsafe impl Sync for CoalescedMemoryRange {} @@ -59,4 +53,3 @@ unsafe impl Zeroable for crate::bindings::MemoryRegionOps= __bindgen_ty_1 {} unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_2 {} unsafe impl Zeroable for crate::bindings::MemoryRegionOps {} unsafe impl Zeroable for crate::bindings::MemTxAttrs {} -unsafe impl Zeroable for crate::bindings::CharBackend {} diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 0541050e667..d96096899d0 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -13,7 +13,6 @@ #[rustfmt::skip] pub mod prelude; =20 -pub mod chardev; pub mod irq; pub mod memory; pub mod qdev; diff --git a/rust/qemu-api/src/qdev.rs b/rust/qemu-api/src/qdev.rs index 3daf9dda2b5..7efc796f502 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/qemu-api/src/qdev.rs @@ -10,6 +10,7 @@ }; =20 pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; +use chardev::Chardev; use common::{callbacks::FnCall, Opaque}; use migration::{impl_vmstate_c_struct, VMStateDescription}; use qom::{prelude::*, ObjectClass, ObjectImpl, Owned, ParentInit}; @@ -17,7 +18,6 @@ =20 use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, - chardev::Chardev, irq::InterruptSource, }; =20 @@ -137,8 +137,8 @@ unsafe impl QDevProp for u64 { const VALUE: *const bindings::PropertyInfo =3D unsafe { &bindings::qde= v_prop_uint64 }; } =20 -/// Use [`bindings::qdev_prop_chr`] for [`crate::chardev::CharBackend`]. -unsafe impl QDevProp for crate::chardev::CharBackend { +/// Use [`bindings::qdev_prop_chr`] for [`chardev::CharBackend`]. +unsafe impl QDevProp for chardev::CharBackend { const VALUE: *const bindings::PropertyInfo =3D unsafe { &bindings::qde= v_prop_chr }; } =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751801; cv=none; d=zohomail.com; s=zohoarc; b=mRJeM0AoKBLibLj0Iq8lB8SF5ma3hGGFTjWliINbPRUv32j9sHkFlD5tQ76q0q+AadbHUPkmdZ4BCZ+0lUnT9wIP6YUPm9gkP4zumzN+PQjufxOdErjb3kcHlcGM23FWefVlUvsnNS3+2o87kju0mYClGkxUcDZ6GerfH5YbVRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751801; 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=oIfvFGk4qan/Mo6Ocp8y4g8+xo8GQK64aMfGU1lbIlo=; b=CZG26AnOEwjtvA/8Ejn6ieihCWWDDrCj0Kch1KkyTwf/KAWFdYra6TZbT1dzmlFBTgIGUa0vtpb+F34lsZ0yd96LtBMZzJ8PSFAg2NT77Aw73+XuFBMQidjUz0VhAawpC7P8I/zxe/4U48BwDzTMAYFGDQuLSMwfwnRgYjhBz88= 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 1757751801571211.35625378287466; Sat, 13 Sep 2025 01:23:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMX-0000VZ-9R; Sat, 13 Sep 2025 04:12:01 -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 1uxLMO-0000Bc-RY for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:53 -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 1uxLML-00058X-Ha for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:52 -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-686-KLdho2shOviquZx0dGhGsg-1; Sat, 13 Sep 2025 04:11:47 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e8ef75b196so117069f8f.2 for ; Sat, 13 Sep 2025 01:11:46 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e76077584esm9606312f8f.11.2025.09.13.01.11.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751108; 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=oIfvFGk4qan/Mo6Ocp8y4g8+xo8GQK64aMfGU1lbIlo=; b=BxqENhMv6mjWcw5fyItn7bnX20I0utOSAHOn/jp2edb7Rc7jrlJ9tKm2x+iMhKJLKFbnyA NqYcbgd7cmw7aXJwUXuZMZdyowlOI18qhKUuN0SFv1pMPPrmYWJWyFKLxMkShY94rdaLxJ h2/M9O/ekmaQaD1qvhLTdjRQjxiLmGE= X-MC-Unique: KLdho2shOviquZx0dGhGsg-1 X-Mimecast-MFC-AGG-ID: KLdho2shOviquZx0dGhGsg_1757751106 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751105; x=1758355905; 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=oIfvFGk4qan/Mo6Ocp8y4g8+xo8GQK64aMfGU1lbIlo=; b=qeIUcb09pzWLBRTAriT9J52j/WLDhoZpUCWqE5ySm2CQxVsbLR18A2jSyyxQKeCEu0 BNPiRV681yaIJIhmm6XhSLUyaUFcvNwa1qwlwlkeXJKdI0Rf1qwPtGF5yX9/M+LviJke 2aUcQxxe9Hr6EYfqZDt6OoJcroISGk1O8KYzP0tuI3AopDhmqPjaV8a/ldUc1WDA5Qu/ S2c7cOh1vUgZ+MmcXWO52+rtXoaUMa9tqhoxyA7A0+oMYLs2aGu1kvVMuHnzEx9egVnz gHxx1Ab1o3TLb81/3zZ+jJo/KzkmVQ5PaxQXjPfe9/OFJIFhxN26LczlvwCIUA7eZENv OinQ== X-Gm-Message-State: AOJu0YyqJ77MT3qYq49++KyoE+MfOmjpig5Bspg/EJYjtJZpiKqyJ72P 2X7Ypd/9QWWFjubuFpTp8+2syJNaC7sEpl048KN8EuSBFX2M+TgUOhXfVg/tcqY8ZYK9zelHnXy yNsyfMDjSAYCneqTf9ZhnXdQO6iC9mFzEAXQlFjktJXpq0QSGJkLqv31k3lW1umuWlGuRJbpD39 /Ys/kNnYz3KpTED/zwFDh+179uOUkVmE9/j5VUWdwC X-Gm-Gg: ASbGncuBKg8+LQ68YikVkwBvCs5tAiuYu0YY4IDaJI4om6/BOxi4qy0aRxRSPpCAOBU oRW9/oLGksJsPYftgLuJoAWtXcOVOKvu/Hq9f08Xp0tS7FhjQ3COm2cJJwHVKRRB+br7rfWtT4X E/+sCtT4PhY9EeYr2DtfHTjKHi5Ynf2LXl0Qrf9+OzrKYTL/BB8MCGQ4JNOxjboSUKPK0/tbjJk 79egeYPqf4aUhk4S4wCF4lig4/nFhASQPE8hA2BTWR0+7TuIMJtAXJIDFEpW+UZp/dHqJl2O1gP Mytxcbjli8PjDT+m8IZSIKEBDF7O5Dn98qLjP6z32Zn/mYdhnfWqg1oymWAIzdg1uPFiHmR7JPO b6NGbvXH2eWhUlBFU5s4S+q8y1H4NXJETqUbM61a2M5Y= X-Received: by 2002:a05:6000:208a:b0:3e7:48ab:7660 with SMTP id ffacd0b85a97d-3e7659e1746mr5575179f8f.27.1757751104616; Sat, 13 Sep 2025 01:11:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGejjOd+tvEHduwW1k3OieaDrmrbEfTNN7bEY/y5x+jC41lb04bBDfyCR7Xjur7q/8ynLWmIA== X-Received: by 2002:a05:6000:208a:b0:3e7:48ab:7660 with SMTP id ffacd0b85a97d-3e7659e1746mr5575148f8f.27.1757751104061; Sat, 13 Sep 2025 01:11:44 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 42/61] rust: split "system" crate Date: Sat, 13 Sep 2025 10:09:23 +0200 Message-ID: <20250913080943.11710-43-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751802953116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-15-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/qemu-api/wrapper.h | 3 -- rust/system/wrapper.h | 29 +++++++++++++++++ rust/Cargo.lock | 13 ++++++++ rust/Cargo.toml | 1 + rust/bql/src/cell.rs | 5 ++- rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 12 +++---- rust/meson.build | 1 + rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 7 +++-- rust/qemu-api/src/bindings.rs | 14 +-------- rust/qemu-api/src/lib.rs | 1 - rust/qemu-api/src/sysbus.rs | 2 +- rust/system/Cargo.toml | 22 +++++++++++++ rust/system/build.rs | 1 + rust/system/meson.build | 42 +++++++++++++++++++++++++ rust/system/src/bindings.rs | 41 ++++++++++++++++++++++++ rust/system/src/lib.rs | 6 ++++ rust/{qemu-api =3D> system}/src/memory.rs | 2 +- 24 files changed, 177 insertions(+), 33 deletions(-) create mode 100644 rust/system/wrapper.h create mode 100644 rust/system/Cargo.toml create mode 120000 rust/system/build.rs create mode 100644 rust/system/meson.build create mode 100644 rust/system/src/bindings.rs create mode 100644 rust/system/src/lib.rs rename rust/{qemu-api =3D> system}/src/memory.rs (99%) diff --git a/MAINTAINERS b/MAINTAINERS index cac6dcdc658..432ed513545 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3523,6 +3523,7 @@ F: rust/qemu-api F: rust/qemu-api-macros F: rust/qom/ F: rust/rustfmt.toml +F: rust/system/ F: rust/util/ F: scripts/get-wraps-from-cargo-registry.py =20 diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h index 07dbc9987a8..564733b9035 100644 --- a/rust/qemu-api/wrapper.h +++ b/rust/qemu-api/wrapper.h @@ -49,14 +49,11 @@ typedef enum memory_order { =20 #include "qemu/osdep.h" #include "qemu-io.h" -#include "system/system.h" #include "hw/sysbus.h" -#include "system/memory.h" #include "hw/clock.h" #include "hw/qdev-clock.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/irq.h" #include "exec/memattrs.h" -#include "system/address-spaces.h" #include "hw/char/pl011.h" diff --git a/rust/system/wrapper.h b/rust/system/wrapper.h new file mode 100644 index 00000000000..48abde85052 --- /dev/null +++ b/rust/system/wrapper.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "system/system.h" +#include "system/memory.h" +#include "system/address-spaces.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index ae852c55508..e6b75f30bef 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -95,6 +95,7 @@ dependencies =3D [ "qemu_api", "qemu_api_macros", "qom", + "system", "util", ] =20 @@ -136,6 +137,7 @@ dependencies =3D [ "qemu_api", "qemu_api_macros", "qom", + "system", "util", ] =20 @@ -181,6 +183,7 @@ dependencies =3D [ "migration", "qemu_api_macros", "qom", + "system", "util", ] =20 @@ -224,6 +227,16 @@ dependencies =3D [ "unicode-ident", ] =20 +[[package]] +name =3D "system" +version =3D "0.1.0" +dependencies =3D [ + "common", + "qemu_api_macros", + "qom", + "util", +] + [[package]] name =3D "unicode-ident" version =3D "1.0.12" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 0516c16591c..8e210d277a2 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -8,6 +8,7 @@ members =3D [ "qemu-api-macros", "qemu-api", "qom", + "system", "hw/char/pl011", "hw/timer/hpet", "util", diff --git a/rust/bql/src/cell.rs b/rust/bql/src/cell.rs index 25007427edc..24ab294b60d 100644 --- a/rust/bql/src/cell.rs +++ b/rust/bql/src/cell.rs @@ -77,9 +77,8 @@ //! //! ```ignore //! # use bql::BqlRefCell; -//! # use qemu_api::prelude::*; -//! # use qemu_api::{irq::InterruptSource, irq::IRQState}; -//! # use qemu_api::{sysbus::SysBusDevice, qom::Owned, qom::ParentField}; +//! # use qom::{Owned, ParentField}; +//! # use system::{InterruptSource, IRQState, SysBusDevice}; //! # const N_GPIOS: usize =3D 8; //! # struct PL061Registers { /* ... */ } //! # unsafe impl ObjectType for PL061State { diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index f7ad5f8e08f..e4b1c3f1eb8 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -22,6 +22,7 @@ bql =3D { path =3D "../../../bql" } migration =3D { path =3D "../../../migration" } qom =3D { path =3D "../../../qom" } chardev =3D { path =3D "../../../chardev" } +system =3D { path =3D "../../../system" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index aaf911c5f42..fae6e1b9c9d 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -15,6 +15,7 @@ _libpl011_rs =3D static_library( qemu_api_macros, qom_rs, chardev_rs, + system_rs, ], ) =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index bc64061fb39..c65db5a5174 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -13,12 +13,12 @@ }; use qemu_api::{ irq::{IRQState, InterruptSource}, - memory::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }, prelude::*, qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, sysbus::{SysBusDevice, SysBusDeviceImpl}, }; use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; +use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }; use util::{log::Log, log_mask_ln}; =20 use crate::registers::{self, Interrupt, RegisterOffset}; diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 19456ec72b5..a95b1271c64 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -16,6 +16,7 @@ util =3D { path =3D "../../../util" } migration =3D { path =3D "../../../migration" } bql =3D { path =3D "../../../bql" } qom =3D { path =3D "../../../qom" } +system =3D { path =3D "../../../system" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 50ccdee4a93..c4ffe020f6b 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -11,6 +11,7 @@ _libhpet_rs =3D static_library( bql_rs, qemu_api_macros, qom_rs, + system_rs, ], ) =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 404569aa2de..841c2ba3375 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -17,19 +17,17 @@ VMStateDescription, VMStateDescriptionBuilder, }; use qemu_api::{ - bindings::{ - address_space_memory, address_space_stl_le, qdev_prop_bit, qdev_pr= op_bool, - qdev_prop_uint32, qdev_prop_usize, - }, + bindings::{qdev_prop_bit, qdev_prop_bool, qdev_prop_uint32, qdev_prop_= usize}, irq::InterruptSource, - memory::{ - hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEM= TXATTRS_UNSPECIFIED, - }, prelude::*, qdev::{DeviceImpl, DeviceState, Property, ResetType, ResettablePhasesI= mpl}, sysbus::{SysBusDevice, SysBusDeviceImpl}, }; use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; +use system::{ + bindings::{address_space_memory, address_space_stl_le, hwaddr}, + MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder, MEMTXATTRS_UNSP= ECIFIED, +}; use util::timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}; =20 use crate::fw_cfg::HPETFwConfig; diff --git a/rust/meson.build b/rust/meson.build index 4d9e2912232..d8b71f55061 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -29,6 +29,7 @@ subdir('util') subdir('migration') subdir('bql') subdir('qom') +subdir('system') subdir('chardev') subdir('qemu-api') =20 diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 3bf2dafa6df..2884c1d460b 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -20,6 +20,7 @@ migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } qom =3D { path =3D "../qom" } +system =3D { path =3D "../system" } qemu_api_macros =3D { path =3D "../qemu-api-macros" } =20 [lints] diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index a47f178b698..92e2581a64e 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -8,7 +8,6 @@ c_enums =3D [ 'MachineInitPhase', 'MemoryDeviceInfoKind', 'ResetType', - 'device_endian', ] _qemu_api_bindgen_args =3D [] foreach enum : c_enums @@ -24,8 +23,11 @@ endforeach blocked_type =3D [ 'Chardev', 'Error', + 'MemTxAttrs', + 'MemoryRegion', 'ObjectClass', 'VMStateDescription', + 'device_endian', ] foreach type: blocked_type _qemu_api_bindgen_args +=3D ['--blocklist-type', type] @@ -54,7 +56,6 @@ _qemu_api_rs =3D static_library( 'src/lib.rs', 'src/bindings.rs', 'src/irq.rs', - 'src/memory.rs', 'src/prelude.rs', 'src/qdev.rs', 'src/sysbus.rs', @@ -65,7 +66,7 @@ _qemu_api_rs =3D static_library( rust_abi: 'rust', rust_args: _qemu_api_cfg, dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, lib= c_rs, migration_rs, qemu_api_macros, - qom_rs, util_rs, hwcore], + qom_rs, system_rs, util_rs, hwcore], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index 526bcf8e31b..63b805c76e4 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -24,6 +24,7 @@ use common::Zeroable; use migration::bindings::VMStateDescription; use qom::bindings::ObjectClass; +use system::bindings::{device_endian, MemTxAttrs, MemoryRegion}; use util::bindings::Error; =20 #[cfg(MESON)] @@ -32,15 +33,6 @@ #[cfg(not(MESON))] include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); =20 -// SAFETY: this is a pure data struct -unsafe impl Send for CoalescedMemoryRange {} -unsafe impl Sync for CoalescedMemoryRange {} - -// SAFETY: these are constants and vtables; the Send and Sync requirements -// are deferred to the unsafe callbacks that they contain -unsafe impl Send for MemoryRegionOps {} -unsafe impl Sync for MemoryRegionOps {} - unsafe impl Send for Property {} unsafe impl Sync for Property {} =20 @@ -49,7 +41,3 @@ unsafe impl Sync for TypeInfo {} =20 unsafe impl Zeroable for crate::bindings::Property__bindgen_ty_1 {} unsafe impl Zeroable for crate::bindings::Property {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_1 {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps__bindgen_ty_2 {} -unsafe impl Zeroable for crate::bindings::MemoryRegionOps {} -unsafe impl Zeroable for crate::bindings::MemTxAttrs {} diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index d96096899d0..8d574404789 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -14,7 +14,6 @@ pub mod prelude; =20 pub mod irq; -pub mod memory; pub mod qdev; pub mod sysbus; =20 diff --git a/rust/qemu-api/src/sysbus.rs b/rust/qemu-api/src/sysbus.rs index b883d7eaf18..dda71ebda70 100644 --- a/rust/qemu-api/src/sysbus.rs +++ b/rust/qemu-api/src/sysbus.rs @@ -9,11 +9,11 @@ pub use bindings::SysBusDeviceClass; use common::Opaque; use qom::{prelude::*, Owned}; +use system::MemoryRegion; =20 use crate::{ bindings, irq::{IRQState, InterruptSource}, - memory::MemoryRegion, qdev::{DeviceImpl, DeviceState}, }; =20 diff --git a/rust/system/Cargo.toml b/rust/system/Cargo.toml new file mode 100644 index 00000000000..6803895e080 --- /dev/null +++ b/rust/system/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name =3D "system" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/system" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +common =3D { path =3D "../common" } +qom =3D { path =3D "../qom" } +util =3D { path =3D "../util" } +qemu_api_macros =3D { path =3D "../qemu-api-macros" } + +[lints] +workspace =3D true diff --git a/rust/system/build.rs b/rust/system/build.rs new file mode 120000 index 00000000000..71a3167885c --- /dev/null +++ b/rust/system/build.rs @@ -0,0 +1 @@ +../util/build.rs \ No newline at end of file diff --git a/rust/system/meson.build b/rust/system/meson.build new file mode 100644 index 00000000000..ae9b932d29d --- /dev/null +++ b/rust/system/meson.build @@ -0,0 +1,42 @@ +c_enums =3D [ + 'device_endian', +] +_system_bindgen_args =3D [] +foreach enum : c_enums + _system_bindgen_args +=3D ['--rustified-enum', enum] +endforeach + +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_system_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common + _system_bindgen_args, +) + +_system_rs =3D static_library( + 'system', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/memory.rs', + ], + {'.': _system_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], + dependencies: [common_rs, qemu_api_macros], +) + +system_rs =3D declare_dependency(link_with: [_system_rs], + dependencies: [qemu_api_macros, hwcore]) diff --git a/rust/system/src/bindings.rs b/rust/system/src/bindings.rs new file mode 100644 index 00000000000..43edd98807a --- /dev/null +++ b/rust/system/src/bindings.rs @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +use common::Zeroable; + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); + +// SAFETY: these are constants and vtables; the Send and Sync requirements +// are deferred to the unsafe callbacks that they contain +unsafe impl Send for MemoryRegionOps {} +unsafe impl Sync for MemoryRegionOps {} + +// SAFETY: this is a pure data struct +unsafe impl Send for CoalescedMemoryRange {} +unsafe impl Sync for CoalescedMemoryRange {} + +unsafe impl Zeroable for MemoryRegionOps__bindgen_ty_1 {} +unsafe impl Zeroable for MemoryRegionOps__bindgen_ty_2 {} +unsafe impl Zeroable for MemoryRegionOps {} +unsafe impl Zeroable for MemTxAttrs {} diff --git a/rust/system/src/lib.rs b/rust/system/src/lib.rs new file mode 100644 index 00000000000..aafe9a866c9 --- /dev/null +++ b/rust/system/src/lib.rs @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub mod bindings; + +mod memory; +pub use memory::*; diff --git a/rust/qemu-api/src/memory.rs b/rust/system/src/memory.rs similarity index 99% rename from rust/qemu-api/src/memory.rs rename to rust/system/src/memory.rs index ecbbd9b6046..29568ed7676 100644 --- a/rust/qemu-api/src/memory.rs +++ b/rust/system/src/memory.rs @@ -9,11 +9,11 @@ marker::PhantomData, }; =20 -pub use bindings::{hwaddr, MemTxAttrs}; use common::{callbacks::FnCall, uninit::MaybeUninitField, zeroable::Zeroab= le, Opaque}; use qom::prelude::*; =20 use crate::bindings::{self, device_endian, memory_region_init_io}; +pub use crate::bindings::{hwaddr, MemTxAttrs}; =20 pub struct MemoryRegionOps( bindings::MemoryRegionOps, --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751363; cv=none; d=zohomail.com; s=zohoarc; b=jR+uvtfvtb+5cF6nUL19XvXjVF5KKsz3V6zApc1fGhA6pOS1N04IZIUEzS1DYGmtP8Zj5pA/SDp285eLo3sT0PPu8ipHRtUXpZM2FhaULctD+XiGZIgxANlW4LN46CmPM4nJzZSiPHSUJOkYJLAVeKF5ek8koqvzK8JCflL9Vho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751363; 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=K+HmigdLDFVVTS/7vwTiW6bioj5BvOHUB4Yq/I+1rrI=; b=MVC4W1054SXeXbF1xnVxXAUe48Py7qryOzeg4qsZEJPCknX6j6nyP/CfFUiZzGNohjIW/KwqsRuXS/uRvT3JIuu4kvHcpq8IwHaOFHP9pTbH2sppFJnUu3rFJfxUQ1szkzX2W3mgvY9Z6bufvJ1HZhf5nyZqYjlnqCyHoYIcotw= 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 1757751363355840.438571454092; Sat, 13 Sep 2025 01:16:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMu-0001Y5-5e; Sat, 13 Sep 2025 04:12: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 1uxLMW-0000UC-9N for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:00 -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 1uxLMQ-00059T-LT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:00 -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-303-g6dVUqwwO62tNuLD1-OuWQ-1; Sat, 13 Sep 2025 04:11:49 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e5190bcba1so1791383f8f.2 for ; Sat, 13 Sep 2025 01:11:49 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e037c3cbdsm96140925e9.17.2025.09.13.01.11.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751113; 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=K+HmigdLDFVVTS/7vwTiW6bioj5BvOHUB4Yq/I+1rrI=; b=W0k/118Emws9bTcWdZkLEidEsURDbKU5xw9Snrt2MjhtWx8p62Ww9wrQtYAsnyRU5u6FBf QTFBBUL5XqHmXjeGUA67NgxchzVXMQQeJIXNc2reWOyzUUvFtmWqZSoT5KOv5V79Hc519V sXGokF4vYuBvwhgisYlxt/2H3O1bLGE= X-MC-Unique: g6dVUqwwO62tNuLD1-OuWQ-1 X-Mimecast-MFC-AGG-ID: g6dVUqwwO62tNuLD1-OuWQ_1757751108 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751108; x=1758355908; 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=K+HmigdLDFVVTS/7vwTiW6bioj5BvOHUB4Yq/I+1rrI=; b=LP1V4m+5M3wboEbOlrM5RJNtPMxGCqy64SxNXwZTuypNxK1EmCL5iDvYGjinKCmZXO PXFzqrWgDDckmIPylk09ltq01TdimWhOsNpQIPZn1FMWwdkNSCKB8ryLbiFPe3vaAh/v V8KqdgmrwD9lTvxFjWw/veSjeKO3RWBmmmvPb3HrGtls5oVxTngSD0SeNpedkjj48EW7 MbPuf4LRgLd4iKfPpP45LPp8CJ6iT/Is3nN06nEeUaxzHDi03sIHlheASCAKQTH/MRz7 sOJZHEfYU35hkJYxGv1IkwBqxSRCBlp2FzXBNIxB0lmm5s5veOVs79K2paK+fG7xMAa9 fCvg== X-Gm-Message-State: AOJu0YyhjG5s4NuMVDqJLfdvibBM/bLTtUzOJd0z+KZjwKaZ8lZkvF4P yVzB5GZ82YHcEOLfRnHdA40zwYRjLClPc+BMAfYBJcZ8vFFCKw9sB2ywuQ+NjnckQSznmIo8BgC jQLzGjXOuu41MIU8XqxM7TrZiIqsD28ppUG/mvjFy/Qm93fZAGz5qoVCRbmRbx3DxLkG6dEZz/P osr7XArbyuPbGroq0GwtkmF5hwciUqW1HOQuxvS7OH X-Gm-Gg: ASbGncuoL3MaAVf2aD3CZo+AD+kPEMEMy+Vxrpf0DSoLAva/zp3BcP39/nb0IH8vQq8 9HrcSS0rn+Pv0GzpVQl08X6qccrLIuO+bPt2ERgW8D5aHPvdFTWQbFVNo4c8R6VsfkavkYKIM+J ReaVMxL1Q88Nrv7lCFxtq9xHv03KJrbUXlUmTtlrWcLn/y85nCE5uix5ys1vdaxjIhBaKWD/Z39 BQV8HsKcm/3ticli/1TfKOT+xmifa24b03I7QmpvRZxvEAthJgNgiIrC3m7JK7IsLdrwi37eYXF bHLBD+UWneB5Sldo2TaUQYKkC2YT11wgvehWTUH2HxVjjwnA+q9EjyBGr+YZhP9rsFJOibvmx+3 6NyiZ65ZjJkVfhslRvBfoGCtmZq2FAX45X3AavsAPBa0= X-Received: by 2002:a5d:5f47:0:b0:3cd:edee:c7f8 with SMTP id ffacd0b85a97d-3e7659d3a84mr5197897f8f.29.1757751107352; Sat, 13 Sep 2025 01:11:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFuc4CoexhGDyqpgpeRepT8IjNOePta08pTIiZbvWX9iAG01QmGoa1bPJxm9ZfAG0m6p++6ww== X-Received: by 2002:a5d:5f47:0:b0:3cd:edee:c7f8 with SMTP id ffacd0b85a97d-3e7659d3a84mr5197857f8f.29.1757751106633; Sat, 13 Sep 2025 01:11:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 43/61] rust: split "hwcore" crate Date: Sat, 13 Sep 2025 10:09:24 +0200 Message-ID: <20250913080943.11710-44-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01 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: 1757751365791116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-16-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 1 + rust/hw/core/wrapper.h | 32 +++++++++ rust/qemu-api/wrapper.h | 6 -- rust/Cargo.lock | 17 +++++ rust/Cargo.toml | 1 + rust/bindings/src/lib.rs | 64 ++++++++++++++++++ rust/hw/char/pl011/Cargo.toml | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/char/pl011/src/device.rs | 10 ++- rust/hw/core/Cargo.toml | 26 ++++++++ rust/hw/core/build.rs | 1 + rust/hw/core/meson.build | 80 +++++++++++++++++++++++ rust/hw/core/src/bindings.rs | 41 ++++++++++++ rust/{qemu-api =3D> hw/core}/src/irq.rs | 0 rust/hw/core/src/lib.rs | 14 ++++ rust/{qemu-api =3D> hw/core}/src/qdev.rs | 2 +- rust/{qemu-api =3D> hw/core}/src/sysbus.rs | 0 rust/{qemu-api =3D> hw/core}/tests/tests.rs | 7 +- rust/hw/timer/hpet/Cargo.toml | 1 + rust/hw/timer/hpet/meson.build | 1 + rust/hw/timer/hpet/src/device.rs | 26 ++++---- rust/meson.build | 1 + rust/qemu-api-macros/src/lib.rs | 10 +-- rust/qemu-api-macros/src/tests.rs | 20 +++--- rust/qemu-api/Cargo.toml | 1 + rust/qemu-api/meson.build | 17 +---- rust/qemu-api/src/bindings.rs | 10 --- rust/qemu-api/src/lib.rs | 4 -- rust/qemu-api/src/prelude.rs | 4 -- 29 files changed, 318 insertions(+), 81 deletions(-) create mode 100644 rust/hw/core/wrapper.h create mode 100644 rust/bindings/src/lib.rs create mode 100644 rust/hw/core/Cargo.toml create mode 120000 rust/hw/core/build.rs create mode 100644 rust/hw/core/meson.build create mode 100644 rust/hw/core/src/bindings.rs rename rust/{qemu-api =3D> hw/core}/src/irq.rs (100%) create mode 100644 rust/hw/core/src/lib.rs rename rust/{qemu-api =3D> hw/core}/src/qdev.rs (99%) rename rust/{qemu-api =3D> hw/core}/src/sysbus.rs (100%) rename rust/{qemu-api =3D> hw/core}/tests/tests.rs (97%) diff --git a/MAINTAINERS b/MAINTAINERS index 432ed513545..92d575b535a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3518,6 +3518,7 @@ S: Maintained F: rust/bql/ F: rust/chardev/ F: rust/common/ +F: rust/hw/core/ F: rust/migration/ F: rust/qemu-api F: rust/qemu-api-macros diff --git a/rust/hw/core/wrapper.h b/rust/hw/core/wrapper.h new file mode 100644 index 00000000000..3bdbd1249e4 --- /dev/null +++ b/rust/hw/core/wrapper.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" + +#include "hw/sysbus.h" +#include "hw/clock.h" +#include "hw/qdev-clock.h" +#include "hw/qdev-properties.h" +#include "hw/qdev-properties-system.h" +#include "hw/irq.h" diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h index 564733b9035..7c9c20b14fe 100644 --- a/rust/qemu-api/wrapper.h +++ b/rust/qemu-api/wrapper.h @@ -49,11 +49,5 @@ typedef enum memory_order { =20 #include "qemu/osdep.h" #include "qemu-io.h" -#include "hw/sysbus.h" -#include "hw/clock.h" -#include "hw/qdev-clock.h" -#include "hw/qdev-properties.h" -#include "hw/qdev-properties-system.h" -#include "hw/irq.h" #include "exec/memattrs.h" #include "hw/char/pl011.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index e6b75f30bef..77118e882b5 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -91,6 +91,7 @@ version =3D "0.1.0" dependencies =3D [ "bql", "common", + "hwcore", "migration", "qemu_api", "qemu_api_macros", @@ -99,6 +100,20 @@ dependencies =3D [ "util", ] =20 +[[package]] +name =3D "hwcore" +version =3D "0.1.0" +dependencies =3D [ + "bql", + "chardev", + "common", + "migration", + "qemu_api_macros", + "qom", + "system", + "util", +] + [[package]] name =3D "itertools" version =3D "0.11.0" @@ -133,6 +148,7 @@ dependencies =3D [ "bql", "chardev", "common", + "hwcore", "migration", "qemu_api", "qemu_api_macros", @@ -180,6 +196,7 @@ dependencies =3D [ "bql", "chardev", "common", + "hwcore", "migration", "qemu_api_macros", "qom", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 8e210d277a2..8ec07d20651 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -9,6 +9,7 @@ members =3D [ "qemu-api", "qom", "system", + "hw/core", "hw/char/pl011", "hw/timer/hpet", "util", diff --git a/rust/bindings/src/lib.rs b/rust/bindings/src/lib.rs new file mode 100644 index 00000000000..5bf03b13706 --- /dev/null +++ b/rust/bindings/src/lib.rs @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc +)] + +//! `bindgen`-generated declarations. + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); + +// SAFETY: these are implemented in C; the bindings need to assert that the +// BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. +// When bindings for character devices are introduced, this can be +// moved to the Opaque<> wrapper in src/chardev.rs. +unsafe impl Send for CharBackend {} +unsafe impl Sync for CharBackend {} + +// SAFETY: this is a pure data struct +unsafe impl Send for CoalescedMemoryRange {} +unsafe impl Sync for CoalescedMemoryRange {} + +// SAFETY: these are constants and vtables; the Send and Sync requirements +// are deferred to the unsafe callbacks that they contain +unsafe impl Send for MemoryRegionOps {} +unsafe impl Sync for MemoryRegionOps {} + +unsafe impl Send for Property {} +unsafe impl Sync for Property {} + +unsafe impl Send for TypeInfo {} +unsafe impl Sync for TypeInfo {} + +unsafe impl Send for VMStateDescription {} +unsafe impl Sync for VMStateDescription {} + +unsafe impl Send for VMStateField {} +unsafe impl Sync for VMStateField {} + +unsafe impl Send for VMStateInfo {} +unsafe impl Sync for VMStateInfo {} + +// bindgen does not derive Default here +#[allow(clippy::derivable_impls)] +impl Default for VMStateFlags { + fn default() -> Self { + Self(0) + } +} diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index e4b1c3f1eb8..830d88586bb 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -23,6 +23,7 @@ migration =3D { path =3D "../../../migration" } qom =3D { path =3D "../../../qom" } chardev =3D { path =3D "../../../chardev" } system =3D { path =3D "../../../system" } +hwcore =3D { path =3D "../../../hw/core" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } =20 diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index fae6e1b9c9d..fac04321133 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -16,6 +16,7 @@ _libpl011_rs =3D static_library( qom_rs, chardev_rs, system_rs, + hwcore_rs, ], ) =20 diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index c65db5a5174..a6a17d9f2dc 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -7,16 +7,14 @@ use bql::BqlRefCell; use chardev::{CharBackend, Chardev, Event}; use common::{static_assert, uninit_field_mut}; +use hwcore::{ + Clock, ClockEvent, DeviceImpl, DeviceMethods, DeviceState, IRQState, I= nterruptSource, + ResetType, ResettablePhasesImpl, SysBusDevice, SysBusDeviceImpl, SysBu= sDeviceMethods, +}; use migration::{ self, impl_vmstate_forward, impl_vmstate_struct, vmstate_fields, vmsta= te_of, vmstate_subsections, vmstate_unused, VMStateDescription, VMStateDescri= ptionBuilder, }; -use qemu_api::{ - irq::{IRQState, InterruptSource}, - prelude::*, - qdev::{Clock, ClockEvent, DeviceImpl, DeviceState, ResetType, Resettab= lePhasesImpl}, - sysbus::{SysBusDevice, SysBusDeviceImpl}, -}; use qom::{prelude::*, ObjectImpl, Owned, ParentField, ParentInit}; use system::{hwaddr, MemoryRegion, MemoryRegionOps, MemoryRegionOpsBuilder= }; use util::{log::Log, log_mask_ln}; diff --git a/rust/hw/core/Cargo.toml b/rust/hw/core/Cargo.toml new file mode 100644 index 00000000000..0b353802644 --- /dev/null +++ b/rust/hw/core/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name =3D "hwcore" +version =3D "0.1.0" +description =3D "Rust bindings for QEMU/hwcore" +resolver =3D "2" +publish =3D false + +authors.workspace =3D true +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true + +[dependencies] +common =3D { path =3D "../../common" } +bql =3D { path =3D "../../bql" } +qom =3D { path =3D "../../qom" } +chardev =3D { path =3D "../../chardev" } +migration =3D { path =3D "../../migration" } +system =3D { path =3D "../../system" } +util =3D { path =3D "../../util" } +qemu_api_macros =3D { path =3D "../../qemu-api-macros" } + +[lints] +workspace =3D true diff --git a/rust/hw/core/build.rs b/rust/hw/core/build.rs new file mode 120000 index 00000000000..2a79ee31b8c --- /dev/null +++ b/rust/hw/core/build.rs @@ -0,0 +1 @@ +../../util/build.rs \ No newline at end of file diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build new file mode 100644 index 00000000000..7dd1ade6f0f --- /dev/null +++ b/rust/hw/core/meson.build @@ -0,0 +1,80 @@ +_hwcore_bindgen_args =3D [] +c_enums =3D [ + 'DeviceCategory', + 'GpioPolarity', + 'MachineInitPhase', + 'ResetType', +] +foreach enum : c_enums + _hwcore_bindgen_args +=3D ['--rustified-enum', enum] +endforeach + +blocked_type =3D [ + 'Chardev', + 'Error', + 'ObjectClass', + 'MemoryRegion', + 'VMStateDescription', +] +foreach type: blocked_type + _hwcore_bindgen_args +=3D ['--blocklist-type', type] +endforeach + +c_bitfields =3D [ + 'ClockEvent', +] +foreach enum : c_bitfields + _hwcore_bindgen_args +=3D ['--bitfield-enum', enum] +endforeach + +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_hwcore_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common + _hwcore_bindgen_args, +) + +_hwcore_rs =3D static_library( + 'hwcore', + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/irq.rs', + 'src/qdev.rs', + 'src/sysbus.rs', + ], + {'.': _hwcore_bindings_inc_rs} + ), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_abi: 'rust', + link_with: [_bql_rs, _chardev_rs, _migration_rs, _qom_rs, _system_rs, _u= til_rs], + dependencies: [qemu_api_macros, common_rs], +) + +hwcore_rs =3D declare_dependency(link_with: [_hwcore_rs], + dependencies: [qom_rs, hwcore]) + +test('rust-hwcore-rs-integration', + executable( + 'rust-hwcore-rs-integration', + files('tests/tests.rs'), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_args: ['--test'], + install: false, + dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, qemu_ap= i_macros, util_rs]), + args: [ + '--test', '--test-threads', '1', + '--format', 'pretty', + ], + protocol: 'rust', + suite: ['unit', 'rust']) diff --git a/rust/hw/core/src/bindings.rs b/rust/hw/core/src/bindings.rs new file mode 100644 index 00000000000..919c02b56ae --- /dev/null +++ b/rust/hw/core/src/bindings.rs @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +use chardev::bindings::Chardev; +use common::Zeroable; +use migration::bindings::VMStateDescription; +use qom::bindings::ObjectClass; +use system::bindings::MemoryRegion; +use util::bindings::Error; + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); + +unsafe impl Send for Property {} +unsafe impl Sync for Property {} + +unsafe impl Send for TypeInfo {} +unsafe impl Sync for TypeInfo {} + +unsafe impl Zeroable for Property__bindgen_ty_1 {} +unsafe impl Zeroable for Property {} diff --git a/rust/qemu-api/src/irq.rs b/rust/hw/core/src/irq.rs similarity index 100% rename from rust/qemu-api/src/irq.rs rename to rust/hw/core/src/irq.rs diff --git a/rust/hw/core/src/lib.rs b/rust/hw/core/src/lib.rs new file mode 100644 index 00000000000..c5588d9bc27 --- /dev/null +++ b/rust/hw/core/src/lib.rs @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +pub use qom; + +pub mod bindings; + +mod irq; +pub use irq::*; + +mod qdev; +pub use qdev::*; + +mod sysbus; +pub use sysbus::*; diff --git a/rust/qemu-api/src/qdev.rs b/rust/hw/core/src/qdev.rs similarity index 99% rename from rust/qemu-api/src/qdev.rs rename to rust/hw/core/src/qdev.rs index 7efc796f502..8e9702ce0bb 100644 --- a/rust/qemu-api/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -9,13 +9,13 @@ ptr::NonNull, }; =20 -pub use bindings::{ClockEvent, DeviceClass, Property, ResetType}; use chardev::Chardev; use common::{callbacks::FnCall, Opaque}; use migration::{impl_vmstate_c_struct, VMStateDescription}; use qom::{prelude::*, ObjectClass, ObjectImpl, Owned, ParentInit}; use util::{Error, Result}; =20 +pub use crate::bindings::{ClockEvent, DeviceClass, Property, ResetType}; use crate::{ bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClas= s}, irq::InterruptSource, diff --git a/rust/qemu-api/src/sysbus.rs b/rust/hw/core/src/sysbus.rs similarity index 100% rename from rust/qemu-api/src/sysbus.rs rename to rust/hw/core/src/sysbus.rs diff --git a/rust/qemu-api/tests/tests.rs b/rust/hw/core/tests/tests.rs similarity index 97% rename from rust/qemu-api/tests/tests.rs rename to rust/hw/core/tests/tests.rs index f2e5eb9f4f4..21ee301fa68 100644 --- a/rust/qemu-api/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -5,16 +5,11 @@ use std::{ffi::CStr, ptr::addr_of}; =20 use bql::BqlCell; +use hwcore::{DeviceImpl, DeviceState, ResettablePhasesImpl, SysBusDevice}; use migration::{VMStateDescription, VMStateDescriptionBuilder}; -use qemu_api::{ - qdev::{DeviceImpl, DeviceState, ResettablePhasesImpl}, - sysbus::SysBusDevice, -}; use qom::{prelude::*, ObjectImpl, ParentField}; use util::bindings::{module_call_init, module_init_type}; =20 -mod vmstate_tests; - // Test that macros can compile. pub const VMSTATE: VMStateDescription =3D VMStateDescriptionBu= ilder::::new() .name(c"name") diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index a95b1271c64..e28d66f6457 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -19,6 +19,7 @@ qom =3D { path =3D "../../../qom" } system =3D { path =3D "../../../system" } qemu_api =3D { path =3D "../../../qemu-api" } qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } +hwcore =3D { path =3D "../../../hw/core" } =20 [lints] workspace =3D true diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index c4ffe020f6b..e6f99b67785 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -12,6 +12,7 @@ _libhpet_rs =3D static_library( qemu_api_macros, qom_rs, system_rs, + hwcore_rs, ], ) =20 diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 841c2ba3375..3031539744f 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -12,17 +12,15 @@ =20 use bql::{BqlCell, BqlRefCell}; use common::{bitops::IntegerExt, uninit_field_mut}; +use hwcore::{ + bindings::{qdev_prop_bit, qdev_prop_bool, qdev_prop_uint32, qdev_prop_= usize}, + declare_properties, define_property, DeviceImpl, DeviceMethods, Device= State, InterruptSource, + Property, ResetType, ResettablePhasesImpl, SysBusDevice, SysBusDeviceI= mpl, SysBusDeviceMethods, +}; use migration::{ self, impl_vmstate_struct, vmstate_fields, vmstate_of, vmstate_subsect= ions, vmstate_validate, VMStateDescription, VMStateDescriptionBuilder, }; -use qemu_api::{ - bindings::{qdev_prop_bit, qdev_prop_bool, qdev_prop_uint32, qdev_prop_= usize}, - irq::InterruptSource, - prelude::*, - qdev::{DeviceImpl, DeviceState, Property, ResetType, ResettablePhasesI= mpl}, - sysbus::{SysBusDevice, SysBusDeviceImpl}, -}; use qom::{prelude::*, ObjectImpl, ParentField, ParentInit}; use system::{ bindings::{address_space_memory, address_space_stl_le, hwaddr}, @@ -904,9 +902,9 @@ impl ObjectImpl for HPETState { } =20 // TODO: Make these properties user-configurable! -qemu_api::declare_properties! { +declare_properties! { HPET_PROPERTIES, - qemu_api::define_property!( + define_property!( c"timers", HPETState, num_timers, @@ -914,7 +912,7 @@ impl ObjectImpl for HPETState { u8, default =3D HPET_MIN_TIMERS ), - qemu_api::define_property!( + define_property!( c"msi", HPETState, flags, @@ -923,7 +921,7 @@ impl ObjectImpl for HPETState { bit =3D HPET_FLAG_MSI_SUPPORT_SHIFT as u8, default =3D false, ), - qemu_api::define_property!( + define_property!( c"hpet-intcap", HPETState, int_route_cap, @@ -931,7 +929,7 @@ impl ObjectImpl for HPETState { u32, default =3D 0 ), - qemu_api::define_property!( + define_property!( c"hpet-offset-saved", HPETState, hpet_offset_saved, @@ -1004,8 +1002,8 @@ impl ObjectImpl for HPETState { .build(); =20 // SAFETY: HPET_PROPERTIES is a valid Property array constructed with the -// qemu_api::declare_properties macro. -unsafe impl qemu_api::qdev::DevicePropertiesImpl for HPETState { +// hwcore::declare_properties macro. +unsafe impl hwcore::DevicePropertiesImpl for HPETState { const PROPERTIES: &'static [Property] =3D &HPET_PROPERTIES; } =20 diff --git a/rust/meson.build b/rust/meson.build index d8b71f55061..041b0a473e5 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -31,6 +31,7 @@ subdir('bql') subdir('qom') subdir('system') subdir('chardev') +subdir('hw/core') subdir('qemu-api') =20 subdir('hw') diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-api-macros/src/lib= .rs index e643e57ebdf..830b4326985 100644 --- a/rust/qemu-api-macros/src/lib.rs +++ b/rust/qemu-api-macros/src/lib.rs @@ -272,24 +272,24 @@ macro_rules! str_to_c_str { }, )?; let field_ty =3D field.ty.clone(); - let qdev_prop =3D quote! { <#field_ty as ::qemu_api::qdev::QDevPro= p>::VALUE }; + let qdev_prop =3D quote! { <#field_ty as ::hwcore::QDevProp>::VALU= E }; let set_default =3D defval.is_some(); let defval =3D defval.unwrap_or(syn::Expr::Verbatim(quote! { 0 })); properties_expanded.push(quote! { - ::qemu_api::bindings::Property { + ::hwcore::bindings::Property { name: ::std::ffi::CStr::as_ptr(#prop_name), info: #qdev_prop , offset: ::core::mem::offset_of!(#name, #field_name) as isi= ze, set_default: #set_default, - defval: ::qemu_api::bindings::Property__bindgen_ty_1 { u: = #defval as u64 }, + defval: ::hwcore::bindings::Property__bindgen_ty_1 { u: #d= efval as u64 }, ..::common::Zeroable::ZERO } }); } =20 Ok(quote_spanned! {input.span() =3D> - unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for #name { - const PROPERTIES: &'static [::qemu_api::bindings::Property] = =3D &[ + unsafe impl ::hwcore::DevicePropertiesImpl for #name { + const PROPERTIES: &'static [::hwcore::bindings::Property] =3D = &[ #(#properties_expanded),* ]; } diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-api-macros/src/t= ests.rs index 76e6c57479e..9ab7eab7f37 100644 --- a/rust/qemu-api-macros/src/tests.rs +++ b/rust/qemu-api-macros/src/tests.rs @@ -100,14 +100,14 @@ pub struct DummyState { } }, quote! { - unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { - const PROPERTIES: &'static [::qemu_api::bindings::Property= ] =3D &[ - ::qemu_api::bindings::Property { + unsafe impl ::hwcore::DevicePropertiesImpl for DummyState { + const PROPERTIES: &'static [::hwcore::bindings::Property] = =3D &[ + ::hwcore::bindings::Property { name: ::std::ffi::CStr::as_ptr(c"migrate_clock"), - info: ::VALUE, + info: ::VALUE, offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, set_default: true, - defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, + defval: ::hwcore::bindings::Property__bindgen_ty_1= { u: true as u64 }, ..::common::Zeroable::ZERO } ]; @@ -127,14 +127,14 @@ pub struct DummyState { } }, quote! { - unsafe impl ::qemu_api::qdev::DevicePropertiesImpl for DummySt= ate { - const PROPERTIES: &'static [::qemu_api::bindings::Property= ] =3D &[ - ::qemu_api::bindings::Property { + unsafe impl ::hwcore::DevicePropertiesImpl for DummyState { + const PROPERTIES: &'static [::hwcore::bindings::Property] = =3D &[ + ::hwcore::bindings::Property { name: ::std::ffi::CStr::as_ptr(c"migrate-clk"), - info: ::VALUE, + info: ::VALUE, offset: ::core::mem::offset_of!(DummyState, migrat= e_clock) as isize, set_default: true, - defval: ::qemu_api::bindings::Property__bindgen_ty= _1 { u: true as u64 }, + defval: ::hwcore::bindings::Property__bindgen_ty_1= { u: true as u64 }, ..::common::Zeroable::ZERO } ]; diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 2884c1d460b..9e7afc7e3ad 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -16,6 +16,7 @@ rust-version.workspace =3D true [dependencies] common =3D { path =3D "../common" } chardev =3D { path =3D "../chardev" } +hwcore =3D { path =3D "../hw/core" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 92e2581a64e..2dc638782ca 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -3,22 +3,12 @@ _qemu_api_cfg =3D run_command(rustc_args, capture: true, check: true).stdout().strip().splitlines() =20 c_enums =3D [ - 'DeviceCategory', - 'GpioPolarity', - 'MachineInitPhase', 'MemoryDeviceInfoKind', - 'ResetType', ] _qemu_api_bindgen_args =3D [] foreach enum : c_enums _qemu_api_bindgen_args +=3D ['--rustified-enum', enum] endforeach -c_bitfields =3D [ - 'ClockEvent', -] -foreach enum : c_bitfields - _qemu_api_bindgen_args +=3D ['--bitfield-enum', enum] -endforeach =20 blocked_type =3D [ 'Chardev', @@ -55,17 +45,14 @@ _qemu_api_rs =3D static_library( [ 'src/lib.rs', 'src/bindings.rs', - 'src/irq.rs', 'src/prelude.rs', - 'src/qdev.rs', - 'src/sysbus.rs', ], {'.' : _qemu_api_bindings_inc_rs}, ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, lib= c_rs, migration_rs, qemu_api_macros, + dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, hwc= ore_rs, libc_rs, migration_rs, qemu_api_macros, qom_rs, system_rs, util_rs, hwcore], ) =20 @@ -75,7 +62,7 @@ qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_= rs], test('rust-qemu-api-integration', executable( 'rust-qemu-api-integration', - files('tests/tests.rs', 'tests/vmstate_tests.rs'), + files('tests/vmstate_tests.rs'), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs index 63b805c76e4..9c863e9b5b4 100644 --- a/rust/qemu-api/src/bindings.rs +++ b/rust/qemu-api/src/bindings.rs @@ -21,7 +21,6 @@ //! `bindgen`-generated declarations. =20 use chardev::bindings::Chardev; -use common::Zeroable; use migration::bindings::VMStateDescription; use qom::bindings::ObjectClass; use system::bindings::{device_endian, MemTxAttrs, MemoryRegion}; @@ -32,12 +31,3 @@ =20 #[cfg(not(MESON))] include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); - -unsafe impl Send for Property {} -unsafe impl Sync for Property {} - -unsafe impl Send for TypeInfo {} -unsafe impl Sync for TypeInfo {} - -unsafe impl Zeroable for crate::bindings::Property__bindgen_ty_1 {} -unsafe impl Zeroable for crate::bindings::Property {} diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 8d574404789..21b886035f3 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -13,10 +13,6 @@ #[rustfmt::skip] pub mod prelude; =20 -pub mod irq; -pub mod qdev; -pub mod sysbus; - // Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this // crate). extern crate self as qemu_api; diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs index 9e9d1c82474..8db56f9f817 100644 --- a/rust/qemu-api/src/prelude.rs +++ b/rust/qemu-api/src/prelude.rs @@ -3,7 +3,3 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 //! Commonly used traits and types for QEMU. - -pub use crate::qdev::DeviceMethods; - -pub use crate::sysbus::SysBusDeviceMethods; --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751383; cv=none; d=zohomail.com; s=zohoarc; b=NTX+JmGe+EUxswy9dhCLj8m75Q1SPH/pM8nAKEDKDKHa1d++dkVm/XAiWig82RphfB9OqUky7r8FaFkqsvh6aoxBjCUUoeJpUSH76sYiTdsVU5TPT3emgQP2eu9iqGQR2EQdacHGRtJScxbczpRUKqFNsa+DXRkpPjaRA7orUT4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751383; 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=h2+H9zkcTrL/7zxbHw5RJxLMcnpojKRync8Js5vF6wY=; b=Be13qQ5JDQHXe1cBxnhCjCYtnipOKxaVzqnYBx8KG3zov214TIHyiaid6qBI0yO3vIUouhv5SmbEJU8LpK527sYCFnQ1+uitn79IrPaJzzFlo/4BGGuJY/N0qO/YMQNQiJR8VLp7DDkKI06skhyEnPCSFhFkm7mSSBwPpPlwjlw= 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 1757751383370901.3371074564767; Sat, 13 Sep 2025 01:16:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMs-0001Rl-38; Sat, 13 Sep 2025 04:12:22 -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 1uxLMW-0000UA-5y for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:00 -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 1uxLMQ-00059V-Or for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:59 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-166-RK-IMslyPDuLAFHtl2LSmg-1; Sat, 13 Sep 2025 04:11:51 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45df7e734e0so16322575e9.0 for ; Sat, 13 Sep 2025 01:11:51 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607770aesm9692394f8f.6.2025.09.13.01.11.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751112; 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=h2+H9zkcTrL/7zxbHw5RJxLMcnpojKRync8Js5vF6wY=; b=JBiuVZY5BD0IJni3qHmNORLsKYBIGc3UjKXYVahKuvHup5qM0BseyRNxmo4fhp3CA0CXau 0gy6wk+Uo+GvdLPddAAw/Jj4ut6Ysj/DmDpZaaFe6/dhC6m0+hoF53OhpmA15h3NeDkg2l CNz2zi2pzvmQUKCtDPhFCaxSeDQjHIE= X-MC-Unique: RK-IMslyPDuLAFHtl2LSmg-1 X-Mimecast-MFC-AGG-ID: RK-IMslyPDuLAFHtl2LSmg_1757751110 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751109; x=1758355909; 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=h2+H9zkcTrL/7zxbHw5RJxLMcnpojKRync8Js5vF6wY=; b=KlS7aZlqy4HydrM6hcnNlJHAK0SnxtaO+fOpFn+VRYQSLNbGDivTI97i0DsDXM60Zz Q5bNwdkNt+sCx5uAIndVKxYZu0gjJoSCjzsbEisu8d3lXZopJz+l1v+UKza2pO4hM7CI neaCLeksaFRmemYS6hWm8gUrMHb1qiQcNn2WMB8suWbqEgSAdAQRQgEGqzYT5qgKOe+W lFe2QjnXCJG4+R9Fu4D84BoxgwCQhYxJYYbqn3RO6ONJsqRKcQTEYJ5fmLAo2TgFFoZo /3h9QXC5oe4cuPCMKitCYhKJke+sbFHAdvArUGCY/2GqRQy4cHN5V7uFOumKCZ9g2bzZ uaLA== X-Gm-Message-State: AOJu0Yzgow5YBW7h+m2m15F59CCeSiTEx1CZPvrT2PJfVNjCRu/KgoId IamhZY6jEwEwR6kr/MQTCJhW27NJV4P9ss91PgYcCZmPKEIQvzKg+u2v0qmZF+2I6uDkEjmjbDV mDGZMraUovHK1JVsN10JNHtC7KMpHnBY/MnMvwdxYIAvRRetIO/KSuLx1fA/sCqICiceFSdKe3P +ALbxSt7GmX3QifIrg80dX9y5BnUhw33g82k5M+LJ1 X-Gm-Gg: ASbGncsyr1lg9Alpv4f+8mtnoYCjsGX3mxs0ZF5AjT6e7cYsjXERoEg3mgte4+QIyHV X3N7qRHHLSOh6Rh1nLoZsujLRD2WVWGaWGbSJApjCqa1VNW9/jjMwdFgA9mFT9odwaHmnn+f1vp YckTS2Ew9SLXdZ87C/y2RI2EBAXwn+yHZO3XjTj+vfWkormLACleeiZF4gw2SJn6nHUsffvBlGu oAgg9sxSGM4opZFBjUqLKKrpxPoqMrDZ069ozgW4al3xupjDSdAR+Hn3ej6IdAlh6T3o4AFGjcz c598aDL+X7TAhYWXmVUJv6a+PZ/P47b1Yz2iZDzZ2lENJ5sSMs2IZIrZUww99EK/WsAHwK3OpxQ 0vBgbzJtojOsmc+N5lTK+FCgXDXZL8p5KANX92C9lWRs= X-Received: by 2002:a05:6000:2281:b0:3e7:6454:85a4 with SMTP id ffacd0b85a97d-3e7659eb07dmr5572096f8f.33.1757751108925; Sat, 13 Sep 2025 01:11:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEBkTGCHgIZQvIOOTn2QKcF8owD0j+ckk+f6oWcRhKvr9jBA6Lrsezkb78fcUqHEKuvVz7mwg== X-Received: by 2002:a05:6000:2281:b0:3e7:6454:85a4 with SMTP id ffacd0b85a97d-3e7659eb07dmr5572067f8f.33.1757751108249; Sat, 13 Sep 2025 01:11:48 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 44/61] rust: rename qemu_api_macros -> qemu_macros Date: Sat, 13 Sep 2025 10:09:25 +0200 Message-ID: <20250913080943.11710-45-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751384161116600 From: Marc-Andr=C3=A9 Lureau Since "qemu_api" is no longer the unique crate to provide APIs. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-17-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- rust/Cargo.lock | 22 +++++++++---------- rust/Cargo.toml | 2 +- rust/bits/Cargo.toml | 2 +- rust/bits/meson.build | 2 +- rust/bits/src/lib.rs | 4 ++-- rust/chardev/Cargo.toml | 2 +- rust/chardev/meson.build | 4 ++-- rust/chardev/src/chardev.rs | 2 +- rust/common/src/opaque.rs | 4 ++-- rust/hw/char/pl011/Cargo.toml | 2 +- rust/hw/char/pl011/meson.build | 4 ++-- rust/hw/char/pl011/src/device.rs | 4 ++-- rust/hw/char/pl011/src/registers.rs | 2 +- rust/hw/core/Cargo.toml | 2 +- rust/hw/core/meson.build | 4 ++-- rust/hw/core/src/irq.rs | 2 +- rust/hw/core/src/qdev.rs | 6 ++--- rust/hw/core/src/sysbus.rs | 2 +- rust/hw/core/tests/tests.rs | 4 ++-- rust/hw/timer/hpet/Cargo.toml | 2 +- rust/hw/timer/hpet/meson.build | 4 ++-- rust/hw/timer/hpet/src/device.rs | 6 ++--- rust/meson.build | 2 +- rust/migration/Cargo.toml | 2 +- rust/qemu-api/Cargo.toml | 2 +- rust/qemu-api/meson.build | 4 ++-- .../Cargo.toml | 2 +- .../meson.build | 10 ++++----- .../src/bits.rs | 0 .../src/lib.rs | 0 .../src/tests.rs | 0 rust/qom/Cargo.toml | 2 +- rust/qom/meson.build | 4 ++-- rust/qom/src/qom.rs | 4 ++-- rust/system/Cargo.toml | 2 +- rust/system/meson.build | 4 ++-- rust/system/src/memory.rs | 2 +- rust/util/Cargo.toml | 2 +- rust/util/meson.build | 2 +- rust/util/src/timer.rs | 4 ++-- 41 files changed, 69 insertions(+), 69 deletions(-) rename rust/{qemu-api-macros =3D> qemu-macros}/Cargo.toml (94%) rename rust/{qemu-api-macros =3D> qemu-macros}/meson.build (63%) rename rust/{qemu-api-macros =3D> qemu-macros}/src/bits.rs (100%) rename rust/{qemu-api-macros =3D> qemu-macros}/src/lib.rs (100%) rename rust/{qemu-api-macros =3D> qemu-macros}/src/tests.rs (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 92d575b535a..23bda7d3325 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3521,7 +3521,7 @@ F: rust/common/ F: rust/hw/core/ F: rust/migration/ F: rust/qemu-api -F: rust/qemu-api-macros +F: rust/qemu-macros/ F: rust/qom/ F: rust/rustfmt.toml F: rust/system/ diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 77118e882b5..021ce6dd48c 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -41,7 +41,7 @@ dependencies =3D [ name =3D "bits" version =3D "0.1.0" dependencies =3D [ - "qemu_api_macros", + "qemu_macros", ] =20 [[package]] @@ -58,7 +58,7 @@ dependencies =3D [ "bql", "common", "migration", - "qemu_api_macros", + "qemu_macros", "qom", "util", ] @@ -94,7 +94,7 @@ dependencies =3D [ "hwcore", "migration", "qemu_api", - "qemu_api_macros", + "qemu_macros", "qom", "system", "util", @@ -108,7 +108,7 @@ dependencies =3D [ "chardev", "common", "migration", - "qemu_api_macros", + "qemu_macros", "qom", "system", "util", @@ -134,7 +134,7 @@ name =3D "migration" version =3D "0.1.0" dependencies =3D [ "common", - "qemu_api_macros", + "qemu_macros", "util", ] =20 @@ -151,7 +151,7 @@ dependencies =3D [ "hwcore", "migration", "qemu_api", - "qemu_api_macros", + "qemu_macros", "qom", "system", "util", @@ -198,14 +198,14 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_api_macros", + "qemu_macros", "qom", "system", "util", ] =20 [[package]] -name =3D "qemu_api_macros" +name =3D "qemu_macros" version =3D "0.1.0" dependencies =3D [ "proc-macro2", @@ -220,7 +220,7 @@ dependencies =3D [ "bql", "common", "migration", - "qemu_api_macros", + "qemu_macros", "util", ] =20 @@ -249,7 +249,7 @@ name =3D "system" version =3D "0.1.0" dependencies =3D [ "common", - "qemu_api_macros", + "qemu_macros", "qom", "util", ] @@ -268,7 +268,7 @@ dependencies =3D [ "common", "foreign", "libc", - "qemu_api_macros", + "qemu_macros", ] =20 [[package]] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 8ec07d20651..b2a5c230fa2 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -5,7 +5,7 @@ members =3D [ "bql", "common", "migration", - "qemu-api-macros", + "qemu-macros", "qemu-api", "qom", "system", diff --git a/rust/bits/Cargo.toml b/rust/bits/Cargo.toml index 1ff38a41175..7fce972b270 100644 --- a/rust/bits/Cargo.toml +++ b/rust/bits/Cargo.toml @@ -13,7 +13,7 @@ repository.workspace =3D true rust-version.workspace =3D true =20 [dependencies] -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/bits/meson.build b/rust/bits/meson.build index 2a41e138c54..359ca86f155 100644 --- a/rust/bits/meson.build +++ b/rust/bits/meson.build @@ -3,7 +3,7 @@ _bits_rs =3D static_library( 'src/lib.rs', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', - dependencies: [qemu_api_macros], + dependencies: [qemu_macros], ) =20 bits_rs =3D declare_dependency(link_with: _bits_rs) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index e9d15ad0cb5..1bc882fde18 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -380,11 +380,11 @@ fn from(x: $type) -> Self { }; =20 { $type:ty: $expr:expr } =3D> { - ::qemu_api_macros::bits_const_internal! { $type @ ($expr) } + ::qemu_macros::bits_const_internal! { $type @ ($expr) } }; =20 { $type:ty as $int_type:ty: $expr:expr } =3D> { - (::qemu_api_macros::bits_const_internal! { $type @ ($expr) }.into_= bits()) as $int_type + (::qemu_macros::bits_const_internal! { $type @ ($expr) }.into_bits= ()) as $int_type }; } =20 diff --git a/rust/chardev/Cargo.toml b/rust/chardev/Cargo.toml index 7df9c677fc7..c1391773078 100644 --- a/rust/chardev/Cargo.toml +++ b/rust/chardev/Cargo.toml @@ -18,7 +18,7 @@ bql =3D { path =3D "../bql" } migration =3D { path =3D "../migration" } qom =3D { path =3D "../qom" } util =3D { path =3D "../util" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 5d333e232bd..a2fa3268d21 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -35,7 +35,7 @@ _chardev_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], - dependencies: [common_rs, qemu_api_macros], + dependencies: [common_rs, qemu_macros], ) =20 -chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [qemu_api_macros, chardev, qemuutil]) +chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [qemu_macros, chardev, qemuutil]) diff --git a/rust/chardev/src/chardev.rs b/rust/chardev/src/chardev.rs index 072d806e4a3..cb6f99398eb 100644 --- a/rust/chardev/src/chardev.rs +++ b/rust/chardev/src/chardev.rs @@ -26,7 +26,7 @@ =20 /// A safe wrapper around [`bindings::Chardev`]. #[repr(transparent)] -#[derive(qemu_api_macros::Wrapper)] +#[derive(qemu_macros::Wrapper)] pub struct Chardev(Opaque); =20 pub type ChardevClass =3D bindings::ChardevClass; diff --git a/rust/common/src/opaque.rs b/rust/common/src/opaque.rs index 97ed3e84522..3b3263acaa3 100644 --- a/rust/common/src/opaque.rs +++ b/rust/common/src/opaque.rs @@ -192,7 +192,7 @@ pub unsafe fn new() -> Self { =20 /// Annotates [`Self`] as a transparent wrapper for another type. /// -/// Usually defined via the [`qemu_api_macros::Wrapper`] derive macro. +/// Usually defined via the [`qemu_macros::Wrapper`] derive macro. /// /// # Examples /// @@ -228,7 +228,7 @@ pub unsafe fn new() -> Self { /// /// They are not defined here to allow them to be `const`. /// -/// [`qemu_api_macros::Wrapper`]: ../../qemu_api_macros/derive.Wrapper.html +/// [`qemu_macros::Wrapper`]: ../../qemu_macros/derive.Wrapper.html pub unsafe trait Wrapper { type Wrapped; } diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 830d88586bb..9e451fc0aa8 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -25,7 +25,7 @@ chardev =3D { path =3D "../../../chardev" } system =3D { path =3D "../../../system" } hwcore =3D { path =3D "../../../hw/core" } qemu_api =3D { path =3D "../../../qemu-api" } -qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } +qemu_macros =3D { path =3D "../../../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index fac04321133..bad6a839c39 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -12,7 +12,7 @@ _libpl011_rs =3D static_library( util_rs, migration_rs, bql_rs, - qemu_api_macros, + qemu_macros, qom_rs, chardev_rs, system_rs, @@ -24,6 +24,6 @@ rust_devices_ss.add(when: 'CONFIG_X_PL011_RUST', if_true:= [declare_dependency( link_whole: [_libpl011_rs], # Putting proc macro crates in `dependencies` is necessary for Meson to = find # them when compiling the root per-target static rust lib. - dependencies: [bilge_impl_rs, qemu_api_macros], + dependencies: [bilge_impl_rs, qemu_macros], variables: {'crate': 'pl011'}, )]) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index a6a17d9f2dc..3010b6d9839 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -97,7 +97,7 @@ pub struct PL011Registers { } =20 #[repr(C)] -#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] +#[derive(qemu_macros::Object, qemu_macros::Device)] /// PL011 Device Model in QEMU pub struct PL011State { pub parent_obj: ParentField, @@ -683,7 +683,7 @@ pub fn post_load(&self, _version_id: u8) -> Result<(), = migration::InvalidError> } =20 #[repr(C)] -#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] +#[derive(qemu_macros::Object, qemu_macros::Device)] /// PL011 Luminary device model. pub struct PL011Luminary { parent_obj: ParentField, diff --git a/rust/hw/char/pl011/src/registers.rs b/rust/hw/char/pl011/src/r= egisters.rs index 2bfbd81095e..a1c41347ed5 100644 --- a/rust/hw/char/pl011/src/registers.rs +++ b/rust/hw/char/pl011/src/registers.rs @@ -16,7 +16,7 @@ #[doc(alias =3D "offset")] #[allow(non_camel_case_types)] #[repr(u64)] -#[derive(Debug, Eq, PartialEq, qemu_api_macros::TryInto)] +#[derive(Debug, Eq, PartialEq, qemu_macros::TryInto)] pub enum RegisterOffset { /// Data Register /// diff --git a/rust/hw/core/Cargo.toml b/rust/hw/core/Cargo.toml index 0b353802644..0eb9ffee263 100644 --- a/rust/hw/core/Cargo.toml +++ b/rust/hw/core/Cargo.toml @@ -20,7 +20,7 @@ chardev =3D { path =3D "../../chardev" } migration =3D { path =3D "../../migration" } system =3D { path =3D "../../system" } util =3D { path =3D "../../util" } -qemu_api_macros =3D { path =3D "../../qemu-api-macros" } +qemu_macros =3D { path =3D "../../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 7dd1ade6f0f..67eacf854fe 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -58,7 +58,7 @@ _hwcore_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', link_with: [_bql_rs, _chardev_rs, _migration_rs, _qom_rs, _system_rs, _u= til_rs], - dependencies: [qemu_api_macros, common_rs], + dependencies: [qemu_macros, common_rs], ) =20 hwcore_rs =3D declare_dependency(link_with: [_hwcore_rs], @@ -71,7 +71,7 @@ test('rust-hwcore-rs-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, qemu_ap= i_macros, util_rs]), + dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, qemu_ma= cros, util_rs]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/hw/core/src/irq.rs b/rust/hw/core/src/irq.rs index fead2bbe8e0..d8d964cad27 100644 --- a/rust/hw/core/src/irq.rs +++ b/rust/hw/core/src/irq.rs @@ -18,7 +18,7 @@ =20 /// An opaque wrapper around [`bindings::IRQState`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct IRQState(Opaque); =20 /// Interrupt sources are used by devices to pass changes to a value (typi= cally diff --git a/rust/hw/core/src/qdev.rs b/rust/hw/core/src/qdev.rs index 8e9702ce0bb..c9faf44a71d 100644 --- a/rust/hw/core/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -23,7 +23,7 @@ =20 /// A safe wrapper around [`bindings::Clock`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct Clock(Opaque); =20 unsafe impl Send for Clock {} @@ -31,7 +31,7 @@ unsafe impl Sync for Clock {} =20 /// A safe wrapper around [`bindings::DeviceState`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct DeviceState(Opaque); =20 unsafe impl Send for DeviceState {} @@ -101,7 +101,7 @@ pub trait ResettablePhasesImpl { =20 /// Helper trait to return pointer to a [`bindings::PropertyInfo`] for a t= ype. /// -/// This trait is used by [`qemu_api_macros::Device`] derive macro. +/// This trait is used by [`qemu_macros::Device`] derive macro. /// /// Base types that already have `qdev_prop_*` globals in the QEMU API sho= uld /// use those values as exported by the [`bindings`] module, instead of diff --git a/rust/hw/core/src/sysbus.rs b/rust/hw/core/src/sysbus.rs index dda71ebda70..92c7449b802 100644 --- a/rust/hw/core/src/sysbus.rs +++ b/rust/hw/core/src/sysbus.rs @@ -19,7 +19,7 @@ =20 /// A safe wrapper around [`bindings::SysBusDevice`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct SysBusDevice(Opaque); =20 unsafe impl Send for SysBusDevice {} diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index 21ee301fa68..2f08b8f3bfe 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -17,7 +17,7 @@ .build(); =20 #[repr(C)] -#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] +#[derive(qemu_macros::Object, qemu_macros::Device)] pub struct DummyState { parent: ParentField, #[property(rename =3D "migrate-clk", default =3D true)] @@ -54,7 +54,7 @@ impl DeviceImpl for DummyState { } =20 #[repr(C)] -#[derive(qemu_api_macros::Object, qemu_api_macros::Device)] +#[derive(qemu_macros::Object, qemu_macros::Device)] pub struct DummyChildState { parent: ParentField, } diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index e28d66f6457..68e8187bb82 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -18,7 +18,7 @@ bql =3D { path =3D "../../../bql" } qom =3D { path =3D "../../../qom" } system =3D { path =3D "../../../system" } qemu_api =3D { path =3D "../../../qemu-api" } -qemu_api_macros =3D { path =3D "../../../qemu-api-macros" } +qemu_macros =3D { path =3D "../../../qemu-macros" } hwcore =3D { path =3D "../../../hw/core" } =20 [lints] diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index e6f99b67785..3b94d5ec0a7 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -9,7 +9,7 @@ _libhpet_rs =3D static_library( util_rs, migration_rs, bql_rs, - qemu_api_macros, + qemu_macros, qom_rs, system_rs, hwcore_rs, @@ -20,6 +20,6 @@ rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: = [declare_dependency( link_whole: [_libhpet_rs], # Putting proc macro crates in `dependencies` is necessary for Meson to = find # them when compiling the root per-target static rust lib. - dependencies: [qemu_api_macros], + dependencies: [qemu_macros], variables: {'crate': 'hpet'}, )]) diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 3031539744f..07e0f639fc4 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -97,7 +97,7 @@ /// Timer N Interrupt Routing Capability (bits 32:63) const HPET_TN_CFG_INT_ROUTE_CAP_SHIFT: usize =3D 32; =20 -#[derive(qemu_api_macros::TryInto)] +#[derive(qemu_macros::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] /// Timer registers, masked by 0x18 @@ -110,7 +110,7 @@ enum TimerRegister { ROUTE =3D 16, } =20 -#[derive(qemu_api_macros::TryInto)] +#[derive(qemu_macros::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] /// Global registers @@ -520,7 +520,7 @@ fn write(&mut self, reg: TimerRegister, value: u64, shi= ft: u32, len: u32) { =20 /// HPET Event Timer Block Abstraction #[repr(C)] -#[derive(qemu_api_macros::Object)] +#[derive(qemu_macros::Object)] pub struct HPETState { parent_obj: ParentField, iomem: MemoryRegion, diff --git a/rust/meson.build b/rust/meson.build index 041b0a473e5..9f6a0b161d2 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -23,7 +23,7 @@ qemuutil_rs =3D qemuutil.partial_dependency(link_args: tr= ue, links: true) genrs =3D [] =20 subdir('common') -subdir('qemu-api-macros') +subdir('qemu-macros') subdir('bits') subdir('util') subdir('migration') diff --git a/rust/migration/Cargo.toml b/rust/migration/Cargo.toml index 98e6df2109d..66af81e0a35 100644 --- a/rust/migration/Cargo.toml +++ b/rust/migration/Cargo.toml @@ -15,7 +15,7 @@ rust-version.workspace =3D true [dependencies] common =3D { path =3D "../common" } util =3D { path =3D "../util" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 9e7afc7e3ad..9abb88aa1f8 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -20,9 +20,9 @@ hwcore =3D { path =3D "../hw/core" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } +qemu_macros =3D { path =3D "../qemu-macros" } qom =3D { path =3D "../qom" } system =3D { path =3D "../system" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } =20 [lints] workspace =3D true diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build index 2dc638782ca..fe81f16d990 100644 --- a/rust/qemu-api/meson.build +++ b/rust/qemu-api/meson.build @@ -52,12 +52,12 @@ _qemu_api_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, hwc= ore_rs, libc_rs, migration_rs, qemu_api_macros, + dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, hwc= ore_rs, libc_rs, migration_rs, qemu_macros, qom_rs, system_rs, util_rs, hwcore], ) =20 qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], - dependencies: [qemu_api_macros, qom, hwcore, chardev, migration]) + dependencies: [qemu_macros, qom, hwcore, chardev, migration]) =20 test('rust-qemu-api-integration', executable( diff --git a/rust/qemu-api-macros/Cargo.toml b/rust/qemu-macros/Cargo.toml similarity index 94% rename from rust/qemu-api-macros/Cargo.toml rename to rust/qemu-macros/Cargo.toml index 0cd40c8e168..3b6f1d337f8 100644 --- a/rust/qemu-api-macros/Cargo.toml +++ b/rust/qemu-macros/Cargo.toml @@ -1,5 +1,5 @@ [package] -name =3D "qemu_api_macros" +name =3D "qemu_macros" version =3D "0.1.0" authors =3D ["Manos Pitsidianakis "] description =3D "Rust bindings for QEMU - Utility macros" diff --git a/rust/qemu-api-macros/meson.build b/rust/qemu-macros/meson.build similarity index 63% rename from rust/qemu-api-macros/meson.build rename to rust/qemu-macros/meson.build index 2152bcb99b3..d0b2992e204 100644 --- a/rust/qemu-api-macros/meson.build +++ b/rust/qemu-macros/meson.build @@ -1,5 +1,5 @@ -_qemu_api_macros_rs =3D rust.proc_macro( - 'qemu_api_macros', +_qemu_macros_rs =3D rust.proc_macro( + 'qemu_macros', files('src/lib.rs'), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: [ @@ -14,9 +14,9 @@ _qemu_api_macros_rs =3D rust.proc_macro( ], ) =20 -qemu_api_macros =3D declare_dependency( - link_with: _qemu_api_macros_rs, +qemu_macros =3D declare_dependency( + link_with: _qemu_macros_rs, ) =20 -rust.test('rust-qemu-api-macros-tests', _qemu_api_macros_rs, +rust.test('rust-qemu-macros-tests', _qemu_macros_rs, suite: ['unit', 'rust']) diff --git a/rust/qemu-api-macros/src/bits.rs b/rust/qemu-macros/src/bits.rs similarity index 100% rename from rust/qemu-api-macros/src/bits.rs rename to rust/qemu-macros/src/bits.rs diff --git a/rust/qemu-api-macros/src/lib.rs b/rust/qemu-macros/src/lib.rs similarity index 100% rename from rust/qemu-api-macros/src/lib.rs rename to rust/qemu-macros/src/lib.rs diff --git a/rust/qemu-api-macros/src/tests.rs b/rust/qemu-macros/src/tests= .rs similarity index 100% rename from rust/qemu-api-macros/src/tests.rs rename to rust/qemu-macros/src/tests.rs diff --git a/rust/qom/Cargo.toml b/rust/qom/Cargo.toml index 46bbf7c7fe4..060ad2ec349 100644 --- a/rust/qom/Cargo.toml +++ b/rust/qom/Cargo.toml @@ -16,7 +16,7 @@ rust-version.workspace =3D true common =3D { path =3D "../common" } bql =3D { path =3D "../bql" } migration =3D { path =3D "../migration" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } util =3D { path =3D "../util" } =20 [lints] diff --git a/rust/qom/meson.build b/rust/qom/meson.build index 84a65cb737e..40c51b71b23 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -28,10 +28,10 @@ _qom_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', link_with: [_bql_rs, _migration_rs], - dependencies: [common_rs, qemu_api_macros], + dependencies: [common_rs, qemu_macros], ) =20 -qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ap= i_macros, qom]) +qom_rs =3D declare_dependency(link_with: [_qom_rs], dependencies: [qemu_ma= cros, qom]) =20 # Doctests are essentially integration tests, so they need the same depend= encies. # Note that running them requires the object files for C code, so place th= em diff --git a/rust/qom/src/qom.rs b/rust/qom/src/qom.rs index 3ea1ad9c5be..2cd1d850112 100644 --- a/rust/qom/src/qom.rs +++ b/rust/qom/src/qom.rs @@ -112,7 +112,7 @@ =20 /// A safe wrapper around [`bindings::Object`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct Object(Opaque); =20 unsafe impl Send for Object {} @@ -173,7 +173,7 @@ fn as_ref(&self) -> &$parent { /// /// ```ignore /// #[repr(C)] -/// #[derive(qemu_api_macros::Object)] +/// #[derive(qemu_macros::Object)] /// pub struct MyDevice { /// parent: ParentField, /// ... diff --git a/rust/system/Cargo.toml b/rust/system/Cargo.toml index 6803895e080..d8338c8348d 100644 --- a/rust/system/Cargo.toml +++ b/rust/system/Cargo.toml @@ -16,7 +16,7 @@ rust-version.workspace =3D true common =3D { path =3D "../common" } qom =3D { path =3D "../qom" } util =3D { path =3D "../util" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/system/meson.build b/rust/system/meson.build index ae9b932d29d..9f88166f3d3 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -35,8 +35,8 @@ _system_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', link_with: [_bql_rs, _migration_rs, _qom_rs, _util_rs], - dependencies: [common_rs, qemu_api_macros], + dependencies: [common_rs, qemu_macros], ) =20 system_rs =3D declare_dependency(link_with: [_system_rs], - dependencies: [qemu_api_macros, hwcore]) + dependencies: [qemu_macros, hwcore]) diff --git a/rust/system/src/memory.rs b/rust/system/src/memory.rs index 29568ed7676..7312f809f51 100644 --- a/rust/system/src/memory.rs +++ b/rust/system/src/memory.rs @@ -129,7 +129,7 @@ fn default() -> Self { =20 /// A safe wrapper around [`bindings::MemoryRegion`]. #[repr(transparent)] -#[derive(qemu_api_macros::Wrapper)] +#[derive(qemu_macros::Wrapper)] pub struct MemoryRegion(Opaque); =20 unsafe impl Send for MemoryRegion {} diff --git a/rust/util/Cargo.toml b/rust/util/Cargo.toml index 637df61060a..18e6619ca06 100644 --- a/rust/util/Cargo.toml +++ b/rust/util/Cargo.toml @@ -17,7 +17,7 @@ anyhow =3D { workspace =3D true } foreign =3D { workspace =3D true } libc =3D { workspace =3D true } common =3D { path =3D "../common" } -qemu_api_macros =3D { path =3D "../qemu-api-macros" } +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/util/meson.build b/rust/util/meson.build index 56e929349b8..197872c9b23 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -39,7 +39,7 @@ _util_rs =3D static_library( ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', - dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qemu_api_macro= s, qom, qemuutil], + dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qemu_macros, q= om, qemuutil], ) =20 util_rs =3D declare_dependency(link_with: [_util_rs], dependencies: [qemuu= til, qom]) diff --git a/rust/util/src/timer.rs b/rust/util/src/timer.rs index 383e1a6e774..622b6ee3097 100644 --- a/rust/util/src/timer.rs +++ b/rust/util/src/timer.rs @@ -15,14 +15,14 @@ =20 /// A safe wrapper around [`bindings::QEMUTimer`]. #[repr(transparent)] -#[derive(Debug, qemu_api_macros::Wrapper)] +#[derive(Debug, qemu_macros::Wrapper)] pub struct Timer(Opaque); =20 unsafe impl Send for Timer {} unsafe impl Sync for Timer {} =20 #[repr(transparent)] -#[derive(qemu_api_macros::Wrapper)] +#[derive(qemu_macros::Wrapper)] pub struct TimerListGroup(Opaque); =20 unsafe impl Send for TimerListGroup {} --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751571; cv=none; d=zohomail.com; s=zohoarc; b=V2eCivpe0yrjv/ww/616xdvI4pd3mEKIQkN4P1l+n/wCz+d4Vy1aKtR9bNy/kinyhFywj4F825iUb3Y1d3xEHaKCQoZnnyiMyLJdIaUGveKDzuWzVZ3qgHD6McaBYj1JWoomxo/o0ixcHVSfeqms/mqhv32u8STQSV07BTTbjOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751571; 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=zW8Yud9mAz5khsnZa/hN0GUGz/pacwIoGiVNpwJ228s=; b=Fg8AajDh0qfscvIWa8i82OiP7j67is1+5C16zJ55sgH1vNj+56qxUaSLsokRUaEih3rWdjZLZ5RlRZM7cc7CRsbhOmLWcRf4GfG8dYTKuuRkuh6g68HrXFes9b/8mQNKmcUfGVeLFsDqUaRXs3PmE8ESOC3Z908Gt+G9DgE52xU= 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 1757751571944363.9047131997572; Sat, 13 Sep 2025 01:19:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMu-0001ZN-7H; Sat, 13 Sep 2025 04:12: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 1uxLMW-0000UB-7F for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:00 -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 1uxLMT-00059z-8p for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:11:59 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-650-BnCo_C4sONORENoWAxB4hw-1; Sat, 13 Sep 2025 04:11:53 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45de13167aaso24862275e9.1 for ; Sat, 13 Sep 2025 01:11:53 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e016b5c5dsm93762205e9.14.2025.09.13.01.11.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751115; 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=zW8Yud9mAz5khsnZa/hN0GUGz/pacwIoGiVNpwJ228s=; b=GT08JWZL8y/aYwKnHZ+eZc7Ym2rgUrh1JInBNDwaSknhyNokqsetHdzr4O/abOPwcbpQ4o TuV8du1mHSkEm4YxIseW5X3wFxjKY9SyLKKp+DE/wmgAqqkbUa/538s4WQie3/rZOdiDln K5TWWs5s2lf1LXG4pFjnPUmzAnaUlGg= X-MC-Unique: BnCo_C4sONORENoWAxB4hw-1 X-Mimecast-MFC-AGG-ID: BnCo_C4sONORENoWAxB4hw_1757751113 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751112; x=1758355912; 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=zW8Yud9mAz5khsnZa/hN0GUGz/pacwIoGiVNpwJ228s=; b=qwE//GSRJ2NWsIsoVHBkfxjXZLFla9HWohC4/EL3Z9nw92EUYXgrE/NvRO0a/N9mOu 6eGV1VtSjRZUm5SpSbn7yoWCku28E/Nj2MFF/6zLZbYpegLtQBr0g7x/Zsxnvnx6ldyX sngEBhQe8ggyRasV23AYwdJ6uPlXBz62zU35BRbNm/z3gA1/ersWOZgkXMLNF+nWSjHN 09pGF6VHIJl6zSdsBzk/Dexib6sJ0tVkyYhEH0UthohWUaCf+g8sRF3lX74X2MFI8liG fG55E21n8X2mGY4EQ3qL4FYbGdBfd90Bg464fq7JnTi7eGRgqw3bnkT+dy7kXjxzOQ9X FsYA== X-Gm-Message-State: AOJu0YwvKxaQg+AfBhZPhCaoQ1CMc8EsCH+ZvZDoIjKDxsrNXGv/QN4v z4PPlswlx9p7DOqAlk30Sv1kIEuYlYx4+cnjlXifb7D3+46fbZO9BceozQ7GEbqxgA/uKL4hgZ4 LhyPgrAy6TQ73elemEzBuXqPg2eoI/v32Q8AMe2BN/ffu0mWm7tGITp/LWonnmMMCCI84+J9WCG k9Y4AJ879Tj5NxJN6y+xCx1L0713Fk1sTRXQXrEfuT X-Gm-Gg: ASbGncvfCIj4A4yvgj7tnYT9VXCuLuz7VhEzZLukOyGcq3se8Zh462KSMQhnKi8eeaP hY0mim/aefhyf1kUmrr7z7rHXpipyaNjHNlPK2SiJJtJpYRGblNtXgE9ixnCEytWsTkK9FUKJ+y J+JoIo9UJh1MqxzD2e8e1Zv9DFTRLfFqbLAi6M4FOtouSd8LBaunU67djNk+sw+TDdq4CAXhIsn cIrf4gVNv1V9k5m9XOjNIUOysH8Udvqo9qKdfUQWeQ9YQ0Q+zYJGrQsY3Tn8SgqWcvbm4cUFPbs lW7MAYzlcgA3nHa4sK/b2FV+hzu7iK6/gMjFof6rXlmWl+t83ZNhogtyjCzwkdq5LJOTGAmB+Ff j4aDeswqHx7ndsbqZzAqGrmnM+VQGCzjAmlqW6/N84ww= X-Received: by 2002:a05:6000:1a86:b0:3e1:3b1c:2c13 with SMTP id ffacd0b85a97d-3e765a172f2mr4680202f8f.59.1757751112225; Sat, 13 Sep 2025 01:11:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG9lBazQwUh25ENrxUeIK1AddIkDmeJSrUlXVEGspaeZlCZmZZ40u43eBx130M32qXg0YRlnQ== X-Received: by 2002:a05:6000:1a86:b0:3e1:3b1c:2c13 with SMTP id ffacd0b85a97d-3e765a172f2mr4680185f8f.59.1757751111792; Sat, 13 Sep 2025 01:11:51 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 45/61] rust/hpet: drop now unneeded qemu_api dep Date: Sat, 13 Sep 2025 10:09:26 +0200 Message-ID: <20250913080943.11710-46-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751573781116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-18-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/Cargo.lock | 1 - rust/hw/timer/hpet/Cargo.toml | 1 - rust/hw/timer/hpet/meson.build | 1 - 3 files changed, 3 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 021ce6dd48c..c407029afed 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -93,7 +93,6 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_api", "qemu_macros", "qom", "system", diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 68e8187bb82..08bf97af553 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -17,7 +17,6 @@ migration =3D { path =3D "../../../migration" } bql =3D { path =3D "../../../bql" } qom =3D { path =3D "../../../qom" } system =3D { path =3D "../../../system" } -qemu_api =3D { path =3D "../../../qemu-api" } qemu_macros =3D { path =3D "../../../qemu-macros" } hwcore =3D { path =3D "../../../hw/core" } =20 diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 3b94d5ec0a7..8ab26630d95 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -5,7 +5,6 @@ _libhpet_rs =3D static_library( rust_abi: 'rust', dependencies: [ common_rs, - qemu_api_rs, util_rs, migration_rs, bql_rs, --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751569; cv=none; d=zohomail.com; s=zohoarc; b=DeBEszc2eMXF/WrzO+NTaBVadKkHZnrpIXlpeGOPBVAyUXc33cDynxolk0aijlmRV3WLDqjtk2HQAD+jK+kszZdrZi5Yq1/gG24dFoO7Rl0yTuvc8jOXWLJi7O4wfYgtcMmOPk3LagzMWrUP+P9pX/KctO/ctHhuKIOxH8Aj48M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751569; 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=bT0gqJJClXbo7glAkR0Ah6HPDYTr2ivQc8sNu5n8pRc=; b=MWzgtO+0bXuTZmzyHW3byQ8SDcrp543bR+2mffUVscD54o89moxpHQ3LoAdgu2Ct4BowBWHtFba7TWCaP1iD93hgruSWnuDLB1Qi50HWX4x+h0pfqDlyfLR1lINAIjjIs5Ucad22/yVfcC/EgqHo7IMcMXfXFrJ3rUAC9Mwjhxs= 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 1757751569187670.4668158946707; Sat, 13 Sep 2025 01:19:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLN6-0001t0-Iw; Sat, 13 Sep 2025 04:12: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 1uxLMb-0000ky-9P for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:07 -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 1uxLMX-0005Ap-3f for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:04 -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-222-_tiSCjXsMgOe0KZv94U29Q-1; Sat, 13 Sep 2025 04:11:56 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e751508f3aso1972289f8f.0 for ; Sat, 13 Sep 2025 01:11:56 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e8892afc04sm1591367f8f.13.2025.09.13.01.11.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751119; 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=bT0gqJJClXbo7glAkR0Ah6HPDYTr2ivQc8sNu5n8pRc=; b=e32BksuNvoS7B2O2HWy3zXMU2VvivgXXmAaTx65bvs9dsk2WYJwk4P/hQJIxSO9PtKINs+ f+gvocjSN/Iu2ssV2HRfk1F5YrtxiyRb6DE0rWLZvhIg9iUfyg+CzqStdg8IEDUtXLm1lb 4jMBrx9tr2TWf9C76PP5KBbgo7kyR9w= X-MC-Unique: _tiSCjXsMgOe0KZv94U29Q-1 X-Mimecast-MFC-AGG-ID: _tiSCjXsMgOe0KZv94U29Q_1757751115 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751114; x=1758355914; 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=bT0gqJJClXbo7glAkR0Ah6HPDYTr2ivQc8sNu5n8pRc=; b=LERnlblg2U58Bu/IQIWXKLaDuAcGB6yVqZKQpvACdowtWzi6YAHFJ9/pncDfukv/zw C6FH/Ela4PRaj0+Q3E71FbJdtfBQnPHrP0nsOl97R1qeeCUs+WxQKItTDCUk2kZooHh5 olaUt5ME56jMJCrnpL6yJ0eBjuXZpqhTDMVd0Jy00x4vgbZYQolAjcxTUlDu44azHtFU BIYz7fey4WVpZGEQHPL2sw3WhOOe9y4eTEPQVob436cVx2IGVkfqVL2pBkNC4/FhQ3Bv +vFqzTQItR8x+mqGHk6ZVv4oZ4KEGCO5v6+4LrNRWlxrdXQMzIqPraYVXcRmsWYFha6I xmLw== X-Gm-Message-State: AOJu0YxDtj9Gpm4COfDKtev3HUyS0oNIKr91iuDJ7dfIPirpgqg8f2uF ooL6rxb/7gTEnA86wavcx+EfHS+wkpE++9gtMSwXeQJOBq2Rb/ZSFXdKhe+LvxSovHZ7shOOrAq wTp/FzndY/0Jbu4Jj10VIRunVYm9Ncl7KVHJCoLDCNb+A+q1MRuh0Wbfn9GRacTQClDTvGXrgdB JSlPuhZrfL+C4m45CNXbwhQ7qlhglDofyLBHwFfjDH X-Gm-Gg: ASbGncuaixveJzcj4rKoh/Iyma6EqRDsf4r8DPy6wYUxKUR+lmhkfTE2zuSBDuQ62wF jp4Tnfk+2X5xC4VZcbAHJHwy84WO0roNi3ArzyzEe6Lkk78LiCl8+jZgyAlkAgCmh5GkA34OAUL E1nPXizzDWcD/wIBq1/ogZtls+fHiHeYv5oFHkZgf0VQnKRsK5ocpTL727pcWQnDWpwoizTFAcp jE7/Jpg+EtZo1rkng0zFjit0JbguMOlEzWantcxDHXFhqdc11u2l/yhdnxZ/223VUPeu1i6Jn+/ 43RX1+zAcoXI1eEe3F15qJ8n/NpWjYQ788FFS8QeLKpJRb37986re99E4rDd9V0t+RW+EWreg/I 9D9o/kbzcO2Y/IgxA6UxpcNV1RQFhibEz4OIGyCyOl9o= X-Received: by 2002:a5d:588a:0:b0:3e9:12ea:fab8 with SMTP id ffacd0b85a97d-3e912eafc58mr227307f8f.43.1757751114237; Sat, 13 Sep 2025 01:11:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEjAp9/6Yi9NAWa5lLhh3HDLPNALsnxvx8vFKzxwoOEmf8iMdAgLKeQBGyfs37CQ9aAu/L5jw== X-Received: by 2002:a5d:588a:0:b0:3e9:12ea:fab8 with SMTP id ffacd0b85a97d-3e912eafc58mr227278f8f.43.1757751113632; Sat, 13 Sep 2025 01:11:53 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 46/61] rust/pl011: drop dependency on qemu_api Date: Sat, 13 Sep 2025 10:09:27 +0200 Message-ID: <20250913080943.11710-47-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751571962116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-19-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/wrapper.h | 51 ++++++++++++++++++++++++++++++ rust/Cargo.lock | 1 - rust/hw/char/pl011/Cargo.toml | 1 - rust/hw/char/pl011/build.rs | 1 + rust/hw/char/pl011/meson.build | 27 ++++++++++++++-- rust/hw/char/pl011/src/bindings.rs | 27 ++++++++++++++++ rust/hw/char/pl011/src/device.rs | 2 +- rust/hw/char/pl011/src/lib.rs | 1 + 8 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 rust/hw/char/pl011/wrapper.h create mode 120000 rust/hw/char/pl011/build.rs create mode 100644 rust/hw/char/pl011/src/bindings.rs diff --git a/rust/hw/char/pl011/wrapper.h b/rust/hw/char/pl011/wrapper.h new file mode 100644 index 00000000000..87a5a589c8e --- /dev/null +++ b/rust/hw/char/pl011/wrapper.h @@ -0,0 +1,51 @@ +/* + * QEMU System Emulator + * + * Copyright (c) 2024 Linaro Ltd. + * + * Authors: Manos Pitsidianakis + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + + +/* + * This header file is meant to be used as input to the `bindgen` applicat= ion + * in order to generate C FFI compatible Rust bindings. + */ + +#ifndef __CLANG_STDATOMIC_H +#define __CLANG_STDATOMIC_H +/* + * Fix potential missing stdatomic.h error in case bindgen does not insert= the + * correct libclang header paths on its own. We do not use stdatomic.h sym= bols + * in QEMU code, so it's fine to declare dummy types instead. + */ +typedef enum memory_order { + memory_order_relaxed, + memory_order_consume, + memory_order_acquire, + memory_order_release, + memory_order_acq_rel, + memory_order_seq_cst, +} memory_order; +#endif /* __CLANG_STDATOMIC_H */ + +#include "qemu/osdep.h" +#include "hw/char/pl011.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index c407029afed..2018d13fbf5 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -149,7 +149,6 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_api", "qemu_macros", "qom", "system", diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 9e451fc0aa8..285d25c2178 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -24,7 +24,6 @@ qom =3D { path =3D "../../../qom" } chardev =3D { path =3D "../../../chardev" } system =3D { path =3D "../../../system" } hwcore =3D { path =3D "../../../hw/core" } -qemu_api =3D { path =3D "../../../qemu-api" } qemu_macros =3D { path =3D "../../../qemu-macros" } =20 [lints] diff --git a/rust/hw/char/pl011/build.rs b/rust/hw/char/pl011/build.rs new file mode 120000 index 00000000000..5f5060db356 --- /dev/null +++ b/rust/hw/char/pl011/build.rs @@ -0,0 +1 @@ +../../../util/build.rs \ No newline at end of file diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index bad6a839c39..a14993f6921 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -1,6 +1,30 @@ +# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. +# +# Rust bindings generation with `bindgen` might fail in some cases where t= he +# detected `libclang` does not match the expected `clang` version/target. = In +# this case you must pass the path to `clang` and `libclang` to your build +# command invocation using the environment variables CLANG_PATH and +# LIBCLANG_PATH +_libpl011_bindings_inc_rs =3D rust.bindgen( + input: 'wrapper.h', + dependencies: common_ss.all_dependencies(), + output: 'bindings.inc.rs', + include_directories: bindings_incdir, + bindgen_version: ['>=3D0.60.0'], + args: bindgen_args_common, +) + _libpl011_rs =3D static_library( 'pl011', - files('src/lib.rs'), + structured_sources( + [ + 'src/lib.rs', + 'src/bindings.rs', + 'src/device.rs', + 'src/registers.rs', + ], + {'.' : _libpl011_bindings_inc_rs}, + ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', dependencies: [ @@ -8,7 +32,6 @@ _libpl011_rs =3D static_library( bilge_impl_rs, bits_rs, common_rs, - qemu_api_rs, util_rs, migration_rs, bql_rs, diff --git a/rust/hw/char/pl011/src/bindings.rs b/rust/hw/char/pl011/src/bi= ndings.rs new file mode 100644 index 00000000000..bd5ea840cb2 --- /dev/null +++ b/rust/hw/char/pl011/src/bindings.rs @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#![allow( + dead_code, + improper_ctypes_definitions, + improper_ctypes, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + unnecessary_transmutes, + unsafe_op_in_unsafe_fn, + clippy::pedantic, + clippy::restriction, + clippy::style, + clippy::missing_const_for_fn, + clippy::ptr_offset_with_cast, + clippy::useless_transmute, + clippy::missing_safety_doc, + clippy::too_many_arguments +)] + +//! `bindgen`-generated declarations. + +#[cfg(MESON)] +include!("bindings.inc.rs"); + +#[cfg(not(MESON))] +include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 3010b6d9839..85626a969d4 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -130,7 +130,7 @@ pub struct PL011State { // structs, so the size of the Rust version must not be any larger // than the size of the C one. If this assert triggers you need to // expand the padding_for_rust[] array in the C PL011State struct. -static_assert!(size_of::() <=3D size_of::()); +static_assert!(size_of::() <=3D size_of::()); =20 qom_isa!(PL011State : SysBusDevice, DeviceState, Object); =20 diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index 2b70d2ff560..0c19b708c0a 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -12,6 +12,7 @@ //! See [`PL011State`](crate::device::PL011State) for the device model typ= e and //! the [`registers`] module for register types. =20 +mod bindings; mod device; mod registers; =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751645; cv=none; d=zohomail.com; s=zohoarc; b=eO52GQ12R3ZSMyJvUUhNpGH41ioZyTcAjEs1Yze5R038EY938tmiShZeTBgE1bB+CsnewBRipwzp1VRbKAaTioYlslbgmdUC+GlRSJRJbyDa7ao11tJF4AL/qyN7xg5Em/SFTdEm+InP0KBkNTg4FtWUKNZOXTknXOAGzPkMA7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751645; 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=1LPSYsNqNQZj0qqwLeQ44bnH1Mi9Qg0+txhVsw7SWVE=; b=Z/FtaLZ3O4FTbiQ5GBl+BltnDRVg/Vjx4IiBOKsIEMNNQWeRkS8eRGqvzeQpdKtz2Ch4AL5fdefKPIkTZy/+s8Av2Lm1pDbbxKKvK/DLutov9RvB7VmJ6xe8fXm++fHpXNQzpzlQQM3zyJfudNgwX3Sm3tlM7fPnfDYrYh0aE+M= 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 1757751645799960.6856003353131; Sat, 13 Sep 2025 01:20:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMr-0001Fn-3I; Sat, 13 Sep 2025 04:12: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 1uxLMb-0000l2-Me for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:07 -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 1uxLMY-0005Ay-Bj for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12: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-37-HYGwBwLJO2uXH4WMsFm9vw-1; Sat, 13 Sep 2025 04:11:59 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3df9f185c7cso1547168f8f.1 for ; Sat, 13 Sep 2025 01:11:58 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e760786c95sm9661988f8f.17.2025.09.13.01.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751120; 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=1LPSYsNqNQZj0qqwLeQ44bnH1Mi9Qg0+txhVsw7SWVE=; b=J6IHZl0FPqFsbAHY46AqB9A4E96LAVt9RfMgcLOmmbdg5vin3A2B7yxc2gVUCx8P6mEJ2Z 1Dh7JCoHC0LcbJ5KOTtJHsOGKtVkbbqunNCZLKye+qauxzUU7jb/LxbrEqoNKr9gtcX82s enzWIlg/QwdMep5iaVk6JZxY1WylZ5s= X-MC-Unique: HYGwBwLJO2uXH4WMsFm9vw-1 X-Mimecast-MFC-AGG-ID: HYGwBwLJO2uXH4WMsFm9vw_1757751118 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751117; x=1758355917; 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=1LPSYsNqNQZj0qqwLeQ44bnH1Mi9Qg0+txhVsw7SWVE=; b=HJ0sGegcaj2e3X5KwDS8VahhgpkfzHqZRcOJrLskNqEP0hrW4h1GRTvzhVtCzKzFwz 8c49qgtZbunbOMiI/4C5TWBZ+glNNNn+aUUH+nF6juuNBXorFFU2HUuzJVv6g8LbU9UL RPfKymE2h4mt9JnYVsojNDHbZo0qttxoDNjlrvoosGx8aaK71xnhoagXZ8PMwkHj9czJ PaHQLgBgw3Chk8JgU9JnaQJG/hELlro1QTYu69b66tkrHE8io3G+u/AbBaHjNTqbU6Hl WkL2TwfluAkf6WMw491Q4OF3HaaaYcCo/2FmERMOzCUzlZ3+1o9ilsjAQKzYpuIDikq7 E2ww== X-Gm-Message-State: AOJu0YxTQPY1BxtRAinfbitKv/f9KjnXt3OQflrFggMY7qdHEcQhlszc P6wIIO5ihb3VOeiNGnfnpddd6bGCeq2wMcVUY8w13n4HnS1MuqrXdaVJ29v07ZohsallOQ5jZC9 vM/5Yok1/xCmDxvJdYcI3TdzgoBELgrpjS8yq/m1ye+ZRvrh2VcSqtjSqcOtl2Go3JOmHOwxdi5 FQ5e05AZMhk+Hfks9HNuEfEQDkXLllSv8wi/pJwNjd X-Gm-Gg: ASbGncsdQHniMVd8kXsdfBF5A32hH5I31Ld8WUfQaaSzDrhHKiXbjMwj62uCLypavqa hVn8wwfaAqKsmiKkNlyqcSR1L9sFfLDYSTiTdbJPM7R/8TLyYtZ8PSaxGFWMqUilQs8XB1nswW9 AKG/JMa/5S+eOALQeZVF8gRmLAUztdomShko9K2oA2PRkpyDKbwWV6bkZ0P6kzVf7jFIxyEEXYm hQT5G/QgKmlfXJJKM8w4BbGI9zIQYex50nR0wrEQD+5N2extpmZ/SYh3v4xngZ+tZ8yqULvMwZ6 zn6ymsjx6z9iV1jomln4IjrpH9XfqmlEQmMbXgiLryMfy71uX8olOLdjp8QteRnxmKsGIgTAr9n dn7/yBgUEqEjOEQPPZ2JFEm7xSC3hJuiKkzjRW/e3utw= X-Received: by 2002:a05:6000:2c04:b0:3cb:cc6f:734e with SMTP id ffacd0b85a97d-3e7657960a1mr5814891f8f.14.1757751116597; Sat, 13 Sep 2025 01:11:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHf1XQo6KoVoDtaRtmoAcsRikYs38Hnay4e2UQZMgQO0Vx0DGNhzbXfA4n1yYrZ3dEU9BmI6A== X-Received: by 2002:a05:6000:2c04:b0:3cb:cc6f:734e with SMTP id ffacd0b85a97d-3e7657960a1mr5814862f8f.14.1757751116004; Sat, 13 Sep 2025 01:11:56 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 47/61] rust: repurpose qemu_api -> tests Date: Sat, 13 Sep 2025 10:09:28 +0200 Message-ID: <20250913080943.11710-48-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751646842116600 From: Marc-Andr=C3=A9 Lureau The crate purpose is only to provide integration tests at this point, that can't easily be moved to a specific crate. It's also often a good practice to have a single integration test crate (see for ex https://github.com/rust-lang/cargo/issues/4867) Drop README.md, use docs/devel/rust.rst instead. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-20-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- MAINTAINERS | 2 +- rust/qemu-api/wrapper.h | 53 ------------- rust/Cargo.lock | 30 ++++---- rust/Cargo.toml | 2 +- rust/meson.build | 4 +- rust/qemu-api/.gitignore | 2 - rust/qemu-api/README.md | 19 ----- rust/qemu-api/build.rs | 1 - rust/qemu-api/meson.build | 75 ------------------- rust/qemu-api/src/bindings.rs | 33 -------- rust/qemu-api/src/lib.rs | 18 ----- rust/qemu-api/src/prelude.rs | 5 -- rust/{qemu-api =3D> tests}/Cargo.toml | 7 +- rust/tests/meson.build | 14 ++++ .../tests/vmstate_tests.rs | 0 15 files changed, 35 insertions(+), 230 deletions(-) delete mode 100644 rust/qemu-api/wrapper.h delete mode 100644 rust/qemu-api/.gitignore delete mode 100644 rust/qemu-api/README.md delete mode 120000 rust/qemu-api/build.rs delete mode 100644 rust/qemu-api/meson.build delete mode 100644 rust/qemu-api/src/bindings.rs delete mode 100644 rust/qemu-api/src/lib.rs delete mode 100644 rust/qemu-api/src/prelude.rs rename rust/{qemu-api =3D> tests}/Cargo.toml (78%) create mode 100644 rust/tests/meson.build rename rust/{qemu-api =3D> tests}/tests/vmstate_tests.rs (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 23bda7d3325..05e0597d532 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3520,11 +3520,11 @@ F: rust/chardev/ F: rust/common/ F: rust/hw/core/ F: rust/migration/ -F: rust/qemu-api F: rust/qemu-macros/ F: rust/qom/ F: rust/rustfmt.toml F: rust/system/ +F: rust/tests/ F: rust/util/ F: scripts/get-wraps-from-cargo-registry.py =20 diff --git a/rust/qemu-api/wrapper.h b/rust/qemu-api/wrapper.h deleted file mode 100644 index 7c9c20b14fe..00000000000 --- a/rust/qemu-api/wrapper.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2024 Linaro Ltd. - * - * Authors: Manos Pitsidianakis - * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. - */ - - -/* - * This header file is meant to be used as input to the `bindgen` applicat= ion - * in order to generate C FFI compatible Rust bindings. - */ - -#ifndef __CLANG_STDATOMIC_H -#define __CLANG_STDATOMIC_H -/* - * Fix potential missing stdatomic.h error in case bindgen does not insert= the - * correct libclang header paths on its own. We do not use stdatomic.h sym= bols - * in QEMU code, so it's fine to declare dummy types instead. - */ -typedef enum memory_order { - memory_order_relaxed, - memory_order_consume, - memory_order_acquire, - memory_order_release, - memory_order_acq_rel, - memory_order_seq_cst, -} memory_order; -#endif /* __CLANG_STDATOMIC_H */ - -#include "qemu/osdep.h" -#include "qemu-io.h" -#include "exec/memattrs.h" -#include "hw/char/pl011.h" diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 2018d13fbf5..ac79c6a34a9 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -187,21 +187,6 @@ dependencies =3D [ "unicode-ident", ] =20 -[[package]] -name =3D "qemu_api" -version =3D "0.1.0" -dependencies =3D [ - "bql", - "chardev", - "common", - "hwcore", - "migration", - "qemu_macros", - "qom", - "system", - "util", -] - [[package]] name =3D "qemu_macros" version =3D "0.1.0" @@ -252,6 +237,21 @@ dependencies =3D [ "util", ] =20 +[[package]] +name =3D "tests" +version =3D "0.1.0" +dependencies =3D [ + "bql", + "chardev", + "common", + "hwcore", + "migration", + "qemu_macros", + "qom", + "system", + "util", +] + [[package]] name =3D "unicode-ident" version =3D "1.0.12" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index b2a5c230fa2..d8183c614d4 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -6,13 +6,13 @@ members =3D [ "common", "migration", "qemu-macros", - "qemu-api", "qom", "system", "hw/core", "hw/char/pl011", "hw/timer/hpet", "util", + "tests", ] =20 [workspace.package] diff --git a/rust/meson.build b/rust/meson.build index 9f6a0b161d2..bd9b9cb83ea 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -18,8 +18,6 @@ quote_rs_native =3D dependency('quote-1-rs', native: true) syn_rs_native =3D dependency('syn-2-rs', native: true) proc_macro2_rs_native =3D dependency('proc-macro2-1-rs', native: true) =20 -qemuutil_rs =3D qemuutil.partial_dependency(link_args: true, links: true) - genrs =3D [] =20 subdir('common') @@ -32,7 +30,7 @@ subdir('qom') subdir('system') subdir('chardev') subdir('hw/core') -subdir('qemu-api') +subdir('tests') =20 subdir('hw') =20 diff --git a/rust/qemu-api/.gitignore b/rust/qemu-api/.gitignore deleted file mode 100644 index df6c2163e03..00000000000 --- a/rust/qemu-api/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Ignore generated bindings file overrides. -/src/bindings.inc.rs diff --git a/rust/qemu-api/README.md b/rust/qemu-api/README.md deleted file mode 100644 index ed1b7ab263d..00000000000 --- a/rust/qemu-api/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# QEMU bindings and API wrappers - -This library exports helper Rust types, Rust macros and C FFI bindings for= internal QEMU APIs. - -The C bindings can be generated with `bindgen`, using this build target: - -```console -$ make bindings.inc.rs -``` - -## Generate Rust documentation - -Common Cargo tasks can be performed from the QEMU build directory - -```console -$ make clippy -$ make rustfmt -$ make rustdoc -``` diff --git a/rust/qemu-api/build.rs b/rust/qemu-api/build.rs deleted file mode 120000 index 71a3167885c..00000000000 --- a/rust/qemu-api/build.rs +++ /dev/null @@ -1 +0,0 @@ -../util/build.rs \ No newline at end of file diff --git a/rust/qemu-api/meson.build b/rust/qemu-api/meson.build deleted file mode 100644 index fe81f16d990..00000000000 --- a/rust/qemu-api/meson.build +++ /dev/null @@ -1,75 +0,0 @@ -_qemu_api_cfg =3D run_command(rustc_args, - '--config-headers', config_host_h, '--features', files('Cargo.toml'), - capture: true, check: true).stdout().strip().splitlines() - -c_enums =3D [ - 'MemoryDeviceInfoKind', -] -_qemu_api_bindgen_args =3D [] -foreach enum : c_enums - _qemu_api_bindgen_args +=3D ['--rustified-enum', enum] -endforeach - -blocked_type =3D [ - 'Chardev', - 'Error', - 'MemTxAttrs', - 'MemoryRegion', - 'ObjectClass', - 'VMStateDescription', - 'device_endian', -] -foreach type: blocked_type - _qemu_api_bindgen_args +=3D ['--blocklist-type', type] -endforeach - -# TODO: Remove this comment when the clang/libclang mismatch issue is solv= ed. -# -# Rust bindings generation with `bindgen` might fail in some cases where t= he -# detected `libclang` does not match the expected `clang` version/target. = In -# this case you must pass the path to `clang` and `libclang` to your build -# command invocation using the environment variables CLANG_PATH and -# LIBCLANG_PATH -_qemu_api_bindings_inc_rs =3D rust.bindgen( - input: 'wrapper.h', - dependencies: common_ss.all_dependencies(), - output: 'bindings.inc.rs', - include_directories: bindings_incdir, - bindgen_version: ['>=3D0.60.0'], - args: bindgen_args_common + _qemu_api_bindgen_args, - ) - -_qemu_api_rs =3D static_library( - 'qemu_api', - structured_sources( - [ - 'src/lib.rs', - 'src/bindings.rs', - 'src/prelude.rs', - ], - {'.' : _qemu_api_bindings_inc_rs}, - ), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_abi: 'rust', - rust_args: _qemu_api_cfg, - dependencies: [anyhow_rs, bql_rs, chardev_rs, common_rs, foreign_rs, hwc= ore_rs, libc_rs, migration_rs, qemu_macros, - qom_rs, system_rs, util_rs, hwcore], -) - -qemu_api_rs =3D declare_dependency(link_with: [_qemu_api_rs], - dependencies: [qemu_macros, qom, hwcore, chardev, migration]) - -test('rust-qemu-api-integration', - executable( - 'rust-qemu-api-integration', - files('tests/vmstate_tests.rs'), - override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], - rust_args: ['--test'], - install: false, - dependencies: [bql_rs, common_rs, util_rs, migration_rs, qom_rs, q= emu_api_rs]), - args: [ - '--test', '--test-threads', '1', - '--format', 'pretty', - ], - protocol: 'rust', - suite: ['unit', 'rust']) diff --git a/rust/qemu-api/src/bindings.rs b/rust/qemu-api/src/bindings.rs deleted file mode 100644 index 9c863e9b5b4..00000000000 --- a/rust/qemu-api/src/bindings.rs +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -#![allow( - dead_code, - improper_ctypes_definitions, - improper_ctypes, - non_camel_case_types, - non_snake_case, - non_upper_case_globals, - unnecessary_transmutes, - unsafe_op_in_unsafe_fn, - clippy::pedantic, - clippy::restriction, - clippy::style, - clippy::missing_const_for_fn, - clippy::ptr_offset_with_cast, - clippy::useless_transmute, - clippy::missing_safety_doc, - clippy::too_many_arguments -)] - -//! `bindgen`-generated declarations. - -use chardev::bindings::Chardev; -use migration::bindings::VMStateDescription; -use qom::bindings::ObjectClass; -use system::bindings::{device_endian, MemTxAttrs, MemoryRegion}; -use util::bindings::Error; - -#[cfg(MESON)] -include!("bindings.inc.rs"); - -#[cfg(not(MESON))] -include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs deleted file mode 100644 index 21b886035f3..00000000000 --- a/rust/qemu-api/src/lib.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2024, Linaro Limited -// Author(s): Manos Pitsidianakis -// SPDX-License-Identifier: GPL-2.0-or-later - -#![cfg_attr(not(MESON), doc =3D include_str!("../README.md"))] -#![deny(clippy::missing_const_for_fn)] - -#[rustfmt::skip] -pub mod bindings; - -// preserve one-item-per-"use" syntax, it is clearer -// for prelude-like modules -#[rustfmt::skip] -pub mod prelude; - -// Allow proc-macros to refer to `::qemu_api` inside the `qemu_api` crate = (this -// crate). -extern crate self as qemu_api; diff --git a/rust/qemu-api/src/prelude.rs b/rust/qemu-api/src/prelude.rs deleted file mode 100644 index 8db56f9f817..00000000000 --- a/rust/qemu-api/src/prelude.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2024 Red Hat, Inc. -// Author(s): Paolo Bonzini -// SPDX-License-Identifier: GPL-2.0-or-later - -//! Commonly used traits and types for QEMU. diff --git a/rust/qemu-api/Cargo.toml b/rust/tests/Cargo.toml similarity index 78% rename from rust/qemu-api/Cargo.toml rename to rust/tests/Cargo.toml index 9abb88aa1f8..8d106d896d7 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/tests/Cargo.toml @@ -1,12 +1,11 @@ [package] -name =3D "qemu_api" +name =3D "tests" version =3D "0.1.0" -authors =3D ["Manos Pitsidianakis "] -description =3D "Rust bindings for QEMU" -readme =3D "README.md" +description =3D "Rust integration tests for QEMU" resolver =3D "2" publish =3D false =20 +authors.workspace =3D true edition.workspace =3D true homepage.workspace =3D true license.workspace =3D true diff --git a/rust/tests/meson.build b/rust/tests/meson.build new file mode 100644 index 00000000000..00688c66fb1 --- /dev/null +++ b/rust/tests/meson.build @@ -0,0 +1,14 @@ +test('rust-integration', + executable( + 'rust-integration', + files('tests/vmstate_tests.rs'), + override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], + rust_args: ['--test'], + install: false, + dependencies: [bql_rs, common_rs, util_rs, migration_rs, qom_rs]), + args: [ + '--test', '--test-threads', '1', + '--format', 'pretty', + ], + protocol: 'rust', + suite: ['unit', 'rust']) diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/tests/tests/vmstat= e_tests.rs similarity index 100% rename from rust/qemu-api/tests/vmstate_tests.rs rename to rust/tests/tests/vmstate_tests.rs --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751258; cv=none; d=zohomail.com; s=zohoarc; b=XI+jx3lBaNg0qj5Be26fK9MLh1v5F5GmdVYvYL7ysNaCJdwj+wpPkwb0+URiphmjrIXBAp5zCli9rnDgY9AsLMOeaHb73/WgR6Ix5ybofUz3e2c5FgnOs7/jVNetkhW8+owHuDDDzGYGXPSn8LHaiOM7rg0Ufjn8YrUdmrkqlh4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751258; 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=xf154j2uS3gv+OhD8JPEgOnYpqedsHX6I94geXljhC0=; b=VNhsqZstokuT1B5Rn48i0mJBzfdlqrjN6/B7nc/4m+sl/1rpM6TOmkU69kjLGWpH7ZVJB8/+dlQ2n/4z5gDGFy4NtjahYfB7dSu0nBdvbBkgIyIFd7oeTpWd6BP7d10xYUO5AxuhyFCxDaKNEdmx+ntfycTyX/X/dRUOP93O5Ho= 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 1757751258734944.2359307175499; Sat, 13 Sep 2025 01:14:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNJ-0002KA-Em; Sat, 13 Sep 2025 04:12:50 -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 1uxLMc-0000l6-ET for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:08 -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 1uxLMY-0005BQ-Vw for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:06 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-42-gVGeJKtdPvmBJ7Gc9a9Dnw-1; Sat, 13 Sep 2025 04:12:00 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45dcf5f1239so11709135e9.2 for ; Sat, 13 Sep 2025 01:12:00 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e41b6dbdbsm75893125e9.22.2025.09.13.01.11.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751121; 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=xf154j2uS3gv+OhD8JPEgOnYpqedsHX6I94geXljhC0=; b=LRKz11iKkUY7hYu0bx64k55Uc7jRPHTlhsWd9qe22yDfLUpJWPhl8/KLJ7JnEZpnIDxrIj DI3on57MYDpDJTVzXNzpfH5Rg23/iWHB5PDizo+eYlXwhD9KD0UjFfa/1IkP5o2h9lZtr/ SX7H+mCJMjly0XLUusRNZwwgwHPHQdE= X-MC-Unique: gVGeJKtdPvmBJ7Gc9a9Dnw-1 X-Mimecast-MFC-AGG-ID: gVGeJKtdPvmBJ7Gc9a9Dnw_1757751119 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751118; x=1758355918; 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=xf154j2uS3gv+OhD8JPEgOnYpqedsHX6I94geXljhC0=; b=q1Y6cSalDeq2AuR2QCS7UI+0yvDlzR0znLtOkUyxEvh+WGVr2EdU2p7smhfUT2a33j YbyvQfpmpbelL1vocp0VrddbRsHx2IECQQZ/T1y0N8aF80Xg261eAkcVToHE4isEXvO5 tGtZKZa06oLFfWHS8O2D5Bp6y7JNAzgwl/zz6WwFOmBSZm4aEM+VLy54sbN494MYF8x4 x53kPoHZ3AyFyuY/ET+ZaxnsmiGkYCPUFSqLDhjnxUwG76yplScQWgj+gSA5jOWTE15b l/LOGCYUHG5WgDW84zqeJoH3AJQdckdLI+rc6Gl/NQ3HGvBEhxvRbRUwdumkHMR5P5dV GDUw== X-Gm-Message-State: AOJu0Yzh7hxm85yto339l9wfYGALAXtevVHTKJQ9ocCH7AVg9rQOOels em1ocamnKljz7flR5xSdVb+lMF30h7bEFEITHIlhBP53RzTczqvdD/QaQaLlEz6wOPqd0oZNZEf E2lToXzC/3IZ94mCycwG1FZrWbIUdC+d7GSHGLlvNMXUZDMIHqmUxTT5yizuECjMMd4XJuiuHqO SfxdBoY5oWfxfQcmAZczxBN4gOxePtEFQMMqBCbedj X-Gm-Gg: ASbGncsnU2ItFJ/dTIDa5QP1NXkTQG9fRgxA+dx6hsrIag3LmNLMffLZmDh3N0WGSLQ bfac6OflXuszyQjIP95tRnPOy8rQsbr2ZXHcvImliGf1hCssw4MCYe1RRqv3LFGC3cvklLpyjwE 5xep/gSVkzjZoQrc39Mu5sEAp80S+vLN+A9papKCBuT+T81zF9KqA7kjcB0KQo3EcO6+tben+Pu fm9DnZbhXln2EOhKNTBhzc8hXnNaNlvHzTF9SdeSzw4gExsfqSA+mC7mokEZnssycJQhXFAayac yz2fbDLazCildcAR9v7+dhSxYDtnuSkbg/cehDszsTKGmDtokZTA3P9esdAXLG02cVBxtjyKw6U 2r0ScIAu/KOsmiT2+KkouRu1kISfNCd5Y1CYd298Geaw= X-Received: by 2002:a05:6000:607:b0:3e7:5f26:f1e5 with SMTP id ffacd0b85a97d-3e7657c4d40mr4644184f8f.23.1757751117654; Sat, 13 Sep 2025 01:11:57 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEVt5nh59h8ek2PXoEwrc50XONu76yhoqvnC7fTXAex//7QK9J6SCCB+PNHpCLv+bA09scKnA== X-Received: by 2002:a05:6000:607:b0:3e7:5f26:f1e5 with SMTP id ffacd0b85a97d-3e7657c4d40mr4644160f8f.23.1757751117276; Sat, 13 Sep 2025 01:11:57 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 48/61] rust: re-export qemu_macros internal helper in "bits" Date: Sat, 13 Sep 2025 10:09:29 +0200 Message-ID: <20250913080943.11710-49-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751260028116600 From: Marc-Andr=C3=A9 Lureau Avoid the need to import "qemu_macros". Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-21-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- rust/bits/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rust/bits/src/lib.rs b/rust/bits/src/lib.rs index 1bc882fde18..d1141f7c882 100644 --- a/rust/bits/src/lib.rs +++ b/rust/bits/src/lib.rs @@ -380,14 +380,17 @@ fn from(x: $type) -> Self { }; =20 { $type:ty: $expr:expr } =3D> { - ::qemu_macros::bits_const_internal! { $type @ ($expr) } + $crate::bits_const_internal! { $type @ ($expr) } }; =20 { $type:ty as $int_type:ty: $expr:expr } =3D> { - (::qemu_macros::bits_const_internal! { $type @ ($expr) }.into_bits= ()) as $int_type + ($crate::bits_const_internal! { $type @ ($expr) }.into_bits()) as = $int_type }; } =20 +#[doc(hidden)] +pub use qemu_macros::bits_const_internal; + #[cfg(test)] mod test { bits! { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751933; cv=none; d=zohomail.com; s=zohoarc; b=adEnFl8zfrx6U1VVd/2m/RToTWMTGTsMQETqcqoN86DtBssbiUW3LVdUNrmL9Dsg0aiAMgOWzzX+ej3fvlXmknKyecUuE7RbpT86k/DrAO+ocayrPuoGderuTtgAOU9cWVLqocMicjDyQBm5dmx71EUI6zLePnGSd3NSODmtrsQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751933; 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=Er0y421yFdGhHTiJqDqg2wnXxCk9uNzxTd4iS/AjYEs=; b=lIoS7e1ieF9rPEpOyJFp5drgWMH9dy2TxezP67M1LJApcPI9q5bOzakB3NMkQl7oFBqq0uKQYYqomjIJeEOV/szlFBLioe3rof3sEYzGi6fnFZeI5WLv6Z0VmIaYYnQvLllWljnw/E66+22embTPsMgAi6/mAMABx9UARriKzyc= 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 1757751933493168.50422747961193; Sat, 13 Sep 2025 01:25:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNO-0002i8-AI; Sat, 13 Sep 2025 04:12:54 -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 1uxLMg-0000ta-UF for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:11 -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 1uxLMc-0005Ck-OF for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:10 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-605-fa15fcfmO1-U6Mu9rdZQ-g-1; Sat, 13 Sep 2025 04:12:04 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45cb4f23156so15626535e9.2 for ; Sat, 13 Sep 2025 01:12:03 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e017b3137sm95001445e9.19.2025.09.13.01.11.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:11:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751125; 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=Er0y421yFdGhHTiJqDqg2wnXxCk9uNzxTd4iS/AjYEs=; b=FU/7XbJOvIaoEytBj2IVRoPMi5QGe/8KYfQu15NyyfM7h8gwUtUUdMe3VNM4QKjDmZuSvP ydJSXTb0WHpuD1y8IrCkC57NN+t2WBR1LDxMVT/anTdWzERsgt376eHT4bgY7jiqHDWe9g cb0xqUMShuSr4QWGnXayrU+yQ/Ndfmw= X-MC-Unique: fa15fcfmO1-U6Mu9rdZQ-g-1 X-Mimecast-MFC-AGG-ID: fa15fcfmO1-U6Mu9rdZQ-g_1757751123 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751121; x=1758355921; 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=Er0y421yFdGhHTiJqDqg2wnXxCk9uNzxTd4iS/AjYEs=; b=NDek6ihMWuUVtacYrugDRbOKWlNqQE0C7sAVtatzBfxeVOV/o2Tlq2k79jYCdaqaeB 1DsRzyl3JIyIO14zFrLl9D29DqL4TxRdK5s2yHrYLMlCW+4sPXpdHSsu4HV9EpUukEow nx49gDy5WdPH+IyGzvVKdfTKQ6y2a21SWsQHwBATa3YeZc8dbccyGzAH4K9AFoV80Xae HlJGzReiIh2LsYiJ+Gb0C0QwtQOCrSkr6cLDiwOhdp68BqrUlhfYsK3CdNFY7DO4ICXS nHW5kR+sF9l3O59vN73gW58mcogtnWeYjrneV5t2g/UknXO1uhDo+/CpJjpYZQfnjfaD 2tDA== X-Gm-Message-State: AOJu0YxRw5QLHYdJLDTXQtIXW27J8aNa/6Saj5TRzWymZQVTTJERzb0z 49O8sB5mY4euuefEzeDF2CAYUEQRlnjmHoV65D0Irn5ZRpqe2oNwDjCzM7UaB9b5EYf1HJrVK4x UCxgoL+YitDtr0Znl4FzbLQXqYBoDHzBa971YWW+DaDhGzG4vqh3bYjeUM9zYfJZzPFDS5kx7S7 VgtKlkihyao8GQpFPYjse2dQw9Bs2qdig7acOoh4Gi X-Gm-Gg: ASbGncu7YCD6gaUmgywtroaY/1Uvxf6HbZbtEVQDUL6b/jJV81hpV4cS3C7t+cgtIhX PuHvOCjp+It77RviZlBGXfVstZTjA1JaiOBhhRFPcU06w6RYQp227YEfddnF4qOYnvU8zZSVFMX X3EsIvaNF712ERP9M6rgRRb7E3qwh37TQQo7FzY5eutDGJ0pTu6RxeZtvvjmoXWBJS8ZZyoEPU4 sqZpRigkwOabnMJUlYIJEEB/QaInp64SNTlvXQL5OiDk6lJf5mduw7KAexypIF3RTt4QUWjq4pg iH+EfOUS39EmOs5dhtdLdL1G8mc0GjW3b2nJseDnlfGQ2/dpcgNctOHDfh+hW4oF3BcEfhzW45Y VXn0iUty+/dBdXTExrK641YDChQAagYy7k7laJBUdEY8= X-Received: by 2002:a05:600c:3515:b0:45f:28ed:6e1e with SMTP id 5b1f17b1804b1-45f28ed71c9mr6355835e9.16.1757751121406; Sat, 13 Sep 2025 01:12:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IECO6gazLVNKoRKlo7HCANk9o+l/EzDw0crNKUMP5vMxmtEla/Tm29thgBcgdeG5Frd/XkaQQ== X-Received: by 2002:a05:600c:3515:b0:45f:28ed:6e1e with SMTP id 5b1f17b1804b1-45f28ed71c9mr6355295e9.16.1757751120705; Sat, 13 Sep 2025 01:12:00 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 49/61] rust: re-export qemu macros from common/qom/hwcore Date: Sat, 13 Sep 2025 10:09:30 +0200 Message-ID: <20250913080943.11710-50-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751936135116600 From: Marc-Andr=C3=A9 Lureau This is just a bit nicer. Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-22-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 2 +- rust/Cargo.lock | 8 +------- rust/chardev/Cargo.toml | 1 - rust/chardev/meson.build | 2 +- rust/chardev/src/chardev.rs | 2 +- rust/common/Cargo.toml | 1 + rust/common/meson.build | 2 +- rust/common/src/lib.rs | 2 ++ rust/common/src/opaque.rs | 4 +--- rust/hw/char/pl011/Cargo.toml | 1 - rust/hw/char/pl011/meson.build | 1 - rust/hw/char/pl011/src/device.rs | 4 ++-- rust/hw/char/pl011/src/registers.rs | 2 +- rust/hw/core/Cargo.toml | 2 +- rust/hw/core/meson.build | 2 +- rust/hw/core/src/irq.rs | 2 +- rust/hw/core/src/lib.rs | 1 + rust/hw/core/src/qdev.rs | 4 ++-- rust/hw/core/src/sysbus.rs | 2 +- rust/hw/core/tests/tests.rs | 4 ++-- rust/hw/timer/hpet/Cargo.toml | 1 - rust/hw/timer/hpet/meson.build | 1 - rust/hw/timer/hpet/src/device.rs | 6 +++--- rust/meson.build | 3 ++- rust/migration/Cargo.toml | 1 - rust/qom/src/lib.rs | 2 ++ rust/qom/src/qom.rs | 4 ++-- rust/system/Cargo.toml | 1 - rust/system/meson.build | 2 +- rust/system/src/memory.rs | 2 +- rust/tests/Cargo.toml | 1 - rust/util/Cargo.toml | 1 - rust/util/meson.build | 2 +- rust/util/src/timer.rs | 4 ++-- 34 files changed, 35 insertions(+), 45 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 20d15347def..29eb48af35b 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -278,7 +278,7 @@ a raw pointer, for use in calls to C functions. It can= be used for example as follows:: =20 #[repr(transparent)] - #[derive(Debug, qemu_api_macros::Wrapper)] + #[derive(Debug, common::Wrapper)] pub struct Object(Opaque); =20 where the special ``derive`` macro provides useful methods such as diff --git a/rust/Cargo.lock b/rust/Cargo.lock index ac79c6a34a9..eea928621a7 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -58,7 +58,6 @@ dependencies =3D [ "bql", "common", "migration", - "qemu_macros", "qom", "util", ] @@ -68,6 +67,7 @@ name =3D "common" version =3D "0.1.0" dependencies =3D [ "libc", + "qemu_macros", ] =20 [[package]] @@ -93,7 +93,6 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_macros", "qom", "system", "util", @@ -133,7 +132,6 @@ name =3D "migration" version =3D "0.1.0" dependencies =3D [ "common", - "qemu_macros", "util", ] =20 @@ -149,7 +147,6 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_macros", "qom", "system", "util", @@ -232,7 +229,6 @@ name =3D "system" version =3D "0.1.0" dependencies =3D [ "common", - "qemu_macros", "qom", "util", ] @@ -246,7 +242,6 @@ dependencies =3D [ "common", "hwcore", "migration", - "qemu_macros", "qom", "system", "util", @@ -266,7 +261,6 @@ dependencies =3D [ "common", "foreign", "libc", - "qemu_macros", ] =20 [[package]] diff --git a/rust/chardev/Cargo.toml b/rust/chardev/Cargo.toml index c1391773078..3e77972546e 100644 --- a/rust/chardev/Cargo.toml +++ b/rust/chardev/Cargo.toml @@ -18,7 +18,6 @@ bql =3D { path =3D "../bql" } migration =3D { path =3D "../migration" } qom =3D { path =3D "../qom" } util =3D { path =3D "../util" } -qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index a2fa3268d21..370895c111f 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -38,4 +38,4 @@ _chardev_rs =3D static_library( dependencies: [common_rs, qemu_macros], ) =20 -chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [qemu_macros, chardev, qemuutil]) +chardev_rs =3D declare_dependency(link_with: [_chardev_rs], dependencies: = [chardev, qemuutil]) diff --git a/rust/chardev/src/chardev.rs b/rust/chardev/src/chardev.rs index cb6f99398eb..2014479674f 100644 --- a/rust/chardev/src/chardev.rs +++ b/rust/chardev/src/chardev.rs @@ -26,7 +26,7 @@ =20 /// A safe wrapper around [`bindings::Chardev`]. #[repr(transparent)] -#[derive(qemu_macros::Wrapper)] +#[derive(common::Wrapper)] pub struct Chardev(Opaque); =20 pub type ChardevClass =3D bindings::ChardevClass; diff --git a/rust/common/Cargo.toml b/rust/common/Cargo.toml index 5e106427e80..0e1b4fc5050 100644 --- a/rust/common/Cargo.toml +++ b/rust/common/Cargo.toml @@ -14,6 +14,7 @@ rust-version.workspace =3D true =20 [dependencies] libc.workspace =3D true +qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/common/meson.build b/rust/common/meson.build index 230a967760d..b805e0faf57 100644 --- a/rust/common/meson.build +++ b/rust/common/meson.build @@ -19,7 +19,7 @@ _common_rs =3D static_library( override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', rust_args: _common_cfg, - dependencies: [libc_rs], + dependencies: [libc_rs, qemu_macros], ) =20 common_rs =3D declare_dependency(link_with: [_common_rs]) diff --git a/rust/common/src/lib.rs b/rust/common/src/lib.rs index 25216503aab..8311bf945da 100644 --- a/rust/common/src/lib.rs +++ b/rust/common/src/lib.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 +pub use qemu_macros::{TryInto, Wrapper}; + pub mod assertions; =20 pub mod bitops; diff --git a/rust/common/src/opaque.rs b/rust/common/src/opaque.rs index 3b3263acaa3..c941fb45462 100644 --- a/rust/common/src/opaque.rs +++ b/rust/common/src/opaque.rs @@ -192,7 +192,7 @@ pub unsafe fn new() -> Self { =20 /// Annotates [`Self`] as a transparent wrapper for another type. /// -/// Usually defined via the [`qemu_macros::Wrapper`] derive macro. +/// Usually defined via the [`crate::Wrapper`] derive macro. /// /// # Examples /// @@ -227,8 +227,6 @@ pub unsafe fn new() -> Self { /// ``` /// /// They are not defined here to allow them to be `const`. -/// -/// [`qemu_macros::Wrapper`]: ../../qemu_macros/derive.Wrapper.html pub unsafe trait Wrapper { type Wrapped; } diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index 285d25c2178..b2418abc4bf 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -24,7 +24,6 @@ qom =3D { path =3D "../../../qom" } chardev =3D { path =3D "../../../chardev" } system =3D { path =3D "../../../system" } hwcore =3D { path =3D "../../../hw/core" } -qemu_macros =3D { path =3D "../../../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index a14993f6921..628a5238702 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -35,7 +35,6 @@ _libpl011_rs =3D static_library( util_rs, migration_rs, bql_rs, - qemu_macros, qom_rs, chardev_rs, system_rs, diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 85626a969d4..1b4587d5f60 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -97,7 +97,7 @@ pub struct PL011Registers { } =20 #[repr(C)] -#[derive(qemu_macros::Object, qemu_macros::Device)] +#[derive(qom::Object, hwcore::Device)] /// PL011 Device Model in QEMU pub struct PL011State { pub parent_obj: ParentField, @@ -683,7 +683,7 @@ pub fn post_load(&self, _version_id: u8) -> Result<(), = migration::InvalidError> } =20 #[repr(C)] -#[derive(qemu_macros::Object, qemu_macros::Device)] +#[derive(qom::Object, hwcore::Device)] /// PL011 Luminary device model. pub struct PL011Luminary { parent_obj: ParentField, diff --git a/rust/hw/char/pl011/src/registers.rs b/rust/hw/char/pl011/src/r= egisters.rs index a1c41347ed5..0c3a4d7d214 100644 --- a/rust/hw/char/pl011/src/registers.rs +++ b/rust/hw/char/pl011/src/registers.rs @@ -16,7 +16,7 @@ #[doc(alias =3D "offset")] #[allow(non_camel_case_types)] #[repr(u64)] -#[derive(Debug, Eq, PartialEq, qemu_macros::TryInto)] +#[derive(Debug, Eq, PartialEq, common::TryInto)] pub enum RegisterOffset { /// Data Register /// diff --git a/rust/hw/core/Cargo.toml b/rust/hw/core/Cargo.toml index 0eb9ffee263..9a9aa517082 100644 --- a/rust/hw/core/Cargo.toml +++ b/rust/hw/core/Cargo.toml @@ -13,6 +13,7 @@ repository.workspace =3D true rust-version.workspace =3D true =20 [dependencies] +qemu_macros =3D { path =3D "../../qemu-macros" } common =3D { path =3D "../../common" } bql =3D { path =3D "../../bql" } qom =3D { path =3D "../../qom" } @@ -20,7 +21,6 @@ chardev =3D { path =3D "../../chardev" } migration =3D { path =3D "../../migration" } system =3D { path =3D "../../system" } util =3D { path =3D "../../util" } -qemu_macros =3D { path =3D "../../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 67eacf854fe..81d8c77f9ad 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -71,7 +71,7 @@ test('rust-hwcore-rs-integration', override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_args: ['--test'], install: false, - dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, qemu_ma= cros, util_rs]), + dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, util_rs= ]), args: [ '--test', '--test-threads', '1', '--format', 'pretty', diff --git a/rust/hw/core/src/irq.rs b/rust/hw/core/src/irq.rs index d8d964cad27..e0d7784d97b 100644 --- a/rust/hw/core/src/irq.rs +++ b/rust/hw/core/src/irq.rs @@ -18,7 +18,7 @@ =20 /// An opaque wrapper around [`bindings::IRQState`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct IRQState(Opaque); =20 /// Interrupt sources are used by devices to pass changes to a value (typi= cally diff --git a/rust/hw/core/src/lib.rs b/rust/hw/core/src/lib.rs index c5588d9bc27..b40801eb843 100644 --- a/rust/hw/core/src/lib.rs +++ b/rust/hw/core/src/lib.rs @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 +pub use qemu_macros::Device; pub use qom; =20 pub mod bindings; diff --git a/rust/hw/core/src/qdev.rs b/rust/hw/core/src/qdev.rs index c9faf44a71d..71b9ef141c3 100644 --- a/rust/hw/core/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -23,7 +23,7 @@ =20 /// A safe wrapper around [`bindings::Clock`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct Clock(Opaque); =20 unsafe impl Send for Clock {} @@ -31,7 +31,7 @@ unsafe impl Sync for Clock {} =20 /// A safe wrapper around [`bindings::DeviceState`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct DeviceState(Opaque); =20 unsafe impl Send for DeviceState {} diff --git a/rust/hw/core/src/sysbus.rs b/rust/hw/core/src/sysbus.rs index 92c7449b802..282315fce99 100644 --- a/rust/hw/core/src/sysbus.rs +++ b/rust/hw/core/src/sysbus.rs @@ -19,7 +19,7 @@ =20 /// A safe wrapper around [`bindings::SysBusDevice`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct SysBusDevice(Opaque); =20 unsafe impl Send for SysBusDevice {} diff --git a/rust/hw/core/tests/tests.rs b/rust/hw/core/tests/tests.rs index 2f08b8f3bfe..247d812866d 100644 --- a/rust/hw/core/tests/tests.rs +++ b/rust/hw/core/tests/tests.rs @@ -17,7 +17,7 @@ .build(); =20 #[repr(C)] -#[derive(qemu_macros::Object, qemu_macros::Device)] +#[derive(qom::Object, hwcore::Device)] pub struct DummyState { parent: ParentField, #[property(rename =3D "migrate-clk", default =3D true)] @@ -54,7 +54,7 @@ impl DeviceImpl for DummyState { } =20 #[repr(C)] -#[derive(qemu_macros::Object, qemu_macros::Device)] +#[derive(qom::Object, hwcore::Device)] pub struct DummyChildState { parent: ParentField, } diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 08bf97af553..f781b28d8b3 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -17,7 +17,6 @@ migration =3D { path =3D "../../../migration" } bql =3D { path =3D "../../../bql" } qom =3D { path =3D "../../../qom" } system =3D { path =3D "../../../system" } -qemu_macros =3D { path =3D "../../../qemu-macros" } hwcore =3D { path =3D "../../../hw/core" } =20 [lints] diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index 8ab26630d95..b6bb9477f0c 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -8,7 +8,6 @@ _libhpet_rs =3D static_library( util_rs, migration_rs, bql_rs, - qemu_macros, qom_rs, system_rs, hwcore_rs, diff --git a/rust/hw/timer/hpet/src/device.rs b/rust/hw/timer/hpet/src/devi= ce.rs index 07e0f639fc4..3cfbe9c32bb 100644 --- a/rust/hw/timer/hpet/src/device.rs +++ b/rust/hw/timer/hpet/src/device.rs @@ -97,7 +97,7 @@ /// Timer N Interrupt Routing Capability (bits 32:63) const HPET_TN_CFG_INT_ROUTE_CAP_SHIFT: usize =3D 32; =20 -#[derive(qemu_macros::TryInto)] +#[derive(common::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] /// Timer registers, masked by 0x18 @@ -110,7 +110,7 @@ enum TimerRegister { ROUTE =3D 16, } =20 -#[derive(qemu_macros::TryInto)] +#[derive(common::TryInto)] #[repr(u64)] #[allow(non_camel_case_types)] /// Global registers @@ -520,7 +520,7 @@ fn write(&mut self, reg: TimerRegister, value: u64, shi= ft: u32, len: u32) { =20 /// HPET Event Timer Block Abstraction #[repr(C)] -#[derive(qemu_macros::Object)] +#[derive(qom::Object)] pub struct HPETState { parent_obj: ParentField, iomem: MemoryRegion, diff --git a/rust/meson.build b/rust/meson.build index bd9b9cb83ea..c7bd6aba45f 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -20,8 +20,9 @@ proc_macro2_rs_native =3D dependency('proc-macro2-1-rs', = native: true) =20 genrs =3D [] =20 -subdir('common') subdir('qemu-macros') + +subdir('common') subdir('bits') subdir('util') subdir('migration') diff --git a/rust/migration/Cargo.toml b/rust/migration/Cargo.toml index 66af81e0a35..708bfaaa682 100644 --- a/rust/migration/Cargo.toml +++ b/rust/migration/Cargo.toml @@ -15,7 +15,6 @@ rust-version.workspace =3D true [dependencies] common =3D { path =3D "../common" } util =3D { path =3D "../util" } -qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/qom/src/lib.rs b/rust/qom/src/lib.rs index 204c6fea2ff..24c44fc2afb 100644 --- a/rust/qom/src/lib.rs +++ b/rust/qom/src/lib.rs @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later =20 +pub use qemu_macros::Object; + pub mod bindings; =20 // preserve one-item-per-"use" syntax, it is clearer diff --git a/rust/qom/src/qom.rs b/rust/qom/src/qom.rs index 2cd1d850112..5808051cd77 100644 --- a/rust/qom/src/qom.rs +++ b/rust/qom/src/qom.rs @@ -112,7 +112,7 @@ =20 /// A safe wrapper around [`bindings::Object`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct Object(Opaque); =20 unsafe impl Send for Object {} @@ -173,7 +173,7 @@ fn as_ref(&self) -> &$parent { /// /// ```ignore /// #[repr(C)] -/// #[derive(qemu_macros::Object)] +/// #[derive(qom::Object)] /// pub struct MyDevice { /// parent: ParentField, /// ... diff --git a/rust/system/Cargo.toml b/rust/system/Cargo.toml index d8338c8348d..7fd369b9e32 100644 --- a/rust/system/Cargo.toml +++ b/rust/system/Cargo.toml @@ -16,7 +16,6 @@ rust-version.workspace =3D true common =3D { path =3D "../common" } qom =3D { path =3D "../qom" } util =3D { path =3D "../util" } -qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/system/meson.build b/rust/system/meson.build index 9f88166f3d3..3ec140de018 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -39,4 +39,4 @@ _system_rs =3D static_library( ) =20 system_rs =3D declare_dependency(link_with: [_system_rs], - dependencies: [qemu_macros, hwcore]) + dependencies: [hwcore]) diff --git a/rust/system/src/memory.rs b/rust/system/src/memory.rs index 7312f809f51..02aa3af7b13 100644 --- a/rust/system/src/memory.rs +++ b/rust/system/src/memory.rs @@ -129,7 +129,7 @@ fn default() -> Self { =20 /// A safe wrapper around [`bindings::MemoryRegion`]. #[repr(transparent)] -#[derive(qemu_macros::Wrapper)] +#[derive(common::Wrapper)] pub struct MemoryRegion(Opaque); =20 unsafe impl Send for MemoryRegion {} diff --git a/rust/tests/Cargo.toml b/rust/tests/Cargo.toml index 8d106d896d7..d47dc3314d8 100644 --- a/rust/tests/Cargo.toml +++ b/rust/tests/Cargo.toml @@ -19,7 +19,6 @@ hwcore =3D { path =3D "../hw/core" } migration =3D { path =3D "../migration" } util =3D { path =3D "../util" } bql =3D { path =3D "../bql" } -qemu_macros =3D { path =3D "../qemu-macros" } qom =3D { path =3D "../qom" } system =3D { path =3D "../system" } =20 diff --git a/rust/util/Cargo.toml b/rust/util/Cargo.toml index 18e6619ca06..1f6767ed9d1 100644 --- a/rust/util/Cargo.toml +++ b/rust/util/Cargo.toml @@ -17,7 +17,6 @@ anyhow =3D { workspace =3D true } foreign =3D { workspace =3D true } libc =3D { workspace =3D true } common =3D { path =3D "../common" } -qemu_macros =3D { path =3D "../qemu-macros" } =20 [lints] workspace =3D true diff --git a/rust/util/meson.build b/rust/util/meson.build index 197872c9b23..87a893673d2 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -39,7 +39,7 @@ _util_rs =3D static_library( ), override_options: ['rust_std=3D2021', 'build.rust_std=3D2021'], rust_abi: 'rust', - dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qemu_macros, q= om, qemuutil], + dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qom, qemuutil], ) =20 util_rs =3D declare_dependency(link_with: [_util_rs], dependencies: [qemuu= til, qom]) diff --git a/rust/util/src/timer.rs b/rust/util/src/timer.rs index 622b6ee3097..c6b3e4088ec 100644 --- a/rust/util/src/timer.rs +++ b/rust/util/src/timer.rs @@ -15,14 +15,14 @@ =20 /// A safe wrapper around [`bindings::QEMUTimer`]. #[repr(transparent)] -#[derive(Debug, qemu_macros::Wrapper)] +#[derive(Debug, common::Wrapper)] pub struct Timer(Opaque); =20 unsafe impl Send for Timer {} unsafe impl Sync for Timer {} =20 #[repr(transparent)] -#[derive(qemu_macros::Wrapper)] +#[derive(common::Wrapper)] pub struct TimerListGroup(Opaque); =20 unsafe impl Send for TimerListGroup {} --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751193; cv=none; d=zohomail.com; s=zohoarc; b=lSCph6poy580bkU8uKx0/bI+IQjhEc31r77Cjx8s7Ygq13QuZIH2vqECMu6YW8hb2IBOlKHE+yruqeTUCmUq1aJlStEMw4x6zWdICFbcnRtt6EiW9oM137lvbfsaXmn+nllJ2ayIQAvTZoMbatKHfrDNXvOPcVtTA9M4tPHgo28= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751193; 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=Jx4FRgYXrzfcXSSTrQ/VLTarSEauEA8p1hugUE6tdyk=; b=QV4osdukzIG3V4cIXRjPNrqK7Byw+0k7m0MhctjIg/28tUBEaZ6reStz6Y7pyZZ71XD/VeTu2DLzy8R1YD5DhoOVREP2YLEP/LxRkxYl6fSTZMZYHWiQvX6aIowzPcLwBXrmcZaE9yrdF0FSjwDJYlYtxA9oz7hCmfaFa63qSpw= 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 1757751193209923.912611512894; Sat, 13 Sep 2025 01:13:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMn-00014x-Ov; Sat, 13 Sep 2025 04:12:17 -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 1uxLMg-0000tY-Pd for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:11 -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 1uxLMe-0005DU-LT for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:10 -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-228-krCdiLB4OCa1XmG0YdDK_w-1; Sat, 13 Sep 2025 04:12:06 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e8c4aa37bbso114875f8f.3 for ; Sat, 13 Sep 2025 01:12:06 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e84de17f9bsm2226008f8f.49.2025.09.13.01.12.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751127; 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=Jx4FRgYXrzfcXSSTrQ/VLTarSEauEA8p1hugUE6tdyk=; b=gYOBrsqftVlIp4MsYzqRXovATCT8/EmV9jXwQdERcYD67eP/fd5/wSMWunfFhA9bwGaLRW B1ffQ0ynhkzqukrYeCGJsv6qGv+o3G93m3QIJoim8fgKu9LfDfmY1TlzQO3w19ujgkHYny es6jRspi1C7GW5ziXPalYrLtd1QnRTo= X-MC-Unique: krCdiLB4OCa1XmG0YdDK_w-1 X-Mimecast-MFC-AGG-ID: krCdiLB4OCa1XmG0YdDK_w_1757751125 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751124; x=1758355924; 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=Jx4FRgYXrzfcXSSTrQ/VLTarSEauEA8p1hugUE6tdyk=; b=tSy/gGJ83SH4DUX5b4BWJjrLOGz603/oGB3mqnphtbzVLWyPm/uqjl0c7Cz/jmn9/i SlnBdbwE1/b7A5S46uB2McJNj/T7GwZgefGjBsxFeSYdA7cqdeZ9bqkFg6P1l/XmTz1n P32+VrczsjDV02nVdJEirwATwH0E5IeJSsgrWwTQC3McFZE9xWqvmUhu9U6hUy4JyfFm Aob7lC8dGlKZz+h6mMLE9p+cQDsFaj9z08iECHhLWBtwKevBdOoloifXc+KpTrGDTX78 QmOFFHejxV8UrgSuLtnMP7yfUJMV2b595GSEvz3z/90RUCDYg9d/syZQS0dzafzuZW6x 0rbw== X-Gm-Message-State: AOJu0YxEBajFOpPzrKlCafxg4TAmK5HTVVG2Ui2TQkqgG0lOyokB/3Cu x81HWyd0Hkf32VxFG1zFstLUt1eKe1B+/eCFlTBSjxvqoR3jBuUBN6LCUc0hqciLOszZmR5iBtm HSRMEmN3rGOedv9Hr2qU0UPdYycRR4SWRJN8JomIbMey4DO84RmLwSseg7WpgG+kWFLeToSyQLv 6lw1Vrobg2AbvfmY/pwec7Cp1Cfmf92pcL11TgS1Fk X-Gm-Gg: ASbGncuxPvDqHfHMW2WMNffLsGngOnRdU40lB5M3zuyVg1LvowmJ0/ehP7pV63hMf48 5iwEGqQi7838XD4ht8/yQWNn4LBoY+/xdNPNAxcnh1ghEyV+IZo16es70y5ayXDWL61oo0L8lWE XMWbRECFoRvwaIoVPYv97wn+2Tb5QRuWZqN0V/5/FcCl4ROZcEmS44fxt0Y/JdFxP2DH6qPl3bV vUSknxDY951IHdi/Cxf4lZV8wIOLGdE/6/tdtCc17WNZPqgbIYfarYiZIvgHlJmWyFMdydUVLoz 0zE3iKs27khoswQO3UOjjdXEp82M67K/XGcBN+gkdTTstZbgTb569Txk/ho1MEIkkjvUEkNqPUZ aUgE6MD0mmcJgZe1JtD6HJ/icSqjqqcRA+FqBVzpG9iU= X-Received: by 2002:a05:6000:2385:b0:3e0:2a95:dc9e with SMTP id ffacd0b85a97d-3e765a35a71mr4770809f8f.57.1757751124275; Sat, 13 Sep 2025 01:12:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFDZ0ijofsbsNp+2PLEDrik0wT5SBg7PLTvhwVKoXg6sQ2B72Ipovraoj1kJGOYycRpzx9nwQ== X-Received: by 2002:a05:6000:2385:b0:3e0:2a95:dc9e with SMTP id ffacd0b85a97d-3e765a35a71mr4770781f8f.57.1757751123705; Sat, 13 Sep 2025 01:12:03 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu Subject: [PULL 50/61] docs: update rust.rst Date: Sat, 13 Sep 2025 10:09:31 +0200 Message-ID: <20250913080943.11710-51-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751195328116600 From: Marc-Andr=C3=A9 Lureau Signed-off-by: Marc-Andr=C3=A9 Lureau Link: https://lore.kernel.org/r/20250827104147.717203-23-marcandre.lureau@r= edhat.com Reviewed-by: Zhao Liu Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 61 ++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 29eb48af35b..13a20e86a16 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -103,15 +103,18 @@ anymore. Writing Rust code in QEMU ------------------------- =20 -QEMU includes four crates: +QEMU includes several crates: =20 -* ``qemu_api`` for bindings to C code and useful functionality +* ``common`` provides Rust-only utilities =20 -* ``qemu_api_macros`` defines several procedural macros that are useful wh= en +* ``bql``, ``chardev``, ``hw/core``, ``migration``, ``qom``, ``system``, + ``util`` for bindings to respective QEMU C library APIs + +* ``qemu_macros`` defines several procedural macros that are useful when writing C code =20 * ``pl011`` (under ``rust/hw/char/pl011``) and ``hpet`` (under ``rust/hw/t= imer/hpet``) - are sample devices that demonstrate ``qemu_api`` and ``qemu_api_macros``= , and are + are sample devices that demonstrate Rust binding usage and ``qemu_macros= ``, and are used to further develop them. These two crates are functional\ [#issues= ]_ replacements for the ``hw/char/pl011.c`` and ``hw/timer/hpet.c`` files. =20 @@ -124,7 +127,7 @@ This section explains how to work with them. Status '''''' =20 -Modules of ``qemu_api`` can be defined as: +The stability of the modules can be defined as: =20 - *complete*: ready for use in new devices; if applicable, the API support= s the full functionality available in C @@ -140,26 +143,26 @@ Modules of ``qemu_api`` can be defined as: =20 The status of the modules is as follows: =20 -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -module status -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -``assertions`` stable -``bitops`` complete -``callbacks`` complete -``cell`` stable -``errno`` complete -``error`` stable -``irq`` complete -``log`` proof of concept -``memory`` stable -``module`` complete -``qdev`` stable -``qom`` stable -``sysbus`` stable -``timer`` stable -``vmstate`` stable -``zeroable`` stable -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +module status +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +``bql::cell`` stable +``common::assertions`` stable +``common::bitops`` complete +``common::callbacks`` complete +``common::errno`` complete +``common::zeroable`` stable +``hwcore::irq`` complete +``hwcore::qdev`` stable +``hwcore::sysbus`` stable +``migration::vmstate`` stable +``qom`` stable +``system::memory`` stable +``util::error`` stable +``util::log`` proof of concept +``util::module`` complete +``util::timer`` stable +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 .. note:: API stability is not a promise, if anything because the C APIs are not a= stable @@ -260,7 +263,7 @@ to go from a shared reference to a ``&mut``. =20 Whenever C code provides you with an opaque ``void *``, avoid converting it to a Rust mutable reference, and use a shared reference instead. The -``qemu_api::cell`` module provides wrappers that can be used to tell the +``bql::cell`` module provides wrappers that can be used to tell the Rust compiler about interior mutability, and optionally to enforce locking rules for the "Big QEMU Lock". In the future, similar cell types might also be provided for ``AioContext``-based locking as well. @@ -292,7 +295,7 @@ the wrapper to be declared thread-safe:: Writing bindings to C code '''''''''''''''''''''''''' =20 -Here are some things to keep in mind when working on the ``qemu_api`` crat= e. +Here are some things to keep in mind when working on the QEMU Rust crate. =20 **Look at existing code** Very often, similar idioms in C code correspond to similar tricks in @@ -355,7 +358,7 @@ from the type after ``as`` in the invocation of ``parse= _macro_input!``:: .into() } =20 -The ``qemu_api_macros`` crate has utility functions to examine a +The ``qemu_macros`` crate has utility functions to examine a ``DeriveInput`` and perform common checks (e.g. looking for a struct with named fields). These functions return ``Result<..., syn::Error>`` and can be used easily in the procedural macro function:: @@ -396,7 +399,7 @@ Right now, only the nightly version of ``rustfmt`` is s= upported. This might change in the future. While CI checks for correct formatting via ``cargo fmt --check``, maintainers can fix this for you when applying patc= hes. =20 -It is expected that ``qemu_api`` provides full ``rustdoc`` documentation f= or +It is expected that QEMU Rust crates provides full ``rustdoc`` documentati= on for bindings that are in their final shape or close. =20 Adding dependencies --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751648; cv=none; d=zohomail.com; s=zohoarc; b=deZpKyLln7SUL4Mveoq6oBpTu/M1l9S/28EmC21xwzBDJvZzmsNC5gUXof/kPIHmHSA3I8st+ucjGiAn3dvJ7sw6gfp/QRvrezB47V/RSZuOlE8/9e7pzySFR5kUUXCeMZlVyzuPl7cR5OChExZpNviCCpW8t7M5y5nJRINL/Uw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751648; 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=gxJgysm4LwVfPs3QtBRp3Oe8eEcJlz8X5Th6PWbDrkU=; b=S9+bl9z9IcKzKBzjkQLTLIKAJmkBdSo10tgnBjkH2ZlEqHUj9BbprLOeDMtkOcKdkkt9k6NzcnNaBAqjtc4CMUgsMZN9paZhMuotfSvnhbw/q1I7454qp68uT/7FpY+dSqZ48Tj8jPvRCX2j99rnX6bCf807GKKeqRKMEQxe6/o= 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 1757751648192232.31991350010333; Sat, 13 Sep 2025 01:20:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLMs-0001TN-Po; Sat, 13 Sep 2025 04:12:22 -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 1uxLMl-00010e-FJ for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:16 -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 1uxLMh-0005EQ-Kx for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:13 -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-145-k2Tx882jOfSG7HLtCYpUVg-1; Sat, 13 Sep 2025 04:12:09 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3df9f185b82so1007539f8f.1 for ; Sat, 13 Sep 2025 01:12:09 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e81dbf9acdsm2652297f8f.55.2025.09.13.01.12.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751130; 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=gxJgysm4LwVfPs3QtBRp3Oe8eEcJlz8X5Th6PWbDrkU=; b=ihH6JIIICv5k4jvMv9WqtTc3QoB+u/XOcgCj14L0IKdSOCxgjK6hB11c1ityk+mmC4c1k1 mzKjPSadxPnLQCLGLtra02s8AfYEriHm3Re70+ZMW36aWZbodbtPDY63sofAKZpTYVgG6r bTyrnfGdDb8wOmPmhhvBoT+pP9f6Eaw= X-MC-Unique: k2Tx882jOfSG7HLtCYpUVg-1 X-Mimecast-MFC-AGG-ID: k2Tx882jOfSG7HLtCYpUVg_1757751128 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751127; x=1758355927; 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=gxJgysm4LwVfPs3QtBRp3Oe8eEcJlz8X5Th6PWbDrkU=; b=cJmjOyuFZCenOhMA4FFNF4zZqwtaa4Eugjgypf+cTMp3QcysbHR7UKalWPziBmvaZY 7z/OIsTXImnIB5Tg4YMqiMNOFAi5/hxbxHD1zlp0bjL+QNUyBXxpTt7lVExGakCHDkEv S+AU3yZssumFvqSdr5vZdOxpVmS/lec78N1qcU7j8vnmJ0El1DYfOg4NJ554r1C1u2sz nslgiryb/IZHfUzz0zWS9fkRFwVgll81NmWK/FDZkT3G5piKLqb9kfieY5EmXBCK6Bjj j+2NOrBTHZ3iFHRINuskXK/7GZok5WGuHC/NUnDfYetp5TpVfQ5t4g5EictsJkxNXDD6 FO4A== X-Gm-Message-State: AOJu0YxDF+gikSXixDRqPWRvqch4YOTcff8A90zZC3PI29UDOvLLAve6 LWRHsMN+UoRwITAnPeaBBmtfAw7wtQtZDo16mL6Avg6vi+nY5qekpQyR5fR8eYZzx8ub8T6jJkk KUw4WwoBVg5Qp2x/u0+TabrU6dQV2TMsSD90sN3bl+4JJXZOT0zoqXNgyJ64z/3zIyL1qV6jV4g C3Vgc5ZyOSbW96LcCva4WOAKnIn43v8AqcATHsUR/C X-Gm-Gg: ASbGncsYKThPoKjGwaJ1/K+BdGjMMPzhDSnHaIWRBiZvhAWeRXbMEOeKbk718uEqDlp ruBuK36PjWeQ1mI48sFwRCrs+/ZZPWG29cmXv2jm2bAxebJOWWHZPDhqJvOX2U4Nc2aShxlsAoz ZUSp0/4CmB9EJaHIw8GoU3po7gJ3hqJOxw8/Glc6z3zoaoUzyuWShICRgwp/rVYivw/5vbu+pgB WMwBdoCsnyorc8XeOzTssiTc/804tvnE0GiG35MrCkjdNF9FJtin8e/9vAGrduEs+nIrW3FIVeA Sz38DxHTm6wDS9BV5dywij7wIFoogMfyMUkVQPNvfJC9oPVoX5INIrAd8/r0jhZ/D9SBVlAwoj7 FlpYbHGiHL6Jt+zMKYHIBWD1wCmu0TELlOYMJaBKuoWM= X-Received: by 2002:a05:6000:40db:b0:3e5:190b:b04e with SMTP id ffacd0b85a97d-3e765a140f0mr3626247f8f.37.1757751127315; Sat, 13 Sep 2025 01:12:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE38kjpgKpyLh38ey7vU6pY6kl6eVmA+qDvMnKS9fdMyvVv+FLrbSA0MKRjkdfb25puvO4clA== X-Received: by 2002:a05:6000:40db:b0:3e5:190b:b04e with SMTP id ffacd0b85a97d-3e765a140f0mr3626223f8f.37.1757751126797; Sat, 13 Sep 2025 01:12:06 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 51/61] rust: meson: remove unnecessary complication in device crates Date: Sat, 13 Sep 2025 10:09:32 +0200 Message-ID: <20250913080943.11710-52-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751650672116600 Content-Type: text/plain; charset="utf-8" It is not necessary anymore to explicitly list procedural macro crates when doing the final link using rustc. Signed-off-by: Paolo Bonzini Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-33-pbonzini@redhat.c= om Signed-off-by: Paolo Bonzini --- rust/hw/char/pl011/meson.build | 3 --- rust/hw/timer/hpet/meson.build | 3 --- 2 files changed, 6 deletions(-) diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index 628a5238702..ffdc8af53f1 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -44,8 +44,5 @@ _libpl011_rs =3D static_library( =20 rust_devices_ss.add(when: 'CONFIG_X_PL011_RUST', if_true: [declare_depende= ncy( link_whole: [_libpl011_rs], - # Putting proc macro crates in `dependencies` is necessary for Meson to = find - # them when compiling the root per-target static rust lib. - dependencies: [bilge_impl_rs, qemu_macros], variables: {'crate': 'pl011'}, )]) diff --git a/rust/hw/timer/hpet/meson.build b/rust/hw/timer/hpet/meson.build index b6bb9477f0c..bb64b96672e 100644 --- a/rust/hw/timer/hpet/meson.build +++ b/rust/hw/timer/hpet/meson.build @@ -16,8 +16,5 @@ _libhpet_rs =3D static_library( =20 rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: [declare_dependen= cy( link_whole: [_libhpet_rs], - # Putting proc macro crates in `dependencies` is necessary for Meson to = find - # them when compiling the root per-target static rust lib. - dependencies: [qemu_macros], variables: {'crate': 'hpet'}, )]) --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751500; cv=none; d=zohomail.com; s=zohoarc; b=mS/aN5kscDjYiboTlWvtTQMPk99aOqP9FfTF+lzMPU1Hd5kIj19U0BFRcB/LNBfB1Y1fM5//H/D4wYivw3wlWG+UJJwUrlVsWlfT8TDJo0f2FhwKGmWR06vAhHU7fz1WYz/q02VSRND9oWjVYy3NMKGCdPJz/ikIyLvZ+Q9sXHM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751500; 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=EApp4ovBiWyPxOCjCRzu1kr7T39LmQMZCfnyNBky3GQ=; b=Zye0bfF6q/iu54O/bpe13ajobEjxfFL3L+XQweve6tgbVf35fKmHCEdDxHzS7i3fdQuI8KsbF6OuaijSDAwdQQfitfJXsAlBjGz6brmMaaZJCP41t+T3QfAa84Y9at8T5xp9fS6KX4dneCpvM9fOHDyql8+iP1HmZcVVpVmXFZM= 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 1757751500049965.3083650147994; Sat, 13 Sep 2025 01:18:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLN6-0001tE-Ie; Sat, 13 Sep 2025 04:12: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 1uxLMn-00016w-Sr for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:18 -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 1uxLMm-0005FY-4U for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:17 -0400 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-287-VgOccC89OFOcOqmiUs7BYg-1; Sat, 13 Sep 2025 04:12:11 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45dd9a66cfbso23972355e9.1 for ; Sat, 13 Sep 2025 01:12:11 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607d7c0dsm9563192f8f.47.2025.09.13.01.12.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751133; 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=EApp4ovBiWyPxOCjCRzu1kr7T39LmQMZCfnyNBky3GQ=; b=PLffUqQgYrVI/nZ1Ne2mPdG5Nur3FRBEiF13iVwQC6UcCCLcRXiHPUcsegCPxDqyBpH9WH dxflRzzW4oKVL1MNY+ldFgiwhPKU4hAMYYlPTDauVC50hO8FOdjsztDENfVgahg895ly7k wB6vPBEXfrR09JQl2LIzMMVHPWrv5i8= X-MC-Unique: VgOccC89OFOcOqmiUs7BYg-1 X-Mimecast-MFC-AGG-ID: VgOccC89OFOcOqmiUs7BYg_1757751130 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751129; x=1758355929; 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=EApp4ovBiWyPxOCjCRzu1kr7T39LmQMZCfnyNBky3GQ=; b=bJzHmjHqRTeTN0sPVwyY9+3RIILjjMbduBVslOiM0oxIamyZ6Sa9AV4P+r5wbFLtBl VE5P1kmP0T94kFm0TkMnk+XhkVFPtjpSQiprxe92cz/yeMupnG/9oWfGhhWOAGhLVfeG 02CBZlB1OEHvrbRt8JeBE4GwyTI9SAK4hCIhhOIEtzc4moMHng5eftaKa/L+0KU9L1WH pFaaovSTMTwjXZyRi+fJizgu0wZ/jtyjJ0wa4oDUXEkpAorMOYTaJ9Z4KAL7mzmtCywt sm/WNHo3vdx6I+BgAICILYFkz5n62OkCfwHw06G8D6KvIOm1N2hZVtif3GsGEgmSmbNm UsVw== X-Gm-Message-State: AOJu0YyVRL8jGh+lSMrRY3IqmYCobeedJ5tQd24SYhzAnMrInWMBGFTT q6rNb2J2Xa+bVMPCS6hUzRBlmJK1BYKG40yeRwzic9ScWmarcRBdB2HDq1D6fEDyKs76C5/j5C9 AcsDFS7B46oXoHYszqK+ImgD+S+mnGJvvjsnO5Kv7vd1Eocw5GLnyMcA+2B7A9HTDQ1epU4Jiwl ejtsmfMvZA0JvDiC5v/CAHQ8lvNLJDmM8LfrE2DtXe X-Gm-Gg: ASbGncvxJujszDoXWZMxTP1xTkx6Q/dHz0EwhyoeN1dGNTWi/wQ88jBOLqFYXYrnHpF pT59MJ17SatL6yH+ZTF2PGJg5drx+mxEqTnnBw3ysiMrdyLV4tHDgbxP5pRBB+uA3Bt5WuhTYdi C4+AM5UkEy/KtVtc0DpHceRIsCP5c6UasBqNTrMXq4Opyx1mYUDzWqfS1tF8XoTeqsZdAzaON4y q43hVd6d2xyRcnBAomJ6UC/K49e0qCRUdDWA6ZIQQrldnQ5vnRrFNhYxuk4KUpL1HL+c19u1wek VNSmjGz6OWuOCuopKiPu0IgiP8ke4rN30avuvWAtk9LjjqxiZMuNLlYxDbAGvjc4izjiP7/XJFC cmfqy8Mkw5ZHbNGSmxuD4LRk8aNGpXihAvWDizc5VsMU= X-Received: by 2002:a05:6000:18a7:b0:3d4:eac4:9db2 with SMTP id ffacd0b85a97d-3e765782b5fmr6380120f8f.5.1757751129401; Sat, 13 Sep 2025 01:12:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHvGOyAXBiVSRzDW698WECxpV6wbkkMYtpejitISc10Hmrt5mDtxcS26UMkMdwruekqqZyD6A== X-Received: by 2002:a05:6000:18a7:b0:3d4:eac4:9db2 with SMTP id ffacd0b85a97d-3e765782b5fmr6380093f8f.5.1757751128985; Sat, 13 Sep 2025 01:12:08 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 52/61] rust: do not inline do_init_io Date: Sat, 13 Sep 2025 10:09:33 +0200 Message-ID: <20250913080943.11710-53-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751501041116600 Content-Type: text/plain; charset="utf-8" This is now possible since the hwcore integration tests do not link the system crate anymore. Signed-off-by: Paolo Bonzini Reviewed-by: Zhao Liu Link: https://lore.kernel.org/r/20250908105005.2119297-34-pbonzini@redhat.c= om Signed-off-by: Paolo Bonzini --- rust/system/src/memory.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/rust/system/src/memory.rs b/rust/system/src/memory.rs index 02aa3af7b13..4b3316bf767 100644 --- a/rust/system/src/memory.rs +++ b/rust/system/src/memory.rs @@ -136,11 +136,6 @@ unsafe impl Send for MemoryRegion {} unsafe impl Sync for MemoryRegion {} =20 impl MemoryRegion { - // inline to ensure that it is not included in tests, which only - // link to hwcore and qom. FIXME: inlining is actually the opposite - // of what we want, since this is the type-erased version of the - // init_io function below. Look into splitting the qemu_api crate. - #[inline(always)] unsafe fn do_init_io( slot: *mut bindings::MemoryRegion, owner: *mut bindings::Object, --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751244; cv=none; d=zohomail.com; s=zohoarc; b=VdHYuS/8oxSEzeGL6r1qvkitZTNi/95OJSbrfJ0/31S8Gk0F0uWkujTtmuCn3jykhYV7OQ/UsGneSLwDKo3n2Fq3Z6WOwpye+V4xc1P8YFa1lkQK8SXednYCGQO1ICcKiofrHfK2WdCAF9AUCyeocEI4E7MQjkBHkn31C9UWV6Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751244; 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=f392cpvVrwHS/NTGEyT/MWK0tqiJzK81OigZJrwHYxo=; b=n9dHqIVpmCubaD14tNsqYklR6fnpD++RIrOU6A65ODRn3Mkr/IP9BYecmDOUg9PuZgH94WXAAtmR24wJDgwIWTIV9Oqbhj7UVQu++dnodrAVoc6QeZ3RpIcM5/28X0nsvL+nvEpEuXfbTagjsDq7Aj6xuGYi+0yXr8z2WfdxEz0= 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 17577512448651010.5955119895868; Sat, 13 Sep 2025 01:14:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNJ-0002KC-Ed; Sat, 13 Sep 2025 04:12:49 -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 1uxLMo-00019e-Un for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:19 -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 1uxLMm-0005G5-Lv for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:18 -0400 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-351-dXK4CBhANGmUcEJeuXFMGw-1; Sat, 13 Sep 2025 04:12:14 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-45cb4f23156so15626895e9.2 for ; Sat, 13 Sep 2025 01:12:13 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e017b2a32sm93123355e9.18.2025.09.13.01.12.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751135; 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=f392cpvVrwHS/NTGEyT/MWK0tqiJzK81OigZJrwHYxo=; b=BmKHT2GJX9qlRq9s+RPxh6g+XImUjhGR98YPjYoslHPcRI+SQRJEv4gonuBjd4dlLNubjy lrbbjECZ0Ku5yAvKCgiYCk2WU47V74Ko/nitQdbu11mldj70WIihASteuduBwpPd4YFJTa X9bsf6hjvHergRPZZvFPJxoMBDYQZGI= X-MC-Unique: dXK4CBhANGmUcEJeuXFMGw-1 X-Mimecast-MFC-AGG-ID: dXK4CBhANGmUcEJeuXFMGw_1757751133 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751132; x=1758355932; 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=f392cpvVrwHS/NTGEyT/MWK0tqiJzK81OigZJrwHYxo=; b=vzICEdOVCRvafTustfKNuhzxhqtVGU9yMYzQo2npFrTJKOTqAZ7wpiOj++2M79lPc9 wpWdS9FPndOBAsK8hhjfI9B9VnJaJsdDh1V54QSY/yhlsApm+E8L1inunnBvTSiyDe58 IOp2v6Ffv/cLnc1uCw93ORNinmap52L68zeedfK4EXWAIIUSQ2myQ9oAgtTJ4Wem0Adx bEZvagDvFMEGV94erDPeq0ZKhGrGJTB/lYcNXAPR5uba4GyZUTPKqxSfC8mBJHkU9hRi +M65O9cStYf99mv5hiFHzjCwnbsoGTNtL9uaHpVbDDT5miYDFQeEgqzlap7y/CAa42ti hFIQ== X-Gm-Message-State: AOJu0YzPAZKCDIG9qjJXHFThsWQlZHXt81J3KSndnima1O+7cGm7CHj3 y9Kwz0QFkbS69y36q4fpMu9lWdxRXKdv1ciwD+PEFIUVeW1TF0M1nUelw8cYwpsTH768dlW159k L/RabXwGA/qS1L6w7aGwUnKre47eN5CNusa00ibI9pma4QW22N/oyIuH4xr9pKd4UCBrehjmzL5 gepp5hrTIKGk6QpaNMtdCxDFHtkN5zLKkk/y9nRkcd X-Gm-Gg: ASbGncs6Ye8V3oA8KH1iKWGNRut7+VwRMKnumWLBJINlyyfwuhBPjAF4SeDESyu2piP O/IYEAaHxxrxKY3+eTbJ9vtS1zyzAl1RxysmFeeXubaZp8OVbQbQ5oAKhUW3CL+PsH5vL0rBCUV 8FQJ5ffrQXhP7YVgguxE/gpGgrLMFyn7u7fMdRtYT2PnxUA4LfZVQ2Yv5zI3nqRV1XnP85QhkDr t3PIgUCDAts2k7GHQUsgFPp3oVrCRLrG9s5tDv3ZvuLLmg/PrX3pTJgyxZuWWBtKGJoMOsorACO 11f22jmd3WjsqjT2TCcHXHIxJvKYqE5VJGTge7e1YqC/+6UpwYfkFaYGv3PUK9CvDHHwbs7alND xmGmK8IGSloz5KJnmdWzbphni16tdI5Ch4+UDLhIjOkE= X-Received: by 2002:a05:600c:4f89:b0:45b:868e:7f80 with SMTP id 5b1f17b1804b1-45f211c8388mr70627645e9.8.1757751132078; Sat, 13 Sep 2025 01:12:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZol7l839qBTzqOA8Su51vMoD8LUf321sO0LeMCftH76zx202suAfgU2WQW7eTGaLrsHvNOg== X-Received: by 2002:a05:600c:4f89:b0:45b:868e:7f80 with SMTP id 5b1f17b1804b1-45f211c8388mr70627295e9.8.1757751131594; Sat, 13 Sep 2025 01:12:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Subject: [PULL 53/61] hpet: guard IRQ handling with BQL Date: Sat, 13 Sep 2025 10:09:34 +0200 Message-ID: <20250913080943.11710-54-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751245983116600 From: Igor Mammedov Commit [1] made qemu fail with abort: xen_evtchn_set_gsi: Assertion `bql_locked()' failed. when running ./tests/functional/x86_64/test_kvm_xen.py tests. To fix it make sure that BQL is held when manipulating IRQs. Fixes: 7defb58baf (hpet: switch to fine-grained device locking) Reported-by: Daniel P. Berrang=C3=A9 Signed-off-by: Igor Mammedov Link: https://lore.kernel.org/r/20250910142506.86274-1-imammedo@redhat.com Signed-off-by: Paolo Bonzini --- hw/timer/hpet.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 789a31d0a08..1acba4fa9db 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -40,6 +40,7 @@ #include "qom/object.h" #include "qemu/lockable.h" #include "qemu/seqlock.h" +#include "qemu/main-loop.h" #include "trace.h" =20 struct hpet_fw_config hpet_fw_cfg =3D {.count =3D UINT8_MAX}; @@ -222,12 +223,15 @@ static void update_irq(struct HPETTimer *timer, int s= et) timer->fsb & 0xffffffff, MEMTXATTRS_UNSPE= CIFIED, NULL); } else if (timer->config & HPET_TN_TYPE_LEVEL) { + BQL_LOCK_GUARD(); qemu_irq_raise(s->irqs[route]); } else { + BQL_LOCK_GUARD(); qemu_irq_pulse(s->irqs[route]); } } else { if (!timer_fsb_route(timer)) { + BQL_LOCK_GUARD(); qemu_irq_lower(s->irqs[route]); } } @@ -534,10 +538,12 @@ static void hpet_ram_write(void *opaque, hwaddr addr, /* i8254 and RTC output pins are disabled * when HPET is in legacy mode */ if (activating_bit(old_val, new_val, HPET_CFG_LEGACY)) { + BQL_LOCK_GUARD(); qemu_set_irq(s->pit_enabled, 0); qemu_irq_lower(s->irqs[0]); qemu_irq_lower(s->irqs[RTC_ISA_IRQ]); } else if (deactivating_bit(old_val, new_val, HPET_CFG_LEGACY)= ) { + BQL_LOCK_GUARD(); qemu_irq_lower(s->irqs[0]); qemu_set_irq(s->pit_enabled, 1); qemu_set_irq(s->irqs[RTC_ISA_IRQ], s->rtc_irq_level); @@ -683,11 +689,13 @@ static void hpet_handle_legacy_irq(void *opaque, int = n, int level) =20 if (n =3D=3D HPET_LEGACY_PIT_INT) { if (!hpet_in_legacy_mode(s)) { + BQL_LOCK_GUARD(); qemu_set_irq(s->irqs[0], level); } } else { s->rtc_irq_level =3D level; if (!hpet_in_legacy_mode(s)) { + BQL_LOCK_GUARD(); qemu_set_irq(s->irqs[RTC_ISA_IRQ], level); } } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751905; cv=none; d=zohomail.com; s=zohoarc; b=A6jXk7vYhQIt5ShsVr+rJ2W1mo+xo6Nd5KOqF0NamWEZ9s3n2ksBN0/iMae89DmwjsdlZz0pEg1JUwmrve/010sdYzM8Gk58JyzKpbPlUMM5DUPDVTapvTAsPFa3zWswZYnc5z26qg234zEhm8fvidgSPE8vAKz005wWr+eBDxg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751905; 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=kXV8lyIjHzKxLuPEWkgQ4DrNPB+JccPFBiYkgzxwKUQ=; b=jeH8WcYdoRlkFgbH7PU/EhrZPEZNqHddi1ibYPvKv5rxFSeudzt+3LyrlRH34vd+xPM/3lMRPHK6gSmnOuLnS6GAbf3+JYS1zGUDKQsTQe1B0bav2xSKH+cYC4955EexnnWOVG8nfmcYkkTTne2901n7ZFaouGE6qvk4S0HKCuI= 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 1757751905201230.3272558920005; Sat, 13 Sep 2025 01:25:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNd-0003hC-0u; Sat, 13 Sep 2025 04:13:09 -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 1uxLMx-0001gS-Df for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:27 -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 1uxLMp-0005H3-RR for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:27 -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-373-ZuAyM5Z4OxmmDrcUbFtEZw-1; Sat, 13 Sep 2025 04:12:16 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-45d6c770066so12719695e9.0 for ; Sat, 13 Sep 2025 01:12:16 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e01832af1sm50583305e9.3.2025.09.13.01.12.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751138; 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=kXV8lyIjHzKxLuPEWkgQ4DrNPB+JccPFBiYkgzxwKUQ=; b=QEKhLMOs4knW69J3pgACjJtFAXBIoiZx6rNvqmJDcem3kJBOBVpYkLfo8WGMmuPdArqGWK pXX4COewLgjl/rNNupkYgDT7zza/eUA5PFXY4FvS9BA4WdKnCWKZeX9X7TO6Fd7L6EP8WD 2SKXJiBhCdTCy/CJ23Fb3HypJyFYztg= X-MC-Unique: ZuAyM5Z4OxmmDrcUbFtEZw-1 X-Mimecast-MFC-AGG-ID: ZuAyM5Z4OxmmDrcUbFtEZw_1757751136 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751134; x=1758355934; 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=kXV8lyIjHzKxLuPEWkgQ4DrNPB+JccPFBiYkgzxwKUQ=; b=YkZptVcX4RqotqLv5un/8Vw97NfOKHbaDnhVRNYubkG/V5lOtMVN4nt8NjqwcZ8hZA kq73//dRru2SUbTIXTPh4yk5p1MRuxu/iXxz4Xg1v9b4Q9fsMex6CB82QzQPjAtscFqL DmZ5saw13MAkeogbpVsjwE7qlKcELQAzQtwkUpsQXk5QsMksCEwdzMrSYB9BrHdF1yCv SmfERC85mbbYeY9qwr8C+CfDPN2NXTA/EE18w2eM/GUYU3f9WMLU+DgjWb0D5QS2D/oN a0+2v/w2PARiC27rSfZDYOEaQPzKVyJSXeBCu9e1w8fwB5KgBCum6UF0c67ZbPExRfJQ CyEA== X-Gm-Message-State: AOJu0YwCqgHIMY4ozJ4xvS36wJCG86+2A/2wHHTep4yL5GS0n8cpSiqV r4f/pQqLnmFST4XORs+DiEzns5jBMp/Rt9qMObfgpbVJAkafdoI3/B2Ku/Yypm56bRtN8HJBT+m 5gcY9t3PU+Riv6ranYP3RmNDjj594R9XrqlRzdQKw8PZV9cP0mZ8w4h7YWuOEkAB5pgvWSmbsXG ZG5JNTQ9CeotvUub9T7aWaVDrXWGQb1GBgrhTIZwZZ X-Gm-Gg: ASbGncusTgJwG52TNzNCF87o/sd2jk6FWW1s4c1sjAaXuZc2JdqaqqjBPSjiRNd8g3V 8SgNnCGPUx/qg1GMOgzKCPfbCb7QvUirgZM/WWZ1rLMcAvQXoDzuMNn6v3eC95LoYzFN5M/8upD znbxe6+R2NyQtPgjx0lgFjYeNlYfdEiIVW+3NdHvlOlXtjLdVGZUXqbc47BWP6FTCq7jQ0Yt2am okZYhq9/8ivl/QKLnNwnxkYp4medIeWP19F44TE5jXWD5SpZ19dFW8HerK17k098f0dEPts9Zs2 mypHnPL3vOAl4l5yPAD6q/Yb0QvqJHwWKHFnQbbuUrAfOKJL0Nqg74+Yu1hpjgAOvLB84iDrisH KAqeGK7N7cBiDozQ1kJUZMA7VlgX1ex23/ySQ2NDecrw= X-Received: by 2002:a05:600c:364b:b0:45d:dae8:b137 with SMTP id 5b1f17b1804b1-45f211f3140mr39730665e9.22.1757751134406; Sat, 13 Sep 2025 01:12:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHP6pu/Hcg3CnH5TXuMk4llyoUElyCIeSvuynbeIkybWWTxciigS6OBh2u/qLw/qjSFQ3burg== X-Received: by 2002:a05:600c:364b:b0:45d:dae8:b137 with SMTP id 5b1f17b1804b1-45f211f3140mr39730405e9.22.1757751133848; Sat, 13 Sep 2025 01:12:13 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li , Kirill Martynov , Zhao Liu Subject: [PULL 54/61] i386/cpu: Enable SMM cpu address space under KVM Date: Sat, 13 Sep 2025 10:09:35 +0200 Message-ID: <20250913080943.11710-55-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751907804116600 Content-Type: text/plain; charset="utf-8" From: Xiaoyao Li Kirill Martynov reported assertation in cpu_asidx_from_attrs() being hit when x86_cpu_dump_state() is called to dump the CPU state[*]. It happens when the CPU is in SMM and KVM emulation failure due to misbehaving guest. The root cause is that QEMU i386 never enables the SMM address space for cpu since KVM SMM support has been added. Enable the SMM cpu address space under KVM when the SMM is enabled for the x86machine. [*] https://lore.kernel.org/qemu-devel/20250523154431.506993-1-stdcalllevi@= yandex-team.ru/ Reported-by: Kirill Martynov Reviewed-by: Zhao Liu Tested-by: Kirill Martynov Signed-off-by: Xiaoyao Li Link: https://lore.kernel.org/r/20250730095253.1833411-2-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- system/physmem.c | 5 ----- target/i386/kvm/kvm-cpu.c | 10 ++++++++++ target/i386/kvm/kvm.c | 5 +++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index 311011156c7..a12c7ea1956 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -793,9 +793,6 @@ void cpu_address_space_init(CPUState *cpu, int asidx, cpu->as =3D as; } =20 - /* KVM cannot currently support multiple address spaces. */ - assert(asidx =3D=3D 0 || !kvm_enabled()); - if (!cpu->cpu_ases) { cpu->cpu_ases =3D g_new0(CPUAddressSpace, cpu->num_ases); cpu->cpu_ases_count =3D cpu->num_ases; @@ -818,8 +815,6 @@ void cpu_address_space_destroy(CPUState *cpu, int asidx) =20 assert(cpu->cpu_ases); assert(asidx >=3D 0 && asidx < cpu->num_ases); - /* KVM cannot currently support multiple address spaces. */ - assert(asidx =3D=3D 0 || !kvm_enabled()); =20 cpuas =3D &cpu->cpu_ases[asidx]; if (tcg_enabled()) { diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c index 89a79536594..1dc1ba9b486 100644 --- a/target/i386/kvm/kvm-cpu.c +++ b/target/i386/kvm/kvm-cpu.c @@ -13,6 +13,7 @@ #include "qapi/error.h" #include "system/system.h" #include "hw/boards.h" +#include "hw/i386/x86.h" =20 #include "kvm_i386.h" #include "accel/accel-cpu-target.h" @@ -91,6 +92,15 @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp) kvm_set_guest_phys_bits(cs); } =20 + /* + * When SMM is enabled, there is 2 address spaces. Otherwise only 1. + * + * Only initialize address space 0 here, the second one for SMM is + * initialized at register_smram_listener() after machine init done. + */ + cs->num_ases =3D x86_machine_is_smm_enabled(X86_MACHINE(current_machin= e)) ? 2 : 1; + cpu_address_space_init(cs, 0, "cpu-memory", cs->memory); + return true; } =20 diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 34e74f24470..d191d7177f1 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -2704,6 +2704,7 @@ static MemoryRegion smram_as_mem; =20 static void register_smram_listener(Notifier *n, void *unused) { + CPUState *cpu; MemoryRegion *smram =3D (MemoryRegion *) object_resolve_path("/machine/smram", NULL); =20 @@ -2728,6 +2729,10 @@ static void register_smram_listener(Notifier *n, voi= d *unused) address_space_init(&smram_address_space, &smram_as_root, "KVM-SMRAM"); kvm_memory_listener_register(kvm_state, &smram_listener, &smram_address_space, 1, "kvm-smram"); + + CPU_FOREACH(cpu) { + cpu_address_space_init(cpu, 1, "cpu-smm", &smram_as_root); + } } =20 static void *kvm_msr_energy_thread(void *data) --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751288; cv=none; d=zohomail.com; s=zohoarc; b=mO9fj0XXpLDrxRy1j+sZYVmPvmUnnPUE483Oqt0Q9YDrZqSl/gjz+632K1TJ5Bnwtha1atstzS9oEF1hJgtVGNReBwVzxeIth3rqFq9AM8YamXL5HnBB7WY37kGV/WL/ATtmkedqmpLxOLbKhrv6yjF3Ml6Tccas7t7poHZfvik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751288; 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=v+L5IOFvaCrhn4Znhl/4a3Hvrnw7OeLoFEwsYYsO8qU=; b=Icc5k7Jfpt6bmKL9fIiACSxN2gJ4PSGW5gV5IIYtNP4nme2l039XyiwgCAIsyiT4QF6hORkOCJicWeET7Nl+uPs/nKKQlGULqVFDS/zUQaog9Xr/5zLAaosXyCl0IAjPHgERtc7YYncovKwPCxwUtw4KzfNuIhCK8jXXfMlKKsI= 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 175775128883196.59888055311478; Sat, 13 Sep 2025 01:14:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNS-0002qw-7U; Sat, 13 Sep 2025 04:12:58 -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 1uxLMz-0001oF-Jc for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:30 -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 1uxLMs-0005HZ-1c for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:29 -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-518-gbn8SXgqOwaZo1bIzUvHyw-1; Sat, 13 Sep 2025 04:12:19 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-45df7e734e0so16324345e9.0 for ; Sat, 13 Sep 2025 01:12:19 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45e0156d40esm95692575e9.1.2025.09.13.01.12.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751140; 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=v+L5IOFvaCrhn4Znhl/4a3Hvrnw7OeLoFEwsYYsO8qU=; b=VrcPgsw+UFZwtEKTJi8FXJ3A4HMIK+9egu41pC7DmtsH3uQep6oSmPS+U+0L2AXzNeoHJz KEUkRmqvTJK3OWwVe1S2xQUHcuUu3k0pvi/qaRdWzBIUiv8cVQUXe6ZgO0Sn4P6yBPw6cL rXG8V1TEkaefJhpF3FnGg4aaX+DVcsk= X-MC-Unique: gbn8SXgqOwaZo1bIzUvHyw-1 X-Mimecast-MFC-AGG-ID: gbn8SXgqOwaZo1bIzUvHyw_1757751138 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751137; x=1758355937; 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=v+L5IOFvaCrhn4Znhl/4a3Hvrnw7OeLoFEwsYYsO8qU=; b=gU265ahIw9FnOt9sfWzkRXCi+H66uf0Aav0kWDRXscDuQNzr9hh0jVDwTsmbvmlW5i Bp7ignLnqwiDaAVIsQVJBDh+hHdvE1JS6uesreb1RArqci/NEoEUXumCqWfTjp0d2C3J yIWktGnRCE0VfMBOSpNxKazAZ/0bnfsT75/0uVNhiyAp3D/06Bjfx0yTBX4Tj01lYEkG GsK1BXh8wkCsv3kYig/rmE5+Ew4TWgG9QGUhuthEnAGWnL79BSvL6Yq1s0ElDid/nOQT 1LQ/Z0NYH0q9p5LE6UacBBSpijmYNMGD7yDT3HLeLBvxY89h/G42mo8dNY5jyqjaSioW 6low== X-Gm-Message-State: AOJu0YxRGXT/wFK4fvdlAVd57zgJ9Z8sIfsVOP2+zKSRpc5W4Xa6joQL nRreE0VnknmrT5tUBCK/CedywaIKIddVEMh+J/lSBwJF9LRvgQM2RBaAX0Njz/BmoEsfWcLpgB6 9zcL/04TEuGP/pgvF6t9zLk0gkkqXyTGvpbTr9Qwox24+gLmOkapHHH1BcFFiX+76PLhi0SvD6S 7aSlGUT/hPGA3T1xHBFG6lTYIDdI8B827lHigtQEci X-Gm-Gg: ASbGncu8JPkMc1iRpk8uO2tpFpHsCF07laSPe3G//+0wZvOPah+YKEp42oynM+iQU2h 8u5/uv1Ek6mh7gB+jbGFBI9DFN9z963p+qElcI497L/eU0YADnZxktLwYt40Km40TyW8RlU6rOg BhNvmTP4EnPvnOYBTQuVBOPxtEbi//5mfL/huaZ4VvzWtkOWn/4ya97+kVl3fU4Lxf+/TZ26Pw5 bUalvuiqnNhQfuTPhCC0eWE3h4tUWgoWCNb6Q9/4VyKnp/wEz/E46I79fpUzQzyHPJMNhdNZ2QY v2hx3SnrQkH4tt/M+wpQr9SNFJpva0MK5zk/0HTgkz2/xbuz0nGgzxpRjujyfGqr3dZkAaX3Hj4 4fMJawHC0yPfObzo0dSjzjv+4ZV0eDLFEQFD1j3WSsK4= X-Received: by 2002:a05:600c:3b26:b0:45b:7a93:f108 with SMTP id 5b1f17b1804b1-45f211c4c47mr48345575e9.3.1757751137507; Sat, 13 Sep 2025 01:12:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFRO3NpPrMB2IFTYqcOj2IxBf6t8aavGLmDHKZmLo3QhIfQtU68JRno3niWas0LsCcEtExeMg== X-Received: by 2002:a05:600c:3b26:b0:45b:7a93:f108 with SMTP id 5b1f17b1804b1-45f211c4c47mr48345265e9.3.1757751137009; Sat, 13 Sep 2025 01:12:17 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu , Kirill Martynov Subject: [PULL 55/61] target/i386: Define enum X86ASIdx for x86's address spaces Date: Sat, 13 Sep 2025 10:09:36 +0200 Message-ID: <20250913080943.11710-56-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751290764116600 From: Xiaoyao Li Define X86ASIdx as enum, like ARM's ARMASIdx, so that it's clear index 0 is for memory and index 1 is for SMM. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Zhao Liu Tested-By: Kirill Martynov Signed-off-by: Xiaoyao Li Link: https://lore.kernel.org/r/20250730095253.1833411-3-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/cpu.h | 5 +++++ target/i386/kvm/kvm-cpu.c | 2 +- target/i386/kvm/kvm.c | 4 ++-- target/i386/tcg/system/tcg-cpu.c | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index f977fc49a77..e0be7a74068 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2574,6 +2574,11 @@ static inline bool x86_has_cpuid_0x1f(X86CPU *cpu) void x86_cpu_set_a20(X86CPU *cpu, int a20_state); void cpu_sync_avx_hflag(CPUX86State *env); =20 +typedef enum X86ASIdx { + X86ASIdx_MEM =3D 0, + X86ASIdx_SMM =3D 1, +} X86ASIdx; + #ifndef CONFIG_USER_ONLY static inline int x86_asidx_from_attrs(CPUState *cs, MemTxAttrs attrs) { diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c index 1dc1ba9b486..9c25b558395 100644 --- a/target/i386/kvm/kvm-cpu.c +++ b/target/i386/kvm/kvm-cpu.c @@ -99,7 +99,7 @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp) * initialized at register_smram_listener() after machine init done. */ cs->num_ases =3D x86_machine_is_smm_enabled(X86_MACHINE(current_machin= e)) ? 2 : 1; - cpu_address_space_init(cs, 0, "cpu-memory", cs->memory); + cpu_address_space_init(cs, X86ASIdx_MEM, "cpu-memory", cs->memory); =20 return true; } diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index d191d7177f1..28012d2b578 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -2728,10 +2728,10 @@ static void register_smram_listener(Notifier *n, vo= id *unused) =20 address_space_init(&smram_address_space, &smram_as_root, "KVM-SMRAM"); kvm_memory_listener_register(kvm_state, &smram_listener, - &smram_address_space, 1, "kvm-smram"); + &smram_address_space, X86ASIdx_SMM, "kvm-= smram"); =20 CPU_FOREACH(cpu) { - cpu_address_space_init(cpu, 1, "cpu-smm", &smram_as_root); + cpu_address_space_init(cpu, X86ASIdx_SMM, "cpu-smm", &smram_as_roo= t); } } =20 diff --git a/target/i386/tcg/system/tcg-cpu.c b/target/i386/tcg/system/tcg-= cpu.c index 0538a4fd51a..7255862c244 100644 --- a/target/i386/tcg/system/tcg-cpu.c +++ b/target/i386/tcg/system/tcg-cpu.c @@ -74,8 +74,8 @@ bool tcg_cpu_realizefn(CPUState *cs, Error **errp) memory_region_set_enabled(cpu->cpu_as_mem, true); =20 cs->num_ases =3D 2; - cpu_address_space_init(cs, 0, "cpu-memory", cs->memory); - cpu_address_space_init(cs, 1, "cpu-smm", cpu->cpu_as_root); + cpu_address_space_init(cs, X86ASIdx_MEM, "cpu-memory", cs->memory); + cpu_address_space_init(cs, X86ASIdx_SMM, "cpu-smm", cpu->cpu_as_root); =20 /* ... SMRAM with higher priority, linked from /machine/smram. */ cpu->machine_done.notify =3D tcg_cpu_machine_done; --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751907; cv=none; d=zohomail.com; s=zohoarc; b=lXXI00DjLKTL/h5/DMP2CS6xO+sseujzoiZX1/YsMsNEjT4XwAFBXCNZtUJkoNWBzAcuH/tb2uFaQ9VEx4ZJqw0psV4/VkTRYgeQfVspM/D2yaAqlA4RCtH1fgGl5ulkrTPP769HZeqcpdp3FpBIwbBB0b60qrUMMYcp3da/4Tc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751907; 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=/RYT4EV24HdySf7n68KFr07DQnEMbY9GA58BqcX1V4k=; b=B0urBcRAmdhEghY6fYXwq2L4eX3q5P0Nl1HF5W/+0w2+M6kYwMwp/CoZW+lfclRIZt+pIamAQd4z2r14eKd43/MAuH3i8AnffNS3PXCsbhS7XZQuA6MEA2cGG4sDC7y4fEEjDSmC3d0cifbPrvFL6VPlW3tJ9uk2wIU0IfyYy1I= 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 1757751907959210.87799016990027; Sat, 13 Sep 2025 01:25:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNV-00039S-0q; Sat, 13 Sep 2025 04:13:01 -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 1uxLMz-0001oD-Jb for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:30 -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 1uxLMv-0005I6-1S for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:29 -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-524-ogphgreuPrCtrVYq3qOOEg-1; Sat, 13 Sep 2025 04:12:21 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3e75fcdddbdso1295768f8f.2 for ; Sat, 13 Sep 2025 01:12:21 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607d822fsm9525783f8f.53.2025.09.13.01.12.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751143; 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=/RYT4EV24HdySf7n68KFr07DQnEMbY9GA58BqcX1V4k=; b=VoPNM/Bz51nn9ytw08d7CZ2NUceP7oOAz9qPLOidhWgdiAS78YmVO59EM1HJr3SbHh4tim X1eEF2RxOk74n9m7K7v4ogsgmYpVmRIcye3HPVEEESL3WZegGxEZcIo7IlisP7fW5q2YJV 7DPG6pcUpRf7DF8ditorN2BkQspU4xs= X-MC-Unique: ogphgreuPrCtrVYq3qOOEg-1 X-Mimecast-MFC-AGG-ID: ogphgreuPrCtrVYq3qOOEg_1757751141 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751140; x=1758355940; 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=/RYT4EV24HdySf7n68KFr07DQnEMbY9GA58BqcX1V4k=; b=tNRC91q3OQB6GDLuwRWGMq8nswFFNBR148r30HwhP9VcmTvP9T69bGtHkfnwmJlOJ9 MPZKtrIbZqQcLzAt0GPLvPh3EuBYgheZiQjIkfpVkvR1bdx/6E7+59GaYDrgCibc1Go6 QY/odsrlCEX0xovaSmVm1x63p+Hq9I5MkBMAcfK1RFT85LsJCQ3iY5f5AWLvWoKVewlh CWdxYggZvLjfyDd/2DcODaD/aSEvlmOENGOqo6BNvFfqU9FR04VILkxZgCVepesbxrD1 A97qlZO13fvdLnhQf7jOeChLek6JKwtJZInZ9vGppbfuOlI6eMgMFJzuCFUgN3WdL9Bu Pavg== X-Gm-Message-State: AOJu0YyfFKuM5/tyJNe1+meltyLwQSR3r578Vq7Hv1rslpVHPRXbNBcS HxiFVYwBs63JW2PcqiucCU7ra7FwTN42cPWAFyskSAnEktxKd/Xg5oCNcvVzi64ZDT4oj3UahJZ NSSViL+UOTxPqe8yqV47pVsyooYgg7EqOqM86D/hN1A2+w8PROLN1lHZRh0hyKnTwGKKZStRs06 BZBe/qT64uakAzOfS0aOpwiT+JhNTQ7qG+u/fHOzMM X-Gm-Gg: ASbGncsjKAKLEiIQ5AYVWJ9rtEgWN3LdykVm7MV3ayOGJDf7QWDN5o6V0zQQKo1787m DQ9t8QltXBusQlwfhyvj28hJyEk4+BiA/FABWlzM9CFSTFyrJ45pXqPGrgVKjXqNh7vXUw2HsiP MggSNvvd7pU/YS/N9jb1ce16duEXZaCkXz9avyBlFWefxukhfXUTDlz8BnVFAncHwoWOQza+/Di Fg/RbdeVqy0LYwbGaENpHJMesExOrK9vfRAxbKh7YNW7MyPn2Uh7mNCUS9ZAkEgmnLDu6B8M3RQ O/HP6m5oDldKRpDuP90V62qKvwUcCxespAyZ9kyx0Al1z9PvvRK1ZZBsuJycAQNBvqG4C90YAjX 6pPBYOETqYeaOa/ryPKE5T2MjDRgsR2+jgThw7lZfObk= X-Received: by 2002:a05:6000:2c07:b0:3e7:441e:ca19 with SMTP id ffacd0b85a97d-3e7659e20c9mr5003908f8f.43.1757751139732; Sat, 13 Sep 2025 01:12:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHVUi8JUn8NNJp0NVBiBC9SiXcumRjOPqS/uwhfPsQtN7bv1Iu690oMO7/h8JeJlnRR87TVFA== X-Received: by 2002:a05:6000:2c07:b0:3e7:441e:ca19 with SMTP id ffacd0b85a97d-3e7659e20c9mr5003884f8f.43.1757751139261; Sat, 13 Sep 2025 01:12:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 56/61] multiboot: Fix the split lock Date: Sat, 13 Sep 2025 10:09:37 +0200 Message-ID: <20250913080943.11710-57-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751913689116600 From: Xiaoyao Li While running the kvm-unit-tests on Intel platforms with "split lock disable" feature, every test triggers a kernel warning of x86/split lock detection: #AC: qemu-system-x86_64/373232 took a split_loc= k trap at address: 0x1e3 Hack KVM by exiting to QEMU on split lock #AC, we get KVM: exception 17 exit (error code 0x0) EAX=3D00000001 EBX=3D00000000 ECX=3D00000014 EDX=3D0001fb80 ESI=3D00000000 EDI=3D000000a8 EBP=3D00000000 ESP=3D00006f10 EIP=3D000001e3 EFL=3D00010002 [-------] CPL=3D0 II=3D0 A20=3D1 SMM=3D0 HLT= =3D0 ES =3D0900 00009000 0000ffff 00009300 DPL=3D0 DS16 [-WA] CS =3Dc000 000c0000 0000ffff 00009b00 DPL=3D0 CS16 [-RA] SS =3D0000 00000000 0000ffff 00009300 DPL=3D0 DS16 [-WA] DS =3Dc000 000c0000 0000ffff 00009300 DPL=3D0 DS16 [-WA] FS =3D0950 00009500 0000ffff 00009300 DPL=3D0 DS16 [-WA] GS =3D06f2 00006f20 0000ffff 00009300 DPL=3D0 DS16 [-WA] LDT=3D0000 00000000 0000ffff 00008200 DPL=3D0 LDT TR =3D0000 00000000 0000ffff 00008b00 DPL=3D0 TSS32-busy GDT=3D 000c02b4 00000027 IDT=3D 00000000 000003ff CR0=3D00000011 CR2=3D00000000 CR3=3D00000000 CR4=3D00000000 DR0=3D0000000000000000 DR1=3D0000000000000000 DR2=3D0000000000000000 DR3=3D= 0000000000000000 DR6=3D00000000ffff0ff0 DR7=3D0000000000000400 EFER=3D0000000000000000 Code=3D89 16 08 00 65 66 0f 01 16 06 00 66 b8 01 00 00 00 0f 22 c0 <65> 66 = ff 2e 00 00 b8 10 00 00 00 8e d0 8e d8 8e c0 8e e0 8e e8 66 b8 08 00 66 ba = 10 05 66 And it matches with what disassembled from multiboo_dma.bin: #objdump -b binary -m i386 -D pc-bios/multiboot_dma.bin 1d1: 08 00 or %al,(%eax) 1d3: 65 66 0f 01 16 lgdtw %gs:(%esi) 1d8: 06 push %es 1d9: 00 66 b8 add %ah,-0x48(%esi) 1dc: 01 00 add %eax,(%eax) 1de: 00 00 add %al,(%eax) 1e0: 0f 22 c0 mov %eax,%cr0 > 1e3: 65 66 ff 2e ljmpw *%gs:(%esi) 1e7: 00 00 add %al,(%eax) 1e9: b8 10 00 00 00 mov $0x10,%eax 1ee: 8e d0 mov %eax,%ss 1f0: 8e d8 mov %eax,%ds 1f2: 8e c0 mov %eax,%es 1f4: 8e e0 mov %eax,%fs 1f6: 8e e8 mov %eax,%gs 1f8: 66 b8 08 00 mov $0x8,%ax 1fc: 66 ba 10 05 mov $0x510,%dx We can see that the instruction at 0x1e3 is a far jmp through the GDT. However, the GDT is not 8 byte aligned, the base is 0xc02b4. Intel processors follow the LOCK semantics to set the accessed flag of the segment descriptor when loading a segment descriptor. If the the segment descriptor crosses two cache line, it causes split lock. Fix it by aligning the GDT on 8 bytes, so that segment descriptor cannot span two cache lines. Signed-off-by: Xiaoyao Li Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/r/20250808035027.2194673-1-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- pc-bios/multiboot_dma.bin | Bin 1024 -> 1024 bytes pc-bios/optionrom/multiboot.S | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/multiboot_dma.bin b/pc-bios/multiboot_dma.bin index c0e2c3102a3358207c61d3ae113524fb6007abc3..e6d0c97093b4fc11bc87fd58cbe= 6e577c2841cd0 100644 GIT binary patch delta 42 ycmZqRXyBNj#r%xv^+a8N?gvb%opNjpY29* (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 1757751371191998.0004538038869; Sat, 13 Sep 2025 01:16:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNg-0003um-Pi; Sat, 13 Sep 2025 04:13:12 -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 1uxLN4-0001yB-3v for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:36 -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 1uxLMy-0005J8-6M for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:33 -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-251-vLI3xGd3MVmBfPdpqBVu0Q-1; Sat, 13 Sep 2025 04:12:24 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-45cb5dbda9cso16055085e9.2 for ; Sat, 13 Sep 2025 01:12:24 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45f27f44624sm14581035e9.3.2025.09.13.01.12.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751146; 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=9LZ6zHpRmVQRwMqU8bnKSsPnDvukuMDh//P9NpXMQ+o=; b=dHDDPXhPSUp3tw3jf+ZmYQHBxm3Pj84LRLpntfUEtFW71NNShXMN6Y5ypugw+SEwW/lk/a mzXzHEYKloHXjqiTy+sr9F1ax/zADa4iHaVLk3gd8CYgnhi8cibl/h3pbwLi2/19AEt1Y1 9yeWvLfEzkWV+Dusexbd6zFkD77+7QY= X-MC-Unique: vLI3xGd3MVmBfPdpqBVu0Q-1 X-Mimecast-MFC-AGG-ID: vLI3xGd3MVmBfPdpqBVu0Q_1757751143 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751142; x=1758355942; 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=9LZ6zHpRmVQRwMqU8bnKSsPnDvukuMDh//P9NpXMQ+o=; b=qZ2CTMwN9bnUad7K3NjHu74U13JYrRQS8m5wv/cr1QyvLDPH57R33TgYv+jb7LKggq KV/p+FWMkE7gl+0GdAZFIccNZQv81YrLyndv2CaXkRpbkFk2e8XlgccN5v1T8tnNAuqq gTPzs6oMKNwZfr6co/kA7ZzMKjobjR40EsVcnrerlBbAj6mf/0hxI6NlHfTdHXgKUVmx NIePrQDlSqFh6K2bsZ2dg3lfX1BY5LjZRrFuoYolFjsOjj5bo1g/Luh0YPid7uPiJNJf 6Etgbp6qbb7MdUFHhngvIdueZUyuzJQ/58kzelio6uivUT0WYro+buCRQnxXhtZ1jodq /V0A== X-Gm-Message-State: AOJu0YyxSSmP4YJERK3HdNkQOK3/EQy23vPBY2fZ5PzmSreMLxbjjMCo 7+jY4CC3q6NRTSqi9Q64kbC8Zuwz2aedpy1yAtjPVC5Y6K6H2A1nxRwg8GVXO3A4uERAQo7gVik dQvQdgPeSrUe63fP5xhouBULaG2Fx5nX9dq3l8GP87d2I1j94/abRhaOJbvR1thF0dTfNiqe92f M0uSYiLT53aAK7IrRh3EUTKYFK0YQpXO57pRvuIr7h X-Gm-Gg: ASbGncu4fY9OELgJFwpyXaA0TvpFzLN3gKGSxQze90A98Ob/+6UOtqEEX9+xdZP0EoD LvLeEf6wFkQ+xSR2NabP4Qf+j9PFqXgDRuWixmWe6vBBx1XTiscgaDGoHV4arsLkJ5MXVdYNMGB tVsXgHo0ToMu4TvnmCkXFYp16W+FzTU5RnmqPxY2d+1l8Z4OR2CSZN6s6FhzR8UTqg1R5zqYYWS VUPgzO6YqfzWPAP49Em2AMamJzhI1Brx4C6LYVEO25hveD4afqz4aUTxm8aqjwc0find2gkHzcR 7zWC1RoYQsSUKyYoypbX0uc84IupuELf0M0OoKU3pe4HX+J/2f5/wimLatbSHEEabJoQubs3KfC yJORkX2dcBjjUF1tY0QFI+JzQ5PgkLDhPmPPQTAfpqkE= X-Received: by 2002:a05:6000:25c2:b0:3e6:116a:8fed with SMTP id ffacd0b85a97d-3e7659f94f1mr5299497f8f.45.1757751142251; Sat, 13 Sep 2025 01:12:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFyUylgol7ZRPG1tKwDA+agkpoUyPyvPg/2ZUJLu1yTTiFuhauyvHHjSy9Vn99UMinJIY2VEw== X-Received: by 2002:a05:6000:25c2:b0:3e6:116a:8fed with SMTP id ffacd0b85a97d-3e7659f94f1mr5299455f8f.45.1757751141493; Sat, 13 Sep 2025 01:12:21 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li , Chenyi Qiang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 57/61] i386/kvm: Get X86MachineState in kvm_arch_init() without the cast check Date: Sat, 13 Sep 2025 10:09:38 +0200 Message-ID: <20250913080943.11710-58-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751371828116600 From: Xiaoyao Li Commit 8f54bbd0b4d9 ("x86: Check for machine state object class before typecasting it") added back the object_dynamic_cast() check before casting MachineState to X86MachineState. And commit 035d1ef26565 ("i386: Add ratelimit for bus locks acquired in guest") followed it. The reason to check object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE) before commit 8f54bbd0b4d9 was that smm was not supported for microvm machine at that time. But after commit 8f54bbd0b4d9, smm is supported for all x86 machines (both pc and microvm). And since it's the target-specifc implementation of kvm_arch_init() in target/i386/kvm/kvm.c, I don't see how it would be called for other machines than x86machine, and why the check of object_dynamic_cast() is needed. Drop the object_dynamic_cast() check and simplify the code. Signed-off-by: Xiaoyao Li Reviewed-by: Chenyi Qiang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/r/20250729062014.1669578-2-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/kvm/kvm.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 28012d2b578..728ad401157 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3235,6 +3235,7 @@ static int kvm_vm_enable_energy_msrs(KVMState *s) =20 int kvm_arch_init(MachineState *ms, KVMState *s) { + X86MachineState *x86ms =3D X86_MACHINE(ms); int ret; struct utsname utsname; Error *local_err =3D NULL; @@ -3316,8 +3317,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } =20 if (kvm_check_extension(s, KVM_CAP_X86_SMM) && - object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE) && - x86_machine_is_smm_enabled(X86_MACHINE(ms))) { + x86_machine_is_smm_enabled(x86ms)) { smram_machine_done.notify =3D register_smram_listener; qemu_add_machine_init_done_notifier(&smram_machine_done); } @@ -3331,18 +3331,14 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } =20 - if (object_dynamic_cast(OBJECT(ms), TYPE_X86_MACHINE)) { - X86MachineState *x86ms =3D X86_MACHINE(ms); - - if (x86ms->bus_lock_ratelimit > 0) { - ret =3D kvm_vm_enable_bus_lock_exit(s); - if (ret < 0) { - return ret; - } - ratelimit_init(&bus_lock_ratelimit_ctrl); - ratelimit_set_speed(&bus_lock_ratelimit_ctrl, - x86ms->bus_lock_ratelimit, BUS_LOCK_SLICE_= TIME); + if (x86ms->bus_lock_ratelimit > 0) { + ret =3D kvm_vm_enable_bus_lock_exit(s); + if (ret < 0) { + return ret; } + ratelimit_init(&bus_lock_ratelimit_ctrl); + ratelimit_set_speed(&bus_lock_ratelimit_ctrl, + x86ms->bus_lock_ratelimit, BUS_LOCK_SLICE_TIME= ); } =20 if (kvm_check_extension(s, KVM_CAP_X86_NOTIFY_VMEXIT)) { --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751717; cv=none; d=zohomail.com; s=zohoarc; b=P6yb7MrR+mcJomauq/nvDN6eaPPSgRv/tJvp0QsNVihZVB09CxDp/YNq36VFqcxVNaH+k9SR5TQPfThmbBhhcOL2cQ89ASeuUwPRbd5lQbgWoskUCIJYf0oyEEh/nSIA3ebkxzKGEX0CHp55kfS9KEXWt5vc4SLNy7mJoomjD9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751717; 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=p9SNH9xZqw17k1dQa+6YNWYLqrGHzK/6Bj3FxrwgA7I=; b=Z1pzM1EF5WMkTcByanwLIDAujwYUmqjxh6hB17OvjgnHZwMBIBbUuv/Lf40fO/60hVYjVcm60ll8nHJSW/RmhRv/GnieWLeg/8UUF3BE9NzBS3Gpu5fXVOUi5S9Vm3ZN3RKVoNPCAs20OXNwaNOJNyrHoohDRmMZtjGaUdjBsHI= 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 1757751717255239.4537644987164; Sat, 13 Sep 2025 01:21:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNV-00038m-0W; Sat, 13 Sep 2025 04:13:01 -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 1uxLN2-0001xz-Aw for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:36 -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 1uxLMy-0005JP-RG for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:32 -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-594-iJIGwg7nObCY_jx5albS3w-1; Sat, 13 Sep 2025 04:12:26 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3e3f8616125so2193378f8f.1 for ; Sat, 13 Sep 2025 01:12:26 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607e2d43sm9431076f8f.59.2025.09.13.01.12.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751147; 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=p9SNH9xZqw17k1dQa+6YNWYLqrGHzK/6Bj3FxrwgA7I=; b=AkVdlZLmrft+6HExA9wkl/cj4bo7DR+mIO2kzFD1BXZPaXrwVWdwkmVGeob58SaAV7M4lx 88rB1cqNqhbC30xsKJZZotv20Gg/Hs7YWnHHneoUtKDuYbaBBymRZFk3BoM52rzz8rCk8Y KAK4bKKKTi50LFfqWckeBT5q3VdLc5E= X-MC-Unique: iJIGwg7nObCY_jx5albS3w-1 X-Mimecast-MFC-AGG-ID: iJIGwg7nObCY_jx5albS3w_1757751145 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751144; x=1758355944; 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=p9SNH9xZqw17k1dQa+6YNWYLqrGHzK/6Bj3FxrwgA7I=; b=bqkwJhIE0YdKZVxFSkIgurwD5ln0Sl0cZz8rJfpq6oDZfNZHporc/lRM2+uy/N91UB ESHd9qD77UN/qeCgEmVDvJ7PlZ/2XP/bFBxmAWe7L/nQkm97jI7FHMug+p1bKiI3ofUH Ex62XrfUC3iYg/HBJiM+efQ/XdtUnBu3m3pL28VLFCGbFAMi14qkqCPMZmbZSnl7lw+n hmuxGRGE9OwN45eN1aqQQLk0i4ROPpaWg1kZ12ckd+NsCiRkCA0pa1fXVo9+lUTuDduR 3F2kcnzqt38RID2pq0HVoxWPaeCj5Svn84Y3VlxPdQM2nqkf6lnxaiTkaa1PQ9NjX2x3 7BDg== X-Gm-Message-State: AOJu0YwMCImNgThQHXWsul/ofCFBOSZgww2EhuQhnVwavoNsaGnI84LK VglTKFYfSbiAgzeyXm77MLBd7tkaYoSg7L72lEA/4OugmTOfjr8jtisRbGs9F7cF217kpynPy0c AQUGOG+8Inogw4wgv4fWmCJ6tXsAKBRIGdsTsHav38jTrEnqEs14vklLkXrHL9nd8Qve8ky0o2Z i26t1HnxFlwjNLPrP2eg9HFlMgVSiKNallElcVpk6h X-Gm-Gg: ASbGnctSZsdlRi0KfO00nuJCsJ/eFRVZEImE7WLpQ6M4/myxtz0K/QPA0ciA46G2dX7 r1grVcsW3GRWcQ3KO6hdydtII8wa1Tn3mR5NPnavQbGlhkZLmxSylvxbAWYLBrMgwaX5jXmEKlR oUm6J5j6XjQW5NOTbRSR80s/o7c9qrPJFAgFf6wERQF7DggsG85FGkpoVW6NubO0MQvjaCjlox1 pMunGCeMR7cJGx0Mf3UMdD3N+lFclsCP86pUeGKl4Q/n1dolLakhwBXPh6z2Pcj3v/PXHGCXAuz GO+2dgCQfS/RM7gA/13DvVQZ7g0lHHWBAQqQiKmOcolvmctKBwn8DONiKng/eaIYU4o441P4kvs k4gLYQ9qnLOlaUIHBBukE8uv63KOJ8zCTw099o/hJgdA= X-Received: by 2002:a05:6000:240a:b0:3d8:3eca:a97d with SMTP id ffacd0b85a97d-3e7657aa17fmr4834509f8f.11.1757751144302; Sat, 13 Sep 2025 01:12:24 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH4PcvJu1lIPyQyLVKnpvdWupEXB9+VsmgBph6gOu8ZoRRaowBoFFFSHA28B4A5V2lbI/ZWTQ== X-Received: by 2002:a05:6000:240a:b0:3d8:3eca:a97d with SMTP id ffacd0b85a97d-3e7657aa17fmr4834484f8f.11.1757751143819; Sat, 13 Sep 2025 01:12:23 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li Subject: [PULL 58/61] i386/kvm: Drop KVM_CAP_X86_SMM check in kvm_arch_init() Date: Sat, 13 Sep 2025 10:09:39 +0200 Message-ID: <20250913080943.11710-59-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751719500116600 Content-Type: text/plain; charset="utf-8" From: Xiaoyao Li x86_machine_is_smm_enabled() checks the KVM_CAP_X86_SMM for KVM case. No need to check KVM_CAP_X86_SMM in kvm_arch_init(). So just drop the check of KVM_CAP_X86_SMM to simplify the code. Signed-off-by: Xiaoyao Li Link: https://lore.kernel.org/r/20250729062014.1669578-3-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- target/i386/kvm/kvm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 728ad401157..c9856d471ab 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -3316,8 +3316,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) return ret; } =20 - if (kvm_check_extension(s, KVM_CAP_X86_SMM) && - x86_machine_is_smm_enabled(x86ms)) { + if (x86_machine_is_smm_enabled(x86ms)) { smram_machine_done.notify =3D register_smram_listener; qemu_add_machine_init_done_notifier(&smram_machine_done); } --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751718; cv=none; d=zohomail.com; s=zohoarc; b=OJXAlwZ3ftrtWQp2U+tAO1me/5QISucM/rkZ5mNPZ6ZIah9QTUkzzxq7ShW363Ejx7Jc6zhWVig3scWdW0gdMKQANegUjSZE9jgaqeLnEV2faipdazQsdqajpgPPkUKFeaZK/jGTgn8wvOggQ1Q8LaStvqJe/0Fk9EnK4Wn/e00= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751718; 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=M/f46ar4NQt0D82z+vsB//+J/IGWmriKTQDbJURGYEg=; b=edKJgRLuuYZ5DgjoesPjiZJ5GToUHWGPxQ/4YaSFzAIZy2voWWxofO0lDbUYS0awDoQ0MWMRENkrg0TWOIFXGtr13u5bRERwH8eu8HL19LWZSPoBJvoMEInTmeJKlCQNGOo+hPqiIZJShkV3VGz4QXUyQZKXa5Hm+Bu30iecPog= 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 1757751718102419.62427147717153; Sat, 13 Sep 2025 01:21:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNW-0003Ky-J5; Sat, 13 Sep 2025 04:13:02 -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 1uxLN4-0001yV-L9 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:36 -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 1uxLN2-0005KP-QC for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:34 -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-97-r-q_KDPFNMqWyAvOmla7lg-1; Sat, 13 Sep 2025 04:12:29 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-45de27bf706so12817075e9.0 for ; Sat, 13 Sep 2025 01:12:28 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e8f4d644adsm590429f8f.52.2025.09.13.01.12.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751150; 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=M/f46ar4NQt0D82z+vsB//+J/IGWmriKTQDbJURGYEg=; b=W+7QIurI34AjYbFnvnrulgbtpzoKq8516Y+ekKXh/de7QUOBp4XQ6BNHWyXbNZ833qhS74 6LxJP8iwkWJV5ol/ulOZITcubod+m6Q1Sdl5GxfPNdBqWz6dhx3HlwYsPQU/gJq7s8fhsB U8qMeREkHVfSOQu+YGJLdyjuqrU4eWU= X-MC-Unique: r-q_KDPFNMqWyAvOmla7lg-1 X-Mimecast-MFC-AGG-ID: r-q_KDPFNMqWyAvOmla7lg_1757751148 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751147; x=1758355947; 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=M/f46ar4NQt0D82z+vsB//+J/IGWmriKTQDbJURGYEg=; b=d4heeFHPolxLFaZEbjZ56sDxlOkG31CaaQnhXBRjee6f0Rv/NIGDsv4w6NmnV+ekCp gThkib6xQOFDvg+DjolGwkQkmf6ucXj1xuzT2ljfhodjeHtkW0lh2JDQcDcLJZrioJXZ essd8JZ2KDoM2rfCyLcUfkiHF5rPaUljvUmgKU9Lwf38Fz9mo2FB9/le/go/DmrFp/S8 Rde4d+bFrADe1ZEE4p4P2FVM+AmzsZ0rKI5sYSFtS5Y3Nh4UklQi0RkHPJSdAEHwsp3f QZKQiec2KoO1qjg+TdiNBmMGd3FSw3i5SihXGpMuGnMUKr8lIMfLivpbqCYMLtrdys/u CM7w== X-Gm-Message-State: AOJu0YwUg/CtnJRFHdLLibPpSH2+5bR44h4nSpyZzd9hc856mtSYfFUm mWSHnDkQxWliU35BkcTDvEeONGJXFKvGZ1js7TgrI47/XcG2ZhtIPdOAILQW3fxbBPEc9bVI8jd 0D8ZbMvH/uzGt9RqSOJ8bdLkstMo/4l5R62fV6mopo2OWjJV8y64nvhbZP8jTwl1aRAOgZvWQ7r hejBPxAsY3X0OT/XDP92/wWTwPc8XkbbhWCu2eKqRi X-Gm-Gg: ASbGncuSCaip1e2O6FhjeRYuW8KiwHSbnE/hvvGrNPS8mP/sqX/zP9u7xDZjcBhrLoL q1Bj/ACu0kWJXvkMESky0tEIannB7VjzStQyrPaL4EOOziSNG47hTgp9qtBBPuF8YzKaQXw0gLH Q8WauhkIo7Y7ciEvAVfzHni39rbvU6YBxBgwfSVPaunkaiCiE7vxmsG3tXqkWxHztanIPDCEUMF K16AKauahoToTdH9mv4vT8P8rPKk6oCpt4+2xehebd58S/xO9vlP7N79EPcayRGbZKJLJ53YBac GmfAws6o+2LB3OgJqufkW7ZC3v0xlhTgxjYGHilKLIyF1ar0rqeqxCL6h4ixAyr3Fxlf65AAkux SIvZWL2JOgCT7lyDkzuU4ysh5kvHwzFUaApt90JaL4ok= X-Received: by 2002:a05:600c:190d:b0:45f:28c9:4261 with SMTP id 5b1f17b1804b1-45f28c94362mr6143975e9.20.1757751146879; Sat, 13 Sep 2025 01:12:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFccGLYb1kgD9rsY9/uhSVBamxYu66kvpVDifLnQ5iBklVhgSMB1dnQ1HwmXJ/YeydsTu+KtA== X-Received: by 2002:a05:600c:190d:b0:45f:28c9:4261 with SMTP id 5b1f17b1804b1-45f28c94362mr6143785e9.20.1757751146440; Sat, 13 Sep 2025 01:12:26 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li Subject: [PULL 59/61] accel/kvm: Switch to check KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM Date: Sat, 13 Sep 2025 10:09:40 +0200 Message-ID: <20250913080943.11710-60-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751719545116600 Content-Type: text/plain; charset="utf-8" From: Xiaoyao Li It returns more accruate result on checking KVM_CAP_GUEST_MEMFD and KVM_CAP_USER_MEMORY2 on VM instance instead of on KVM platform. Signed-off-by: Xiaoyao Li Link: https://lore.kernel.org/r/20250728115707.1374614-2-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index d13156bee87..633b72bde2d 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2776,8 +2776,8 @@ static int kvm_init(AccelState *as, MachineState *ms) =20 kvm_supported_memory_attributes =3D kvm_vm_check_extension(s, KVM_CAP_= MEMORY_ATTRIBUTES); kvm_guest_memfd_supported =3D - kvm_check_extension(s, KVM_CAP_GUEST_MEMFD) && - kvm_check_extension(s, KVM_CAP_USER_MEMORY2) && + kvm_vm_check_extension(s, KVM_CAP_GUEST_MEMFD) && + kvm_vm_check_extension(s, KVM_CAP_USER_MEMORY2) && (kvm_supported_memory_attributes & KVM_MEMORY_ATTRIBUTE_PRIVATE); kvm_pre_fault_memory_supported =3D kvm_vm_check_extension(s, KVM_CAP_P= RE_FAULT_MEMORY); =20 --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751282; cv=none; d=zohomail.com; s=zohoarc; b=CkxtlmYhTzi1ZfRUinDtD3E+l2h8hxMkMpymSCiygBe2HmCCJOzfOx7j0WoPYwt4/k4OyaplFO+gIazzNLfK0OtvSBq8HRVELIvItu+CfQ0V5W0znyJAhnUAXKNHbYwpXricaFwcRppz2dfsWjzZWMeu6qRtxbOZb4RSQ4z1xOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751282; 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=KoI6yvC21dslA1v98yDlQjqFTRjNFP/v63K9eXeIsBI=; b=SVUPR1xWOV18jjPM8jT3jTyde/x3BudWs+29+oaVULqK43BapleDWs5Tkbmuoq0IqCwusuZQkMZgF6mQuOaqcryNILB0YZnkYoIF5k4TFVq9dkHgMj+H5YG7ryj53WkT/DMx7gDoMZ1RmcIv5h+Jdcj2KRZkfNtO6F8R2zvRVHs= 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 1757751281955904.1392791427521; Sat, 13 Sep 2025 01:14:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNS-0002zL-7x; Sat, 13 Sep 2025 04:12:58 -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 1uxLN5-00021k-Vf for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:36 -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 1uxLN3-0005KZ-Bv for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:35 -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-57-pUaZbQgMOgO5lJVkXi1jHw-1; Sat, 13 Sep 2025 04:12:30 -0400 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-3e75fcdddbdso1295799f8f.2 for ; Sat, 13 Sep 2025 01:12:30 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e766659ea0sm6028410f8f.43.2025.09.13.01.12.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751152; 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=KoI6yvC21dslA1v98yDlQjqFTRjNFP/v63K9eXeIsBI=; b=cKlFq5sTnWmWh10czgr8ZMThBHe19up1o6nY04jkmlNe7LW0jJL9WtDgkrduKmMUlEltgP 68nH+rowbEMVrYOQ/wBynOqrKjT/pA9CuZqX/oL8EvFzlyoPt4gG+dfsSyu+zUC+uXkl/j vx4yUJuYgzToJFH2vMuYSYtCHC+N5iI= X-MC-Unique: pUaZbQgMOgO5lJVkXi1jHw-1 X-Mimecast-MFC-AGG-ID: pUaZbQgMOgO5lJVkXi1jHw_1757751150 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751149; x=1758355949; 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=KoI6yvC21dslA1v98yDlQjqFTRjNFP/v63K9eXeIsBI=; b=cUFJ6SjIUPboW+tTF8Bzh1eCjhOH58YL4vkwulDJaiSzPOmYNjpTWwKlABuAvPEHHP zf5b3jtCUiN8ZkTKPEi5Irb3PEUazy0zBV62joa1LmSLgiL2rUt1C48WofNOmCg4xSjf Y4vkET8jQu5OGsEZoANB+Nj6ILA+WIEvdbu13CQuRo/reXbhVBk086rPIOqvtBvS7akV sWW5CLUoI9W26i4CsoLY8VEcF9EvTb/zwxIvYfCWty7twID16eWifzcJncihqjFxNMwH PDlWFPqDAL9Bv73pb5zR9Ln+LXqu3w/LfGI1QTKd8hHaU0rUNzIThvxovliCj4rVzMU2 OYYQ== X-Gm-Message-State: AOJu0YzD3UxAYMiwkftjep8/OsyTsRM460huqAoM+Vzrc09WtqebCyBg rsqgxpxQro/+jo+eUm6DldahY+73fr87YMqlbVeTSJwfNyGxbIDuqkn4Vj7FEVqjzQiJ7XUA3uV 0okfPKxBlFmWL3++4N69fq5ymR44XE4biYDuSwlaLOTXgUZ08PqDY+9RmyJWssx2B70Z++ttsJ2 Jr2LtSP2ZNnEdA/P7vtGgiF4076qVSm5X2d50ozETy X-Gm-Gg: ASbGncu1rS8lI2rbiTQEKCEFiDN8fRwVfCOgvPRve8WtUif81FmErsSTEYRWuWhQSkH JQUNXE50lkhH9F+sNTiPbhoGqgqbM9N33HCsvKYzEb0bOBPAF7DmF5dQL/5hW3GBS6CIQqxAFzD iavf/K+H+bnGEeVcKac+Z2Y/3EZUe7heWr1I7NKIhTJxaWdii2NWnu0LlSaTknvRaouoMt64cTT Amb8425SEFTJNz2PrN0jY0N8HpyRvJH5903FqP5NjDJTUqSCSu9N1X3J4O+PBCLEtse8nfpV1h6 +47jRSGvoQ2vCSWh3gtzUXmqoQn/zIRjvv2AvrjFpMAHc/Aub6nY0Xe9qMxeH0z2Wn/XSQh8nid 5BP8PwKmk9nxHIatigFFBYztdFbGmJEltNpg03VxJpd8= X-Received: by 2002:a05:6000:420f:b0:3e5:955d:a81b with SMTP id ffacd0b85a97d-3e7659c4248mr5016865f8f.34.1757751148850; Sat, 13 Sep 2025 01:12:28 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEIE+15wQYUhMNqii8b89mH4X0yxHS5Pb4oyidKdzD45sVy0lZSe5czC38SfsyaH3c3EQOGtA== X-Received: by 2002:a05:6000:420f:b0:3e5:955d:a81b with SMTP id ffacd0b85a97d-3e7659c4248mr5016843f8f.34.1757751148392; Sat, 13 Sep 2025 01:12:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 60/61] accel/kvm: Zero out mem explicitly in kvm_set_user_memory_region() Date: Sat, 13 Sep 2025 10:09:41 +0200 Message-ID: <20250913080943.11710-61-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751282405116600 From: Xiaoyao Li Zero out the entire mem explicitly before it's used, to ensure the unused feilds (pad1, pad2) are all zeros. Otherwise, it might cause problem when the pad fields are extended by future KVM. Fixes: ce5a983233b4 ("kvm: Enable KVM_SET_USER_MEMORY_REGION2 for memslot") Signed-off-by: Xiaoyao Li Reviewed-by: Philippe Mathieu-Daud=C3=A9 Link: https://lore.kernel.org/r/20250728115707.1374614-3-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 633b72bde2d..72b571a6972 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -358,7 +358,7 @@ int kvm_physical_memory_addr_from_host(KVMState *s, voi= d *ram, static int kvm_set_user_memory_region(KVMMemoryListener *kml, KVMSlot *slo= t, bool new) { KVMState *s =3D kvm_state; - struct kvm_userspace_memory_region2 mem; + struct kvm_userspace_memory_region2 mem =3D {}; int ret; =20 mem.slot =3D slot->slot | (kml->as_id << 16); --=20 2.51.0 From nobody Sun Sep 28 16:32:30 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=1757751795; cv=none; d=zohomail.com; s=zohoarc; b=Y9eMx1jLu48mjWiUFxq0W3f73wOOGsrwVVt7CS6PMM2AuEhqMDv3PjBwKGUpQPWwR+UJ2HCUzLsqExT9TqHMfVRjPEU/NcOYKRfc9c2auvWh8RKtoIZbFNcWW6pWm3O7vG2GByDaTP4F9Vbv6YYwPdEJS2fq3YYNhORvFyK+AyE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757751795; 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=F5uQt5ustiZIdzCYn4xmtqTsqlJ6I63W6ymofZAy7J0=; b=PYeW7B+vT1Zgo47V4Sw6S+BOMrW9CrB2l516noGwIsm28ieVhgGyFkquG61ogjtEoCXttwfqqdAhIuAbkPA7K1fCdsADn6dGvSb4yu19Duy4wbZEkextwp2GYjt75XIt09DfHR9RKd4uW0xfw9esAjn1tC7hXmlVcvSp2p6xuL8= 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 1757751795194979.5367056040952; Sat, 13 Sep 2025 01:23:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uxLNy-0004PZ-0K; Sat, 13 Sep 2025 04:13:30 -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 1uxLN8-00025p-Ck for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:40 -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 1uxLN6-0005L4-J1 for qemu-devel@nongnu.org; Sat, 13 Sep 2025 04:12:38 -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-54-oUNNH6MTNdSPeIbWQwLUjw-1; Sat, 13 Sep 2025 04:12:34 -0400 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-3df2f4aedd1so1862778f8f.3 for ; Sat, 13 Sep 2025 01:12:33 -0700 (PDT) Received: from [192.168.10.48] ([151.95.56.250]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3e7607ccf93sm9469194f8f.38.2025.09.13.01.12.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Sep 2025 01:12:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757751155; 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=F5uQt5ustiZIdzCYn4xmtqTsqlJ6I63W6ymofZAy7J0=; b=A0H5qHb/Srq7Ek3PMhAEnCh5m7JyIar8vEqloJ9Gq0RuSYHjezjm5rn4IrM0Fqnl6Z9FCg o7FEtvTtb6uG9eKNUZkjuRb/R7GKO7hz1AhnJqyhvEfRu/wV2lHxnADTteHy1tiDlRFqTg WQKKZN9iH119rr2GrRGy4/EI6V5zqj0= X-MC-Unique: oUNNH6MTNdSPeIbWQwLUjw-1 X-Mimecast-MFC-AGG-ID: oUNNH6MTNdSPeIbWQwLUjw_1757751153 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757751152; x=1758355952; 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=F5uQt5ustiZIdzCYn4xmtqTsqlJ6I63W6ymofZAy7J0=; b=R9gasxy3viIzbOqalpgPODuO6lkag4hwivZUYbdnvOQfMLP7Z0ID22KGycvOemX2Mt oFaqGwV7MGqM9WYSl/DqVSAv7ZMyICerDew7uQO0ud5v0OW39T/yFvc0KRLBBLYqEEK8 gDmENB91njCchmlnn7IPdUjkT3MBhcmOA43YV/4Gpsfkjs+13RcEfkUMoAideePnrGIU 1mInibIdipHyDJ1SmQuU7ow360o+6wEyka5z10WrIh1161lrwrhGGuiIXb4GlZDXiMSf Vey97J3rtoufAhsfxKKxyApQKrxn1wwW4/aELSqxxzCH5xZZYf92QnBupFw8TbAxDWW8 3VWQ== X-Gm-Message-State: AOJu0YyuGMAsNfGdf5ZLBWksv9nGoRAkSseSnUpcpkB1DL7hXYsuwKre b5vbfm7NVo4TZSkrCm+u9eb3SU3PwrtikwqCWpv8S/vLG8ZDrMHRUXFq1vtw5ZAmCpm0iYwNADT oIpwNJ7r9IR4/gp1VtRcXLc90RVfWAEHG037dUXhF4iPpV+4ZJ+ADQoYKce7cNCMk9dUNfeEq+e M1xQ52HjoISAucxAKMj4RHWEsyngChMqJhwbeaJreU X-Gm-Gg: ASbGncuYV8AjIj4/SJbJIU9wWN8YPNQj2xgHpZLDsFnoLcN3akJY6Ps0lTJvUY5mJNU d8ZJ5PEYuMNS3rZnTMXbqSDlqmmIQUAZuw/p18qa/s2YACVFwoZyL9mMYVL5L8VMndLfSzudFEl lF0gsBMZFaKsSROCnF+z1WlWaeAl5okQvT7YbWDXz5zEYH9vZKvYDs00KtwPJsLiXjIyZv1BykV HJ3Ith9yNOV6kcZJwmEJyX0PjO8G/ZejQ1iIsCtw+Nll4NDAnCpLNmY+fqUI1TwzurQmSXhDGyA mW6trsUzchRELgAyODuEW9PXqQtjZVdyIWf/Rk4cTwkaps2YptG7ifvd3Ep2lXsk1NqQyfArouz /TK4KzqpveGbTai42ka7FICtfZtFLPjEZ1yWmjfEWpmw= X-Received: by 2002:a5d:5c84:0:b0:3e4:f71e:2d7e with SMTP id ffacd0b85a97d-3e765798576mr4616383f8f.23.1757751152022; Sat, 13 Sep 2025 01:12:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG9gKJ6zhYZUit2MO51JvZlTcvpfh7rjKP0NCSAJJY3k0/6Lb4S6RCDvPPCkLTYXBEY5PCMZg== X-Received: by 2002:a5d:5c84:0:b0:3e4:f71e:2d7e with SMTP id ffacd0b85a97d-3e765798576mr4616363f8f.23.1757751151561; Sat, 13 Sep 2025 01:12:31 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Xiaoyao Li Subject: [PULL 61/61] accel/kvm: Set guest_memfd_offset to non-zero value only when guest_memfd is valid Date: Sat, 13 Sep 2025 10:09:42 +0200 Message-ID: <20250913080943.11710-62-pbonzini@redhat.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250913080943.11710-1-pbonzini@redhat.com> References: <20250913080943.11710-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: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-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: 1757751796369116600 Content-Type: text/plain; charset="utf-8" From: Xiaoyao Li Current QEMU unconditionally sets the guest_memfd_offset of KVMSlot in kvm_set_phys_mem(), which leads to the trace of kvm_set_user_memory looks: kvm_set_user_memory AddrSpace#0 Slot#4 flags=3D0x2 gpa=3D0xe0000 size=3D0x2= 0000 ua=3D0x7f5840de0000 guest_memfd=3D-1 guest_memfd_offset=3D0x3e0000 ret= =3D0 It's confusing that the guest_memfd_offset has a non-zero value while the guest_memfd is invalid (-1). Change to only set guest_memfd_offset when guest_memfd is valid and leave it as 0 when no valid guest_memfd. Signed-off-by: Xiaoyao Li Link: https://lore.kernel.org/r/20250728115707.1374614-4-xiaoyao.li@intel.c= om Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 72b571a6972..9060599cd73 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1595,7 +1595,8 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, mem->ram =3D ram; mem->flags =3D kvm_mem_flags(mr); mem->guest_memfd =3D mr->ram_block->guest_memfd; - mem->guest_memfd_offset =3D (uint8_t*)ram - mr->ram_block->host; + mem->guest_memfd_offset =3D mem->guest_memfd >=3D 0 ? + (uint8_t*)ram - mr->ram_block->host : 0; =20 kvm_slot_init_dirty_bitmap(mem); err =3D kvm_set_user_memory_region(kml, mem, true); --=20 2.51.0

`GwYCu#>oH1aU1k1a^OxwV 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ΝtTc>>p-1f)PUF;~E6$9w1Z6B!>Iece@T*T}n&U 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 =3D;tv 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� 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 TCo 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 z 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