[{"id":3674371,"web_url":"http://patchwork.ozlabs.org/comment/3674371/","msgid":"<CAMxuvayywHuA4X8G8gfuOnW9MTP5BLuNayOTJq_k423pdFDKGg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-07T07:56:58","subject":"Re: [PATCH v3 03/10] hw/tpm: Add internal buffer state for chunking","submitter":{"id":66774,"url":"http://patchwork.ozlabs.org/api/people/66774/","name":"Marc-André Lureau","email":"marcandre.lureau@redhat.com"},"content":"On Mon, Apr 6, 2026 at 6:18 PM Arun Menon <armenon@redhat.com> wrote:\n>\n> From: Arun Menon <armenon@redhat.com>\n>\n> - Introduce GByteArray buffers to hold the command request and response\n>   data during chunked TPM CRB transactions.\n> - Add helper function to clean them.\n>\n> Signed-off-by: Arun Menon <armenon@redhat.com>\n\nReviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n\n> ---\n>  hw/tpm/tpm_crb.c | 34 ++++++++++++++++++++++++++++++----\n>  1 file changed, 30 insertions(+), 4 deletions(-)\n>\n> diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c\n> index bc55908786..d65b3e2cc1 100644\n> --- a/hw/tpm/tpm_crb.c\n> +++ b/hw/tpm/tpm_crb.c\n> @@ -38,10 +38,13 @@ struct CRBState {\n>      TPMBackend *tpmbe;\n>      TPMBackendCmd cmd;\n>      uint32_t regs[TPM_CRB_R_MAX];\n> +    size_t be_buffer_size;\n>      MemoryRegion mmio;\n>      MemoryRegion cmdmem;\n>\n> -    size_t be_buffer_size;\n> +    GByteArray *command_buffer;\n> +    GByteArray *response_buffer;\n> +    uint32_t response_offset;\n>\n>      bool ppi_enabled;\n>      TPMPPI ppi;\n> @@ -85,6 +88,13 @@ enum crb_cancel {\n>\n>  #define TPM_CRB_NO_LOCALITY 0xff\n>\n> +static void tpm_crb_clear_internal_buffers(CRBState *s)\n> +{\n> +    g_byte_array_set_size(s->response_buffer, 0);\n> +    g_byte_array_set_size(s->command_buffer, 0);\n> +    s->response_offset = 0;\n> +}\n> +\n>  static uint64_t tpm_crb_mmio_read(void *opaque, hwaddr addr,\n>                                    unsigned size)\n>  {\n> @@ -134,9 +144,11 @@ static void tpm_crb_mmio_write(void *opaque, hwaddr addr,\n>          }\n>          break;\n>      case A_CRB_CTRL_CANCEL:\n> -        if (val == CRB_CANCEL_INVOKE &&\n> -            s->regs[R_CRB_CTRL_START] & CRB_START_INVOKE) {\n> -            tpm_backend_cancel_cmd(s->tpmbe);\n> +        if (val == CRB_CANCEL_INVOKE) {\n> +            if (s->regs[R_CRB_CTRL_START] & CRB_START_INVOKE) {\n> +                tpm_backend_cancel_cmd(s->tpmbe);\n> +            }\n> +            tpm_crb_clear_internal_buffers(s);\n>          }\n>          break;\n>      case A_CRB_CTRL_START:\n> @@ -240,6 +252,7 @@ static void tpm_crb_reset(void *dev)\n>          tpm_ppi_reset(&s->ppi);\n>      }\n>      tpm_backend_reset(s->tpmbe);\n> +    tpm_crb_clear_internal_buffers(s);\n>\n>      memset(s->regs, 0, sizeof(s->regs));\n>\n> @@ -306,6 +319,9 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp)\n>      memory_region_add_subregion(get_system_memory(),\n>          TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem);\n>\n> +    s->command_buffer = g_byte_array_new();\n> +    s->response_buffer = g_byte_array_new();\n> +\n>      if (s->ppi_enabled) {\n>          tpm_ppi_init(&s->ppi, get_system_memory(),\n>                       TPM_PPI_ADDR_BASE, OBJECT(s));\n> @@ -318,12 +334,22 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp)\n>      }\n>  }\n>\n> +static void tpm_crb_unrealize(DeviceState *dev)\n> +{\n> +    CRBState *s = CRB(dev);\n> +\n> +    g_byte_array_unref(s->command_buffer);\n> +    g_byte_array_unref(s->response_buffer);\n\nI have a preference for g_clear_pointer(&ptr, g_byte_array_unref), it\nis safer, but unrealize() should only be called once after realize()\nso ok.\n\n> +\n> +}\n> +\n>  static void tpm_crb_class_init(ObjectClass *klass, const void *data)\n>  {\n>      DeviceClass *dc = DEVICE_CLASS(klass);\n>      TPMIfClass *tc = TPM_IF_CLASS(klass);\n>\n>      dc->realize = tpm_crb_realize;\n> +    dc->unrealize = tpm_crb_unrealize;\n>      device_class_set_props(dc, tpm_crb_properties);\n>      dc->vmsd  = &vmstate_tpm_crb;\n>      dc->user_creatable = true;\n> --\n> 2.53.0\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=VKE4VUNL;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=google header.b=EF/TchZ3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqx1y2l8nz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 05:23:34 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wABXG-00007c-AR; Tue, 07 Apr 2026 14:52:26 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mlureau@redhat.com>)\n id 1wABTw-0003uc-4q\n for qemu-devel@nongnu.org; Tue, 07 Apr 2026 14:49:00 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <mlureau@redhat.com>)\n id 1wA1JD-0002nX-12\n for qemu-devel@nongnu.org; Tue, 07 Apr 2026 03:57:16 -0400","from mail-pl1-f197.google.com (mail-pl1-f197.google.com\n [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-317-_xpYLsYSOJqeAJXOfeV2Gw-1; Tue, 07 Apr 2026 03:57:12 -0400","by mail-pl1-f197.google.com with SMTP id\n d9443c01a7336-2b250d3699aso116126785ad.2\n for <qemu-devel@nongnu.org>; Tue, 07 Apr 2026 00:57:12 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1775548634;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=S0KYySOHThciKi0+KWw6NJzMR5Rud7fOUjQf/noC3hk=;\n b=VKE4VUNLMXtKyIBMknt6a2ecYtGZELkcse1J0RJVJhZNttqr4lQqmUc5iADcLun+qbizQo\n FEnFDNEiknhxJAZaqo6SNbeTEXwj+4l30/I36fDIBa+gyYUSe8Hr3/DOGVvvMriAoliT1P\n 9H/cH23Wm9XRQED5zLo4FRnkSN6z6T8=","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1775548632; x=1776153432; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=S0KYySOHThciKi0+KWw6NJzMR5Rud7fOUjQf/noC3hk=;\n b=EF/TchZ3lIT9qtFUbmu61NUdDiaF0qD/Ji/xkpSzUlQkRSZTb8+KYclILlb32qHq5B\n ncjOJGjWshsUqlye9IGf5nJqFK7Osba/BV4KelV51S+OlMTDolfjLo+C6hvIEYzM+1aL\n NCxxyySYQ+vfRgLKT0KknK/n4UT8FhXxuiV9bjMTb7ZuT7eEahUvpu8bGaxlmEFKJKLX\n 4y9VcYUzH5jr0vwvYW8qE+T793zCUmw1jENN9P9GVrNxipk5ZdtYDphXu055a9TnkKnc\n 9AG3+xgNj4YJ3lG0ai4P6YFGVSungMzLCCGa4zpgO7C4NujrEX9YiRouL33+2cPkv6ne\n pKHQ=="],"X-MC-Unique":"_xpYLsYSOJqeAJXOfeV2Gw-1","X-Mimecast-MFC-AGG-ID":"_xpYLsYSOJqeAJXOfeV2Gw_1775548632","ARC-Seal":"i=1; a=rsa-sha256; t=1775548632; cv=none;\n d=google.com; s=arc-20240605;\n b=UPWWU74chpoqQGqbaMdawccZz+Z9AjG+82P6t7FYxt3/FzsB7uK+XDDXS2+bPy2Z1A\n lJ9vZvVTPu31rPiZ+obs/q3UEtUjOpOiuF/Anm/PTygnoyesjEvCMkgPxJNQmzzM1oUf\n 3Ay1O2tUjfqttQUlvn0Br0v2aUC3s8w+qD3Q7O4SheMi8Tx/6Foeb+MSFKSdDnYywiFe\n 65s3uEY68gk+aaAjC+ZOqpCUTgsYvmwwI016WUPxrAL54gQsuGKGqNVDvR1PN66OG8L4\n tr0A5GfcxUEsR9puX3oX953xEwhu/LIFBwKo+wmAvvjGZVuDYIF4V4e4B9P35V5w7KXv\n ovhg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=S0KYySOHThciKi0+KWw6NJzMR5Rud7fOUjQf/noC3hk=;\n fh=DjCsBAlzHiQ7urn9emqwzALbJ1ZadaQmzpiSJrrLJFk=;\n b=SM1CMsFYZgW8TJ8V3kjJHzvKkPqsTd2kPXOSCH13iDCR5GN3eIpOYMi8LcJKkmDKOs\n NCpcY8/+mSMA/JIMucie5yaXOBCqQOpg5QW1vJg4lcVpma2phxBttrS1kUzPlEZRkNDS\n Zn2qFsVkPPMiDJctylivk4J/7C+s2UM/uz6yf65UUY7a4UxRrgHHrRbXPybqyMKXymB1\n LibEiTvkrU5tPUBRReGLoKg1eEMV05tav5rvmuMzvVJnlkigvcaWu7y5SXRaidGM33MQ\n /Jz6G3OGkTwL/sIO/odq+hjqUpEEyplgf04/+7947y90fNtYGaiPX2AJM2eW7KANNCOH\n uV3g==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775548632; x=1776153432;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=S0KYySOHThciKi0+KWw6NJzMR5Rud7fOUjQf/noC3hk=;\n b=bihaoQos9HOPvI4UlDuMQM6rt3QGaL4IqFHMFzLXQ1aaXnpPn9LQeegR/Q56tuvG3y\n Qt4xRUpo7N/fO7sN+Nwjbi/RY8TiIn9g0MI7ubEO8PpqokwAB2QtT/iywi6Qel0Q4Zv9\n ZjyVnTUTN0kw9im73Yz+9FUUmxF0OPNwqiZmHhdw0Ua2BBgDCOWkNUSlqHKtG2COW2bF\n bVQejuUWCEXyQjB4AqJESeyy9uSq3lfYoQkTT84ANE6fYqq+2VDqmitZYyxwQbjbQ7/N\n gprysDFHulCoZhp2hCQ1Hzjlf+FXuRILspTqosgnjJ2s/dk9VYHviqrBqSxMKxOy0DUz\n GdAA==","X-Gm-Message-State":"AOJu0YxTWTTg/8It6JFrdTukWFh+OSbnr+VN5Ny9v+zZR//SshpHpCJZ\n yf7m/6jzt5Ou6fZrRjp9F9b6vpBaJNdDKZZwQIKJDj1lSK+C9xWK0TDNyav7lcCOX4oMfu0kwkM\n BcnRWNPSGH2kLBdNYfpLlrjURo3llow+K+iv7x+oO74g8roIb4ZxizvMsURi6md4L6YFZAbyHuk\n 4eAxqwl69wyKGR0PZNEihapE+JLBbQvSs=","X-Gm-Gg":"AeBDietGJbw6Sj8rlAjZ3yWul1dxil5tk0LmwaE4dlzVN6PW6WkbSd8O8/OpKw+5YmQ\n YpwovK7UVe6rty2DZTCvt2AVBZAujrPhWGPqCZsVZZzsX/nyOgDVr2ChUE2KF06H0BWdkIlK4qt\n dAhcbTQUNzjeesUM1ZCr25p52NjUnl2KCX6oVCrkbWuGnikt6cDWI/buKXbR6TKIyuGVLtK84nT\n ZYdLOAoAhir0yZTYVuUQ45GiefmO4/fbEms9bIpAe/xHxBkhzrvWkI3Kqz/oANhpGXMRbfnVlXH\n iWN3YW2+uPqzdR5kEyn7dV4=","X-Received":["by 2002:a05:6a20:3d94:b0:39e:f994:f697 with SMTP id\n adf61e73a8af0-39f2ee03404mr16156114637.17.1775548631792;\n Tue, 07 Apr 2026 00:57:11 -0700 (PDT)","by 2002:a05:6a20:3d94:b0:39e:f994:f697 with SMTP id\n adf61e73a8af0-39f2ee03404mr16156080637.17.1775548631327; Tue, 07 Apr 2026\n 00:57:11 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260406141735.25844-1-armenon@redhat.com>\n <20260406141735.25844-4-armenon@redhat.com>","In-Reply-To":"<20260406141735.25844-4-armenon@redhat.com>","From":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>","Date":"Tue, 7 Apr 2026 11:56:58 +0400","X-Gm-Features":"AQROBzD0SE4tJJrizT42wl7xoz8BU99qQfsgKEzrQIpLucpnL9BYYhfAuzPwWNE","Message-ID":"\n <CAMxuvayywHuA4X8G8gfuOnW9MTP5BLuNayOTJq_k423pdFDKGg@mail.gmail.com>","Subject":"Re: [PATCH v3 03/10] hw/tpm: Add internal buffer state for chunking","To":"Arun Menon <armenon@redhat.com>","Cc":"qemu-devel@nongnu.org, Ani Sinha <anisinha@redhat.com>,\n  Laurent Vivier <lvivier@redhat.com>, Zhao Liu <zhao1.liu@intel.com>,\n  Stefan Berger <stefanb@linux.vnet.ibm.com>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n  Paolo Bonzini <pbonzini@redhat.com>, Fabiano Rosas <farosas@suse.de>,\n  \"Michael S. Tsirkin\" <mst@redhat.com>, Yanan Wang <wangyanan55@huawei.com>,\n  Igor Mammedov <imammedo@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=170.10.129.124; envelope-from=mlureau@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"-25","X-Spam_score":"-2.6","X-Spam_bar":"--","X-Spam_report":"(-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3677671,"web_url":"http://patchwork.ozlabs.org/comment/3677671/","msgid":"<CAE_eyq-rb6c6E2F=DerkHDzEgvCNeUQbEo5CcSnx-KPCDPE+=w@mail.gmail.com>","list_archive_url":null,"date":"2026-04-15T13:34:55","subject":"Re: [PATCH v3 03/10] hw/tpm: Add internal buffer state for chunking","submitter":{"id":91136,"url":"http://patchwork.ozlabs.org/api/people/91136/","name":"Arun Menon","email":"armenon@redhat.com"},"content":"On Tue, Apr 07, 2026 at 11:56:58AM +0400, Marc-André Lureau wrote:\n> On Mon, Apr 6, 2026 at 6:18 PM Arun Menon <armenon@redhat.com> wrote:\n> >\n> > From: Arun Menon <armenon@redhat.com>\n> >\n> > - Introduce GByteArray buffers to hold the command request and response\n> >   data during chunked TPM CRB transactions.\n> > - Add helper function to clean them.\n> >\n> > Signed-off-by: Arun Menon <armenon@redhat.com>\n>\n> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n>\n> > ---\n> >  hw/tpm/tpm_crb.c | 34 ++++++++++++++++++++++++++++++----\n> >  1 file changed, 30 insertions(+), 4 deletions(-)\n> >\n> > diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c\n> > index bc55908786..d65b3e2cc1 100644\n> > --- a/hw/tpm/tpm_crb.c\n> > +++ b/hw/tpm/tpm_crb.c\n> > @@ -38,10 +38,13 @@ struct CRBState {\n> >      TPMBackend *tpmbe;\n> >      TPMBackendCmd cmd;\n> >      uint32_t regs[TPM_CRB_R_MAX];\n> > +    size_t be_buffer_size;\n> >      MemoryRegion mmio;\n> >      MemoryRegion cmdmem;\n> >\n> > -    size_t be_buffer_size;\n> > +    GByteArray *command_buffer;\n> > +    GByteArray *response_buffer;\n> > +    uint32_t response_offset;\n> >\n> >      bool ppi_enabled;\n> >      TPMPPI ppi;\n> > @@ -85,6 +88,13 @@ enum crb_cancel {\n> >\n> >  #define TPM_CRB_NO_LOCALITY 0xff\n> >\n> > +static void tpm_crb_clear_internal_buffers(CRBState *s)\n> > +{\n> > +    g_byte_array_set_size(s->response_buffer, 0);\n> > +    g_byte_array_set_size(s->command_buffer, 0);\n> > +    s->response_offset = 0;\n> > +}\n> > +\n> >  static uint64_t tpm_crb_mmio_read(void *opaque, hwaddr addr,\n> >                                    unsigned size)\n> >  {\n> > @@ -134,9 +144,11 @@ static void tpm_crb_mmio_write(void *opaque, hwaddr addr,\n> >          }\n> >          break;\n> >      case A_CRB_CTRL_CANCEL:\n> > -        if (val == CRB_CANCEL_INVOKE &&\n> > -            s->regs[R_CRB_CTRL_START] & CRB_START_INVOKE) {\n> > -            tpm_backend_cancel_cmd(s->tpmbe);\n> > +        if (val == CRB_CANCEL_INVOKE) {\n> > +            if (s->regs[R_CRB_CTRL_START] & CRB_START_INVOKE) {\n> > +                tpm_backend_cancel_cmd(s->tpmbe);\n> > +            }\n> > +            tpm_crb_clear_internal_buffers(s);\n> >          }\n> >          break;\n> >      case A_CRB_CTRL_START:\n> > @@ -240,6 +252,7 @@ static void tpm_crb_reset(void *dev)\n> >          tpm_ppi_reset(&s->ppi);\n> >      }\n> >      tpm_backend_reset(s->tpmbe);\n> > +    tpm_crb_clear_internal_buffers(s);\n> >\n> >      memset(s->regs, 0, sizeof(s->regs));\n> >\n> > @@ -306,6 +319,9 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp)\n> >      memory_region_add_subregion(get_system_memory(),\n> >          TPM_CRB_ADDR_BASE + sizeof(s->regs), &s->cmdmem);\n> >\n> > +    s->command_buffer = g_byte_array_new();\n> > +    s->response_buffer = g_byte_array_new();\n> > +\n> >      if (s->ppi_enabled) {\n> >          tpm_ppi_init(&s->ppi, get_system_memory(),\n> >                       TPM_PPI_ADDR_BASE, OBJECT(s));\n> > @@ -318,12 +334,22 @@ static void tpm_crb_realize(DeviceState *dev, Error **errp)\n> >      }\n> >  }\n> >\n> > +static void tpm_crb_unrealize(DeviceState *dev)\n> > +{\n> > +    CRBState *s = CRB(dev);\n> > +\n> > +    g_byte_array_unref(s->command_buffer);\n> > +    g_byte_array_unref(s->response_buffer);\n>\n> I have a preference for g_clear_pointer(&ptr, g_byte_array_unref), it\n> is safer, but unrealize() should only be called once after realize()\n> so ok.\n\nThanks for the tip. I have updated it to use g_clear_pointer in the next\nrevision.\n\n>\n> > +\n> > +}\n> > +\n> >  static void tpm_crb_class_init(ObjectClass *klass, const void *data)\n> >  {\n> >      DeviceClass *dc = DEVICE_CLASS(klass);\n> >      TPMIfClass *tc = TPM_IF_CLASS(klass);\n> >\n> >      dc->realize = tpm_crb_realize;\n> > +    dc->unrealize = tpm_crb_unrealize;\n> >      device_class_set_props(dc, tpm_crb_properties);\n> >      dc->vmsd  = &vmstate_tpm_crb;\n> >      dc->user_creatable = true;\n> > --\n> > 2.53.0\n> >\n>\n\nRegards,\nArun Menon","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dZ21gyBZ;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=google header.b=RgFCDCWa;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwhxF3S7Qz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 23:36:01 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wD0P9-0003Ob-8A; Wed, 15 Apr 2026 09:35:43 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <armenon@redhat.com>)\n id 1wD0P7-0003OE-K1\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:35:41 -0400","from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <armenon@redhat.com>)\n id 1wD0P5-0006Oc-PO\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 09:35:41 -0400","from mail-oi1-f198.google.com (mail-oi1-f198.google.com\n [209.85.167.198]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-339-1VeL6PYbMUKbhbg_appEYQ-1; Wed, 15 Apr 2026 09:35:35 -0400","by mail-oi1-f198.google.com with SMTP id\n 5614622812f47-46f083f82c7so11095619b6e.1\n for <qemu-devel@nongnu.org>; Wed, 15 Apr 2026 06:35:35 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776260138;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=/LWM0XH+w9Th+O2oAJaXQO5PwnUtriZnxXEiyxgAhAY=;\n b=dZ21gyBZqWWoQKUPMJ2nFugWSbjOlDtE8NkS+eNdetssXTEZmu5zsbrdh3Xm3NgeD5KdTd\n AP5d0J7EjBX1keYj4mAcHDdNzRhHRvQWLcmNWRmCSvH9+xhxaBxGh2atw5Jp9IzaAAj/MG\n qVHZu3/nnBY+GPAN7yLorK+QgTK0dL8=","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=redhat.com; s=google; t=1776260134; x=1776864934; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=/LWM0XH+w9Th+O2oAJaXQO5PwnUtriZnxXEiyxgAhAY=;\n b=RgFCDCWauqjSzW7nxMM7VOMdxIl2siGD7SB6nmaCXLO2l7+R81FMqHgDRRjubdksk+\n oqZqOhdNCH5Hq+ge/sOYxMKjaECwz8skhFEBTwy4bWVPa/M2zgRBtsZQAc8slQGC5bTx\n oJ8tr1xQtW8cyefnriaXBbUCl0HXtO38R2ZJUkvsKvnlIVD6Iuox0+ygytnk248nYhJR\n Ur2c/FMdTl9HrIW3J/TBXMG9Ydba/HJU+sqivt4cwY7z6zUAj+sf/PllHZGuNURMiMMS\n RnrUibcA1hlovnjw4agDPFB2pjDBpf3IiTgpTZd1dS7DHRLT5VW/NetvC8hq7SCWVQXK\n XFhw=="],"X-MC-Unique":"1VeL6PYbMUKbhbg_appEYQ-1","X-Mimecast-MFC-AGG-ID":"1VeL6PYbMUKbhbg_appEYQ_1776260134","ARC-Seal":"i=1; a=rsa-sha256; t=1776260134; cv=none;\n d=google.com; s=arc-20240605;\n b=h5v0IEqMpY87PhlI617jzFX7GY2dE2r1aCU995lCBjmbw63q+I/n2/If3ZxiKffxpD\n e5ORLoWh8Q+7JPsFP01UUBIhBd5SYujjeIJZL1Do8v7TUj41Mm4K0wfiO2zwdVHysYWj\n bipTadjT6JexjaXWgUKSnY8FlCZJMCKoiiyF7XFe+dSJdCJl8fXWXV6N64U2WbrC88Qj\n 0NmjHE/OPrOGyiSgaZfgwXz1Qpf6J8I1ALN+6RNDWqw1SZmUWnVeMV32KVBHI21/lT3m\n ntVutQXhyqSnpvIcLZe0lbs8v0EzXqy9nSTJd4iSjQ2c97VsYrdg0S9Kh3RarrmkW1gB\n 7MTg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=/LWM0XH+w9Th+O2oAJaXQO5PwnUtriZnxXEiyxgAhAY=;\n fh=ey4PBSvBqeQkg4f2UbbK4rf17z3h5yS3KmmMBcBtgh4=;\n b=MsI64z3/Jrbn+AmbxIAd6MHAAgl+ImHrujUo+gBrJr0Oof4ugt2Ct1HOJWSlfaruJN\n bHLs8fOPTxizmCkKUeYTEuMiCydcbp2LuI1ZYp90TYvLc5cPuvhXadME14tY1wHCXxlV\n ve7uQ+0Of5WrpZSciXkbiMtjyGS3DehZ6ZM9vzxm5TTWCkYpDieG+Eixld69L4XtM+9W\n vPFxRbc8l1jHEUIXrlpR9cu6HRZW5V9av3gxOh4Jy2ij0R4/nJqNZdyIm1MBQ5g65M6Y\n 91/T6t8WZMloUiIqbDwKWhyTdbl8S6jniQ5K+UkL+ZUMOCLCc0x3lqlQZHnCDWPVxgoQ\n URQA==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776260134; x=1776864934;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=/LWM0XH+w9Th+O2oAJaXQO5PwnUtriZnxXEiyxgAhAY=;\n b=qXgjz7CJQeLF3KJQJ8Y+ua97f7nhiNJwxDiksuTW2muFc2+KJhfJlELQ8Mufe/XBiu\n nFJC0rHopB/q+pwhDcgwrItNlFR58CXoW/sk7rzbUrItNveQcqtPBOetM3j+wggqlEV7\n 4RzyULmUFkCvLca9voPmIIM6fr6kbK+n4HmNY2X2UblVF0BdQsCkQ+YqrASjlXrLGPdN\n kw1TZmSHDpD1EHXMmUS5yMIcJLa72bu3u1zkjhWGs1ytAOhhkcow8W8A9HnsqeWPolY/\n M6VbYTvr1EyS1lMU/JSbJN2t+DPzpKTSTFzCcBB1eGpYe9Hzs8OOymJ0d0SKhs2D/UX6\n O6pg==","X-Gm-Message-State":"AOJu0YwI9lhoEBNiUhUuPEl03ihXJy+CJ+gRajmqSvyHThakZx9VotK4\n QG+O8cZsLtwCbM6fsEs/ctR3G1ZqZp7AKS5kdVe6PTjbuny1gtjR7fzHh0JuDeExjxiyREDFgTb\n v/sYti9dygs2eZsR0zS2ma14FhYnXdi5SGs+HuVVRwiXRloEZw1vUzFWE84fXgB+WMcdaYG5GN1\n LWELdbDPJ5dfF1209vf0T5R0w3DycPPFc=","X-Gm-Gg":"AeBDievVDrJiev/julGM//S7UPRMK+M2+8HGfKUtp2MYQyh3+YIJUA/QenFgx4adxfu\n ncvPbbm9Oycx3TpUUPGr93llXBXjnWmbHWQ0b7yjSw5VkCwLC+aHSGzlpgAa8qS8TIXvvfiwcMg\n gVi+zJlSe3Jkd8amwyCTRg/DDEaVxtJkcENNCfmhk5IUIbIRdQbTYY6wMAXWXjIqyYxW+7Cj/Y3\n MuwhUkp9Hk2Q0W4iTPpGLR4R70wloQzINkld8caMiWGQQ==","X-Received":["by 2002:a05:6820:2fc2:b0:68e:58ef:c9b9 with SMTP id\n 006d021491bc7-68e58efe2edmr6417928eaf.36.1776260134454;\n Wed, 15 Apr 2026 06:35:34 -0700 (PDT)","by 2002:a05:6820:2fc2:b0:68e:58ef:c9b9 with SMTP id\n 006d021491bc7-68e58efe2edmr6417909eaf.36.1776260133995; Wed, 15 Apr 2026\n 06:35:33 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260406141735.25844-1-armenon@redhat.com>\n <20260406141735.25844-4-armenon@redhat.com>\n <CAMxuvayywHuA4X8G8gfuOnW9MTP5BLuNayOTJq_k423pdFDKGg@mail.gmail.com>","In-Reply-To":"\n <CAMxuvayywHuA4X8G8gfuOnW9MTP5BLuNayOTJq_k423pdFDKGg@mail.gmail.com>","From":"Arun Menon <armenon@redhat.com>","Date":"Wed, 15 Apr 2026 19:04:55 +0530","X-Gm-Features":"AQROBzBLmyvOzYA6bMjjIf3LuV5Il3qp0jvaVC1C-x67oSmF4tjyOYAr-TOnUTc","Message-ID":"\n <CAE_eyq-rb6c6E2F=DerkHDzEgvCNeUQbEo5CcSnx-KPCDPE+=w@mail.gmail.com>","Subject":"Re: [PATCH v3 03/10] hw/tpm: Add internal buffer state for chunking","To":"=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>","Cc":"qemu-devel@nongnu.org, Ani Sinha <anisinha@redhat.com>,\n  Laurent Vivier <lvivier@redhat.com>, Zhao Liu <zhao1.liu@intel.com>,\n  Stefan Berger <stefanb@linux.vnet.ibm.com>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n  Paolo Bonzini <pbonzini@redhat.com>, Fabiano Rosas <farosas@suse.de>,\n  \"Michael S. Tsirkin\" <mst@redhat.com>, Yanan Wang <wangyanan55@huawei.com>,\n  Igor Mammedov <imammedo@redhat.com>,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=170.10.129.124; envelope-from=armenon@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com","X-Spam_score_int":"-25","X-Spam_score":"-2.6","X-Spam_bar":"--","X-Spam_report":"(-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.54,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]