On 12/09/2017 12:16 AM, Alexander Steffen wrote:
Disclaimer: This is RFC because unfortunately I do not have the time to bring it up to the usual standards. But from lying around on my hard disk it definitely won't improve, so I've decided to publish it now, to get at least some feedback or maybe for somebody else to pick it up. Since the work began some time ago, it is probably not rebased against the current state (but hopefully still applies). This is a collection of all the fixes I made during the investigation of the problems with the "ignore burstcount" change. These are mainly fixes for the wait state handling in tpm_tis_spi, that probably was not really tested so far, since the previous implementation avoided wait states as far as possible. It also includes changes to tpm_tis_core, so that it follows the specification more closely. Finally, I've included a rebased version of the original "ignore burstcount" patch. Together, those patches pass all my tests and also each intermediate step is fine (so that bisecting still works).
Thanks Alex for debugging and fixing. Sorry, I haven't been able to look yet because was mostly on vacation most of the time in last few weeks and would be for few more days in next two weeks.
Thanks & Regards, - Nayna
Alexander Steffen (8): tpm_tis_core: clean up whitespace tpm_tis_core: access single TIS registers before doing complex transfers tpm_tis_core: correctly wait for flags to become zero tpm_tis_core: send all data in single operation tpm_tis_core: use XDATA_FIFO for transfers if available tpm_tis_spi: fix sending wrong data during wait state handling tpm_tis_spi: release CS line when wait state handling fails tpm_tis_spi: add delay between wait state retries Nayna Jain (1): tpm: ignore burstcount to improve tpm_tis send() performance drivers/char/tpm/tpm_tis_core.c | 131 ++++++++++++++++++++-------------------- drivers/char/tpm/tpm_tis_core.h | 26 ++++---- drivers/char/tpm/tpm_tis_spi.c | 21 +++++-- 3 files changed, 95 insertions(+), 83 deletions(-)