On 23.05.23 21:00, Jarkko Sakkinen wrote: > ATTENTION: This e-mail is from an external sender. Please check attachments and links before opening e.g. with mouseover. > > > On Tue May 23, 2023 at 9:53 PM EEST, Jarkko Sakkinen wrote: >> On Mon May 22, 2023 at 5:31 PM EEST, Lino Sanfilippo wrote: >>> From: Lino Sanfilippo <l.sanfilippo@xxxxxxxxxx> >>> >>> Commit e644b2f498d2 ("tpm, tpm_tis: Enable interrupt test") enabled >>> interrupts instead of polling on all capable TPMs. Unfortunately, on some >>> products the interrupt line is either never asserted or never deasserted. >>> >>> The former causes interrupt timeouts and is detected by >>> tpm_tis_core_init(). The latter results in interrupt storms. >>> >>> Recent reports concern the Lenovo ThinkStation P360 Tiny, Lenovo ThinkPad >>> L490 and Inspur NF5180M6: >>> >>> https://lore.kernel.org/linux-integrity/20230511005403.24689-1-jsnitsel@xxxxxxxxxx/ >>> https://lore.kernel.org/linux-integrity/d80b180a569a9f068d3a2614f062cfa3a78af5a6.camel@xxxxxxxxxx/ >>> >>> The current approach to avoid those storms is to disable interrupts by >>> adding a DMI quirk for the concerned device. >>> >>> However this is a maintenance burden in the long run, so use a generic >>> approach: >> >> I'm trying to comprehend how you evaluate, how big maintenance burden >> this would be. Adding even a few dozen table entries is not a >> maintenance burden. >> >> On the other hand any new functionality is objectively a maintanance >> burden of some measure (applies to any functionality). So how do we know >> that taking this change is less of a maintenance burden than just add >> new table entries, as they come up? > > I feel also a bit resistant because leaf driver framework is really > a wrong location in the kernel tree for IRQ storm detection. > > It would be better to have it signaled above the TPM driver, and the > driver would then just act on it. > I agree. But currently I do not see how to achieve this as there is no way to let a driver be informed about a detected interrupt storm. So the only solution I see for now is to implement it in the driver itself. Regards, Lino