From: Joakim Bech <joakim.bech@linaro.org>
To: Sumit Garg <sumit.garg@linaro.org>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Thirupathaiah Annapureddy <thiruan@microsoft.com>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
Sasha Levin <sashal@kernel.org>,
"peterhuewe@gmx.de" <peterhuewe@gmx.de>,
"jgg@ziepe.ca" <jgg@ziepe.ca>, "corbet@lwn.net" <corbet@lwn.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"linux-integrity@vger.kernel.org"
<linux-integrity@vger.kernel.org>,
Microsoft Linux Kernel List <linux-kernel@microsoft.com>,
"Bryan Kelly (CSI)" <bryankel@microsoft.com>,
"tee-dev@lists.linaro.org" <tee-dev@lists.linaro.org>,
"rdunlap@infradead.org" <rdunlap@infradead.org>
Subject: Re: [PATCH v7 1/2] fTPM: firmware TPM running in TEE
Date: Wed, 3 Jul 2019 16:16:02 +0200 [thread overview]
Message-ID: <20190703141602.fky5x5buuqdjw7wx@debby> (raw)
In-Reply-To: <CAFA6WYMvd1BVGppYM230Bd1XjO11uU4WQf-F+ZtmtpasP4AjxQ@mail.gmail.com>
On Wed, Jul 03, 2019 at 03:33:14PM +0530, Sumit Garg wrote:
> On Wed, 3 Jul 2019 at 13:42, Ilias Apalodimas
> <ilias.apalodimas@linaro.org> wrote:
> >
> > Hi Thirupathaiah,
> >
> > (+Joakim)
> >
> > On Wed, 3 Jul 2019 at 09:58, Ilias Apalodimas
> > <ilias.apalodimas@linaro.org> wrote:
> > >
> > > Hi Thirupathaiah,
> > > >
> > > > First of all, Thanks a lot for trying to test the driver.
> > > >
> > > np
> > >
> > > [...]
> > > > > I managed to do some quick testing in QEMU.
> > > > > Everything works fine when i build this as a module (using IBM's TPM 2.0
> > > > > TSS)
> > > > >
> > > > > - As module
> > > > > # insmod /lib/modules/5.2.0-rc1/kernel/drivers/char/tpm/tpm_ftpm_tee.ko
> > > > > # getrandom -by 8
> > > > > randomBytes length 8
> > > > > 23 b9 3d c3 90 13 d9 6b
> > > > >
> > > > > - Built-in
> > > > > # dmesg | grep optee
> > > > > ftpm-tee firmware:optee: ftpm_tee_probe:tee_client_open_session failed,
> > > > > err=ffff0008
> > > > This (0xffff0008) translates to TEE_ERROR_ITEM_NOT_FOUND.
> > > >
> > > > Where is fTPM TA located in the your test setup?
> > > > Is it stitched into TEE binary as an EARLY_TA or
> > > > Is it expected to be loaded during run-time with the help of user mode OP-TEE supplicant?
> > > >
> > > > My guess is that you are trying to load fTPM TA through user mode OP-TEE supplicant.
> > > > Can you confirm?
> > > I tried both
> > >
> >
> > Ok apparently there was a failure with my built-in binary which i
> > didn't notice. I did a full rebuilt and checked the elf this time :)
> >
> > Built as an earlyTA my error now is:
> > ftpm-tee firmware:optee: ftpm_tee_probe:tee_client_open_session
> > failed, err=ffff3024 (translates to TEE_ERROR_TARGET_DEAD)
> > Since you tested it on real hardware i guess you tried both
> > module/built-in. Which TEE version are you using?
> >
>
> > > > U-boot and Linux driver stacks work seamlessly without dependency on supplicant.
>
> Is this true?
>
> It looks like this fTPM driver can't work as a built-in driver. The
> reason seems to be secure storage access required by OP-TEE fTPM TA
> that is provided via OP-TEE supplicant that's not available during
> kernel boot.
>
> Snippet from ms-tpm-20-ref/Samples/ARM32-FirmwareTPM/optee_ta/fTPM/fTPM.c +145:
>
> // If we fail to open fTPM storage we cannot continue.
> if (_plat__NVEnable(NULL) == 0) {
> TEE_Panic(TEE_ERROR_BAD_STATE);
> }
>
> So it seems like this module will work as a loadable module only after
> OP-TEE supplicant is up.
>
This seems to be the same issues that I faced when trying to put
together a setup for Linaro Connect discussions. When compiling the fTPM
driver into the kernel (instead of a module) I saw mainly two issues.
1) fTPM driver seems to be probed before the TEE driver has been probed.
I temporary solved that by doing a late_initcall.
2) With the late_initcall hack applied, the TEE side was called
successfully (if the fTPM TA's is compiled as "early TAs", i.e.,
built into the TEE core iself), but as Sumit said, it got stock on
secure storage operations, since tee-supplicant, the userspace
process serving the TEE with storage access hasn't been started.
The first issue can(?)/should(?) be solved by some deferred probing
mechanism.
Regarding the second issue, is there a must to access secure storage
when Linux kernel is booting up? I suppose this is some kind of
initialization of the "NV" (adding TPM measurements?), but I guess it
should be possible to delay those calls to a later point, when
tee-supplicant is up and running and the first call to the TEE is made.
--
Regards,
Joakim
next prev parent reply other threads:[~2019-07-03 14:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-25 20:13 [PATCH v7 0/2] fTPM: firmware TPM running in TEE Sasha Levin
2019-06-25 20:13 ` [PATCH v7 1/2] " Sasha Levin
2019-06-26 23:31 ` Jarkko Sakkinen
2019-06-26 23:56 ` Sasha Levin
2019-06-27 13:17 ` Jarkko Sakkinen
2019-06-27 13:19 ` Jarkko Sakkinen
2019-06-27 13:30 ` Ilias Apalodimas
2019-06-27 16:32 ` Jarkko Sakkinen
2019-07-02 14:21 ` Ilias Apalodimas
2019-07-02 16:54 ` Thirupathaiah Annapureddy
2019-07-03 6:58 ` Ilias Apalodimas
2019-07-03 8:12 ` Ilias Apalodimas
2019-07-03 10:03 ` Sumit Garg
2019-07-03 14:16 ` Joakim Bech [this message]
2019-07-04 6:28 ` Thirupathaiah Annapureddy
2019-07-04 18:11 ` Ilias Apalodimas
2019-07-05 2:40 ` Thirupathaiah Annapureddy
2019-07-10 12:13 ` Ilias Apalodimas
2019-06-28 5:50 ` Sumit Garg
2019-06-29 15:01 ` Sasha Levin
2019-07-04 9:20 ` Jarkko Sakkinen
2019-06-25 20:13 ` [PATCH v7 2/2] fTPM: add documentation for ftpm driver Sasha Levin
2019-06-25 23:13 ` Randy Dunlap
2019-06-26 23:34 ` Jarkko Sakkinen
2019-06-26 23:59 ` Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190703141602.fky5x5buuqdjw7wx@debby \
--to=joakim.bech@linaro.org \
--cc=bryankel@microsoft.com \
--cc=corbet@lwn.net \
--cc=ilias.apalodimas@linaro.org \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=jgg@ziepe.ca \
--cc=linux-doc@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peterhuewe@gmx.de \
--cc=rdunlap@infradead.org \
--cc=sashal@kernel.org \
--cc=sumit.garg@linaro.org \
--cc=tee-dev@lists.linaro.org \
--cc=thiruan@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox