Re: [tpmdd-devel] [PATCH] TPM: Issue TPM_STARTUP at driver load ifthe TPM has not been started

From: Jason Gunthorpe
Date: Mon Oct 01 2012 - 12:15:37 EST


On Mon, Oct 01, 2012 at 09:17:28AM +0000, Peter.Huewe@xxxxxxxxxxxx wrote:
> Hi Jason,
>
> > The TPM will respond to TPM_GET_CAP with TPM_ERR_INVALID_POSTINIT if
> > TPM_STARTUP has not been issued. This will result in the TPM driver
> > failing to load and no way to recover. Detect this and automatically
> > issue TPM_STARTUP.
>
> > This is for embedded applications where the kernel is the first thing
> > to touch the TPM.
>
> Thanks for working on this.
> I also thought about this scenario quite often.
>
> Shouldn't we then also add a TpmStartup(ST_STATE) in case of a resume?
> rc=GetCapability()
> if(rc==INVALID_POSTINIT)
> tpm_transmit ("TPM_STARTUP(ST_STATE)")...

I'm not familiar enough with how the power management flow works with
the TPM to do this. I don't think that can be the general case
because:

3. If stType = TPM_ST_STATE
a. If the TPM has no state to restore, the TPM MUST set the internal
state such that it returns TPM_FAILEDSELFTEST to all subsequent
commands.

So you need to know a save state exists in the TPM before attempting
the command?

Would you agree that CLEAR is appropriate for an initial driver
attach on probe?

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/