Re: [PATCH 1/2] tpm, tpm_tis: Handle interrupt storm

Lino Sanfilippo
2023-05-23T20:50:33Z

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@kunbus.com>
>>>
>>> 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@redhat.com/
>>> https://lore.kernel.org/linux-integrity/d80b180a569a9f068d3a2614f062cfa3a78af5a6.camel@kernel.org/
>>>
>>> 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