On Wed, 3 Jul 2019 at 13:42, Ilias Apalodimas <ilias.apalodimas@xxxxxxxxxx> wrote: > > Hi Thirupathaiah, > > (+Joakim) > > On Wed, 3 Jul 2019 at 09:58, Ilias Apalodimas > <ilias.apalodimas@xxxxxxxxxx> 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. -Sumit > Thanks > /Ilias