mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
tpm: Use new ptm_cap_n structure for PTM_GET_CAPABILITY
Use the new ptm_cap_n structure for getting the PTM_GET_CAPABILITY response from swtpm. Previously only 17 bits could possibly have been set in ptm_cap (uint64_t) in big endian order and those bits are now found in the 2nd 32bit word in the response in the caps field. This data structure makes it now clear that the 1st 32bit word carries the tpm_result like all the other response structures of all other commands do. The changes are taken from the swtpm project's tpm_ioctl.h. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
parent
95a16ee753
commit
312c540401
3 changed files with 21 additions and 8 deletions
|
@ -72,7 +72,7 @@ struct TPMEmulator {
|
|||
CharBackend ctrl_chr;
|
||||
QIOChannel *data_ioc;
|
||||
TPMVersion tpm_version;
|
||||
ptm_cap caps; /* capabilities of the TPM */
|
||||
uint32_t caps; /* capabilities of the TPM */
|
||||
uint8_t cur_locty_number; /* last set locality */
|
||||
Error *migration_blocker;
|
||||
|
||||
|
@ -239,13 +239,15 @@ static void tpm_emulator_handle_request(TPMBackend *tb, TPMBackendCmd *cmd,
|
|||
|
||||
static int tpm_emulator_probe_caps(TPMEmulator *tpm_emu)
|
||||
{
|
||||
ptm_cap_n cap_n;
|
||||
|
||||
if (tpm_emulator_ctrlcmd(tpm_emu, CMD_GET_CAPABILITY,
|
||||
&tpm_emu->caps, 0, sizeof(tpm_emu->caps)) < 0) {
|
||||
&cap_n, 0, sizeof(cap_n)) < 0) {
|
||||
error_report("tpm-emulator: probing failed : %s", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
tpm_emu->caps = be64_to_cpu(tpm_emu->caps);
|
||||
tpm_emu->caps = be32_to_cpu(cap_n.u.resp.caps);
|
||||
|
||||
trace_tpm_emulator_probe_caps(tpm_emu->caps);
|
||||
|
||||
|
@ -254,7 +256,7 @@ static int tpm_emulator_probe_caps(TPMEmulator *tpm_emu)
|
|||
|
||||
static int tpm_emulator_check_caps(TPMEmulator *tpm_emu)
|
||||
{
|
||||
ptm_cap caps = 0;
|
||||
uint32_t caps = 0;
|
||||
const char *tpm = NULL;
|
||||
|
||||
/* check for min. required capabilities */
|
||||
|
@ -527,8 +529,8 @@ static size_t tpm_emulator_get_buffer_size(TPMBackend *tb)
|
|||
static int tpm_emulator_block_migration(TPMEmulator *tpm_emu)
|
||||
{
|
||||
Error *err = NULL;
|
||||
ptm_cap caps = PTM_CAP_GET_STATEBLOB | PTM_CAP_SET_STATEBLOB |
|
||||
PTM_CAP_STOP;
|
||||
uint32_t caps = PTM_CAP_GET_STATEBLOB | PTM_CAP_SET_STATEBLOB |
|
||||
PTM_CAP_STOP;
|
||||
|
||||
if (!TPM_EMULATOR_IMPLEMENTS_ALL_CAPS(tpm_emu, caps)) {
|
||||
error_setg(&tpm_emu->migration_blocker,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue