From: Mikko Perttunen <cyndis@kapsi.fi>
To: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Mikko Perttunen <mperttunen@nvidia.com>,
Greg KH <gregkh@linuxfoundation.org>,
Thierry Reding <thierry.reding@gmail.com>,
Jon Hunter <jonathanh@nvidia.com>,
Devicetree List <devicetree@vger.kernel.org>,
linux-serial@vger.kernel.org, linux-tegra@vger.kernel.org, ",
linux-arm-kernel"@lists.infradead.org,
srv_heupstream <linux-mediatek@lists.infradead.org>,
srv_heupstream <linux-arm-kernel@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3 3/8] mailbox: Add transmit done by blocking option
Date: Thu, 9 Aug 2018 11:49:19 +0300 [thread overview]
Message-ID: <b3045f85-eacb-a5ec-1690-b9c63d0f3373@kapsi.fi> (raw)
In-Reply-To: <a57fccaa-fcfe-6611-45a5-8c224f4ee2b6@kapsi.fi>
Here's my current code:
https://github.com/cyndis/linux/commits/wip/t194-tcu-4
"fixup! mailbox: tegra-hsp: Add support for shared mailboxes" splits up
the controller into two. "tegra-hsp: use polling" changes it to use polling.
There are two lines in the top patch with comments:
- at the end of tegra_hsp_mailbox_send_data, I left a "while
(!tegra_hsp_mailbox_last_tx_done(chan));". Without it I wasn't able to
see even a few garbled characters in the output.
- as mentioned, if I enable tx_block on the client side, I get a BUG:
scheduling while atomic. I assume this gets printed through the earlycon
as it's printing out correctly.
Thanks,
Mikko
On 08.08.2018 17:46, Mikko Perttunen wrote:
> On 08/08/2018 05:39 PM, Jassi Brar wrote:
>> On Wed, Aug 8, 2018 at 8:04 PM, Mikko Perttunen <cyndis@kapsi.fi> wrote:
>>>
>>>
>>> On 08/08/2018 05:10 PM, Jassi Brar wrote:
>>>>
>>>> On Wed, Aug 8, 2018 at 5:08 PM, Mikko Perttunen <cyndis@kapsi.fi>
>>>> wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 04.08.2018 13:45, Mikko Perttunen wrote:
>>>>>>
>>>>>>
>>>>>> On 08/03/2018 03:54 PM, Jassi Brar wrote:
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jul 2, 2018 at 5:10 PM, Mikko Perttunen
>>>>>>> <mperttunen@nvidia.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Add a new TXDONE option, TXDONE_BY_BLOCK. With this option, the
>>>>>>>> send_data function of the mailbox driver is expected to block until
>>>>>>>> the message has been sent. The new option is used with the Tegra
>>>>>>>> Combined UART driver to minimize unnecessary overhead when
>>>>>>>> transmitting
>>>>>>>> data.
>>>>>>>>
>>>>>>> 1) TXDONE_BY_BLOCK flag :-
>>>>>>> Have you tried setting the flag
>>>>>>> mbox_chan->mbox_client->tx_block
>>>>>>> ?
>>>>>>
>>>>>>
>>>>>>
>>>>>> No - I suppose I should have done that. I'm a bit concerned about
>>>>>> overhead
>>>>>> as send_data may be called thousands of times per second, so I
>>>>>> tried to
>>>>>> make
>>>>>> it as close as possible to the downstream driver that just pokes the
>>>>>> mailbox
>>>>>> register directly.
>>>>>
>>>>>
>>>>>
>>>>> I tried using polling in the mailbox framework. Some printing is done
>>>>> from
>>>>> atomic context so it seems tx_block cannot be used -
>>>>> wait_for_completion_timeout understandably does not work in atomic
>>>>> context.
>>>>> I also tried without tx_block, in which case I got some horribly
>>>>> garbled
>>>>> output, but "Try increasing MBOX_TX_QUEUE_LEN" was readable there.
>>>>>
>>>>> Any opinions?
>>>>>
>>>> The problems arise because your hardware (SM) supports TXDONE_BY_POLL,
>>>> but your client drives it by TXDONE_BY_ACK because the older DB
>>>> channels are so.
>>>>
>>>> Please populate SM channels as a separate controller than DB.
>>>> The DB controller, as is, run by ACK method.
>>>> The SM controller should be run by polling, i.e, set txdone_poll =
>>>> true and the poll period small enough. The virtual tty client driver
>>>> should be able to safely set tx_block from appropriate context.
>>>>
>>>
>>> Sorry, I should have clarified that I already split up the
>>> controllers. The
>>> SM controller has txdone_poll = true. I didn't adjust txpoll_period so I
>>> guess it's zero.
>>>
>> Can you please share your code (controller and client) ? Maybe offline
>> if you wish.
>>
>
> I'll upload a git branch tomorrow -- I'm not at the machine with the
> code now.
>
> Mikko
> --
> To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-08-09 8:49 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-02 11:40 [PATCH v3 0/8] Tegra Combined UART driver Mikko Perttunen
2018-07-02 11:40 ` [PATCH v3 1/8] dt-bindings: tegra186-hsp: Add shared interrupts Mikko Perttunen
2018-07-02 12:37 ` Thierry Reding
2018-07-02 11:40 ` [PATCH v3 2/8] dt-bindings: serial: Add bindings for nvidia,tegra194-tcu Mikko Perttunen
2018-07-02 12:51 ` Thierry Reding
2018-07-02 11:40 ` [PATCH v3 3/8] mailbox: Add transmit done by blocking option Mikko Perttunen
2018-07-02 13:09 ` Thierry Reding
2018-07-10 15:49 ` Thierry Reding
2018-08-03 12:54 ` Jassi Brar
2018-08-04 10:45 ` Mikko Perttunen
2018-08-08 11:38 ` Mikko Perttunen
2018-08-08 14:10 ` Jassi Brar
2018-08-08 14:34 ` Mikko Perttunen
2018-08-08 14:39 ` Jassi Brar
2018-08-08 14:46 ` Mikko Perttunen
2018-08-09 8:49 ` Mikko Perttunen [this message]
2018-08-09 9:26 ` Jassi Brar
2018-07-02 11:40 ` [PATCH v3 4/8] mailbox: tegra-hsp: Refactor in preparation of mailboxes Mikko Perttunen
2018-07-02 13:12 ` Thierry Reding
2018-07-02 11:40 ` [PATCH v3 5/8] mailbox: tegra-hsp: Add support for shared mailboxes Mikko Perttunen
2018-07-02 13:13 ` Thierry Reding
2018-07-02 11:40 ` [PATCH v3 6/8] serial: Add Tegra Combined UART driver Mikko Perttunen
2018-07-02 13:18 ` Thierry Reding
2018-07-02 13:30 ` Mikko Perttunen
2018-07-02 13:47 ` Thierry Reding
2018-07-03 6:40 ` Mikko Perttunen
2018-07-02 11:40 ` [PATCH v3 7/8] arm64: tegra: Add nodes for tcu on Tegra194 Mikko Perttunen
2018-07-02 11:40 ` [PATCH v3 8/8] arm64: tegra: Mark tcu as primary serial port on Tegra194 P2888 Mikko Perttunen
2018-07-02 14:03 ` [PATCH v3 0/8] Tegra Combined UART driver Thierry Reding
2018-07-02 14:07 ` Greg KH
2018-07-02 14:17 ` Thierry Reding
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b3045f85-eacb-a5ec-1690-b9c63d0f3373@kapsi.fi \
--to=cyndis@kapsi.fi \
--cc=", linux-arm-kernel"@lists.infradead.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=jassisinghbrar@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mperttunen@nvidia.com \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome