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 0423EA04FF; Tue, 22 Mar 2022 11:05:05 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9AA5C427ED; Tue, 22 Mar 2022 11:05:05 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 99699410E5 for ; Tue, 22 Mar 2022 11:05:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647943503; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8hmQdu3g+cfisDFUKKLDMoB/3NM/O+1/bgEXTVB6t2w=; b=i8SoudZj1e2JVKKYxOssq/IqEFCoifncVtpJs1vstZWoIOHIP8ux3Dg06cevKxoGVdgucu 5nViipccpnR3F8w21AdXebRQIXb7dFrxeERGeBQfvANzS64DMhFZj3+OjijH1/GwR0CX62 yxu0e2SVBJMqCzRbgltjCdZJyQdi2JQ= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-572-1lAJ0507NdCp8FAfu5bo3A-1; Tue, 22 Mar 2022 06:04:57 -0400 X-MC-Unique: 1lAJ0507NdCp8FAfu5bo3A-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3C4DA3C11C67; Tue, 22 Mar 2022 10:04:57 +0000 (UTC) Received: from [10.39.208.2] (unknown [10.39.208.2]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 56662403D188; Tue, 22 Mar 2022 10:04:56 +0000 (UTC) Message-ID: <1fcc58e5-4775-e7c9-a5e9-65a86f02daca@redhat.com> Date: Tue, 22 Mar 2022 11:04:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 To: Andy Pei , dev@dpdk.org Cc: chenbo.xia@intel.com, gang.cao@intel.com, changpeng.liu@intel.com References: <1643093258-47258-2-git-send-email-andy.pei@intel.com> <1643425417-215270-1-git-send-email-andy.pei@intel.com> <1643425417-215270-5-git-send-email-andy.pei@intel.com> From: Maxime Coquelin Subject: Re: [PATCH v3 04/15] vdpa/ifc: add vdpa interrupt for blk device In-Reply-To: <1643425417-215270-5-git-send-email-andy.pei@intel.com> X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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 On 1/29/22 04:03, Andy Pei wrote: > For the blk we need to relay all the cmd of each queue. The message is not clear to me, do you mean "For the block device type, we have to relay the commands on all queues."? > > Signed-off-by: Andy Pei > --- > drivers/vdpa/ifc/ifcvf_vdpa.c | 46 ++++++++++++++++++++++++++++++++----------- > 1 file changed, 35 insertions(+), 11 deletions(-) > > diff --git a/drivers/vdpa/ifc/ifcvf_vdpa.c b/drivers/vdpa/ifc/ifcvf_vdpa.c > index 778e1fd..4f99bb3 100644 > --- a/drivers/vdpa/ifc/ifcvf_vdpa.c > +++ b/drivers/vdpa/ifc/ifcvf_vdpa.c > @@ -372,24 +372,48 @@ struct rte_vdpa_dev_info { > irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; > irq_set->start = 0; > fd_ptr = (int *)&irq_set->data; > + /* The first interrupt is for the configure space change notification */ > fd_ptr[RTE_INTR_VEC_ZERO_OFFSET] = > rte_intr_fd_get(internal->pdev->intr_handle); > > for (i = 0; i < nr_vring; i++) > internal->intr_fd[i] = -1; > > - for (i = 0; i < nr_vring; i++) { > - rte_vhost_get_vhost_vring(internal->vid, i, &vring); > - fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; > - if ((i & 1) == 0 && m_rx == true) { > - fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); > - if (fd < 0) { > - DRV_LOG(ERR, "can't setup eventfd: %s", > - strerror(errno)); > - return -1; > + if (internal->device_type == IFCVF_NET) { > + for (i = 0; i < nr_vring; i++) { > + rte_vhost_get_vhost_vring(internal->vid, i, &vring); > + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; > + if ((i & 1) == 0 && m_rx == true) { > + /* For the net we only need to relay rx queue, > + * which will change the mem of VM. > + */ > + fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); > + if (fd < 0) { > + DRV_LOG(ERR, "can't setup eventfd: %s", > + strerror(errno)); > + return -1; > + } > + internal->intr_fd[i] = fd; > + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = fd; > + } > + } > + } else if (internal->device_type == IFCVF_BLK) { > + for (i = 0; i < nr_vring; i++) { > + rte_vhost_get_vhost_vring(internal->vid, i, &vring); > + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; > + if (m_rx == true) { > + /* For the blk we need to relay all the read cmd > + * of each queue > + */ > + fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); > + if (fd < 0) { > + DRV_LOG(ERR, "can't setup eventfd: %s", > + strerror(errno)); > + return -1; > + } > + internal->intr_fd[i] = fd; > + fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = fd; > } > - internal->intr_fd[i] = fd; > - fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = fd; > } > } >