From: Pekka Pessi <[email protected]>
The txdone can re-fill the mailbox. Keep polling the mailbox during the
flush until all the messages have been delivered.
This fixes an issue with the Tegra Combined UART (TCU) where output can
get truncated under high traffic load.
Signed-off-by: Pekka Pessi <[email protected]>
Tested-by: Jon Hunter <[email protected]>
Fixes: 91b1b1c3da8a ("mailbox: tegra-hsp: Add support for shared mailboxes")
Cc: [email protected]
Signed-off-by: Thierry Reding <[email protected]>
---
Changes in v2:
- add Fixes: line
- Cc stable
drivers/mailbox/tegra-hsp.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
index acd0675da681..78f7265039c6 100644
--- a/drivers/mailbox/tegra-hsp.c
+++ b/drivers/mailbox/tegra-hsp.c
@@ -412,6 +412,11 @@ static int tegra_hsp_mailbox_flush(struct mbox_chan *chan,
value = tegra_hsp_channel_readl(ch, HSP_SM_SHRD_MBOX);
if ((value & HSP_SM_SHRD_MBOX_FULL) == 0) {
mbox_chan_txdone(chan, 0);
+
+ /* Wait until channel is empty */
+ if (chan->active_req != NULL)
+ continue;
+
return 0;
}
--
2.35.1
Hi Jassi,
On 02/03/2022 15:04, Thierry Reding wrote:
> From: Pekka Pessi <[email protected]>
>
> The txdone can re-fill the mailbox. Keep polling the mailbox during the
> flush until all the messages have been delivered.
>
> This fixes an issue with the Tegra Combined UART (TCU) where output can
> get truncated under high traffic load.
>
> Signed-off-by: Pekka Pessi <[email protected]>
> Tested-by: Jon Hunter <[email protected]>
> Fixes: 91b1b1c3da8a ("mailbox: tegra-hsp: Add support for shared mailboxes")
> Cc: [email protected]
> Signed-off-by: Thierry Reding <[email protected]>
> ---
> Changes in v2:
> - add Fixes: line
> - Cc stable
>
> drivers/mailbox/tegra-hsp.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
> index acd0675da681..78f7265039c6 100644
> --- a/drivers/mailbox/tegra-hsp.c
> +++ b/drivers/mailbox/tegra-hsp.c
> @@ -412,6 +412,11 @@ static int tegra_hsp_mailbox_flush(struct mbox_chan *chan,
> value = tegra_hsp_channel_readl(ch, HSP_SM_SHRD_MBOX);
> if ((value & HSP_SM_SHRD_MBOX_FULL) == 0) {
> mbox_chan_txdone(chan, 0);
> +
> + /* Wait until channel is empty */
> + if (chan->active_req != NULL)
> + continue;
> +
> return 0;
> }
>
Any feedback on this? Can we queue this up for v5.18?
Thanks
Jon
--
nvpublic
On 10/03/2022 16:51, Jon Hunter wrote:
> Hi Jassi,
>
> On 02/03/2022 15:04, Thierry Reding wrote:
>> From: Pekka Pessi <[email protected]>
>>
>> The txdone can re-fill the mailbox. Keep polling the mailbox during the
>> flush until all the messages have been delivered.
>>
>> This fixes an issue with the Tegra Combined UART (TCU) where output can
>> get truncated under high traffic load.
>>
>> Signed-off-by: Pekka Pessi <[email protected]>
>> Tested-by: Jon Hunter <[email protected]>
>> Fixes: 91b1b1c3da8a ("mailbox: tegra-hsp: Add support for shared
>> mailboxes")
>> Cc: [email protected]
>> Signed-off-by: Thierry Reding <[email protected]>
>> ---
>> Changes in v2:
>> - add Fixes: line
>> - Cc stable
>>
>> drivers/mailbox/tegra-hsp.c | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
>> index acd0675da681..78f7265039c6 100644
>> --- a/drivers/mailbox/tegra-hsp.c
>> +++ b/drivers/mailbox/tegra-hsp.c
>> @@ -412,6 +412,11 @@ static int tegra_hsp_mailbox_flush(struct
>> mbox_chan *chan,
>> value = tegra_hsp_channel_readl(ch, HSP_SM_SHRD_MBOX);
>> if ((value & HSP_SM_SHRD_MBOX_FULL) == 0) {
>> mbox_chan_txdone(chan, 0);
>> +
>> + /* Wait until channel is empty */
>> + if (chan->active_req != NULL)
>> + continue;
>> +
>> return 0;
>> }
>
>
> Any feedback on this? Can we queue this up for v5.18?
Feel free to add my ...
Reviewed-by: Jon Hunter <[email protected]>
Jon
--
nvpublic
Jassi,
On 10/03/2022 17:37, Jon Hunter wrote:
>
>
> On 10/03/2022 16:51, Jon Hunter wrote:
>> Hi Jassi,
>>
>> On 02/03/2022 15:04, Thierry Reding wrote:
>>> From: Pekka Pessi <[email protected]>
>>>
>>> The txdone can re-fill the mailbox. Keep polling the mailbox during the
>>> flush until all the messages have been delivered.
>>>
>>> This fixes an issue with the Tegra Combined UART (TCU) where output can
>>> get truncated under high traffic load.
>>>
>>> Signed-off-by: Pekka Pessi <[email protected]>
>>> Tested-by: Jon Hunter <[email protected]>
>>> Fixes: 91b1b1c3da8a ("mailbox: tegra-hsp: Add support for shared
>>> mailboxes")
>>> Cc: [email protected]
>>> Signed-off-by: Thierry Reding <[email protected]>
>>> ---
>>> Changes in v2:
>>> - add Fixes: line
>>> - Cc stable
>>>
>>> drivers/mailbox/tegra-hsp.c | 5 +++++
>>> 1 file changed, 5 insertions(+)
>>>
>>> diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
>>> index acd0675da681..78f7265039c6 100644
>>> --- a/drivers/mailbox/tegra-hsp.c
>>> +++ b/drivers/mailbox/tegra-hsp.c
>>> @@ -412,6 +412,11 @@ static int tegra_hsp_mailbox_flush(struct
>>> mbox_chan *chan,
>>> value = tegra_hsp_channel_readl(ch, HSP_SM_SHRD_MBOX);
>>> if ((value & HSP_SM_SHRD_MBOX_FULL) == 0) {
>>> mbox_chan_txdone(chan, 0);
>>> +
>>> + /* Wait until channel is empty */
>>> + if (chan->active_req != NULL)
>>> + continue;
>>> +
>>> return 0;
>>> }
>>
>>
>> Any feedback on this? Can we queue this up for v5.18?
>
> Feel free to add my ...
>
> Reviewed-by: Jon Hunter <[email protected]>
Any feedback?
Jon
--
nvpublic
On Tue, Mar 22, 2022 at 1:29 PM Jon Hunter <[email protected]> wrote:
>
> Jassi,
> >
> > Reviewed-by: Jon Hunter <[email protected]>
> Any feedback?
>
https://git.linaro.org/landing-teams/working/fujitsu/integration.git/commit/?h=mailbox-for-next&id=60de2d2dc284e0dd1c2c897d08625bde24ef3454
thnx