RE: [PATCH v2 0/2] char: tpm: add new driver for tpm i2c ptp

From: Benoit HOUYERE
Date: Fri Sep 06 2019 - 08:16:55 EST


Hi Steffen,

We have performed test against your simple implementation. For basic test it was ok, however for stress test, your implementation does not take in account NACK and it failed.

In PTP document, in chapter7.2.2.1.2 (Register write with address NACK), it indicates : "it's a good practice to repeat the current cycle using the correct I2C device address".

In other implementation,
https://patchwork.kernel.org/patch/8628681/

tpm_tis_i2c_read_bytes and tpm_tis_i2c_write_bytes handle NACK with a for loop.

+ for (i = 0; i < TPM_RETRY && ret < 0; i++) {
+ tpm_tis_i2c_sleep_guard_time(phy, TPM_I2C_SEND);
+ ret = i2c_master_send(phy->client, &i2c_reg, 1);
+ mod_timer(&phy->guard_timer, phy->guard_time);
+ }
+
+ if (ret < 0)
+ goto exit;
+
+ ret = -1;
+ for (i = 0; i < TPM_RETRY && ret < 0; i++) {
+ tpm_tis_i2c_sleep_guard_time(phy, TPM_I2C_RECV);
+ ret = i2c_master_recv(phy->client, result, len * size);
+ mod_timer(&phy->guard_timer, phy->guard_time);
+ }

I think that we should implement it before to include tpm_tis_i2c.c officially.

Thanks in advance,

Best Regards,

Benoit

-----Original Message-----
From: Alexander Steffen <Alexander.Steffen@xxxxxxxxxxxx>
Sent: mardi 30 juillet 2019 19:42
To: Benoit HOUYERE <benoit.houyere@xxxxxx>; Eyal.Cohen@xxxxxxxxxxx; jarkko.sakkinen@xxxxxxxxxxxxxxx; tmaimon77@xxxxxxxxx
Cc: oshrialkoby85@xxxxxxxxx; robh+dt@xxxxxxxxxx; mark.rutland@xxxxxxx; peterhuewe@xxxxxx; jgg@xxxxxxxx; arnd@xxxxxxxx; gregkh@xxxxxxxxxxxxxxxxxxx; oshri.alkoby@xxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-integrity@xxxxxxxxxxxxxxx; gcwilson@xxxxxxxxxx; kgoldman@xxxxxxxxxx; nayna@xxxxxxxxxxxxxxxxxx; Dan.Morav@xxxxxxxxxxx; oren.tanami@xxxxxxxxxxx; Christophe Ricard (christophe.ricard@xxxxxxxxx) <christophe.ricard@xxxxxxxxx>; Elena WILLIS <elena.willis@xxxxxx>; Olivier COLLART <olivier.collart@xxxxxx>
Subject: Re: [PATCH v2 0/2] char: tpm: add new driver for tpm i2c ptp

Hi Benoit,

good to see you're still around.

On 30.07.2019 10:39, Benoit HOUYERE wrote:
> Hi Alexander, Jarkko and Eyal,
>
> A first I2C TCG patch (tpm_tis_i2c.c) has been proposed in the same time as tpm_tis_spi.c by Christophe 3 years ago.
>
> https://patchwork.kernel.org/patch/8628681/

Thanks for mentioning this. I forgot it exists, since it was still on the old mailing list.

> At the time, we have had two concerns :
> 1) I2C TPM component number, in the market, compliant with new I2C TCG specification to validate new I2C driver.
> 2) Lots changing was already provided by tpm_tis_spi.c on 4.8.
>
> That's why Tpm_tis_i2c.c has been postponed.
>
> Tpm_tis_spi Linux driver is now robust, if we have several different I2C TPM solutions today to validate a tpm_tis_i2c driver, I 'm ready to contribute to it for validation (STmicro TPM) or propose a solution compatible on 5.1 linux driver if needed under timeframe proposed (second half of august).

Could you run your tests against the simple implementation that I posted a while ago (https://patchwork.kernel.org/cover/11049365/) and provide your feedback? Since it is already based on the current tpm_tis_core, it is probably easier to integrate necessary changes there.

By the way, has it gotten any easier in the meantime to get hold of your TPMs to use them for kernel tests?

Alexander