Re: [PATCH] tpm_tis_core: Set TPM_CHIP_FLAG_IRQ before probing for interrupts
From: Jarkko Sakkinen <hidden>
Date: 2019-09-07 21:21:50
Also in:
linux-integrity, lkml
From: Jarkko Sakkinen <hidden>
Date: 2019-09-07 21:21:50
Also in:
linux-integrity, lkml
On Fri, 2019-09-06 at 14:37 +0200, Jan Lübbe wrote:
This is due to the SPI accesses performed by tis_int_handler (which will sleep). Switching to devm_request_threaded_irq fixes this and leads to a successful IRQ probe.
Aah, right through tpm_tis_read32/write32(). This is definitely a new regression. Thanks for reporting this! This was completely missed when the support for other than TCG MMIO was implemented for the TIS driver. This should have a patch of it own with your reported-by unless you care to send bug fix for it.
But: It seems that the IRQ is not acked correctly, as the interrupt line stays low. I suspect this is because the tpm_chip_stop from http://git.infradead.org/users/jjs/linux-tpmdd.git/commitdiff/9b558deab2c5d7dc23d5f7a4064892ede482ad32 happens before the threaded handler runs. I'm currently unable to verify that though, as my build machine's disk just died. :/
I cannot recall all the nyances related to interrupt probing but with a quick look I wonder why it does not utilize int_queue. Then tpm_chip_stop() could be done synchronously.
Regards, Jan
/Jarkko