From: Mikko Perttunen
> Sent: 11 January 2021 13:56
>
> Upon a communication error, the interrupt handler can call
> tegra_i2c_disable_packet_mode. This causes a sleeping poll to happen
> unless the current transaction was marked atomic. Since
> tegra_i2c_disable_packet_mode is only called from the interrupt path,
> make it use atomic waiting always.
Spin-waiting in an ISR for anything that it makes sense to do
a sleep-wait for at other times is badly broken design.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Agreed that this is possibly not optimal, but this patch simply returns
the behavior to what it was before "i2c: tegra: Support atomic
transfers", fixing the overt issue.
Design fixes can be considered later, in a non-stable patch.
Mikko
On 1/11/21 4:31 PM, David Laight wrote:
> From: Mikko Perttunen
>> Sent: 11 January 2021 13:56
>>
>> Upon a communication error, the interrupt handler can call
>> tegra_i2c_disable_packet_mode. This causes a sleeping poll to happen
>> unless the current transaction was marked atomic. Since
>> tegra_i2c_disable_packet_mode is only called from the interrupt path,
>> make it use atomic waiting always.
>
> Spin-waiting in an ISR for anything that it makes sense to do
> a sleep-wait for at other times is badly broken design.
>
> David
>
> -
> Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
> Registration No: 1397386 (Wales)
>