From nobody Mon Feb 9 07:00:25 2026 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=1746259191; cv=none; d=zohomail.com; s=zohoarc; b=gcgpe+7nRD103LKLA9HqniBlCo+K4yHT/B4Dr95CgTjP7uAW6CdqDGNKq2iFFTMu10mnva7a/ecbvQ606DZM9ghhUPPafJWJs86D84/kKaYYJgu8vPmebm2NAtgUdtw0iKyWvfujeqdyL7tKDVl7PFpzEeM5K9cJz+naRs/HP2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259191; 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=u7aiabvalma8/ssAKdGg3gUinofOerC+pA/wzQHL28g=; b=WM3Ql7M4pq87Ffbi1gQKJKkRPaCMAG5D026GSnq6pLokLcZvaU8tv/hsgQjEfQvhIGW6zsrqA/iQgbfWGW9HBDTMySri1rtkCirawmQzaVS6kw9ERu/tsXc2rB67i/JHhJgKM9SJkNfWdKgzwLLyfDOUL0j8k5r22E0Arf/C1zA= 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 1746259191050183.08198961196638; Sat, 3 May 2025 00:59:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mF-000831-0W; Sat, 03 May 2025 03:59:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uB7mB-00082c-PO for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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 1uB7m9-0006c3-5M for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:11 -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-263-otg2MYVZOk-XBuu9a7xl0A-1; Sat, 03 May 2025 03:59:05 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-39126c3469fso779849f8f.3 for ; Sat, 03 May 2025 00:59:05 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae3ccdsm4211887f8f.38.2025.05.03.00.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259146; 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=u7aiabvalma8/ssAKdGg3gUinofOerC+pA/wzQHL28g=; b=i5IxafJ48RZPpqiSsQ9uCjl8GYH17BrWh3ta+2lQIoFXBJCHJyhrpvumdSXLRI+s5QlCU4 XF7O4ZkQqOrkOLldfb9Ur7cqrg8JvXX6Yc3uTyqH0NzQ7hYIy/Lxh062L71Qct9l3MCLhE EhyzFOZXSz2Ic6dGliwaKGGs0bR/sYk= X-MC-Unique: otg2MYVZOk-XBuu9a7xl0A-1 X-Mimecast-MFC-AGG-ID: otg2MYVZOk-XBuu9a7xl0A_1746259144 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259142; x=1746863942; 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=u7aiabvalma8/ssAKdGg3gUinofOerC+pA/wzQHL28g=; b=Q4RCYnGSegvOE/R+Bfwh/zu7p48dyyY+A3rLU2EtVEIGvggBMyVXLah1Ny5U8zKYAy 8jLNG/93hLu7kzbibWSVTUKceNnuLh5dKOE3jhvqPpY5+rJI40P1fZ9Vd/Gn1Vno1zYB lxYmgkbfoaLzbIdomkMysXmgGJPacvlK2AEteMdEhRxNd68QOVYq+pm6jEt6XXkg5UXS s2F9SvqWOUZh0iyjUkj2h/oLxYVl5w2oE5XviZM7Xkamx60Q8LAqCRJZ+rlTw11dFiT4 O5GNwxkBXUUKu3ERCfFfSMPX4AULpi/IEp4NWL8RYe6fqfQUld2n6z/tePxefrIcFGIu cflw== X-Gm-Message-State: AOJu0YysekUHuZIGMkZ69YE1GafeGrJvBlPfNBz6qkdVIkDNs9gHv3lc 4g+dnqLBNLOw1Z4ynsq3lN0EeGQ9LxloN4rJnD+siGcRWo5jE1cvtH0Y7VGysZdLT4smS2CtW+I kGN3mq2Cte+eSeHA1K1RXr30OpeUDKx42urnQHsgnagxGDiT3iF5f1mApVAcoQRljIIbdcO952Y TdINjOaWNXE+zbujwg1sU6N8Qjg/kWkLY7JkRc X-Gm-Gg: ASbGncvOLojQIeOf6AMBjwFH4CjBzMtzhonwMKdvA1sHf4Os9Rw9ZR+EE44c5kMP10d ZuHQBtNNG8CZnn4Tx3HfCj6vEAro8h/bhL0cwl8bnffJbZcuo6oQjcIp2oAJQcp1+9Ioa2OG14H u5sSZ5+ySqUdpmx85R59Es4zjtui7T9dusLXiUJbL12eDlIGnzPXsvlYU4PCw/3WQ61/YioNMHf sUMeIGcW+38dOA1OHM9eZ3b1F/Vo747fWh38ZopxeS461BjDyCQ/JslrQgm4/euU96RieR3ZlBr JYKDK2nADgxQBJc= X-Received: by 2002:a05:6000:240b:b0:3a0:8020:c5c5 with SMTP id ffacd0b85a97d-3a099aef8e6mr4176870f8f.58.1746259142470; Sat, 03 May 2025 00:59:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHDMeYvmICphnYKVr5xX1J98nvgeO4cjNuU9mY++NKd/jXoM4l4DBIdfwJy0qQAKfNIOFBzUQ== X-Received: by 2002:a05:6000:240b:b0:3a0:8020:c5c5 with SMTP id ffacd0b85a97d-3a099aef8e6mr4176853f8f.58.1746259142008; Sat, 03 May 2025 00:59:02 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 01/13] rust/vmstate: Add support for field_exists checks Date: Sat, 3 May 2025 09:58:46 +0200 Message-ID: <20250503075858.277375-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=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: 1746259193283116600 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Unfortunately, at present it's not possible to have a const "with_exist_check" method to append test_fn after vmstate_struct (due to error on "constant functions cannot evaluate destructors" for `F`). Before the vmstate builder, the only way to support "test_fn" is to extend vmstate_struct macro to add the such new optional member (and fortunately, Rust can still parse the current expansion!). Abstract the previous callback implementation of vmstate_validate into a separate macro, and moves it before vmstate_struct for vmstate_struct to call. Note that there's no need to add any extra flag for a new test_fn added in the VMStateField. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20250414144943.1112885-2-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/vmstate.rs | 70 +++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 1b2b12eadd6..8c4a5bee3c1 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -200,13 +200,14 @@ pub const fn vmstate_varray_flag(_: Phant= omData) -> VMStateFlags /// and [`impl_vmstate_forward!`](crate::impl_vmstate_forward) help with t= his. #[macro_export] macro_rules! vmstate_of { - ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])? $(,)?) =3D> { + ($struct_name:ty, $field_name:ident $([0 .. $num:ident $(* $factor:exp= r)?])? $(, $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, offset: $crate::offset_of!($struct_name, $field_name), $(num_offset: $crate::offset_of!($struct_name, $num),)? + $(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!( @@ -435,6 +436,38 @@ macro_rules! vmstate_unused { }}; } =20 +pub extern "C" fn rust_vms_test_field_exists FnCall<(&'a T, = u8), bool>>( + opaque: *mut c_void, + version_id: c_int, +) -> bool { + // SAFETY: the opaque was passed as a reference to `T`. + let owner: &T =3D unsafe { &*(opaque.cast::()) }; + let version: u8 =3D version_id.try_into().unwrap(); + F::call((owner, version)) +} + +pub type VMSFieldExistCb =3D unsafe extern "C" fn( + opaque: *mut std::os::raw::c_void, + version_id: std::os::raw::c_int, +) -> bool; + +#[macro_export] +macro_rules! vmstate_exist_fn { + ($struct_name:ty, $test_fn:expr) =3D> {{ + 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; + $crate::vmstate::rust_vms_test_field_exists:: + } + + const fn phantom__(_: &T) -> ::core::marker::PhantomData { + ::core::marker::PhantomData + } + Some(test_cb_builder__::<$struct_name, _>(phantom__(&$test_fn))) + }}; +} + // 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 @@ -445,7 +478,7 @@ macro_rules! vmstate_unused { #[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 $(,)?) =3D> { + ($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() @@ -458,6 +491,7 @@ macro_rules! vmstate_struct { size: ::core::mem::size_of::<$type>(), flags: $crate::bindings::VMStateFlags::VMS_STRUCT, vmsd: $vmsd, + $(field_exists: $crate::vmstate_exist_fn!($struct_name, $test_= fn),)? ..$crate::zeroable::Zeroable::ZERO } $(.with_varray_flag_unchecked( $crate::call_func_with_field!( @@ -514,43 +548,13 @@ macro_rules! vmstate_fields { }} } =20 -pub extern "C" fn rust_vms_test_field_exists FnCall<(&'a T, = u8), bool>>( - opaque: *mut c_void, - version_id: c_int, -) -> bool { - let owner: &T =3D unsafe { &*(opaque.cast::()) }; - let version: u8 =3D version_id.try_into().unwrap(); - // SAFETY: the opaque was passed as a reference to `T`. - F::call((owner, version)) -} - -pub type VMSFieldExistCb =3D unsafe extern "C" fn( - opaque: *mut std::os::raw::c_void, - version_id: std::os::raw::c_int, -) -> bool; - #[doc(alias =3D "VMSTATE_VALIDATE")] #[macro_export] macro_rules! vmstate_validate { ($struct_name:ty, $test_name:expr, $test_fn:expr $(,)?) =3D> { $crate::bindings::VMStateField { name: ::std::ffi::CStr::as_ptr($test_name), - field_exists: { - const fn test_cb_builder__< - T, - F: for<'a> $crate::callbacks::FnCall<(&'a T, u8), bool= >, - >( - _phantom: ::core::marker::PhantomData, - ) -> $crate::vmstate::VMSFieldExistCb { - let _: () =3D F::ASSERT_IS_SOME; - $crate::vmstate::rust_vms_test_field_exists:: - } - - const fn phantom__(_: &T) -> ::core::marker::PhantomDat= a { - ::core::marker::PhantomData - } - Some(test_cb_builder__::<$struct_name, _>(phantom__(&$test= _fn))) - }, + field_exists: $crate::vmstate_exist_fn!($struct_name, $test_fn= ), flags: $crate::bindings::VMStateFlags( $crate::bindings::VMStateFlags::VMS_MUST_EXIST.0 | $crate::bindings::VMStateFlags::VMS_ARRAY.0, --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259244; cv=none; d=zohomail.com; s=zohoarc; b=M3Tpt5r1iW8jkIkgXrBIltVBxF6RhJgeqsfQ60qD0HAD4n1eUIEweDLZCoTksrzv9+5Tk9yR3/JHtLbleU2FdTCxBfLJnVn+LZSG4V4bjEN54kjCMZRkpIEaJzbikO0BlFbAbztQmwIvEBw5FNj7h1Qsq1fimE5CWi2kfnHEw9s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259244; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rCO405x1iA5TZa/s7VrWx8Lz2D6IP//q8p2gI6CpMtk=; b=dodGiWp48Q35GUOy9vZSaS//g7aWyAqgk7aOjnRUPbui+51NPafCf00UQGl+QHOXvmd8G19vIR6FNi0WDX3M+udsNqOuHaTyFgEJKYn+ab/sbGR4cp9yNuA0rVYCEEQGOHvJM1cLknrFO6j9Q3sCg4TyEOHCOcVICFsQ3vHoaWc= 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 1746259244928340.0983610859889; Sat, 3 May 2025 01:00:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mH-000846-TX; Sat, 03 May 2025 03:59: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 1uB7mF-00083K-6M for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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 1uB7mB-0006cY-SL for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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-437-TenHEXkSMOe4-Egg4rUFUg-1; Sat, 03 May 2025 03:59:09 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43cf446681cso15678755e9.1 for ; Sat, 03 May 2025 00:59:09 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b2b28082sm111753275e9.34.2025.05.03.00.59.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rCO405x1iA5TZa/s7VrWx8Lz2D6IP//q8p2gI6CpMtk=; b=FQKKUBmZgMcaDSiYM5jDNG8NVZT/kL4mjWu1uoJgtTrV0rvyskzDLTiN2FdRLLxQymkbCa A343lpB9kr8X3gRSKcNmu21emc8aQIu3dknvKviQ017fVRIpdcl735V+GLXpLDnNqbvpF6 EMTZeorokdcl0Qc0ZETadFiCgP2dH+c= X-MC-Unique: TenHEXkSMOe4-Egg4rUFUg-1 X-Mimecast-MFC-AGG-ID: TenHEXkSMOe4-Egg4rUFUg_1746259148 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259148; x=1746863948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rCO405x1iA5TZa/s7VrWx8Lz2D6IP//q8p2gI6CpMtk=; b=VnvUR7JPj9LY4vxfbhtUStmQYlfGcrfYkAjFwFdDSi77hHrCE2gfTypZwbhK/4R8pN obnCuMDLJzVzeZJLmJAXodcEhx5qBTyNFcfuMbYc7t0jaAaskCDn4J45U5r0hdTXUgDw JvUsJA1cNTVZVi8PQhgGfC1BheLfISFtOGiEBHk/RSKI/472SbCau4EOmHZ3Ag/1tm0c ogfjSj368UGjk7IxAJl47oZXdmUV6jJSqqHIZyYkqRAOUPOmRz0zoq9ekuJjySOY6C6e BR5nRAli1uM6Wyw9/eTPyDoCjXAyosqAljfSD+HCgHjO+NX9GrtfxsV7OUdujPb51xUG vtvw== X-Gm-Message-State: AOJu0Yzs5kBv4YOS9UUAp/VefBjnyt5VbN1NI6sad1AiieniDT1pNeAe aTxhrDV9vCkz2ZEa1Zxv0lYDKJvGJE2MR+jy1X52u9VF7GNupQ3F+i0lJDVY81F5iYXvkKp6N0q 4t+1sey5A2S9MUE7c2daPKLJItOLFG8TyjEkbOe3gZPPdWNlpFajaAKs/w1YT5tVLbzkY51iEbz ChSNWiesyvjTHfOS7CrxLQz2G1A+lC4wb2m+h4 X-Gm-Gg: ASbGncv7Nb3GKtOgIWPasV9gT74y7SJ00ihmSPjTiQTXwuJKn8Wz9wq9KfTk0AJMQJV nXcGcwA/tG8xa48uvMY5LKGRO3jRBnUq7KsyHZpm22ze9+8Y+86GcSsgWnXLT/f11JvMQ1Im4vS ZMC/B2YyJnEOjJkOCJaFHbsXoYiGqdQPMD9oqlDNvphONb73K70r5oU9rKG6A5N/eB/4FXbmUvu 8ottdysdcbWzvBUnojiHZA7WBDxGyBo4+tJEfYG4lw9nhd4TQ3Ya1MwhhW1B9Wjdnf53YxC93Yr 1CYq8Ajsq5NbI7I= X-Received: by 2002:a05:600c:1986:b0:43d:585f:ebf5 with SMTP id 5b1f17b1804b1-441c48b03e9mr1597945e9.1.1746259147705; Sat, 03 May 2025 00:59:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGSHTe5beqPnSvMYUqqHVp3t1Tw9eA5PQSdaH6GvWhORq2j3L6nGS1jrfbQKAaNzsditSPxEA== X-Received: by 2002:a05:600c:1986:b0:43d:585f:ebf5 with SMTP id 5b1f17b1804b1-441c48b03e9mr1597755e9.1.1746259147322; Sat, 03 May 2025 00:59:07 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 02/13] vmstate: support varray for vmstate_clock! Date: Sat, 3 May 2025 09:58:47 +0200 Message-ID: <20250503075858.277375-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259246578019000 Content-Type: text/plain; charset="utf-8" Make vmstate_struct and vmstate_clock more similar; they are basically the same thing, except for the clock case having a built-in VMStateDescription. Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/vmstate.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 8c4a5bee3c1..9ae97c389c1 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -507,7 +507,7 @@ macro_rules! vmstate_struct { #[doc(alias =3D "VMSTATE_CLOCK")] #[macro_export] macro_rules! vmstate_clock { - ($struct_name:ty, $field_name:ident) =3D> {{ + ($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() @@ -516,7 +516,7 @@ macro_rules! vmstate_clock { $crate::assert_field_type!( $struct_name, $field_name, - $crate::qom::Owned<$crate::qdev::Clock> + $crate::qom::Owned<$crate::qdev::Clock> $(, num =3D $n= um)? ); $crate::offset_of!($struct_name, $field_name) }, @@ -527,7 +527,14 @@ macro_rules! vmstate_clock { ), 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))?)? }}; } =20 --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259189; cv=none; d=zohomail.com; s=zohoarc; b=AFm0fA/f269qT8haoEgbrzLhwnC+i7hLLk3znGnwS6rQQCUCyPx8ZINwRuyUxQuf+ASgP1caVe9P+SYdcL8jWy8IgB6kLDudXPN/+uOTFCODou1a6vsWfPH5rvUNv4kowv5CiZ4yfnual3KVhg7BkNzUUMmSt2XhaGqgMAujZl0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259189; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=LqeniZgXmPTdrTI+xq1XQTwnSc7B7nOzlTpRU2OjaDw=; b=LBPG2XonYEvHOeHARFGJNG6tPtBrSKZBi6/YUtlzSh1VvENQZi4OX7S522iq4S9gSf7QXIMS20gkuSCimbho8IiYZYWeyZMS7XYHhNNJwkutdnukSJfxlAC/u+KrscyGtMBnw09tqQIgWCXa29VhZSQulmXhAaRz800X1H2jwRk= 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 1746259189304330.7424172035261; Sat, 3 May 2025 00:59:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mJ-00084R-QO; Sat, 03 May 2025 03:59: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 1uB7mH-000845-RH for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:17 -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 1uB7mG-0006dC-0L for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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-47-pm-jBnJ9OA-g-W0Eoi_rew-1; Sat, 03 May 2025 03:59:11 -0400 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-43d01024089so17696365e9.1 for ; Sat, 03 May 2025 00:59:11 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b8a286cfsm66028495e9.29.2025.05.03.00.59.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259153; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LqeniZgXmPTdrTI+xq1XQTwnSc7B7nOzlTpRU2OjaDw=; b=LT/Y4jToNXaZMYzP5ammOewo/TP4ekawOUSUu0IeEgj+hfXPZpRwygWTT/dgxQvT66pzYl FWFJkKsdFcu1hXHZhty4KvyQ8ynVA3qADMutDkGu4uZfLD8mY4p2xpt2sGsmMTzg+HRAgQ WelPXaMd/qGDRpIFvsv62+ZTGKIx0/I= X-MC-Unique: pm-jBnJ9OA-g-W0Eoi_rew-1 X-Mimecast-MFC-AGG-ID: pm-jBnJ9OA-g-W0Eoi_rew_1746259150 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259150; x=1746863950; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LqeniZgXmPTdrTI+xq1XQTwnSc7B7nOzlTpRU2OjaDw=; b=XtFxk0ln3mK6FwFnnK4dv7IKIf5U3Txm398QRFqdG62EU2UUfyqdPrbMXbLGOmTOIO XstnTtvMBc1bqLEdjN15zMFdrO7zSjrSCp9nkttCAs24pL4mGzISadL3i5O/qjCKqn9A 8MkO4QtGzP2jnmV9hjx3ke+ZeQPzndzqYtoefxg91TgKopPY5CZoUnN4LPNbRJm4JNRc Mlar3qf+3CLHsnSE6r3jXfnsI8xoJ1UAkvY/ur73xum3bTsQhyFDZSXRBVDH25tfeH2W th2wLbd23rdG2/lX++HwlDCYR8wUprURL87CnYbrofbG34G0eYupvN9XgN5pyaPCHSab mcfQ== X-Gm-Message-State: AOJu0YwXtu0ys4TCRb2qeKva0fDA2gJ4SgpTupcxWjZYG246sx0228Rw CqgLpeJ+ZTnxMObg+jjzeknjTi+DRyAXbWZzkZWTgNes53Wri241C9HL7J85biwpyez+2KqvbDX e4dMbPzusxmMF1K5jSrYn/ueK14nHfNxO0/fHOIrqPwOYgGKN+ZZFRBIN8xh3V01fRDb8TaVTWd lHrn91D7GNb17lBpMxnkoSfz8Wlq0nkY1aV6cO X-Gm-Gg: ASbGncszjIjFvsGi2PErjV8wwUCGQEBaTsiKEfdKCRGdDcfMALhYYNeoiSmyfg95sNr f9VC/Or2AtDSq4DHUlhg69/PRQ4S/CLzgv5jMPumHUf9ZBMvDb/JaIrfsQKA5G8SwXpHUVttvOA Qm8rvnCnO12Rkj6CZhGPg+/ERPjClVnFiPR2ApT194zFbERRkgUMbgQGmsoF1fMbRKSwz05z7tp 1id8OkGNDjp3aB0isqqToQ/2QqH3Vl8kkJsJAZz1z+9nP7Fsv1t+7uxwd0UU4W2LWbHSUuxv+Oi UNygxYRG2NwJne4= X-Received: by 2002:a05:600c:698e:b0:43d:1b74:e89a with SMTP id 5b1f17b1804b1-441c48bb3f1mr1956715e9.9.1746259149684; Sat, 03 May 2025 00:59:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGEB4g0SB8xuvvrDXehhO/Y9iC/uw0m7XxVPI8hzB8Vk3xOdm9PpL6xyXzverJiPb33P+NT0Q== X-Received: by 2002:a05:600c:698e:b0:43d:1b74:e89a with SMTP id 5b1f17b1804b1-441c48bb3f1mr1956515e9.9.1746259149254; Sat, 03 May 2025 00:59:09 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Subject: [PULL 03/13] rust: assertions: Support index field wrapped in BqlCell Date: Sat, 3 May 2025 09:58:48 +0200 Message-ID: <20250503075858.277375-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259190710019000 Content-Type: text/plain; charset="utf-8" Currently, if the `num` field of a varray is not a numeric type, such as being placed in a wrapper, the array variant of assert_field_type will fail the check. HPET currently wraps num_timers in BqlCell<>. Although BqlCell<> is not necessary from strictly speaking, it makes sense for vmstate to respect BqlCell. The failure of assert_field_type is because it cannot convert BqlCell into usize for use as the index. Use a constant 0 instead for the index, by avoiding $(...)? and extracting the common parts of assert_field_type! into an internal case. Commit message based on a patch by Zhao Liu . Link: https://lore.kernel.org/r/20250414144943.1112885-3-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/assertions.rs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/rust/qemu-api/src/assertions.rs b/rust/qemu-api/src/assertions= .rs index eb12e9499a7..a2d38c877df 100644 --- a/rust/qemu-api/src/assertions.rs +++ b/rust/qemu-api/src/assertions.rs @@ -78,33 +78,26 @@ fn types_must_be_equal(_: T) /// ``` #[macro_export] macro_rules! assert_field_type { - ($t:ty, $i:tt, $ti:ty) =3D> { + (@internal $param_name:ident, $ti:ty, $t:ty, $($field:tt)*) =3D> { const _: () =3D { #[allow(unused)] - fn assert_field_type(v: $t) { - fn types_must_be_equal(_: T) + fn assert_field_type($param_name: &$t) { + fn types_must_be_equal(_: &T) where T: $crate::assertions::EqType, { } - types_must_be_equal::<_, $ti>(v.$i); + types_must_be_equal::<_, $ti>(&$($field)*); } }; }; =20 + ($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> { - const _: () =3D { - #[allow(unused)] - fn assert_field_type(v: $t) { - fn types_must_be_equal(_: T) - where - T: $crate::assertions::EqType, - { - } - let index: usize =3D v.$num.try_into().unwrap(); - types_must_be_equal::<_, &$ti>(&v.$i[index]); - } - }; + $crate::assert_field_type!(@internal v, $ti, $t, v.$i[0]); }; } =20 --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259336; cv=none; d=zohomail.com; s=zohoarc; b=LNBFE5Io3aj+cHWWYZrMIfgRjZM/EXXSuRufHd87sn4PA6jB/pmSOUPntuXJf1YDVo/9bWKw0MPJff2wDxoo1GDTQocGM/hxhw2jhW5BsAI1k4bTDyPvUB4Pe1EAKlXcxCw1Whw2xU/UKxBAW4i82Ux96Uifm0ZEkkxa4p7/Rk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259336; 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=4wvpnyuIrOVtJPGHl3dMJz2mkTuCIwwag/C2R+cWE7g=; b=FWhcs1yKu1KUCjIWOmWt4yDynOu6rpurXODoMXwczoGV7FD2m7X52TVG4MLui/wQ9vZFrYVndDdPpDGe4aYRxHML45Ln6IBGWIgCdre4rMlJlsJHSlB8drD9XVNWVXnczSEuhkYPp5uNqxaIPtJt6aF5nPA/Z5Cx4g94s/ccpmc= 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 1746259336129327.311993910061; Sat, 3 May 2025 01:02:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mK-00084t-Vu; Sat, 03 May 2025 03:59: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 1uB7mI-00084H-VW for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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 1uB7mG-0006dd-Pa for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:18 -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-365-sRH7vSTjNpuMYj_kDdvnMQ-1; Sat, 03 May 2025 03:59:14 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3912a0439afso776427f8f.3 for ; Sat, 03 May 2025 00:59:14 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099b0feb3sm4170570f8f.67.2025.05.03.00.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259155; 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=4wvpnyuIrOVtJPGHl3dMJz2mkTuCIwwag/C2R+cWE7g=; b=UhFdkt/e9otOI1R/x5jag5+8qOscAJpaSoEB9LObZoLQ+y7gYt6lRig6vtDdr/XDvubUOA zp3h78oPuIhRb2/40UCE6f7xtChz7dyfxbO/aZWXegDPQlxiS9A9mK8EgLO97OtJlJfkyQ z4y61H/VUCHn0r24uOKhpbYPyT8/JC8= X-MC-Unique: sRH7vSTjNpuMYj_kDdvnMQ-1 X-Mimecast-MFC-AGG-ID: sRH7vSTjNpuMYj_kDdvnMQ_1746259153 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259152; x=1746863952; 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=4wvpnyuIrOVtJPGHl3dMJz2mkTuCIwwag/C2R+cWE7g=; b=qZnGFiz5rmuyP1EnJ90feSguBH4tQEB/9ssgTH9gqchtTtgdDJuOBipXrE/HYUTs/q FLm9djT1uYstMsz7vMtVMvHSVa8bldH3XQUj5ajo5VuukCOd44rEpq/5qLBTM+l9hbri fXi8vlkO0gjQONvbPy5aZrenvHmNjlIk6VkuxY7x/i9QrDU2ShBjbBwW4E3DCs1t467d DMhxswzCxO+0+CGv375ID0E1O5H1kSINnbDu3ERHm63NO7E2QtwX8xkyHmR0xNaZXnie nLoB4HDFLXpofGvWqn/hYh40G2t7/tDFHRyFxk0oIyOJUJCyyuoQgK6/uH/zJxSgXjG1 v7yA== X-Gm-Message-State: AOJu0YzzjS+3RcTRbIYVKLebtWZzIsaLRqQSYppcVfMEyF5g4I5c2DJT QJQn34UQnAroLvoPU4ZlRkmj1J2bkA8TPId9PCZv1PSgLsFII6qPZYdS3xQcsWZ4a4KLanxUMG8 /CyWxRBV4i6AtnepE1yySKoGfkbNdCgIdHjmi33PdTaBLI4AJ5r3H+J7rCzNBQmsHt2Inyk+asg uMDZVsh3JpIDf0ctJBVSifrcdOKPFj04O7VAZs X-Gm-Gg: ASbGnct4zHPKr9ynSBR/DQvBoI8xZJHeNqm3EoS+yWvbykQ4BfU/o7GYIC9sosdZ7D/ T4yviL0Q5y8j/dxtXuHkcAuJLmWlhCOdcrxIHzoEUAXUgAbvEpFNeHgVHft4aozXMhWX4HfsMYJ E54sE1oQBB1phOEwJnej/u25HOLen92BkM/PaWv5QbarPigbgUpHbQshxS3k/TfXQag8v7d6AFV F4rSgnkkiSC0YWiQTsLbDnEAeIZJrwt1D5cBk7drj4o7w3lQGgRpxdxZBswAALZbtvZvhSKYIW1 M5Bj/6rlYybZmps= X-Received: by 2002:a05:6000:240d:b0:3a0:7017:61f6 with SMTP id ffacd0b85a97d-3a09ceaff3bmr1498637f8f.14.1746259151676; Sat, 03 May 2025 00:59:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFkyVIMSkTtJs9ZAGOHwOifjxovZOiEffUumdtQA5OetJkyp33qes5LTTffGOwp5WyrUg8aag== X-Received: by 2002:a05:6000:240d:b0:3a0:7017:61f6 with SMTP id ffacd0b85a97d-3a09ceaff3bmr1498624f8f.14.1746259151323; Sat, 03 May 2025 00:59:11 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 04/13] rust/vmstate_test: Test varray with num field wrapped in BqlCell Date: Sat, 3 May 2025 09:58:49 +0200 Message-ID: <20250503075858.277375-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259337029019000 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20250414144943.1112885-4-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/qemu-api/tests/vmstate_tests.rs | 41 ++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/rust/qemu-api/tests/vms= tate_tests.rs index 8b93492a689..f7a93117e1a 100644 --- a/rust/qemu-api/tests/vmstate_tests.rs +++ b/rust/qemu-api/tests/vmstate_tests.rs @@ -28,7 +28,7 @@ // - VMSTATE_VARRAY_UINT16_UNSAFE // - VMSTATE_VARRAY_MULTIPLY #[repr(C)] -#[derive(qemu_api_macros::offsets)] +#[derive(Default, qemu_api_macros::offsets)] struct FooA { arr: [u8; FOO_ARRAY_MAX], num: u16, @@ -147,8 +147,9 @@ fn test_vmstate_varray_multiply() { // - VMSTATE_STRUCT_VARRAY_UINT8 // - (no C version) MULTIPLY variant of VMSTATE_STRUCT_VARRAY_UINT32 // - VMSTATE_ARRAY +// - VMSTATE_STRUCT_VARRAY_UINT8 with BqlCell wrapper & test_fn #[repr(C)] -#[derive(qemu_api_macros::offsets)] +#[derive(Default, qemu_api_macros::offsets)] struct FooB { arr_a: [FooA; FOO_ARRAY_MAX], num_a: u8, @@ -158,6 +159,12 @@ struct FooB { val: bool, // FIXME: Use Timer array. Now we can't since it's hard to link savevm= .c to test. arr_i64: [i64; FOO_ARRAY_MAX], + arr_a_wrap: [FooA; FOO_ARRAY_MAX], + num_a_wrap: BqlCell, +} + +fn validate_foob(_state: &FooB, _version_id: u8) -> bool { + true } =20 static VMSTATE_FOOB: VMStateDescription =3D VMStateDescription { @@ -170,13 +177,14 @@ struct FooB { 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 }; =20 #[test] fn test_vmstate_bool_v() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 6) }; + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; =20 // 1st VMStateField ("val") in VMSTATE_FOOB (corresponding to VMSTATE_= BOOL_V) assert_eq!( @@ -196,7 +204,7 @@ 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, 6) }; + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; =20 // 2nd VMStateField ("wrap") in VMSTATE_FOOB (corresponding to VMSTATE= _U64) assert_eq!( @@ -216,7 +224,7 @@ 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, 6) }; + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; =20 // 3rd VMStateField ("arr_a") in VMSTATE_FOOB (corresponding to // VMSTATE_STRUCT_VARRAY_UINT8) @@ -240,7 +248,7 @@ fn test_vmstate_struct_varray_uint8() { =20 #[test] fn test_vmstate_struct_varray_uint32_multiply() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 6) }; + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; =20 // 4th VMStateField ("arr_a_mul") in VMSTATE_FOOB (corresponding to // (no C version) MULTIPLY variant of VMSTATE_STRUCT_VARRAY_UINT32) @@ -266,7 +274,7 @@ fn test_vmstate_struct_varray_uint32_multiply() { =20 #[test] fn test_vmstate_macro_array() { - let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 6) }; + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; =20 // 5th VMStateField ("arr_i64") in VMSTATE_FOOB (corresponding to // VMSTATE_ARRAY) @@ -283,9 +291,26 @@ fn test_vmstate_macro_array() { assert_eq!(foo_fields[4].flags, VMStateFlags::VMS_ARRAY); assert!(foo_fields[4].vmsd.is_null()); assert!(foo_fields[4].field_exists.is_none()); +} + +#[test] +fn test_vmstate_struct_varray_uint8_wrapper() { + let foo_fields: &[VMStateField] =3D unsafe { slice::from_raw_parts(VMS= TATE_FOOB.fields, 7) }; + let mut foo_b: FooB =3D Default::default(); + let foo_b_p =3D std::ptr::addr_of_mut!(foo_b).cast::(); + + // 6th VMStateField ("arr_a_wrap") in VMSTATE_FOOB (corresponding to + // VMSTATE_STRUCT_VARRAY_UINT8). Other fields are checked in + // test_vmstate_struct_varray_uint8. + assert_eq!( + unsafe { CStr::from_ptr(foo_fields[5].name) }.to_bytes_with_nul(), + b"arr_a_wrap\0" + ); + assert_eq!(foo_fields[5].num_offset, 228); + assert!(unsafe { foo_fields[5].field_exists.unwrap()(foo_b_p, 0) }); =20 // The last VMStateField in VMSTATE_FOOB. - assert_eq!(foo_fields[5].flags, VMStateFlags::VMS_END); + assert_eq!(foo_fields[6].flags, VMStateFlags::VMS_END); } =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 Test VMSTATE_FOOC =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 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259284; cv=none; d=zohomail.com; s=zohoarc; b=ADO2CvHCFX6ryy+LFDFVeglC1WMuvNh9xL53ZPYxUizvmYUe3NdDalZMtpGmn3o00vdziObv4NHjl/Hvh/6m6wDu54IhyBahJMoVO9rjN9eF+0gb+CbsTqoMpNgEpmJ0XAtEni8BH+pDzWHjpykg9nkqxxjhQ+vTT+V11FCcC40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259284; 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=+32hGB1MElkGs9fcz72cbTbA4s9aHx0U65cRvzJOLEc=; b=aKhDvhh2aSWro4tvx3LP3Q8VQXpMwUwDjIYid1Z5phXP2j2fsPoptwpiDUDIr5TRzQVDiS8EmXyw90W4M+4TDnc71gPKfFf/RGatqTxqRZHc0DSs//Xb5yFanQfs7wLn+r2WoZKFzShpU0j0GGjuc4y+RH7vcQe5fNtOo9iRvng= 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 17462592846171006.0394691163691; Sat, 3 May 2025 01:01:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mN-00085N-20; Sat, 03 May 2025 03:59: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 1uB7mL-00085A-Ed for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:21 -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 1uB7mJ-0006eK-Jl for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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-668-QQQj4kfePIOpWbqwCzmZKg-1; Sat, 03 May 2025 03:59:17 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-3912539665cso1513752f8f.1 for ; Sat, 03 May 2025 00:59:17 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b8a3156asm67172705e9.38.2025.05.03.00.59.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259158; 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=+32hGB1MElkGs9fcz72cbTbA4s9aHx0U65cRvzJOLEc=; b=RDnbk/j7Vvp7PxR9dDlm7Ru9a6roZcGgkYVQI9cM+mPqmhrhB9ia6CwkiOI+IyC43hhNc1 1avyT+Bi/xmp/VwnzdPUPg/p1kX4nx6rlZ+5kPsnP7T26GRedFcUUuT/4BHrTvpO3NhUCc ZNxljsHN2Z08XqwLko8IB6rkHhUFxvU= X-MC-Unique: QQQj4kfePIOpWbqwCzmZKg-1 X-Mimecast-MFC-AGG-ID: QQQj4kfePIOpWbqwCzmZKg_1746259156 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259155; x=1746863955; 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=+32hGB1MElkGs9fcz72cbTbA4s9aHx0U65cRvzJOLEc=; b=f1yGnQ3W/r4aA+oi8LKqJi0h4VdaTlwEK5m9t9nYb2/ZQzwCVyaCs4u45KIRzZq4Fe 2ceNFnKn7IPo2o9QDVh06h8obI1ejqQ3kfiKjhBjw1VtbqyXukdF8sGGQxlkrR4CMbl3 LN5prdu158nvqWaRMNcLBwq7bamYmkSfj342j2W8w4lwiCm5Bq/YzZUUY+a5oHywqI8d ScOc7CdaN5IQC4+SeTwdWUnctPrcWAmAW2WF//teg9oWVrNhSVxMxCm6odnw9DDIOZbZ 2vKRnfCmlX0DubTE8cAg/luKs8Qm4zLZG/JCDvLW0w+n1L03Sk0ZlgmdjQg35FJlq5OV WjCA== X-Gm-Message-State: AOJu0Yy0LkDVVQFMcjprAswFMRwFMxLF11ngQ0IFsV44HE3WG1T0rZ2r X19Pm4Osz2kpc5Aqg+LFHWbT7yhSNlFXZRRV6IrUk3PylvDbwXVszf7CJ0un5PdY6DMnnv0V0pA zUMX7cYw8LEq4g61VZ5Vgl+M/uotJ4EB6AmprfMMaHnaXonRMLo3bHxz/VhMpGdAe1By1AB57aL Q1VZ7lacKrVVSHMAPgLt5WxyNprGniQIw75OG4 X-Gm-Gg: ASbGnct2Z6oaYxPv6ws5wjmjWBRXQFRosJXjDBoNnXawfc+n9uKIo+Wp3RAYrEUMX32 vpBt6qDZmehz+bpGmN6WZ+ud3//eyoZs1Dvop80EcHWjDRKftTJLoIKWj1vBRsl/fNuYf8yAyiG mKVoBeUlqa4vW91QJzdA2/GoE5gC9ctYQpvo7lyBAMlQ4d0mkCHqPGg5EQkx4xjd7sIxWxA3rtu 6yJwQplk+QkSp4yefpDRIljzUR/SN3lT9vNW1aR1BGUDEShnFPYgMHL7FcLAlHUe7LX1ZX8gJJ7 uId21fwXacA+9Jc= X-Received: by 2002:a05:600c:4f54:b0:439:4b23:9e8e with SMTP id 5b1f17b1804b1-441bb84828bmr43674215e9.3.1746259154829; Sat, 03 May 2025 00:59:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEH+xpnmBW4dPJ6A8g+dZeNSp8cTMUKULqKYhfqHe9uKXNilwh/CWvjKcf8WQT8wQ5kYwC/eA== X-Received: by 2002:a05:600c:4f54:b0:439:4b23:9e8e with SMTP id 5b1f17b1804b1-441bb84828bmr43674115e9.3.1746259154464; Sat, 03 May 2025 00:59:14 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 05/13] rust/timer: Define NANOSECONDS_PER_SECOND binding as u64 Date: Sat, 3 May 2025 09:58:50 +0200 Message-ID: <20250503075858.277375-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259286644019000 Content-Type: text/plain; charset="utf-8" From: Zhao Liu NANOSECONDS_PER_SECOND is often used in operations with get_ns(), which currently returns a u64. Therefore, define a new NANOSECONDS_PER_SECOND binding is with u64 type to eliminate unnecessary type conversions (from u32 to u64). Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20250414144943.1112885-6-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- rust/qemu-api/src/timer.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rust/qemu-api/src/timer.rs b/rust/qemu-api/src/timer.rs index f0b04ef95d7..e769f8bc910 100644 --- a/rust/qemu-api/src/timer.rs +++ b/rust/qemu-api/src/timer.rs @@ -121,3 +121,5 @@ pub fn get_ns(&self) -> u64 { pub const CLOCK_VIRTUAL: ClockType =3D ClockType { id: QEMUClockType::QEMU_CLOCK_VIRTUAL, }; + +pub const NANOSECONDS_PER_SECOND: u64 =3D 1000000000; --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259189; cv=none; d=zohomail.com; s=zohoarc; b=Ie/Gb9hZAkaJ0BVW8hPMTRshvjgmDG7kE+PM+GfsxHFVPrL4FaVnnEbJqqmU+1VlbysMz6XG2AtKbwuXjtb2NhQyGEc/QV17cY8Zf0Xj6eAQHKlcw4txXwbzIhGHAiKmyghoQX3Z+QkOlZ9SOFF/TyH9zwW6Jo5xfPY2haejsD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259189; 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=toxRje+xxVT+nxJgLRSzPIeanmmnkchIayeKIhpjgVE=; b=MMcXl2J4KJ12uOkPAGN7GXsroNQslp+dLRbMv178pak5TZisAEHMaNaO58i1p0/dP/lZGi3ah+dgSVIOlND+tOk+zbkb75mtNtW2hy+bC4qhtFd82NBlV6R8CFRCgJjQ4oi1Dt+cPX/m/AkwCnM/XOAIAeOM3I/Ga4vDM0W3fdI= 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 1746259189284917.3416093206271; Sat, 3 May 2025 00:59:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mU-00086Y-Rk; Sat, 03 May 2025 03:59: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 1uB7mO-00085g-Ng for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:26 -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 1uB7mM-0006en-BK for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:24 -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-620-UwYcyAVCOHW4H3cInofZ5g-1; Sat, 03 May 2025 03:59:20 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43efa869b19so16354015e9.2 for ; Sat, 03 May 2025 00:59:19 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b89cc441sm67909535e9.3.2025.05.03.00.59.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259161; 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=toxRje+xxVT+nxJgLRSzPIeanmmnkchIayeKIhpjgVE=; b=gbG+iVvrjPH2DbZcqIzSv4R96BCmAaE4xMOwsMDczk5KAq0W2nqvIrSGS1R0pOH3rnIHw7 /cADgOYVjZDoEsQWNcF0XT9X6RA7EOniYocHg1kVZvqYmxGyuBbcAMtRM/r1pdJrV5sUAn rEGhPvWK0aNDA2OrPbv7jpTNE4X7kms= X-MC-Unique: UwYcyAVCOHW4H3cInofZ5g-1 X-Mimecast-MFC-AGG-ID: UwYcyAVCOHW4H3cInofZ5g_1746259159 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259158; x=1746863958; 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=toxRje+xxVT+nxJgLRSzPIeanmmnkchIayeKIhpjgVE=; b=Ni+5x6lnq1TFNuJc3nl8oU2izVf0VC10R99ucDZnryEd1vt/dcmLfgqAQu+cOVLsZL SrQNRoVCLzRpkY8RodRiAADXxptlIShUhejdmhFAood53UV2pdelYFyMLlohWkubCjay aZKYiMlFIfBL42doh3uLLOBYfFR9+5cE7wZoUFo4q2mYXGDsIQiEOdZsTtSkww6nG73Z MgjiGTnYlDmsrUg0uxwIoRVH3ZuqZk3Z2DirNdaFleFAi9TN5S3cUy5KVjqNRTvBm1io 0hjC2JbPr4QQiPawckg7cTMex/N9yQy0V9pdvX+KnH7mGSIZEHoLnup8HhBkks+bQS4Q DwTg== X-Gm-Message-State: AOJu0Yw3REZ1owP1oWMNC5Db8AiH5Xn6tfHCLjb//BPzJTxYfUoBfqyI SGIj+sboGK9vFrwzphNef6Q8zGVX/BFAmjdeJEThtftfoKarx3DY211jpw0YOerAq3rsZ+VEyM/ o3Ks/ObDz8dTRjrUnRF6rKvvLtS6RZ6Jfk3ojGDmru2kIuDbjUh80E2F1o8KT/UjAv9lKge5JIt h4IQ9hfqQO8x9pfeEhjDpJyutw+n2L0LU93qlw X-Gm-Gg: ASbGnctjPl0RaoOz0MW/r/RM3O3Q8FtNugptlz2iY82aWPugzAO6xA2lRfqnmzKZZri L7p3xSAt9cj2pa9048LH9vzcgh08iCUSvLWvICtEsCMsYMIiG8fRpkhKdodCxVmLDDc3/xecpUm MxNvTENOXhk6Qs53wFE9iLPHcWluLVeUo9BoXUqIuSECJE82fFVanU+pvW9DisVpa7IAD/4/g1Z rlEgixpXxcvQxW1QU1+Kbo6vdGYd3kD2ipFaCJOuNQRWeIq6/kzg84PLJ60Szux2vxzZj4PPECl WJjs6SJDTYsXKJs= X-Received: by 2002:a05:600c:45d1:b0:43c:f3e4:d6f7 with SMTP id 5b1f17b1804b1-441c4938d58mr1919835e9.31.1746259157812; Sat, 03 May 2025 00:59:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLP8J9soxClfcOJZJGIONXqNi6lgTLOv5Z5EHIbB1ofzavcdoAtrpbUiIS48do9iA6JnwnRg== X-Received: by 2002:a05:600c:45d1:b0:43c:f3e4:d6f7 with SMTP id 5b1f17b1804b1-441c4938d58mr1919615e9.31.1746259157328; Sat, 03 May 2025 00:59:17 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Zhao Liu Subject: [PULL 06/13] rust/hpet: Support migration Date: Sat, 3 May 2025 09:58:51 +0200 Message-ID: <20250503075858.277375-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259190837019000 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Based on commit 1433e38cc8 ("hpet: do not overwrite properties on post_load"), add the basic migration support to Rust HPET. The current migration implementation introduces multiple unsafe callbacks. Before the vmstate builder, one possible cleanup approach is to wrap callbacks in the vmstate binding using a method similar to the vmstate_exist_fn macro. However, this approach would also create a lot of repetitive code (since vmstate has so many callbacks: pre_load, post_load, pre_save, post_save, needed and dev_unplug_pending). Although it would be cleaner, it would somewhat deviate from the path of the vmstate builder. Therefore, firstly focus on completing the functionality of HPET, and those current unsafe callbacks can at least clearly indicate the needed functionality of vmstate. The next step is to consider refactoring vmstate to move towards the vmstate builder direction. Additionally, update rust.rst about Rust HPET can support migration. Signed-off-by: Zhao Liu Link: https://lore.kernel.org/r/20250414144943.1112885-9-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini --- docs/devel/rust.rst | 3 +- rust/hw/timer/hpet/src/hpet.rs | 146 ++++++++++++++++++++++++++++++++- 2 files changed, 146 insertions(+), 3 deletions(-) diff --git a/docs/devel/rust.rst b/docs/devel/rust.rst index 88bdec1eb28..3cc2841d4d1 100644 --- a/docs/devel/rust.rst +++ b/docs/devel/rust.rst @@ -153,8 +153,7 @@ QEMU includes four crates: =20 .. [#issues] The ``pl011`` crate is synchronized with ``hw/char/pl011.c`` as of commit 02b1f7f61928. The ``hpet`` crate is synchronized as of - commit f32352ff9e. Both are lacking tracing functionality; ``hpet`` - is also lacking support for migration. + commit 1433e38cc8. Both are lacking tracing functionality. =20 This section explains how to work with them. =20 diff --git a/rust/hw/timer/hpet/src/hpet.rs b/rust/hw/timer/hpet/src/hpet.rs index cbd2ed4f6bf..12de2ba59a1 100644 --- a/rust/hw/timer/hpet/src/hpet.rs +++ b/rust/hw/timer/hpet/src/hpet.rs @@ -4,6 +4,7 @@ =20 use std::{ ffi::CStr, + os::raw::{c_int, c_void}, pin::Pin, ptr::{addr_of_mut, null_mut, NonNull}, slice::from_ref, @@ -25,7 +26,10 @@ qom::{ObjectImpl, ObjectType, ParentField}, qom_isa, sysbus::{SysBusDevice, SysBusDeviceImpl}, - timer::{Timer, CLOCK_VIRTUAL}, + timer::{Timer, CLOCK_VIRTUAL, NANOSECONDS_PER_SECOND}, + vmstate::VMStateDescription, + vmstate_fields, vmstate_of, vmstate_struct, vmstate_subsections, vmsta= te_validate, + zeroable::Zeroable, }; =20 use crate::fw_cfg::HPETFwConfig; @@ -561,6 +565,7 @@ pub struct HPETState { #[doc(alias =3D "timer")] timers: [BqlRefCell; HPET_MAX_TIMERS as usize], num_timers: BqlCell, + num_timers_save: BqlCell, =20 /// Instance id (HPET timer block ID). hpet_id: BqlCell, @@ -839,6 +844,49 @@ fn write(&self, addr: hwaddr, value: u64, size: u32) { } } } + + fn pre_save(&self) -> i32 { + if self.is_hpet_enabled() { + self.counter.set(self.get_ticks()); + } + + /* + * The number of timers must match on source and destination, but = it was + * also added to the migration stream. Check that it matches the = value + * that was configured. + */ + self.num_timers_save.set(self.num_timers.get()); + 0 + } + + fn post_load(&self, _version_id: u8) -> i32 { + for timer in self.timers.iter().take(self.get_num_timers()) { + let mut t =3D timer.borrow_mut(); + + t.cmp64 =3D t.calculate_cmp64(t.get_state().counter.get(), t.c= mp); + t.last =3D CLOCK_VIRTUAL.get_ns() - NANOSECONDS_PER_SECOND; + } + + // Recalculate the offset between the main counter and guest time + if !self.hpet_offset_saved { + self.hpet_offset + .set(ticks_to_ns(self.counter.get()) - CLOCK_VIRTUAL.get_n= s()); + } + + 0 + } + + fn is_rtc_irq_level_needed(&self) -> bool { + self.rtc_irq_level.get() !=3D 0 + } + + fn is_offset_needed(&self) -> bool { + self.is_hpet_enabled() && self.hpet_offset_saved + } + + fn validate_num_timers(&self, _version_id: u8) -> bool { + self.num_timers.get() =3D=3D self.num_timers_save.get() + } } =20 qom_isa!(HPETState: SysBusDevice, DeviceState, Object); @@ -895,11 +943,107 @@ 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() +} + +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() +} + +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_str!("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_str!("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_str!("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 +}; + +const VALIDATE_TIMERS_NAME: &CStr =3D c_str!("num_timers must match"); + +static VMSTATE_HPET: VMStateDescription =3D VMStateDescription { + name: c_str!("hpet").as_ptr(), + version_id: 2, + minimum_version_id: 1, + 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).with_version_id(2), + vmstate_validate!(HPETState, VALIDATE_TIMERS_NAME, HPETState::vali= date_num_timers), + vmstate_struct!(HPETState, timers[0 .. num_timers], &VMSTATE_HPET_= TIMER, BqlRefCell, HPETState::validate_num_timers).with_version_= id(0), + }, + subsections: vmstate_subsections! { + VMSTATE_HPET_RTC_IRQ_LEVEL, + VMSTATE_HPET_OFFSET, + }, + ..Zeroable::ZERO +}; + impl DeviceImpl for HPETState { fn properties() -> &'static [Property] { &HPET_PROPERTIES } =20 + fn vmsd() -> Option<&'static VMStateDescription> { + Some(&VMSTATE_HPET) + } + const REALIZE: Option =3D Some(Self::realize); } =20 --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259206; cv=none; d=zohomail.com; s=zohoarc; b=UqzFM4o8ccsB92b7zyOIs0urxVXqlMOYO+YHadIpyGN9wtrq6yfo9M4r8JxJpLVkxLj9VACZa5Wz/semqw9We9tFVQgX0RkqZdhxCCJ/DsalRas4oM+GnSdhdvE6SrMu80eqBDzXkrBR9FAEDOBYu/EDuEJIyBBG3Z4tEmt+VGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259206; 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=hWhLgJNS8Ltljm8m4k2fCDLslDrL+mClIW8l8kOMkf4=; b=aaceYeZ/JbLwvHL3NtKvWTD29gmRqs1qwCnPDUlRp1wnjbnBLJwEz62UgRfQpYR8cCQ74dSD8V3xdTEi5p4YIHyCXPGRREEioLxJb7dnUT65l5t0uYapFeV/66YBkGdFrS4BXo1zuhnEuqqQ4g/X3WS1nrG9VbUiavSHGcjNiMw= 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 1746259206724507.69286519073546; Sat, 3 May 2025 01:00:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mU-00086T-K2; Sat, 03 May 2025 03:59: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 1uB7mR-00085v-2s for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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 1uB7mO-0006f8-U9 for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:26 -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-82-H81SP1aaOeaiAo1pYJnYBg-1; Sat, 03 May 2025 03:59:22 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-3a07a7b4298so1327765f8f.0 for ; Sat, 03 May 2025 00:59:22 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae0c25sm4228350f8f.17.2025.05.03.00.59.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259163; 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=hWhLgJNS8Ltljm8m4k2fCDLslDrL+mClIW8l8kOMkf4=; b=TTXxGG+ltVu42qeE0AHTHXzvvkgBRUT3JajxrMrZlVFe57JOCc2g4vrA1N+sbSlssZWoL/ r06YynW6eyWubvPYcvzRymt9GmATwKMuh22Xs4+nNeFK2MjHCV6hob3wq0yn2Yf5QcZ6g+ 0JK9sAe6b7Fr0gOSSpkhmnkk23QUeX4= X-MC-Unique: H81SP1aaOeaiAo1pYJnYBg-1 X-Mimecast-MFC-AGG-ID: H81SP1aaOeaiAo1pYJnYBg_1746259161 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259160; x=1746863960; 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=hWhLgJNS8Ltljm8m4k2fCDLslDrL+mClIW8l8kOMkf4=; b=FcmxKRHqApGAGGl4oj49Sc3Cs5btPIw7UV3QNzMn3gdijQX2YygeJjAcre2NRU2UQB oN1cGy6TPpP5WObt+0eNaVRUUetR5nSFCmyYMnIX9VO7yZt8DCnFwrvsPKUi6l58oLS7 ttsdXadzzHFduYjpNSX2zzGUVdiPjSWtuI8cvH3GulgFMUdmrH9iTPskPS8sjJDZ/4JX zZymtFKeraxNbhWvM7cLM6yIxwYa4aeACmmDqfK9rDRQl9Fg1vBCcYQ7XV/fsqNQ9EMW QZApxpSDFifCybDBiYrGq0sNmY9wiFj/tlBKXmktLaU7WmaBPpDy/YltrZw73uk7IxQy sbhw== X-Gm-Message-State: AOJu0YzqddPPA2ysQ23qrE2G6dWJDnjG7X0sBZDw6/TI9sPbzF8/5mVY 2SS29SEy4+wM46KBrjEXGgyZH7Q63zXJJrz98TiHoxO6KfZDt03M1C8N9ntt8oHY884bxGmZzYp c4vvxCw7WIcG01xzMlaNPCz1Y7aNsVaa0OSJonNAiCwvljwGNm+VlK5AHVtDGirHWl2WlW65SON QQvO+W325/zBw6JpCkAgH8lmqLZTujGwzlzI6g X-Gm-Gg: ASbGncupCwggsXbqbxQgBZ2FzC2q+bR9vPrxRRnn5BrLw8Sfr+S2InfutUNY/85eepS eikQkJW3VDX429m68ypswbkWSveCwNgSLiAf8ZQASObwMTaDdHIHrJHbBX/iqEktLLyiy2loV1W ZkeW4llraPQWFC5l9FZFs8t4AqX7neunfZA80oo2TkKLxc++aDY+qnpYbvbvmfaxQRvHU6yvZHM 1z9rgHuBINRpOYqpnRpMeNYMIyrsDRrJSOesfEa3kNs0GplomYsiLQxIA320fquM5bSNdW7DjCw m+LNOUnTA2HYuyU= X-Received: by 2002:a05:6000:188d:b0:3a0:8c55:26f5 with SMTP id ffacd0b85a97d-3a09ceba247mr1352817f8f.31.1746259159959; Sat, 03 May 2025 00:59:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEAewj6qPT0jZ5BaNdWRAnm5D+jk3NqUkK+OsfI9EAn917SjWxUXmwBrrL3EV5cYpUcHjs4IA== X-Received: by 2002:a05:6000:188d:b0:3a0:8c55:26f5 with SMTP id ffacd0b85a97d-3a09ceba247mr1352798f8f.31.1746259159472; Sat, 03 May 2025 00:59:19 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Magnus Kulke Subject: [PULL 07/13] target/i386/emulate: remove rflags leftovers Date: Sat, 3 May 2025 09:58:52 +0200 Message-ID: <20250503075858.277375-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259207037116600 Content-Type: text/plain; charset="utf-8" From: Magnus Kulke Fixes: c901905ea670 ("target/i386/emulate: remove flags_mask") In c901905ea670 rflags have been removed from `x86_decode`, but there were some leftovers. Signed-off-by: Magnus Kulke Link: https://lore.kernel.org/r/20250429093319.5010-1-magnuskulke@linux.mic= rosoft.com Signed-off-by: Paolo Bonzini --- target/i386/emulate/x86_decode.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index 7fee2196878..7efa2f570ea 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -1408,7 +1408,7 @@ struct decode_tbl _2op_inst[] =3D { }; =20 struct decode_x87_tbl invl_inst_x87 =3D {0x0, 0, 0, 0, 0, false, false, NU= LL, - NULL, decode_invalid, 0}; + NULL, decode_invalid}; =20 struct decode_x87_tbl _x87_inst[] =3D { {0xd8, 0, 3, X86_DECODE_CMD_FADD, 10, false, false, @@ -1456,8 +1456,7 @@ struct decode_x87_tbl _x87_inst[] =3D { decode_x87_modrm_st0, NULL, decode_d9_4}, {0xd9, 4, 0, X86_DECODE_CMD_INVL, 4, false, false, decode_x87_modrm_bytep, NULL, NULL}, - {0xd9, 5, 3, X86_DECODE_CMD_FLDxx, 10, false, false, NULL, NULL, NULL, - RFLAGS_MASK_NONE}, + {0xd9, 5, 3, X86_DECODE_CMD_FLDxx, 10, false, false, NULL, NULL, NULL}, {0xd9, 5, 0, X86_DECODE_CMD_FLDCW, 2, false, false, decode_x87_modrm_bytep, NULL, NULL}, =20 @@ -1478,20 +1477,17 @@ struct decode_x87_tbl _x87_inst[] =3D { decode_x87_modrm_st0, NULL}, {0xda, 3, 3, X86_DECODE_CMD_FCMOV, 10, false, false, decode_x87_modrm_= st0, decode_x87_modrm_st0, NULL}, - {0xda, 4, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL, - RFLAGS_MASK_NONE}, + {0xda, 4, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL}, {0xda, 4, 0, X86_DECODE_CMD_FSUB, 4, false, false, decode_x87_modrm_st= 0, decode_x87_modrm_intp, NULL}, {0xda, 5, 3, X86_DECODE_CMD_FUCOM, 10, false, true, decode_x87_modrm_s= t0, decode_decode_x87_modrm_st0, NULL}, {0xda, 5, 0, X86_DECODE_CMD_FSUB, 4, true, false, decode_x87_modrm_st0, decode_x87_modrm_intp, NULL}, - {0xda, 6, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL, - RFLAGS_MASK_NONE}, + {0xda, 6, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL}, {0xda, 6, 0, X86_DECODE_CMD_FDIV, 4, false, false, decode_x87_modrm_st= 0, decode_x87_modrm_intp, NULL}, - {0xda, 7, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL, - RFLAGS_MASK_NONE}, + {0xda, 7, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL}, {0xda, 7, 0, X86_DECODE_CMD_FDIV, 4, true, false, decode_x87_modrm_st0, decode_x87_modrm_intp, NULL}, =20 @@ -1511,8 +1507,7 @@ struct decode_x87_tbl _x87_inst[] =3D { decode_x87_modrm_intp, NULL, NULL}, {0xdb, 4, 3, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, decode_db_4}, - {0xdb, 4, 0, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL, - RFLAGS_MASK_NONE}, + {0xdb, 4, 0, X86_DECODE_CMD_INVL, 10, false, false, NULL, NULL, NULL}, {0xdb, 5, 3, X86_DECODE_CMD_FUCOMI, 10, false, false, decode_x87_modrm_st0, decode_x87_modrm_st0, NULL}, {0xdb, 5, 0, X86_DECODE_CMD_FLD, 10, false, false, --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259334; cv=none; d=zohomail.com; s=zohoarc; b=aPvj+nikmELctGv+yGjwPRp/dAbrnowqXTM3LuW/kYLcJD1EuNZTsxbhNJnqKHD1/4o5jPGbFzgXMIkZoitv1nEKxGtGWjc9BnduWN/LRj/TotRR7Q3dkIxmVhA2RZSCFlF6yJ9ghKEqY8k3G0Mzh3oK20gHQW9OIF4L6ljvIPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259334; 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=BGFUgCwnObUQrsqI5z/bsk7l8Vga318bTFC9U7szmG0=; b=Ebcp+O2nuoVHK8oqFRLyTVwKeyy6M84Uc9CdADKozLZVQ6r+V+hQqDkLF5ULjAVIUB+xsojbMtvhfduTrCoEhkj3w+ZHG4p5ktm81jQmvgIXDGWKAS196WLbuzKHMmZW9XCUvhtPx8t9dLTbFRvt6ZDxZ6n3BH6FydodjmOAboQ= 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 1746259334297966.2374267142583; Sat, 3 May 2025 01:02:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mb-00088U-9u; Sat, 03 May 2025 03:59: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 1uB7mT-00086E-KZ for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:29 -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 1uB7mQ-0006fl-Uu for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59: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-491-AnNq3tUXODysBM-GUzQVvg-1; Sat, 03 May 2025 03:59:24 -0400 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43ce8f82e66so13604625e9.3 for ; Sat, 03 May 2025 00:59:24 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b89cc67fsm68173425e9.5.2025.05.03.00.59.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259166; 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=BGFUgCwnObUQrsqI5z/bsk7l8Vga318bTFC9U7szmG0=; b=gsZ8GXzdAuPeUhhqTv56US3SVNHCYPI4gIv0CQzzYGuG6tRAo3f8R5lT1RQWCcOxFG9GeZ iPlDkIdfKcHr0B6bur6Nd+vNsP5VjFB4Z8C98hnAjFWPwa7FFApkfTnLWUWxSzLfinoNm4 zKep4rEM3U74/wBWSsXuZanYcaLA/xU= X-MC-Unique: AnNq3tUXODysBM-GUzQVvg-1 X-Mimecast-MFC-AGG-ID: AnNq3tUXODysBM-GUzQVvg_1746259163 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259162; x=1746863962; 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=BGFUgCwnObUQrsqI5z/bsk7l8Vga318bTFC9U7szmG0=; b=J6UftWqJ9xgka75f7aIAGsKrsOaS2iS04H2X0VumnCGHPvUsvmYbX6rYW2FEoH1UhH TMPCDCQ2xCjullJ0sc2X2TlwHLlA1pdRZsSsHAGyXo/7qsvQ6Hfq8pF6u3Ac1J+kmttr HnP1hi/PNJAGlGPv9NrowWMLk9K6KkE2GTWpMRvi1lJ6lpqXrnAOc/YkdWSSCckhw/Wa N+hOKeI0uOUctB81nA1CsIM2alk4+Pcue6ojmeTsCxv2tr6TQdatBwqjONABqh/cYV8V YV8N85sFfy8Tspzg90pygUa+2wtrsbGs6dgqgnxx1Pf2/aVIwsPVBOKMv1h49kTFkgMM 2alg== X-Gm-Message-State: AOJu0YzkPx54kreDqHqUlAj5uQN3pbLcYz9LbboSelSQatMFQ7NUyDdC POFsih1abJIxLCKZ4yEZK2XOy0CjAcr8UHXYeCZKfn73j4jfURfQbJQbOo+5jUEZlA7VzzlF4ky MAH7QlPBSY9cf4CJS6v5mLeD+jxhhNOIA2A5mmZ+QbI8kIoG90HoyWGBP3u85p72wGA/8319lrD KIjTVoxUEeAFV+PqGZfPsjXALHQ8T89clJMyk3 X-Gm-Gg: ASbGncueqiOEb6J1J7+53XxMeS/O9hv0Uj58RHrC4TjiCyQkdQCVc99J0f7wOsOsrUQ 4nzMMve3QlLFF9fG9eTlCwwWxbNLzXHMvM8M5OOSYLJShtQHhQZcGm2iq/RzzJrd+4K0cGNrtNj SXlUvrGVaZ0f8g2G5sjYxMDSrJggaPmF/ojJbBqxmCsq7HAfu2hpHrwlBmqOUng6vjnNhU5ofte JZ2eAiwE+FknIOefq62WWl1AGzwzFpvuku9WIpf6GP1LwsJnnCX4t1b/BWj+iGcGVq2GqBIrNcL Ktn4z/yQB68vYiU= X-Received: by 2002:a05:600c:1d9e:b0:43c:eec7:eabb with SMTP id 5b1f17b1804b1-441c48bc8f0mr1882495e9.8.1746259162697; Sat, 03 May 2025 00:59:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFwfvoGrDDxN0DgZiHxq8l6Alli1lseb0D7OcNZdPslH725XvhomroVnSfd4jFgSFyawe5vlQ== X-Received: by 2002:a05:600c:1d9e:b0:43c:eec7:eabb with SMTP id 5b1f17b1804b1-441c48bc8f0mr1882315e9.8.1746259162290; Sat, 03 May 2025 00:59:22 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Wei Liu Subject: [PULL 08/13] target/i386/hvf: fix a compilation error Date: Sat, 3 May 2025 09:58:53 +0200 Message-ID: <20250503075858.277375-9-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259336149116600 Content-Type: text/plain; charset="utf-8" From: Wei Liu Include exec/target_page.h to fix the following build error. x86_64-softmmu.a.p/target_i386_hvf_hvf.c.o -c ../target/i386/hvf/hvf.c ../target/i386/hvf/hvf.c:139:49: error: use of undeclared identifier 'TARGE= T_PAGE_SIZE' 139 | uint64_t dirty_page_start =3D gpa & ~(TARGET_PAGE_SIZE = - 1u); | ^ ../target/i386/hvf/hvf.c:141:45: error: use of undeclared identifier 'TARGE= T_PAGE_SIZE' 141 | hv_vm_protect(dirty_page_start, TARGET_PAGE_SIZE, | ^ Signed-off-by: Wei Liu Link: https://lore.kernel.org/r/aBBws1ikCDfyC0RI@liuwe-devbox-ubuntu-v2.tai= l21d00.ts.net Signed-off-by: Paolo Bonzini --- target/i386/hvf/hvf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 23ebf2550ac..99e37a33e50 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -76,6 +76,7 @@ #include "qemu/main-loop.h" #include "qemu/accel.h" #include "target/i386/cpu.h" +#include "exec/target_page.h" =20 static Error *invtsc_mig_blocker; =20 --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259291; cv=none; d=zohomail.com; s=zohoarc; b=PZgVvCUpUKXwT7UxDNOmxZqHvpjwXCWyDDKE79szae1FddZaAs/bJafzzN3rATiuvo1247CkFQ7/V2REbutWP8/8sg/oNPGRbMETbSH/+cSDJq0dVDR4U85cwHPW4QlUlJiws/aU6E2p8QNKR1nvc+f3rUVWSMCbjlJwW5usK2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259291; 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=nQ62A3MCY62mWXW1oMyGxVt/pkkUQ6ezdwuuGxH7Rf0=; b=d0RqJB+bKPt2MqvJiTChY46WT0p8Oh8ufZsbhyCA+GV2s4S7rTvVuOYxO1JP8cSUyR88KwygfdHxhTGaUJjX5Z25fDR26f6qX4ZFT6AuReGmNDMrYbCRf16cS+EbfRMNUUtfWiGn73FY+S1/FhfAIWyRxNlPn9ioCjdfDArDwmU= 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 174625929183688.48100048420565; Sat, 3 May 2025 01:01:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mb-00088o-FW; Sat, 03 May 2025 03:59: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 1uB7mW-00086n-2Y for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:32 -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 1uB7mU-0006gN-1X for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:31 -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-166-aWv9OPSxPsKE6IdWLerNrw-1; Sat, 03 May 2025 03:59:27 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43f405810b4so13461425e9.1 for ; Sat, 03 May 2025 00:59:27 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b8a31695sm67646245e9.40.2025.05.03.00.59.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259168; 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=nQ62A3MCY62mWXW1oMyGxVt/pkkUQ6ezdwuuGxH7Rf0=; b=Ov5fwjMva2dZ3WXGuh53eWKusamtp5MhZNwX8e7XFmkMSp6Pb8Oa0UGKiEVVA3o5jfmjVG zubcMHR98yHEEl7RD0kP1G3L8Bct5Ap4/bQVPTez7Yfd7RoBMbXMILrlXU0lOpcLPun7TD +NhbTBBkCaW3HcmEHZTIhVMdAsF64hU= X-MC-Unique: aWv9OPSxPsKE6IdWLerNrw-1 X-Mimecast-MFC-AGG-ID: aWv9OPSxPsKE6IdWLerNrw_1746259166 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259165; x=1746863965; 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=nQ62A3MCY62mWXW1oMyGxVt/pkkUQ6ezdwuuGxH7Rf0=; b=T+ciHMHULpVcswmWasl/fYeyxH490f75btGMWmjK4wDUK//CTkSqFG8X2tkDVmVCHV SbYAMsMYhlf+FqG9cutUanW18ldyXG8dKiH9Hc8lQrw5xjW71gzXcWY8jryKUB/zVaS/ zlxluRE19/+kKUfvcgJEtB3H0S4hbe/y+WbSDI/iz1amWoTRIRTcs1e/mP/Anebhf2ua K0aFVKl/67ZOPj9svgdTllug6Qr9lhV/jU0Gg3qMrG5/yJDfAkd5TeqyKa1dhW+PLBek u5H/ldpNaD3lpoM1A619MZuSqa1MKvLvQ5zrs0nfrn5vd9cayJYP6sfBPW4+F5wvJ5WP o1yQ== X-Gm-Message-State: AOJu0Yz5C1ViG1gtwWDWHEzjuRS362npdi00AgYM0gFWE6TGhz2Ukwoe ZAcrgiDEDT3BbN/uU9VeGg5q1vUD/ZEkc4rtznPD9b/GY7zPjflel5ykvhJPQuzA/6sdaNAY1B0 bzDuhsilyZDQ4FqiPeRH5qE0rWdu9azOOmnCJPCcO5GC5ASDvRWIyducF4HFHHd2KpaKx6Lmn1Q 2g4H0K9xSFc1qcC5kzEbQgKNPmvlGDNCsyqNfS X-Gm-Gg: ASbGncuxHD9anNQQGw82jqF+oUQhZrBflMfyXXYXrMDiLq+/KuJZ7O5d12eqUsCp33s bh+titeLe51bh+s1cCUmcmBxFgMgh9EVS3KzdVkd1CsGlzRoj8Dri5XT37hpCOIaDp07KiFxohQ FKLALiF6PAe9Kdh/tc7yUrKwR7YnFWijw3tu9NPFwarTIDB628k6GRiPw2qamE1HmgA2UxC8/Tr DPlFU2Hn6fYonnLemDIyzRBRh+qOf7Yj80AwYEsc/kzcgfW4sy3yadz2ANpo7Q/LzS5xbnurCPs 6jsUe5X8gxl3DUg= X-Received: by 2002:a05:600c:34c3:b0:43d:a90:9f1 with SMTP id 5b1f17b1804b1-441c48b0404mr1998175e9.6.1746259165603; Sat, 03 May 2025 00:59:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGIHvKHSSB81eDIixqHq/Zvp0mz1bwWI8osNGzApgcVe3ruCOlSZi/uTpxfNRzCQMgxPInfFw== X-Received: by 2002:a05:600c:34c3:b0:43d:a90:9f1 with SMTP id 5b1f17b1804b1-441c48b0404mr1998005e9.6.1746259165170; Sat, 03 May 2025 00:59:25 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org Subject: [PULL 09/13] target/i386: do not trigger IRQ shadow for LSS Date: Sat, 3 May 2025 09:58:54 +0200 Message-ID: <20250503075858.277375-10-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1746259292698019000 Content-Type: text/plain; charset="utf-8" Because LSS need not trigger an IRQ shadow, gen_movl_seg can't just use the destination register to decide whether to inhibit IRQs. Add an argument. Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 27 ++++++++++++++++----------- target/i386/tcg/emit.c.inc | 4 ++-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 8a641951cd1..a4e935b043b 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2026,27 +2026,32 @@ static void gen_op_movl_seg_real(DisasContext *s, X= 86Seg seg_reg, TCGv seg) =20 /* move SRC to seg_reg and compute if the CPU state may change. Never call this function with seg_reg =3D=3D R_CS */ -static void gen_movl_seg(DisasContext *s, X86Seg seg_reg, TCGv src) +static void gen_movl_seg(DisasContext *s, X86Seg seg_reg, TCGv src, bool i= nhibit_irq) { if (PE(s) && !VM86(s)) { TCGv_i32 sel =3D tcg_temp_new_i32(); =20 tcg_gen_trunc_tl_i32(sel, src); gen_helper_load_seg(tcg_env, tcg_constant_i32(seg_reg), sel); - /* abort translation because the addseg value may change or - because ss32 may change. For R_SS, translation must always - stop as a special handling must be done to disable hardware - interrupts for the next instruction */ - if (seg_reg =3D=3D R_SS) { - s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; - } else if (CODE32(s) && seg_reg < R_FS) { + + /* For move to DS/ES/SS, the addseg or ss32 flags may change. */ + if (CODE32(s) && seg_reg < R_FS) { s->base.is_jmp =3D DISAS_EOB_NEXT; } } else { gen_op_movl_seg_real(s, seg_reg, src); - if (seg_reg =3D=3D R_SS) { - s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; - } + } + + /* + * For MOV or POP to SS (but not LSS) translation must always + * stop as a special handling must be done to disable hardware + * interrupts for the next instruction. + * + * DISAS_EOB_INHIBIT_IRQ is a superset of DISAS_EOB_NEXT which + * might have been set above. + */ + if (inhibit_irq) { + s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; } } =20 diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index e3166e70a5b..1a7fab9333a 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -342,7 +342,7 @@ static void gen_writeback(DisasContext *s, X86DecodedIn= sn *decode, int opn, TCGv break; case X86_OP_SEG: /* Note that gen_movl_seg takes care of interrupt shadow and TF. = */ - gen_movl_seg(s, op->n, s->T0); + gen_movl_seg(s, op->n, v, op->n =3D=3D R_SS); break; case X86_OP_INT: if (op->has_ea) { @@ -2382,7 +2382,7 @@ static void gen_lxx_seg(DisasContext *s, X86DecodedIn= sn *decode, int seg) gen_op_ld_v(s, MO_16, s->T1, s->A0); =20 /* load the segment here to handle exceptions properly */ - gen_movl_seg(s, seg, s->T1); + gen_movl_seg(s, seg, s->T1, false); } =20 static void gen_LDS(DisasContext *s, X86DecodedInsn *decode) --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259262; cv=none; d=zohomail.com; s=zohoarc; b=dTJ8Gi8CZ1o+8SASmPoCzQaMHkQ6BA8492da3Q5XOp1oJ9tfPH72Xi1GdzSGZKY9RrWXFTcezVSFRtB09YD1GWQmi9dEGCMINh/DahQxtV6RgZmDue/nxGtL/1WMAHJU+38fhUhiYFDeIynvkw+r9V6NdvU/s8bGsR1jce+zAKA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259262; 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=mq+ksrrzmRU5e3CQiDfdSG+3l9vDGDH9VPK5MruBMrk=; b=ZXKzUkp/ZXPtgfO1U1XwAyd6vTBygo2VGRhu5Znj5K3Ui2Mqn960EBuuKMOtA7fJGNMtAFNtdBmH34iz1ETjqOKhGXywC261nrXa6pUqj8t3ZyIdH8TH6418E/B1V6E+w/hdwxsd4Mwx52db23QbWKza4b0Og2NmT+KB6EGxdOs= 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 1746259262062432.1645102824183; Sat, 3 May 2025 01:01:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mh-0008AY-0M; Sat, 03 May 2025 03:59: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 1uB7mf-0008A0-Lu for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:41 -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 1uB7md-0006hi-8c for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:41 -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-593-rblvyGGXO1Gr1Zl7Qf7Cvw-1; Sat, 03 May 2025 03:59:34 -0400 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-391492acb59so1355023f8f.3 for ; Sat, 03 May 2025 00:59:34 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099b1702dsm4087901f8f.88.2025.05.03.00.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259176; 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=mq+ksrrzmRU5e3CQiDfdSG+3l9vDGDH9VPK5MruBMrk=; b=GlvJ+nBQYwA3OW0JDHRnm8CQfO9ER4iDmnU5iDHYMYhIMXnyy4UtcKe0CXKXMa2HdpA9Uw jTe+BZw8n42JcZJq4U0yH6pect1MOC0fGLpMnJWcRDqGXc1BovLFaDl+JQ0zfEiquwxeeL LkwrF0+WdkhDsL1ChiGeBGIqlZsJ4CM= X-MC-Unique: rblvyGGXO1Gr1Zl7Qf7Cvw-1 X-Mimecast-MFC-AGG-ID: rblvyGGXO1Gr1Zl7Qf7Cvw_1746259169 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259167; x=1746863967; 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=mq+ksrrzmRU5e3CQiDfdSG+3l9vDGDH9VPK5MruBMrk=; b=UzIybRWAZN79FqtjmbswN3pUiy/EVmDKY0iBmaVAp3K9iQrMjJ7DNI94CePMnm7i+c uAQ9Y7WRzw8NMjxz0QpvNE8BoWt8FOHzQR9o4IB2C4/m7H8GcJwzy5cy+x2pC2XiIHMY zxqNZyL/yZlnyShfN331Q3qoRi3ZyKo4Nl455tFMJb3IAotX3vtRtTrNfA0/mMWbaXBH k+A0gC0ob/3VBdswbrCDsai3XEa3NnLcMjTksB0m9in7Utul1FoyDQ4EunMmHUBuDv3F eTm9DaysvMA4Nnx9y8nZqAITUYWvNTjHcumThKW82W+NO875Y15/rdlO40HbJ+Qv5uic 3zUQ== X-Gm-Message-State: AOJu0YyQZ38WPOr0S2+hy8elAbxIDru3F46lDBpAoeXiXUMX1gR4nP0R zcE34bq+RDlB7QvrKJyCRd7JYOi/oEA03rDlkTSJV/UhjaZWPeOBhlwJ3unipFzo9nA2+knf/d6 bR57aNpPJsRYpjO+PM0i0+ts3v608XuPrsp6uDIdPcE8kusFtE/NR6Cuhcp12zJye0k9pJi9IXK GZ7+ouayL/PmdDvp4puN1wsf+mjt3JfPvGyCst X-Gm-Gg: ASbGncu48gsaD/xJnmMKh/+5Q9z+fQCPurNrUQIMUB1U0Hekp8N3kAgycEyVtNCW5YE ZcGYQpnUjwbuAwyxfI2aSFSe0+VZabeYfCDhIvxoMEauL/E1RnWPzP6zrjFSYzChaxdcgFXSPNc +pTIbutYK8stJ72tP03bWdRLh9zjPi8BnedQOWjx6LqxBhYgTAXRFemQyaOojiMogxRxJWerJxm rBJyQFF4CADEhOuUzj7JGQc7/bfZid2NnK1PGEM6yx0GG96FAMi0iVKFJdTlJ4VByxKRDg6GlRS uj9++AneLnM438I= X-Received: by 2002:a05:6000:290a:b0:391:ba6:c069 with SMTP id ffacd0b85a97d-3a09fde480fmr260791f8f.44.1746259167376; Sat, 03 May 2025 00:59:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF1sFtvKCqzZS9aZeWAkok5WILy7L+lUxmba8LWiHlQdnF9xgnQyAaSrA1XjEYqEdVkL1KUhQ== X-Received: by 2002:a05:6000:290a:b0:391:ba6:c069 with SMTP id ffacd0b85a97d-3a09fde480fmr260778f8f.44.1746259166966; Sat, 03 May 2025 00:59:26 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org Subject: [PULL 10/13] target/i386: do not block singlestep for STI Date: Sat, 3 May 2025 09:58:55 +0200 Message-ID: <20250503075858.277375-11-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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: 1746259262618019000 Content-Type: text/plain; charset="utf-8" STI will trigger a singlestep exception even if it has inhibit-IRQ behavior. Do not suppress single-step for all IRQ-inhibiting instructions, instead special case MOV SS and POP SS. Cc: qemu-stable@nongnu.org Fixes: f0f0136abba ("target/i386: no single-step exception after MOV or POP= SS", 2024-05-25) Signed-off-by: Paolo Bonzini --- target/i386/tcg/translate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index a4e935b043b..ed43c95c1d9 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2047,11 +2047,15 @@ static void gen_movl_seg(DisasContext *s, X86Seg se= g_reg, TCGv src, bool inhibit * stop as a special handling must be done to disable hardware * interrupts for the next instruction. * + * This is the last instruction, so it's okay to overwrite + * HF_TF_MASK; the next TB will start with the flag set. + * * DISAS_EOB_INHIBIT_IRQ is a superset of DISAS_EOB_NEXT which * might have been set above. */ if (inhibit_irq) { s->base.is_jmp =3D DISAS_EOB_INHIBIT_IRQ; + s->flags &=3D ~HF_TF_MASK; } } =20 @@ -2302,7 +2306,7 @@ gen_eob(DisasContext *s, int mode) if (mode =3D=3D DISAS_EOB_RECHECK_TF) { gen_helper_rechecking_single_step(tcg_env); tcg_gen_exit_tb(NULL, 0); - } else if ((s->flags & HF_TF_MASK) && mode !=3D DISAS_EOB_INHIBIT_IRQ)= { + } else if (s->flags & HF_TF_MASK) { gen_helper_single_step(tcg_env); } else if (mode =3D=3D DISAS_JUMP && /* give irqs a chance to happen */ --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259339; cv=none; d=zohomail.com; s=zohoarc; b=Gglq/PVjSkN0r14xwp4ssQKgKgym++I2WWJ0hkMK+fXH244L5RDjkfI+ZXoRFEwQxdKlsi7DlQxKHFXIU8ysuL6+3Pr7MDqedKPm2FnpIHKAhsXYcsFmn85oRFAuE2/SWpPBGRko3F9h4QMLUjx0P5LUP/vesP6SLIOhE9X5Q+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259339; 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=7VuFrzB+x2Fw/uMdbdxESZXpgU/xX6NGKzdHSeZxnBg=; b=LLirHmYohPHEAH/3sON+8GFQdv1Qdu6nHF7Siogk9dwYriUR3IJyDfyR1tzpCYZ5Atd4r/4IxpOib/cdaUgt5HxdPy80/hJOVPdeUrjQ3D4DAOcjLBTTOqJHkgwEWiQUfeQEbe2WZxPHjj+a97N0ebq834/sd9R5aknp6wZzVVw= 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 1746259339783676.9377087267407; Sat, 3 May 2025 01:02:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7md-00089N-Le; Sat, 03 May 2025 03:59: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 1uB7mc-00089B-56 for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:38 -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 1uB7mY-0006hM-SN for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:36 -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-302-LBBFJ-1lOLyb_Ho-TuP-jw-1; Sat, 03 May 2025 03:59:32 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-43ceb011ea5so14463145e9.2 for ; Sat, 03 May 2025 00:59:32 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae0cd6sm4146454f8f.5.2025.05.03.00.59.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259173; 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=7VuFrzB+x2Fw/uMdbdxESZXpgU/xX6NGKzdHSeZxnBg=; b=MyO6sYgXBrZ/PfDFEDJIMZ3iLuTBqV7IdHHSiQvPH00pT0FExXA+j4X6qfCV2s9iP6ZKhk 50v2H+ADJMfnPbY+tYIymEfNVG4hYp4IkT6LIRPPcaZ32AohuRaIdr3d4kv02mlwcI/8jP Ym0r7GmPFIq8FECAw4Hh4gWnMGctMHY= X-MC-Unique: LBBFJ-1lOLyb_Ho-TuP-jw-1 X-Mimecast-MFC-AGG-ID: LBBFJ-1lOLyb_Ho-TuP-jw_1746259171 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259170; x=1746863970; 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=7VuFrzB+x2Fw/uMdbdxESZXpgU/xX6NGKzdHSeZxnBg=; b=W5+EqNy978f8qClsw/jUaULdAVoisTR0UXglmLtAFOGXnzxn0nbrRnmlFeADNkZHFY /M6YOrX8uEwuhKVchM+BkcrKQ9XpIvOnZAZYeChRAnlObGkCBFAR7YToD+cXUxGHRDD2 I7EycPR9zG+kLWA669rxf93y+KIkzqr2PEwKXmp5Nsu3fdmZCn7H5GRvgxU5hBmi6hDV OJmDaljo0Q8jkbQcFUckjDm+haOHLdCJQuu2aFZBpMBEamIBA4OL7/s5EgKQNJzgVojS jsLPfhay/zt4h2KZyqsVLPi5oWoZcCPvZuVzeEIn3Bhl77PZG8qPWd+kaJp+g2yPI774 pIWA== X-Gm-Message-State: AOJu0YzZuh5hH6n+QUbqRn3GdyEknirNR9dD2W+ePEADgHnZJdB/LrdS /drdi2zSwyiEamcLioWXbh1ULL65QeijKd/eQ1YnDtzEcYllz8OEb36USR56Mx3LoWxoyjF2D4I iaA6VLEG+2rsryXdpNSPiBuIcSw3TKumESXAEP7ENJ3B+3Deydiscoi2P/xeSyFdqNt1ujrZif0 xHhA1im5xRlvd5HmOnX6IJ2Bu2+xG3DZVT1mFt X-Gm-Gg: ASbGncupSAYLha5RPgKLlWiTeCdRGio/EXc78Jta8Kmd/VZYjfHr0uG29AAPFe2p5gH 1Crl/zr9afr0K0EkWRnp6mzGo+Yh6MkReA+U5CpEHVQzkaIgwdjZPAsswzrAELjYjTXQDG5PJpf B2+qOGRhVpMXFkb9Y4NqofHLKS2fJiCDAanZ24thCI8PVqZHMQRwu2TMRAme2VwXhadr7Na27OC A4Acck5yPUOo/xRHGXAe5OhI8Ub1//LynHC3XFJD6Oqsx7abynnzV6Gh1rYnmRuCDt6IPRH0r3O WxenCTDB4ib4O0E= X-Received: by 2002:a5d:5985:0:b0:3a0:8298:143d with SMTP id ffacd0b85a97d-3a09fd77692mr233942f8f.13.1746259170549; Sat, 03 May 2025 00:59:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEjrp3cr7uAxwn22S4hObkqrzoxkVGxKqBFnaykHWlAtmZjwwwp30M/xCQ1gp3ZWlbWuGiGJA== X-Received: by 2002:a5d:5985:0:b0:3a0:8298:143d with SMTP id ffacd0b85a97d-3a09fd77692mr233930f8f.13.1746259170162; Sat, 03 May 2025 00:59:30 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: BALATON Zoltan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Helge Deller Subject: [PULL 11/13] hw/char/serial: Remove unused prog_if compat property Date: Sat, 3 May 2025 09:58:56 +0200 Message-ID: <20250503075858.277375-12-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259342283116600 From: BALATON Zoltan This property was added to preserve previous value when this was fixed in version 2.1 but the last machine using it was already removed when adding diva-gsp leaving this property unused and unnecessary. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Helge Deller Link: https://lore.kernel.org/r/20250502095524.DE1F355D264@zero.eik.bme.hu Signed-off-by: Paolo Bonzini --- hw/char/diva-gsp.c | 6 ++---- hw/char/serial-pci-multi.c | 7 ++----- hw/char/serial-pci.c | 10 ++-------- 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/hw/char/diva-gsp.c b/hw/char/diva-gsp.c index 60f933191d2..e1f0713cb79 100644 --- a/hw/char/diva-gsp.c +++ b/hw/char/diva-gsp.c @@ -51,7 +51,6 @@ typedef struct PCIDivaSerialState { SerialState state[PCI_SERIAL_MAX_PORTS]; uint32_t level[PCI_SERIAL_MAX_PORTS]; qemu_irq *irqs; - uint8_t prog_if; bool disable; } PCIDivaSerialState; =20 @@ -124,8 +123,8 @@ static void diva_pci_realize(PCIDevice *dev, Error **er= rp) size_t i, offset =3D 0; size_t portmask =3D di.omask; =20 - pci->dev.config[PCI_CLASS_PROG] =3D pci->prog_if; - pci->dev.config[PCI_INTERRUPT_PIN] =3D 0x01; + pci->dev.config[PCI_CLASS_PROG] =3D 2; /* 16550 compatible */ + pci->dev.config[PCI_INTERRUPT_PIN] =3D 1; memory_region_init(&pci->membar, OBJECT(pci), "serial_ports", 4096); pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &pci->me= mbar); pci->irqs =3D qemu_allocate_irqs(multi_serial_irq_mux, pci, di.nports); @@ -178,7 +177,6 @@ static const Property diva_serial_properties[] =3D { DEFINE_PROP_CHR("chardev2", PCIDivaSerialState, state[1].chr), DEFINE_PROP_CHR("chardev3", PCIDivaSerialState, state[2].chr), DEFINE_PROP_CHR("chardev4", PCIDivaSerialState, state[3].chr), - DEFINE_PROP_UINT8("prog_if", PCIDivaSerialState, prog_if, 0x02), DEFINE_PROP_UINT32("subvendor", PCIDivaSerialState, subvendor, PCI_DEVICE_ID_HP_DIVA_TOSCA1), }; diff --git a/hw/char/serial-pci-multi.c b/hw/char/serial-pci-multi.c index fb184c2e6dc..13df272691a 100644 --- a/hw/char/serial-pci-multi.c +++ b/hw/char/serial-pci-multi.c @@ -46,7 +46,6 @@ typedef struct PCIMultiSerialState { SerialState state[PCI_SERIAL_MAX_PORTS]; uint32_t level[PCI_SERIAL_MAX_PORTS]; IRQState irqs[PCI_SERIAL_MAX_PORTS]; - uint8_t prog_if; } PCIMultiSerialState; =20 static void multi_serial_pci_exit(PCIDevice *dev) @@ -97,8 +96,8 @@ static void multi_serial_pci_realize(PCIDevice *dev, Erro= r **errp) SerialState *s; size_t i, nports =3D multi_serial_get_port_count(pc); =20 - pci->dev.config[PCI_CLASS_PROG] =3D pci->prog_if; - pci->dev.config[PCI_INTERRUPT_PIN] =3D 0x01; + pci->dev.config[PCI_CLASS_PROG] =3D 2; /* 16550 compatible */ + pci->dev.config[PCI_INTERRUPT_PIN] =3D 1; memory_region_init(&pci->iobar, OBJECT(pci), "multiserial", 8 * nports= ); pci_register_bar(&pci->dev, 0, PCI_BASE_ADDRESS_SPACE_IO, &pci->iobar); =20 @@ -133,7 +132,6 @@ static const VMStateDescription vmstate_pci_multi_seria= l =3D { static const Property multi_2x_serial_pci_properties[] =3D { DEFINE_PROP_CHR("chardev1", PCIMultiSerialState, state[0].chr), DEFINE_PROP_CHR("chardev2", PCIMultiSerialState, state[1].chr), - DEFINE_PROP_UINT8("prog_if", PCIMultiSerialState, prog_if, 0x02), }; =20 static const Property multi_4x_serial_pci_properties[] =3D { @@ -141,7 +139,6 @@ static const Property multi_4x_serial_pci_properties[] = =3D { DEFINE_PROP_CHR("chardev2", PCIMultiSerialState, state[1].chr), DEFINE_PROP_CHR("chardev3", PCIMultiSerialState, state[2].chr), DEFINE_PROP_CHR("chardev4", PCIMultiSerialState, state[3].chr), - DEFINE_PROP_UINT8("prog_if", PCIMultiSerialState, prog_if, 0x02), }; =20 static void multi_2x_serial_pci_class_initfn(ObjectClass *klass, diff --git a/hw/char/serial-pci.c b/hw/char/serial-pci.c index 8707e819144..46efabc4cbe 100644 --- a/hw/char/serial-pci.c +++ b/hw/char/serial-pci.c @@ -38,7 +38,6 @@ struct PCISerialState { PCIDevice dev; SerialState state; - uint8_t prog_if; }; =20 #define TYPE_PCI_SERIAL "pci-serial" @@ -53,8 +52,8 @@ static void serial_pci_realize(PCIDevice *dev, Error **er= rp) return; } =20 - pci->dev.config[PCI_CLASS_PROG] =3D pci->prog_if; - pci->dev.config[PCI_INTERRUPT_PIN] =3D 0x01; + pci->dev.config[PCI_CLASS_PROG] =3D 2; /* 16550 compatible */ + pci->dev.config[PCI_INTERRUPT_PIN] =3D 1; s->irq =3D pci_allocate_irq(&pci->dev); =20 memory_region_init_io(&s->io, OBJECT(pci), &serial_io_ops, s, "serial"= , 8); @@ -81,10 +80,6 @@ static const VMStateDescription vmstate_pci_serial =3D { } }; =20 -static const Property serial_pci_properties[] =3D { - DEFINE_PROP_UINT8("prog_if", PCISerialState, prog_if, 0x02), -}; - static void serial_pci_class_initfn(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -96,7 +91,6 @@ static void serial_pci_class_initfn(ObjectClass *klass, c= onst void *data) pc->revision =3D 1; pc->class_id =3D PCI_CLASS_COMMUNICATION_SERIAL; dc->vmsd =3D &vmstate_pci_serial; - device_class_set_props(dc, serial_pci_properties); set_bit(DEVICE_CATEGORY_INPUT, dc->categories); } =20 --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259300; cv=none; d=zohomail.com; s=zohoarc; b=YKZNNWhZYksopOg9ldyiD9+Kh6po6qzxmwt08lGuXhetqXLXTkEuxhufnrnq1qXO2oDg50l3y630Ft9wm/eXy/Qcijr9ISuNcoRXKujB9sUedMI3Lt9kMUylCNhxGZapkH2Br2/CQKiiywQ3GjYwaOhBN2QMJ2vf7cSn09lWi4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259300; 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=rZlNu/zAQqkffDlM4a5lM4vT7ViwyhlINcDJMaSxm6M=; b=D+IrfHEKtbR6oFVhffv5TN5l16PN3+arnW5o8xN7SFIXsh4Fdh8svaIQxKxu9S/AzxY6uzwpygGTl1R+MxATaqi6ep4sRuGjuAuIHCzbka5TdfvsgdIrWCm+ACuJ96G9CK+mWQlRqWeDTQ2B82MQsk2rjXNDdY7ZTRQRrv+rTR4= 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 1746259300579844.5649306640045; Sat, 3 May 2025 01:01:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mf-00089y-A0; Sat, 03 May 2025 03:59:41 -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 1uB7me-00089i-Bo for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uB7mb-0006hb-MP for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:40 -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-599-xptz291VMb2Vehq6Haq8HQ-1; Sat, 03 May 2025 03:59:34 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43cf44b66f7so14312445e9.1 for ; Sat, 03 May 2025 00:59:34 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b8a315c8sm66561785e9.35.2025.05.03.00.59.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259175; 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=rZlNu/zAQqkffDlM4a5lM4vT7ViwyhlINcDJMaSxm6M=; b=h9OP5Yz3JastVLlSZHQ/g7hn80atR9c7CEwZJNq0SrTOMogcwAUi6oB73oRx/5QEnLerf/ CK29FC/ConBkjcag1NBWjTHJXMRKEyHqh9MD1RCfTuLtdMBjlQV5raVs6mtbAhnqyXY2gV e0KdV860uiCiZWsDEcEMZJQvrBoGee0= X-MC-Unique: xptz291VMb2Vehq6Haq8HQ-1 X-Mimecast-MFC-AGG-ID: xptz291VMb2Vehq6Haq8HQ_1746259173 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259172; x=1746863972; 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=rZlNu/zAQqkffDlM4a5lM4vT7ViwyhlINcDJMaSxm6M=; b=bVobOPLB4iSRe1nfNGy2Ja9g8H+zc38be/DABR4VaYvM1OBtFXyNcRYo3SO0btxVzm KrkW/nZ3az9pcIEaUuVAh73Z/oP8fNXCPM4FhOTvmWNYb1Lrq+WplrNFyIVl12GtyoC1 lvKJg5t/SUJ6RVnVWRvgLuyM7EvF4ht4ZuTlhENekPGdffWdttm9JHfVc7L8ImbvrlXO WYH6xun6/CPX5PqxsjlrB19IuhDKxyoKYRbThNWHylQBHjbxkKEXLDVE+4J4fj/mwXAn YWIeC8pDAkB4zENxCIpPNessTNgEcb0F7WhSw1+jzrAey78GxOwpuWlDwdMSI+dL4SB3 JN9A== X-Gm-Message-State: AOJu0YzCq+d9/rnALZZ4/uxoF6G5sGcmDZt/yTART1iwOmYLZAcyBk6F re+rPUFP4UhPSSyK07xnpdaNEgF/8t4yue1CdDOewsz0qcPGVGerHVJLUucREQW7pFxKE4AGqOT WvPDrPJQeuNG+CP78QgnDCHeuJm2vyDbmqkOPp6YTtacW93eK17zk1N74XD91FTGPeaViqvkx/9 F0rYz5/po+O7G18LNAYq+8QKf5587CTw3dIb4x X-Gm-Gg: ASbGncvYgpD81EnneKrLXPbEVf9LrbsoS8/Zn139yhxWixpNEWZkD9uffmEO4Sn7gMK IhZJkS4vLig9tVdFHdfYybM6gLJsmBqSwbvFYpdadZ3bW/+JbOwN+NDaQqlu04JdIZKgOXOpQ+x Ml1zs9K3Z3vBdo74XImnBUhfrUjk0NbF1BfxPMYXPkuJWQT8UMwyFfE53LNuyRLmwhwD2RQYaZI hF0YAKypm76Khy4/+odwHJhoSxQMrAZYwreBmH8gi0Jdg3qCDEZ/sqECZl6h0+VjTZfS4c37E0K fY3z1bPRP+yciWc= X-Received: by 2002:a05:600c:384d:b0:43b:c5a3:2e1a with SMTP id 5b1f17b1804b1-441c1cc4764mr15391225e9.2.1746259172626; Sat, 03 May 2025 00:59:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFwWks9opavqtYWXhFblp/rTbQowm4793vY0brDm+L4ISDmkBso/lKPgKXW0IMUb2RpoK6Tqg== X-Received: by 2002:a05:600c:384d:b0:43b:c5a3:2e1a with SMTP id 5b1f17b1804b1-441c1cc4764mr15390985e9.2.1746259172234; Sat, 03 May 2025 00:59:32 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Stefan Zabka Subject: [PULL 12/13] rust: centralize config in workspace root Date: Sat, 3 May 2025 09:58:57 +0200 Message-ID: <20250503075858.277375-13-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=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: 1746259302788019000 Content-Type: text/plain; charset="utf-8" From: Stefan Zabka This commit bundles common config option in the workspace root and applies them through .workspace =3D true Signed-off-by: Stefan Zabka Link: https://lore.kernel.org/r/20250502212748.124953-1-git@zabka.it Signed-off-by: Paolo Bonzini --- rust/Cargo.toml | 7 +++++++ rust/hw/char/pl011/Cargo.toml | 11 ++++++----- rust/hw/timer/hpet/Cargo.toml | 9 ++++++--- rust/qemu-api-macros/Cargo.toml | 11 ++++++----- rust/qemu-api/Cargo.toml | 15 +++++++-------- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/rust/Cargo.toml b/rust/Cargo.toml index ab1185a8143..5ace47c69be 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -7,6 +7,13 @@ members =3D [ "hw/timer/hpet", ] =20 +[workspace.package] +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.63.0" + [workspace.lints.rust] unexpected_cfgs =3D { level =3D "deny", check-cfg =3D [ 'cfg(MESON)', 'cfg(HAVE_GLIB_WITH_ALIGNED_ALLOC)', diff --git a/rust/hw/char/pl011/Cargo.toml b/rust/hw/char/pl011/Cargo.toml index f2296cad58b..a1f431ab4a3 100644 --- a/rust/hw/char/pl011/Cargo.toml +++ b/rust/hw/char/pl011/Cargo.toml @@ -1,15 +1,16 @@ [package] name =3D "pl011" version =3D "0.1.0" -edition =3D "2021" authors =3D ["Manos Pitsidianakis "] -license =3D "GPL-2.0-or-later" description =3D "pl011 device model for QEMU" resolver =3D "2" publish =3D false -keywords =3D [] -categories =3D [] -rust-version =3D "1.63.0" + +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true =20 [lib] crate-type =3D ["staticlib"] diff --git a/rust/hw/timer/hpet/Cargo.toml b/rust/hw/timer/hpet/Cargo.toml index 147f216e725..6f075027843 100644 --- a/rust/hw/timer/hpet/Cargo.toml +++ b/rust/hw/timer/hpet/Cargo.toml @@ -1,11 +1,14 @@ [package] name =3D "hpet" version =3D "0.1.0" -edition =3D "2021" authors =3D ["Zhao Liu "] -license =3D "GPL-2.0-or-later" description =3D "IA-PC High Precision Event Timer emulation in Rust" -rust-version =3D "1.63.0" + +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true =20 [lib] crate-type =3D ["staticlib"] diff --git a/rust/qemu-api-macros/Cargo.toml b/rust/qemu-api-macros/Cargo.t= oml index 89dee1cfb39..0cd40c8e168 100644 --- a/rust/qemu-api-macros/Cargo.toml +++ b/rust/qemu-api-macros/Cargo.toml @@ -1,15 +1,16 @@ [package] name =3D "qemu_api_macros" version =3D "0.1.0" -edition =3D "2021" authors =3D ["Manos Pitsidianakis "] -license =3D "GPL-2.0-or-later" description =3D "Rust bindings for QEMU - Utility macros" resolver =3D "2" publish =3D false -keywords =3D [] -categories =3D [] -rust-version =3D "1.63.0" + +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true =20 [lib] proc-macro =3D true diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml index 57747bc9341..ca1b04269fd 100644 --- a/rust/qemu-api/Cargo.toml +++ b/rust/qemu-api/Cargo.toml @@ -1,18 +1,17 @@ [package] name =3D "qemu_api" version =3D "0.1.0" -edition =3D "2021" authors =3D ["Manos Pitsidianakis "] -license =3D "GPL-2.0-or-later" -readme =3D "README.md" -homepage =3D "https://www.qemu.org" description =3D "Rust bindings for QEMU" -repository =3D "https://gitlab.com/qemu-project/qemu/" +readme =3D "README.md" resolver =3D "2" publish =3D false -keywords =3D [] -categories =3D [] -rust-version =3D "1.63.0" + +edition.workspace =3D true +homepage.workspace =3D true +license.workspace =3D true +repository.workspace =3D true +rust-version.workspace =3D true =20 [dependencies] qemu_api_macros =3D { path =3D "../qemu-api-macros" } --=20 2.49.0 From nobody Mon Feb 9 07:00:25 2026 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=1746259312; cv=none; d=zohomail.com; s=zohoarc; b=RcaBaA/QG3l70eV3/lgZoeki9Ew5nCixKPuqckURhkTMv7lW0SWR/IZNrvctgeZqv0EAiEaC0KTl5qUbNBQc1ro2M2k2DCwUbvwXmBEEMLLGhhJf+edYixhWoCMVc2QxoNaX+B4qdzHapFHhy345XuUvUvgt4Riy0XeuMA6faSU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746259312; 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=naXb0LxpAG+QrW5oaLUaWLV/f+gZqRysHFdNv5h+KXw=; b=UZcAGaUIiJSXNqbzAUsjzgN3pgOw6P98kC6lzQYvjpkdIEqAj9tq/IB4ecqdjasj2QvYt8/6DAY6P+L0uzXqnld4agMW//Yd+hu69H7H0MX1hbKcpTIY48/KNtt7W7dnEH7zb4RiHJW35jzF3hFZtSKviyo6uKE4GgeCjQX8IIc= 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 1746259312365993.0586273306463; Sat, 3 May 2025 01:01:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uB7mg-0008AC-2C; Sat, 03 May 2025 03:59:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uB7me-00089m-Ij for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uB7mc-0006hn-GQ for qemu-devel@nongnu.org; Sat, 03 May 2025 03:59:40 -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-655-qJtjJ2aSOuK7oqpTIT8kMg-1; Sat, 03 May 2025 03:59:36 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43ceb011ea5so14463455e9.2 for ; Sat, 03 May 2025 00:59:36 -0700 (PDT) Received: from [192.168.10.48] ([151.95.54.106]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441b8992b4csm68633295e9.0.2025.05.03.00.59.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 May 2025 00:59:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1746259177; 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=naXb0LxpAG+QrW5oaLUaWLV/f+gZqRysHFdNv5h+KXw=; b=VwUErwuLvQfgBRAdb/4EC1xQFEagWjgM/aVLMgIBYXPCE+0e6cTsQ7J8jbwG6SErPM0j/Q d+lgg/GaN1TIquRlOoamzBWnsGetsPNiHF1v5XGiWj4fOxJ4518Wbr14FTKPB5rYcVCDYz LG5B96TbD9wHvonbgJrBp5/KXaC7MXc= X-MC-Unique: qJtjJ2aSOuK7oqpTIT8kMg-1 X-Mimecast-MFC-AGG-ID: qJtjJ2aSOuK7oqpTIT8kMg_1746259175 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746259175; x=1746863975; 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=naXb0LxpAG+QrW5oaLUaWLV/f+gZqRysHFdNv5h+KXw=; b=wqOhVEYNBeC8lFcYIpCp+Fu+6EdAlLSD92Z/Jtg3mR6kvZ82wUYPhsGMPrnjJaoG2Q SVFRquH41OJnLJmU47BVMLMtsUNKbcKHhdOyDKwycZUUQ9IMq+AmdQUcTLqQc6gQAYxy WZtDmGYdlH3Zi2ceYYLJO5f0nmZQRxgA4rSCsB0u51ib5YB9jUYx1Q4UzBVXfgwR7n3o +C2Ogvc+fbbN1i8sjzmYSnEPoSt7rQVlKqa3uudH1/anEf3rJikOBbBIMGZHXrETRZ/7 i6vsht7drebKqmS4Nlr8P3cMvWNSnog5WSjTr40qoNk/Oopj0e8oAcVzNrIHHOSprF/W +d8Q== X-Gm-Message-State: AOJu0YxcPKRW7X8U/oSbn0V77A8EfGpCEhooIVvEyCP/HlaMwxARh6BV hOOsmLe9r/W8APLpjcy1mZ0skxh3veDJpEYmghQo1z54Czh1NqkhryhnSDNak01MxqPwZjBXXw4 vhBS2ZKI1uw//dSbx8sTilOLxWsFMUPdxxpFWkvMRspZALpu/TzqL/WHdHEh+ECsGskAWpCssTZ ad8sxxTKrdzhLN7QK2Z91QX/lGMtvnIWiAv4ui X-Gm-Gg: ASbGncvqfIoLMD/FSC9Jw7oGvD603V1Ba/SwuyaDBqUOezW6np6U+spWJyFFwYca0tr 0mJ2BiLHcfeuJzx2OxcsGkiJd0wbK/245I0zI9aFq/TsbN5v7NzgsT55qmRgI2zCqRFu7pIBzZi xG80VwwfOsYgqnDzGRu/eU/tj7THTQGMkIkTmsMZs5yDLRQS67JlNV9ya6HHap+1/52SkBHR69Y r0Ar1D/8g3ZYJK7onaxam+nhD9n0ysEtjgIvYilveAzc9KZ9kGeZtdtbUqSGBCkFEc3ZHPiIsij IPCBmoR6ci7OWGw= X-Received: by 2002:a05:600c:1914:b0:43d:47e:3205 with SMTP id 5b1f17b1804b1-441c48bca55mr1537185e9.11.1746259174710; Sat, 03 May 2025 00:59:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFbR2kaVLJ42WP86DVgovbE4HJVFUgylyAcliITiAWEUx0lyh0e8gsol0p48M+Fh9S/59ah8A== X-Received: by 2002:a05:600c:1914:b0:43d:47e:3205 with SMTP id 5b1f17b1804b1-441c48bca55mr1537025e9.11.1746259174297; Sat, 03 May 2025 00:59:34 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Andrey Drobyshev Subject: [PULL 13/13] monitor: don't wake up qmp_dispatcher_co coroutine upon cleanup Date: Sat, 3 May 2025 09:58:58 +0200 Message-ID: <20250503075858.277375-14-pbonzini@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250503075858.277375-1-pbonzini@redhat.com> References: <20250503075858.277375-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: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.644, 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_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1746259312765019000 Content-Type: text/plain; charset="utf-8" From: Andrey Drobyshev Since the commit 3e6bed61 ("monitor: cleanup detection of qmp_dispatcher_co shutting down"), coroutine pointer qmp_dispatcher_co is set to NULL upon cleanup. If a QMP command is sent after monitor_cleanup() (e.g. after shutdown), this may lead to SEGFAULT on aio_co_wake(NULL). As mentioned in the comment inside monitor_cleanup(), the intention is to allow incoming requests while shutting down, but simply leave them without any response. Let's do exactly that, and if qmp_dispatcher_co coroutine pointer has already been set to NULL, let's simply skip the aio_co_wake() part. Signed-off-by: Andrey Drobyshev Link: https://lore.kernel.org/r/20250502214729.928380-2-andrey.drobyshev@vi= rtuozzo.com Signed-off-by: Paolo Bonzini --- monitor/qmp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monitor/qmp.c b/monitor/qmp.c index 2f46cf9e494..cb99a12d941 100644 --- a/monitor/qmp.c +++ b/monitor/qmp.c @@ -356,7 +356,8 @@ void qmp_dispatcher_co_wake(void) /* Write request before reading qmp_dispatcher_co_busy. */ smp_mb__before_rmw(); =20 - if (!qatomic_xchg(&qmp_dispatcher_co_busy, true)) { + if (!qatomic_xchg(&qmp_dispatcher_co_busy, true) && + qatomic_read(&qmp_dispatcher_co)) { aio_co_wake(qmp_dispatcher_co); } } --=20 2.49.0