From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B7408A0A0C; Sat, 3 Jul 2021 11:45:21 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3C7BD4014F; Sat, 3 Jul 2021 11:45:21 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id 2EE4E4003E for ; Sat, 3 Jul 2021 11:45:19 +0200 (CEST) Received: from dggemv711-chm.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4GH6P36S97z1CDmw; Sat, 3 Jul 2021 17:39:51 +0800 (CST) Received: from dggpeml500024.china.huawei.com (7.185.36.10) by dggemv711-chm.china.huawei.com (10.1.198.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Sat, 3 Jul 2021 17:45:15 +0800 Received: from [127.0.0.1] (10.40.190.165) by dggpeml500024.china.huawei.com (7.185.36.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Sat, 3 Jul 2021 17:45:15 +0800 To: =?UTF-8?Q?Morten_Br=c3=b8rup?= , Jerin Jacob , Bruce Richardson CC: Jerin Jacob , Nipun Gupta , Thomas Monjalon , Ferruh Yigit , dpdk-dev , Hemant Agrawal , "Maxime Coquelin" , Honnappa Nagarahalli , David Marchand , Satananda Burla , Prasun Kapoor References: <1623763327-30987-1-git-send-email-fengchengwen@huawei.com> <25d29598-c26d-8497-2867-9b650c79df49@huawei.com> <3db2eda0-4490-2b8f-c65d-636bcf794494@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35C618D9@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35C618DC@smartserver.smartshare.dk> From: fengchengwen Message-ID: Date: Sat, 3 Jul 2021 17:45:14 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35C618DC@smartserver.smartshare.dk> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [10.40.190.165] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggpeml500024.china.huawei.com (7.185.36.10) X-CFilter-Loop: Reflected Subject: Re: [dpdk-dev] dmadev discussion summary X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 2021/7/3 16:53, Morten Brørup wrote: >> From: fengchengwen [mailto:fengchengwen@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 >