On 2021/7/3 16:53, Morten Brørup wrote:
>> From: fengchengwen [mailto:fengcheng...@huawei.com]
>> Sent: Saturday, 3 July 2021 02.32
>>
>> On 2021/7/2 22:57, Morten Brørup wrote:
>>>> In the DPDK framework, many data-plane API names contain queues.
>> e.g.
>>>> eventdev/crypto..
>>>> The concept of virt queues has continuity.
>>>
>>> I was also wondering about the name "virtual queue".
>>>
>>> Usually, something "virtual" would be an abstraction of something
>> physical, e.g. a software layer on top of something physical.
>>>
>>> Back in the days, a "DMA channel" used to mean a DMA engine on a CPU.
>> If a CPU had 2 DMA channels, they could both be set up simultaneously.
>>>
>>> The current design has the "dmadev" representing a CPU or other chip,
>> which has one or more "HW-queues" representing DMA channels (of the
>> same type), and then "virt-queue" as a software abstraction on top, for
>> using a DMA channel in different ways through individually configured
>> contexts (virt-queues).
>>>
>>> It makes sense to me, although I would consider renaming "HW-queue"
>> to "channel" and perhaps "virt-queue" to "queue".
>>
>> The 'DMA channel' is more used than 'DMA queue', at least google show
>> that there are at least 20+ times more.
>>
>> It's a good idea build the abstraction layer: queue <> channel <> dma-
>> controller.
>> In this way, the meaning of each layer is relatively easy to
>> distinguish literally.
>>
>> will fix in V2
>>
> 
> After re-reading all the mails in this thread, I have found one more 
> important high level detail still not decided:
> 
> Bruce had suggested flattening the DMA channels, so each dmadev represents a 
> DMA channel. And DMA controllers with multiple DMA channels will have to 
> instantiate multiple dmadevs, one for each DMA channel.

The dpaa2_qdma support multiple DMA channels, I looked into the dpaa2_qdma
and found the control-plane interacts with the kernel, so if we use the
flattening model, there maybe interactions between dmadevs.

> 
> Just like a four port NIC instantiates four ethdevs.
> 
> Then, like ethdevs, there would only be two abstraction layers: dmadev <> 
> queue, where a dmadev is a DMA channel on a DMA controller.

the dmadev <> channel <> queue model, there are three abstraction layers,
and two abstraction layers.

> 
> However, this assumes that the fast path functions on the individual DMA 
> channels of a DMA controller can be accessed completely independently and 
> simultaneously by multiple threads. (Otherwise, the driver would need to 
> implement critical regions or locking around accessing the common registers 
> in the DMA controller shared by the DMA channels.)

Yes, this scheme has a big implicit dependency, that is, the channels are
independent of each other.

> 
> Unless any of the DMA controller vendors claim that this assumption about 
> independence of the DMA channels is wrong, I strongly support Bruce's 
> flattening suggestion.
> 
> -Morten
> 

Reply via email to