Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp171468pxy; Wed, 28 Apr 2021 01:44:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcBiDeG6a0cbxWLozKRS+d/0cWDpG+b4ADuMgU2i/BU3sBwIoXJa+N5mtpMHH1y3rb6Xtu X-Received: by 2002:a05:6402:254a:: with SMTP id l10mr4490006edb.145.1619599460889; Wed, 28 Apr 2021 01:44:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619599460; cv=none; d=google.com; s=arc-20160816; b=Q2cwuABQLUd8ZOuR/JBCYUeWxB9KhpbXPyDObZAifTZxKyQ+qn+k1khEyAZVs5cKkX HRX6rK9a+zWcGeqv/k8GDEUXWAql1a9Al/AKoPlU20/K/HaCxTVYCJ6TJBp8tqb7KYvc hcg8oNBIlIn3gyiiorlqSa0HnLRKdxjymRTbM0UK/y0irb3kZ5pEnAU7Wo5VE/zlJd1O vQ0itXaRVEqKS16tL4tbng0cRcsQMjfPqzp/CPAE8CGnLBx2jfX+C7EBTpC3kLYOFV4s mYbfIlAJbEbYEWNfzLoUu4f5NY4O+PG6VDRAuo1AZcteTqbbQPGekULixd+o9k2cg3mi xkTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=1W52g62U8eu7kNC+tsNnm2qSHOwqXQwpPJN3IreWZiE=; b=drP2shhQToP8o7KHk0A9JUZkzHd0pamO6nASx2bcOyXrqsMDV/4A/zrvO13HwclNc1 4rDAW7mM8zkTrebtVT2vDCtY3NoORO5rqfVJKtN+GFLwJbBZY0jPwLsIuoNh9pV2etfY QGUaeXKWwxqaa7isrRGQrS9wmLTj5whoKzwDS4nj80lb7Ip2qdhKRsT6I3uWhbwOCxnm Wzaty6G980w1GN8VHYqXlrLFT6kIOlm5wZJIgvHw1GO5uC8stROfbSoPoOy3TZ9EDdgP mlkOr6pWad/gmqoxYBaXlV2rByETqXBfIh/GQeLt+Bx1PCv5W8ecI/9VZTO954IDf4g8 PBTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cwi67Xmj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c7si4908357edv.323.2021.04.28.01.43.57; Wed, 28 Apr 2021 01:44:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cwi67Xmj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237208AbhD1Int (ORCPT + 99 others); Wed, 28 Apr 2021 04:43:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:35784 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237110AbhD1Int (ORCPT ); Wed, 28 Apr 2021 04:43:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1619599384; 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=1W52g62U8eu7kNC+tsNnm2qSHOwqXQwpPJN3IreWZiE=; b=cwi67XmjvwxkEk4XMIok8DS5StW6CphISuv2vS3m+0VaXGIXg9H0wEgSjeOPLY3NyGurnB xV58E4rzVSbVELwHghBLP6qUSpa+nTmzRyoSIJDKIpwKnsEL8IXswV3/ni8cJqeoAhYGIN PYPjhETr8Pn6g373Z3kd4fT8oHF7Mpo= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-408-hAMRtaRlN_isfdaq7ctq8w-1; Wed, 28 Apr 2021 04:43:02 -0400 X-MC-Unique: hAMRtaRlN_isfdaq7ctq8w-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 09BF710054F6; Wed, 28 Apr 2021 08:43:01 +0000 (UTC) Received: from wangxiaodeMacBook-Air.local (ovpn-13-52.pek2.redhat.com [10.72.13.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 87E205F9C5; Wed, 28 Apr 2021 08:42:55 +0000 (UTC) Subject: Re: [PATCH 2/2] vDPA/ifcvf: implement doorbell mapping for ifcvf To: Zhu Lingshan , mst@redhat.com Cc: virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org References: <20210428082133.6766-1-lingshan.zhu@intel.com> <20210428082133.6766-3-lingshan.zhu@intel.com> From: Jason Wang Message-ID: Date: Wed, 28 Apr 2021 16:42:53 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <20210428082133.6766-3-lingshan.zhu@intel.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ?? 2021/4/28 ????4:21, Zhu Lingshan ะด??: > This commit implements doorbell mapping feature for ifcvf. > This feature maps the notify page to userspace, to eliminate > vmexit when kick a vq. > > Signed-off-by: Zhu Lingshan > --- > drivers/vdpa/ifcvf/ifcvf_main.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c > index e48e6b74fe2e..afcb71bc0f51 100644 > --- a/drivers/vdpa/ifcvf/ifcvf_main.c > +++ b/drivers/vdpa/ifcvf/ifcvf_main.c > @@ -413,6 +413,23 @@ static int ifcvf_vdpa_get_vq_irq(struct vdpa_device *vdpa_dev, > return vf->vring[qid].irq; > } > > +static struct vdpa_notification_area ifcvf_get_vq_notification(struct vdpa_device *vdpa_dev, > + u16 idx) > +{ > + struct ifcvf_hw *vf = vdpa_to_vf(vdpa_dev); > + struct vdpa_notification_area area; > + > + if (vf->notify_pa % PAGE_SIZE) { > + area.addr = 0; > + area.size = 0; We don't need this since: 1) there's a check in the vhost vDPA 2) device is unaware of the bound driver, non page aligned doorbell doesn't necessarily meant it can be used Let's leave those polices to the driver. Thanks > + } else { > + area.addr = vf->notify_pa; > + area.size = PAGE_SIZE; > + } > + > + return area; > +} > + > /* > * IFCVF currently does't have on-chip IOMMU, so not > * implemented set_map()/dma_map()/dma_unmap() > @@ -440,6 +457,7 @@ static const struct vdpa_config_ops ifc_vdpa_ops = { > .get_config = ifcvf_vdpa_get_config, > .set_config = ifcvf_vdpa_set_config, > .set_config_cb = ifcvf_vdpa_set_config_cb, > + .get_vq_notification = ifcvf_get_vq_notification, > }; > > static int ifcvf_probe(struct pci_dev *pdev, const struct pci_device_id *id)