lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 093/599] mailbox: tegra-hsp: Flush whole channel
    Date
    From: Pekka Pessi <ppessi@nvidia.com>

    commit 60de2d2dc284e0dd1c2c897d08625bde24ef3454 upstream.

    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 <ppessi@nvidia.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Fixes: 91b1b1c3da8a ("mailbox: tegra-hsp: Add support for shared mailboxes")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/mailbox/tegra-hsp.c | 5 +++++
    1 file changed, 5 insertions(+)

    --- a/drivers/mailbox/tegra-hsp.c
    +++ b/drivers/mailbox/tegra-hsp.c
    @@ -410,6 +410,11 @@ static int tegra_hsp_mailbox_flush(struc
    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;
    }


    \
     
     \ /
      Last update: 2022-04-05 22:44    [W:2.563 / U:0.760 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site