From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4087EC87FCF for ; Mon, 4 Aug 2025 10:10:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uis8W-0006IZ-8n; Mon, 04 Aug 2025 06:09:44 -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 1uis7P-0005zb-2j for qemu-devel@nongnu.org; Mon, 04 Aug 2025 06:08:35 -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 1uis7M-0004vq-Gk for qemu-devel@nongnu.org; Mon, 04 Aug 2025 06:08:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754302110; 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: in-reply-to:in-reply-to:references:references; bh=o1TdvNN+z1sK0RpIh+poIaIGxfYSVZLeWGAj7Vp5N50=; b=iYSHFYqRPsj2J8SxbY0iO45SAM53h8Ai56sesB6cTXvS0YmJpaFBiJ8n5o8LxyLEJzuAoH YxNLuaLm/pItrraWJo4l9aGuEj+QWLUOZtoesCCLYLxDnYl362+JV6X5pjFUnT1PTMra4w KseGW9fLNZdYD8Y9eIuYKT+A2hx8izc= 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-554-1qLHTCOuPuu5E6CDRbzZug-1; Mon, 04 Aug 2025 06:08:29 -0400 X-MC-Unique: 1qLHTCOuPuu5E6CDRbzZug-1 X-Mimecast-MFC-AGG-ID: 1qLHTCOuPuu5E6CDRbzZug_1754302108 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-451d3f03b74so21939555e9.3 for ; Mon, 04 Aug 2025 03:08:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754302108; x=1754906908; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=o1TdvNN+z1sK0RpIh+poIaIGxfYSVZLeWGAj7Vp5N50=; b=PyxR3ADAI80njKn9vA6uZO8RAwvAPDKnkMn8Z57z4SeOARY1i5E+OFotxgvJRzmuMz ZTASPsdbL/iZK4MdPfodJ86vFE3+LuToNwU3TmiOeFrvWUHZ4pRfYwWhmsAbeKO8mmJ+ rWA4Eil8qAFNIUEyd3ZqzxxylWpCoQ0Fwi3uZAw3NcHPVCTNIqi6G2qNKjRo0n/dM30d HeVIVeKdO2FBH3VjsGU0pmAgtj8mknbqwsBWhv0B8byNblOEQ9fhoBDc3mqQzF616Fus irW9LVINFjTO+PnmMuP8ogoVR3I0IA0dklvl8AVojaQ/zsepihdYvYqsw5xEHbZRLr22 V2jQ== X-Gm-Message-State: AOJu0YyiwiBvTyW00JSVacjkvrS6yQrR40Lti2uvyIa1wC9S9hW1QBW7 S2sD8XTie2wPF6Ilam92J1VddZ2PKPsZUY4HJWp2aS+el+WMVIqVlykRM4lgC0Fw+gCxk4cEIvn IhH2EJDyS5PcH3RQiipUNhb4eR47tUf8DU7MhaVtjLXz7wXPVDOGrhREGXGc0NYu8/ZTjiOu01E 5MsoQy6zb3JriTm1zBWqKMZHDwtrP1q5k= X-Gm-Gg: ASbGnct14NsRq+43X3MLxmPFdf0F8WPFzDvs/W3gWxPvRSSWMT5valcktpVqwR7Ei1G f3stURKyNyPdJi0I5RB5F3hFCMKwlPJzORL6YSaheQTvWzYwNSvW0of/vMSbA2pIccPLgqcGJc4 upEQhYyg1M4ksYojURYeIL X-Received: by 2002:a05:600c:4692:b0:458:a559:a693 with SMTP id 5b1f17b1804b1-458b6b316b3mr65389685e9.18.1754302107786; Mon, 04 Aug 2025 03:08:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHbU55T3r3T6/QGs5csnfFiUkjcwaQVOQeDnNp+CMFAnO5y6dXEHvZmb8wPgi6toYxh+2+WcJfE15PJH8lN6QQ= X-Received: by 2002:a05:600c:4692:b0:458:a559:a693 with SMTP id 5b1f17b1804b1-458b6b316b3mr65389435e9.18.1754302107370; Mon, 04 Aug 2025 03:08:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paolo Bonzini Date: Mon, 4 Aug 2025 12:08:15 +0200 X-Gm-Features: Ac12FXze5VPLacZDvIO_VVhGukIoOQBSdVm4wvSrGl8KJvdDK_hebCS5C48yZf4 Message-ID: Subject: Re: [PATCH 1/2] rust: Add antoher variant for impl_vmstate_struct! macro To: Martin Kletzander Cc: qemu-devel , "open list:Block layer core" , Manos Pitsidianakis , qemu-rust@nongnu.org, Hanna Reitz , Kevin Wolf Content-Type: multipart/alternative; boundary="000000000000f0595e063b8749be" 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: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org --000000000000f0595e063b8749be Content-Type: text/plain; charset="UTF-8" Il lun 4 ago 2025, 10:56 Martin Kletzander ha scritto: > *BUT* of course I had to rebase the patches on top of current rust-next > on Friday and there were some of your commits from Thursday which I now > see actually fix all what I tried fixing before as well. I tried > finding the previous commit on which I saw all the issues and after some > rebuilding I could not. So it is now not even broken on rust-next. > > This way I completely wasted your time, but at least learned something > that's happening in the code. Sorry for that. > Uh no you didn't. It was broken. Paolo Martin > > >Paolo > > > > rust/qemu-api/src/vmstate.rs | 11 +++++++++++ > >> rust/qemu-api/tests/vmstate_tests.rs | 1 + > >> 2 files changed, 12 insertions(+) > >> > >> diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/ > vmstate.rs > >> index b5c6b764fbba..716e52afe740 100644 > >> --- a/rust/qemu-api/src/vmstate.rs > >> +++ b/rust/qemu-api/src/vmstate.rs > >> @@ -449,6 +449,17 @@ macro_rules! vmstate_validate { > >> /// description of the struct. > >> #[macro_export] > >> macro_rules! impl_vmstate_struct { > >> + ($type:ty, $(&)?$vmsd:ident) => { > >> + unsafe impl $crate::vmstate::VMState for $type { > >> + const BASE: $crate::bindings::VMStateField = > >> + $crate::bindings::VMStateField { > >> + vmsd: $vmsd.as_ref(), > >> + size: ::core::mem::size_of::<$type>(), > >> + flags: $crate::bindings::VMStateFlags::VMS_STRUCT, > >> + ..$crate::zeroable::Zeroable::ZERO > >> + }; > >> + } > >> + }; > >> ($type:ty, $vmsd:expr) => { > >> unsafe impl $crate::vmstate::VMState for $type { > >> const BASE: $crate::bindings::VMStateField = { > >> diff --git a/rust/qemu-api/tests/vmstate_tests.rs > b/rust/qemu-api/tests/ > >> vmstate_tests.rs > >> index 2c0670ba0eed..7d3180e6c2ea 100644 > >> --- a/rust/qemu-api/tests/vmstate_tests.rs > >> +++ b/rust/qemu-api/tests/vmstate_tests.rs > >> @@ -320,6 +320,7 @@ fn test_vmstate_struct_varray_uint8_wrapper() { > >> b"arr_a_wrap\0" > >> ); > >> assert_eq!(foo_fields[5].num_offset, 228); > >> + assert_eq!(foo_fields[5].vmsd, VMSTATE_FOOA.as_ref()); > >> assert!(unsafe { foo_fields[5].field_exists.unwrap()(foo_b_p, 0) > }); > >> > >> // The last VMStateField in VMSTATE_FOOB. > >> -- > >> 2.50.1 > >> > >> > --000000000000f0595e063b8749be Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable




Paolo

Martin

>Paolo
>
> rust/qemu-api/src/
vmstate.rs=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|= 11 +++++++++++
>>=C2=A0 rust/qemu-api/tests/vmstate_tests.rs |=C2=A0 1= +
>>=C2=A0 2 files changed, 12 insertions(+)
>>
>> diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api= /src/vmstate.rs
>> index b5c6b764fbba..716e52afe740 100644
>> --- a/rust/qemu-api/src/vmstate.rs
>> +++ b/rust/qemu-api/src/vmstate.rs
>> @@ -449,6 +449,17 @@ macro_rules! vmstate_validate {
>>=C2=A0 /// description of the struct.
>>=C2=A0 #[macro_export]
>>=C2=A0 macro_rules! impl_vmstate_struct {
>> +=C2=A0 =C2=A0 ($type:ty, $(&)?$vmsd:ident) =3D> {
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 unsafe impl $crate::vmstate::VMState = for $type {
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 const BASE: $crate::bin= dings::VMStateField =3D
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 $crate::b= indings::VMStateField {
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 vmsd: $vmsd.as_ref(),
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 size: ::core::mem::size_of::<$type>(),
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 flags: $crate::bindings::VMStateFlags::VMS_STRUCT,
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 ..$crate::zeroable::Zeroable::ZERO
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 };
>> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 }
>> +=C2=A0 =C2=A0 };
>>=C2=A0 =C2=A0 =C2=A0 ($type:ty, $vmsd:expr) =3D> {
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 unsafe impl $crate::vmstate::VMS= tate for $type {
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 const BASE: $crate= ::bindings::VMStateField =3D {
>> diff --git a/rust/qemu-api/tests/vmstate_tests.rs b/r= ust/qemu-api/tests/
>> vmstate_tests.rs
>> index 2c0670ba0eed..7d3180e6c2ea 100644
>> --- a/rust/qemu-api/tests/vmstate_tests.rs
>> +++ b/rust/qemu-api/tests/vmstate_tests.rs
>> @@ -320,6 +320,7 @@ fn test_vmstate_struct_varray_uint8_wrapper() = {
>>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 b"arr_a_wrap\0"
>>=C2=A0 =C2=A0 =C2=A0 );
>>=C2=A0 =C2=A0 =C2=A0 assert_eq!(foo_fields[5].num_offset, 228);
>> +=C2=A0 =C2=A0 assert_eq!(foo_fields[5].vmsd, VMSTATE_FOOA.as_ref(= ));
>>=C2=A0 =C2=A0 =C2=A0 assert!(unsafe { foo_fields[5].field_exists.un= wrap()(foo_b_p, 0) });
>>
>>=C2=A0 =C2=A0 =C2=A0 // The last VMStateField in VMSTATE_FOOB.
>> --
>> 2.50.1
>>
>>
--000000000000f0595e063b8749be--