[{"id":3680610,"web_url":"http://patchwork.ozlabs.org/comment/3680610/","msgid":"<b0805c65-28b0-4b65-b87a-829ae0b3d605@linux.ibm.com>","list_archive_url":null,"date":"2026-04-22T12:55:49","subject":"Re: [PATCH v5 03/10] hw/tpm: Add internal buffer state for chunking","submitter":{"id":75097,"url":"http://patchwork.ozlabs.org/api/people/75097/","name":"Stefan Berger","email":"stefanb@linux.ibm.com"},"content":"On 4/22/26 6:30 AM, Arun Menon wrote:\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> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\n> ---\n>   hw/tpm/tpm_crb.c | 33 +++++++++++++++++++++++++++++----\n>   1 file changed, 29 insertions(+), 4 deletions(-)\n> \n> diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c\n> index 7edfbf8f8a..e7ec9d0679 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> @@ -87,6 +90,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> @@ -136,9 +146,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> @@ -243,6 +255,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> @@ -309,6 +322,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> @@ -321,12 +337,21 @@ 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_clear_pointer(&s->command_buffer, g_byte_array_unref);\n> +    g_clear_pointer(&s->response_buffer, g_byte_array_unref);\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\nReviewed-by: Stefan Berger <stefanb@linux.ibm.com>","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 (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=CxVdXu8T;\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 4g0zk45lmGz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 22:56:12 +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 1wFX7g-0006TV-Fe; Wed, 22 Apr 2026 08:56:08 -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 <stefanb@linux.ibm.com>)\n id 1wFX7e-0006Nf-Rm\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 08:56:06 -0400","from mx0b-001b2d01.pphosted.com ([148.163.158.5])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <stefanb@linux.ibm.com>)\n id 1wFX7Y-0006wP-M4\n for qemu-devel@nongnu.org; Wed, 22 Apr 2026 08:56:06 -0400","from pps.filterd (m0353725.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63M1uh5O1820599; Wed, 22 Apr 2026 12:55:53 GMT","from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dpeu3k8tj-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Wed, 22 Apr 2026 12:55:52 +0000 (GMT)","from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 63MCoGmg006139;\n Wed, 22 Apr 2026 12:55:51 GMT","from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71])\n by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dpjky297a-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Wed, 22 Apr 2026 12:55:51 +0000 (GMT)","from smtpav05.dal12v.mail.ibm.com (smtpav05.dal12v.mail.ibm.com\n [10.241.53.104])\n by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63MCto9941419424\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Wed, 22 Apr 2026 12:55:50 GMT","from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 846955806A;\n Wed, 22 Apr 2026 12:55:50 +0000 (GMT)","from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id C6A1A58052;\n Wed, 22 Apr 2026 12:55:49 +0000 (GMT)","from [9.47.158.152] (unknown [9.47.158.152])\n by smtpav05.dal12v.mail.ibm.com (Postfix) with ESMTP;\n Wed, 22 Apr 2026 12:55:49 +0000 (GMT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n :content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=pp1; bh=HbTRHM\n FRf0mTNT6qJQarBXFh8cez21T5c5lTnNl8Yuk=; b=CxVdXu8TJuVTQnOeuY1kr4\n qp/IkNBPXWQmacn9fMsT52IWsApCGnFCqQJ7AhP7s3ZNBVdnavSNpOEWDoegPk4w\n dvjdbfswcoKKN97h/2TxyV1a7FHQfqfHkUHJQ4Tpoch667fza9BSTuKrMHMJqQSn\n T0+I5pt9AqdVU24mMnU8tEHRD59Ai/2enDVOzVgllDSLpcM02eYCsjwLEZuEFVcn\n nYzrP38SBLy05I5WGZ2klZisAv2AO/5D43aFvQ82jCjh3iQ9YRETePh49MAr29Rf\n xlIMM2egy3z1B0fbM1cSDR9jJnH9Fr6E/9gfBa1Khpf2pJmG+2KyOOBRAa8zF/hw\n ==","Message-ID":"<b0805c65-28b0-4b65-b87a-829ae0b3d605@linux.ibm.com>","Date":"Wed, 22 Apr 2026 08:55:49 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v5 03/10] hw/tpm: Add internal buffer state for chunking","To":"Arun Menon <armenon@redhat.com>, qemu-devel@nongnu.org","Cc":"Zhao Liu <zhao1.liu@intel.com>,\n Stefan Berger <stefanb@linux.vnet.ibm.com>,\n Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>,\n Fabiano Rosas <farosas@suse.de>, Igor Mammedov <imammedo@redhat.com>,\n marcandre.lureau@redhat.com,\n =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n \"Michael S. Tsirkin\" <mst@redhat.com>, Yanan Wang <wangyanan55@huawei.com>,\n Ani Sinha <anisinha@redhat.com>","References":"<20260422103018.123608-1-armenon@redhat.com>\n <20260422103018.123608-4-armenon@redhat.com>","Content-Language":"en-US","From":"Stefan Berger <stefanb@linux.ibm.com>","In-Reply-To":"<20260422103018.123608-4-armenon@redhat.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-TM-AS-GCONF":"00","X-Proofpoint-Reinject":"loops=2 maxloops=12","X-Proofpoint-GUID":"p7fvOH5KUFGfITfiltcJ1rTtnf7VK8Rh","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIyMDEyMyBTYWx0ZWRfX/sxH0xPJ17MG\n wgSt1dnJSSTc/ZskAuUPuSj2eIa+aaP1/3gHaHK7hXXUv+7WBe9eIgthUexk6YpHR6shfRmWEPP\n lzLu5EKQF6tNeFYoTNDcS8zL6VJz7urpMU8RCQemEWneDgkFMu2RlsWkZUm1Tu6y1GlNcfMS5yL\n W40bCdWRmaSNnYRc6wnvTkxlRC4pDDgJ6BybCjznr7slNiPgAXLThVIOmdJgKuffEDnkr1FQkAl\n +/1vSzLT/jlTuErVLHDIN1DmxQA9DjGTtvBMq6g5GS9Cex5SE3vancPm7e8ywdVXRxJZHZny4s1\n Ubb7K89io3BzbNlNmFqEpC82KHu00UpLEdh1MrEKOBH/D6LXVkvTjnaRqbLDBQnGxmiOUcqXHd0\n vaNK2KTGjfSr+8iO7J8xMwGFwXDIsW0SRl0osT1Hj2yDNPSyoOjhSvstX2FkZyfmGBR9DMha1Wb\n CLiA1X3TKbhIKNXkEvQ==","X-Authority-Analysis":"v=2.4 cv=a6kAM0SF c=1 sm=1 tr=0 ts=69e8c558 cx=c_pps\n a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17\n a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=20KFwNOVAAAA:8\n a=VnNF1IyMAAAA:8 a=xChQcTWAEkxHroGfpTYA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10","X-Proofpoint-ORIG-GUID":"nd9HcfGslOr-6Xbdr9GgwIyQNGlfGF0D","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-22_01,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0\n lowpriorityscore=0 impostorscore=0 clxscore=1015 phishscore=0\n priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604220123","Received-SPF":"pass client-ip=148.163.158.5;\n envelope-from=stefanb@linux.ibm.com;\n helo=mx0b-001b2d01.pphosted.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, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7,\n 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":"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"}}]