tpm-backend: Move realloc_buffer() implementation to tpm-tis model
buffer reallocation is very unlikely to be backend specific. Hence move inside the tis. Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com> Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
parent
f59864ba3a
commit
d0c519bdff
|
@ -80,15 +80,6 @@ bool tpm_backend_had_startup_error(TPMBackend *s)
|
||||||
return s->had_startup_error;
|
return s->had_startup_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t tpm_backend_realloc_buffer(TPMBackend *s, TPMSizedBuffer *sb)
|
|
||||||
{
|
|
||||||
TPMBackendClass *k = TPM_BACKEND_GET_CLASS(s);
|
|
||||||
|
|
||||||
assert(k->ops->realloc_buffer);
|
|
||||||
|
|
||||||
return k->ops->realloc_buffer(sb);
|
|
||||||
}
|
|
||||||
|
|
||||||
void tpm_backend_deliver_request(TPMBackend *s)
|
void tpm_backend_deliver_request(TPMBackend *s)
|
||||||
{
|
{
|
||||||
g_thread_pool_push(s->thread_pool, (gpointer)TPM_BACKEND_CMD_PROCESS_CMD,
|
g_thread_pool_push(s->thread_pool, (gpointer)TPM_BACKEND_CMD_PROCESS_CMD,
|
||||||
|
|
|
@ -247,17 +247,6 @@ static int tpm_passthrough_reset_tpm_established_flag(TPMBackend *tb,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t tpm_passthrough_realloc_buffer(TPMSizedBuffer *sb)
|
|
||||||
{
|
|
||||||
size_t wanted_size = 4096; /* Linux tpm.c buffer size */
|
|
||||||
|
|
||||||
if (sb->size != wanted_size) {
|
|
||||||
sb->buffer = g_realloc(sb->buffer, wanted_size);
|
|
||||||
sb->size = wanted_size;
|
|
||||||
}
|
|
||||||
return sb->size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void tpm_passthrough_cancel_cmd(TPMBackend *tb)
|
static void tpm_passthrough_cancel_cmd(TPMBackend *tb)
|
||||||
{
|
{
|
||||||
TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
|
TPMPassthruState *tpm_pt = TPM_PASSTHROUGH(tb);
|
||||||
|
@ -435,7 +424,6 @@ static const TPMDriverOps tpm_passthrough_driver = {
|
||||||
.opts = tpm_passthrough_cmdline_opts,
|
.opts = tpm_passthrough_cmdline_opts,
|
||||||
.desc = "Passthrough TPM backend driver",
|
.desc = "Passthrough TPM backend driver",
|
||||||
.create = tpm_passthrough_create,
|
.create = tpm_passthrough_create,
|
||||||
.realloc_buffer = tpm_passthrough_realloc_buffer,
|
|
||||||
.reset = tpm_passthrough_reset,
|
.reset = tpm_passthrough_reset,
|
||||||
.cancel_cmd = tpm_passthrough_cancel_cmd,
|
.cancel_cmd = tpm_passthrough_cancel_cmd,
|
||||||
.get_tpm_established_flag = tpm_passthrough_get_tpm_established_flag,
|
.get_tpm_established_flag = tpm_passthrough_get_tpm_established_flag,
|
||||||
|
|
|
@ -963,6 +963,16 @@ static int tpm_tis_do_startup_tpm(TPMState *s)
|
||||||
return tpm_backend_startup_tpm(s->be_driver);
|
return tpm_backend_startup_tpm(s->be_driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void tpm_tis_realloc_buffer(TPMSizedBuffer *sb)
|
||||||
|
{
|
||||||
|
size_t wanted_size = 4096; /* Linux tpm.c buffer size */
|
||||||
|
|
||||||
|
if (sb->size != wanted_size) {
|
||||||
|
sb->buffer = g_realloc(sb->buffer, wanted_size);
|
||||||
|
sb->size = wanted_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the TPMVersion of the backend device being used
|
* Get the TPMVersion of the backend device being used
|
||||||
*/
|
*/
|
||||||
|
@ -1010,9 +1020,9 @@ static void tpm_tis_reset(DeviceState *dev)
|
||||||
tis->loc[c].state = TPM_TIS_STATE_IDLE;
|
tis->loc[c].state = TPM_TIS_STATE_IDLE;
|
||||||
|
|
||||||
tis->loc[c].w_offset = 0;
|
tis->loc[c].w_offset = 0;
|
||||||
tpm_backend_realloc_buffer(s->be_driver, &tis->loc[c].w_buffer);
|
tpm_tis_realloc_buffer(&tis->loc[c].w_buffer);
|
||||||
tis->loc[c].r_offset = 0;
|
tis->loc[c].r_offset = 0;
|
||||||
tpm_backend_realloc_buffer(s->be_driver, &tis->loc[c].r_buffer);
|
tpm_tis_realloc_buffer(&tis->loc[c].r_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
tpm_tis_do_startup_tpm(s);
|
tpm_tis_do_startup_tpm(s);
|
||||||
|
|
|
@ -84,8 +84,6 @@ struct TPMDriverOps {
|
||||||
/* start up the TPM on the backend */
|
/* start up the TPM on the backend */
|
||||||
int (*startup_tpm)(TPMBackend *t);
|
int (*startup_tpm)(TPMBackend *t);
|
||||||
|
|
||||||
size_t (*realloc_buffer)(TPMSizedBuffer *sb);
|
|
||||||
|
|
||||||
void (*reset)(TPMBackend *t);
|
void (*reset)(TPMBackend *t);
|
||||||
|
|
||||||
void (*cancel_cmd)(TPMBackend *t);
|
void (*cancel_cmd)(TPMBackend *t);
|
||||||
|
@ -139,16 +137,6 @@ int tpm_backend_startup_tpm(TPMBackend *s);
|
||||||
*/
|
*/
|
||||||
bool tpm_backend_had_startup_error(TPMBackend *s);
|
bool tpm_backend_had_startup_error(TPMBackend *s);
|
||||||
|
|
||||||
/**
|
|
||||||
* tpm_backend_realloc_buffer:
|
|
||||||
* @s: the backend
|
|
||||||
* @sb: the TPMSizedBuffer to re-allocated to the size suitable for the
|
|
||||||
* backend.
|
|
||||||
*
|
|
||||||
* This function returns the size of the allocated buffer
|
|
||||||
*/
|
|
||||||
size_t tpm_backend_realloc_buffer(TPMBackend *s, TPMSizedBuffer *sb);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tpm_backend_deliver_request:
|
* tpm_backend_deliver_request:
|
||||||
* @s: the backend to send the request to
|
* @s: the backend to send the request to
|
||||||
|
|
Loading…
Reference in New Issue