On Tue, Mar 24, 2026 at 11:42:40PM +0530, Arun Menon wrote: > Post-quantum cryptographic (PQC) algorithms can require buffer sizes that > exceed the physical capacity of the TPM's Command/Response Buffer (CRB). > To support these larger payloads, the TPM 2.0 CRB specification [1] > allows for data chunking when the physical MMIO window is smaller than > the required buffer size. > > To support this protocol, the TPM driver must be able to detect the > chunking capability, and signal the backend using specific start > method flags, also known as the control area start register bits. > > As per sections 6.4.2.2 and 6.5.3.9 of the specification document [1] > Add 2 new bit flags to the existing enum crb_start and add the > capability bit. > - CRB_INTF_CAP_CRB_CHUNK: A capability bit used to detect if the backend > supports chunking. > - CRB_START_NEXT_CHUNK: A control bit to signal the TPM to consume the > current command buffer, or to get the next chunk from the response > buffer. > - CRB_START_RESP_RETRY: A control bit to signal retransmission of a > response buffer. > > [1] > https://trustedcomputinggroup.org/wp-content/uploads/PC-Client-Specific-Platform-TPM-Profile-for-TPM-2p0-v1p07_rc1_121225.pdf > > Signed-off-by: Arun Menon <[email protected]> > --- > drivers/char/tpm/tpm_crb.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c > index 6c25305c256ef..67c0061d4cab7 100644 > --- a/drivers/char/tpm/tpm_crb.c > +++ b/drivers/char/tpm/tpm_crb.c > @@ -56,12 +56,18 @@ enum crb_ctrl_sts { > > enum crb_start { > CRB_START_INVOKE = BIT(0), > + CRB_START_RESP_RETRY = BIT(1), > + CRB_START_NEXT_CHUNK = BIT(2), > }; > > enum crb_cancel { > CRB_CANCEL_INVOKE = BIT(0), > }; > > +enum crb_intf { > + CRB_INTF_CAP_CRB_CHUNK = BIT(10), > +}; > + > struct crb_regs_head { > u32 loc_state; > u32 reserved1; > -- > 2.53.0 >
Reviewed-by: Jarkko Sakkinen <[email protected]> BR, Jarkko

