Commit 02e9bda8 authored by Stefan Berger's avatar Stefan Berger Committed by Jarkko Sakkinen
Browse files

tpm: ibmvtpm: Set TPM_OPS_AUTO_STARTUP flag on driver



Set the TPM_OPS_AUTO_STARTUP on the driver so that the ibmvtpm driver now
uses tpm2_auto_startup and tpm1_auto_startup like many other drivers do.
Remove tpm_get_timeouts, tpm2_get_cc_attrs_tbl, and tpm2_sessions_init
calls from it since these will all be called in tpm2_auto_startup and
tpm1_auto_startup.

The exporting of the tpm2_session_init symbol was only necessary while the
ibmvtpm driver was calling this function. Since this is not the case
anymore, remove this symbol from being exported.

What is new for the ibmvtpm driver is that now tpm2_do_selftest and
tpm1_do_selftest will be called that send commands to the TPM to perform
or continue its selftest. However, the firmware should already have sent
these commands so that the TPM will not do much work at this time.

Signed-off-by: default avatarStefan Berger <stefanb@linux.ibm.com>
Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
parent 341d041d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1390,5 +1390,4 @@ int tpm2_sessions_init(struct tpm_chip *chip)

	return rc;
}
EXPORT_SYMBOL(tpm2_sessions_init);
#endif /* CONFIG_TCG_TPM2_HMAC */
+1 −14
Original line number Diff line number Diff line
@@ -450,6 +450,7 @@ static bool tpm_ibmvtpm_req_canceled(struct tpm_chip *chip, u8 status)
}

static const struct tpm_class_ops tpm_ibmvtpm = {
	.flags = TPM_OPS_AUTO_STARTUP,
	.recv = tpm_ibmvtpm_recv,
	.send = tpm_ibmvtpm_send,
	.cancel = tpm_ibmvtpm_cancel,
@@ -690,20 +691,6 @@ static int tpm_ibmvtpm_probe(struct vio_dev *vio_dev,
	if (!strcmp(id->compat, "IBM,vtpm20"))
		chip->flags |= TPM_CHIP_FLAG_TPM2;

	rc = tpm_get_timeouts(chip);
	if (rc)
		goto init_irq_cleanup;

	if (chip->flags & TPM_CHIP_FLAG_TPM2) {
		rc = tpm2_get_cc_attrs_tbl(chip);
		if (rc)
			goto init_irq_cleanup;

		rc = tpm2_sessions_init(chip);
		if (rc)
			goto init_irq_cleanup;
	}

	return tpm_chip_register(chip);
init_irq_cleanup:
	do {