On Tue Nov 12 19, Stefan Berger wrote:The disable_interrupts() should be called to reset the flag if, while probing, the interrupt handler wasn't called. Maybe that t490s returns either via this path
On 11/11/19 10:36 PM, Jerry Snitselaar wrote:
Question about 1ea32c83c699 ("tpm_tis_core: Set TPM_CHIP_FLAG_IRQ before probing for interrupts").I set this flag for the TIS because it wasn't set anywhere else. tpm_tis_send() wouldn't set the flag but go via the path:
Doesn't tpm_tis_send set this flag, and setting it here in tpm_tis_core_init short circuits what
tpm_tis_send was doing before? There is a bug report of an interrupt storm from a tpm on a t490s laptop
with the Fedora 31 kernel (5.3), and I'm wondering if this change could cause that. Before they got
the warning about interrupts not working, and using polling instead.
if (!(chip->flags & TPM_CHIP_FLAG_IRQ) || priv->irq_tested)
return tpm_tis_send_main(chip, buf, len);
the only other line for the TIS to set the IRQ flag was in the same function further below, though that wouldn't be reached due to the above:
[...]
priv->irq = irq;
chip->flags |= TPM_CHIP_FLAG_IRQ;
Stefan
Ugh, you're right I was reading that as ! around both the flag and priv->irq_tested.
Should the flag be cleared if tpm_tis_probe_irq_single fails prior to calling
tpm_tis_gen_interrupt?