[RFC] mipi-i3c-hci: Support for DMA Ring Pipelining / High-throughput Streaming

Sam Agazaryan <[email protected]>
Newsgroups org.infradead.lists.linux-i3c
Message-ID <CAHreonE1UF=BJjeQH_i0jjAEMBb8OALeTKoxPBcrRwLZWq=p0w@mail.gmail.com>
Hello all,

I am working on a project using the mipi-i3c-hci driver that involves
large packet bursts (exceeding the physical hardware DMA ring size,
such as large MCTP-over-I3C payloads).

I noticed that the current driver implementation treats these as
discrete batches.

I am considering implementing a ring pipelining or DMA streaming
mechanism to allow for asynchronous refills while the ring is running.
This would leverage the
standard ENQ_PTR doorbell mechanism (per MIPI HCI v1.2, Section 6.8.2)
to continuously feed the hardware. I figured in that case it may be
worth while to see how the upstream community feels about this
feature.

Before I dive into the implementation for upstream, I wanted to check:
1. Is there any existing work or a roadmap for DMA
streaming/pipelining in the HCI driver?
2. Is a generic dma streaming mechanism for large transfers something
you would be interested in seeing as a contribution to the mainline
driver?

Currently, my proof-of-concept handles the pipelining at the core
transfer level, but I
suspect for a generic upstream implementation, this sliding window
logic should be moved into dma.c to properly support controllers with
multiple Ring Bundles.

I would appreciate any thoughts on this approach or the preferred
architectural placement.

Best regards,
Sam

-- 
linux-i3c mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-i3c
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.