qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tpm: fixed be_buffer_size size in in tpm_crb


From: Stefan Berger
Subject: Re: [PATCH] tpm: fixed be_buffer_size size in in tpm_crb
Date: Sun, 26 Dec 2021 21:24:45 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0


On 12/25/21 07:38, Yuri Konotopov wrote:
Trying to boot VM with TPM 2.0 CRB in passthrough mode without this change
I got "Requested buffer size of 3968 is smaller than host TPM's fixed
buffer size of 4096".

I suppose the host has a TIS interface.

The reason it gives this message is that the response this TPM may send back could be 4096 bytes in size but the CRB of the VM can only catch 3968 bytes, so there's a mismatch. You may not be able to use the CRB in passthrough mode. I would try to have the VM use the TIS.

   Stefan


Looks like it can not be less than backend buffer size nor less than
CRB_CTRL_CMD_SIZE.

Signed-off-by: Yuri Konotopov <ykonotopov@gnome.org>
---
  hw/tpm/tpm_crb.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/tpm/tpm_crb.c b/hw/tpm/tpm_crb.c
index 58ebd1469c..8243645453 100644
--- a/hw/tpm/tpm_crb.c
+++ b/hw/tpm/tpm_crb.c
@@ -270,7 +270,7 @@ static void tpm_crb_reset(void *dev)
      s->regs[R_CRB_CTRL_RSP_SIZE] = CRB_CTRL_CMD_SIZE;
      s->regs[R_CRB_CTRL_RSP_ADDR] = TPM_CRB_ADDR_BASE + A_CRB_DATA_BUFFER;
- s->be_buffer_size = MIN(tpm_backend_get_buffer_size(s->tpmbe),
+    s->be_buffer_size = MAX(tpm_backend_get_buffer_size(s->tpmbe),
                              CRB_CTRL_CMD_SIZE);
if (tpm_backend_startup_tpm(s->tpmbe, s->be_buffer_size) < 0) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]