Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp1891373pxu; Fri, 9 Oct 2020 02:25:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwz0OsnwsAHRWxJK39ydtkrVn0a2gTb28/FvBMXIvNbRunWSjPUtsVOvivdLposX1maZCVq X-Received: by 2002:a17:906:7e53:: with SMTP id z19mr13178263ejr.334.1602235536690; Fri, 09 Oct 2020 02:25:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602235536; cv=none; d=google.com; s=arc-20160816; b=phaZPZAxuECKrYn57JAnv68xMayWDTC6WUoDMr8ZMpwMvjNltE/+fPO2b+u/PWItBT q6W0TMqpMvTIoKZ4x3Gu4vfa+HLRbV9Zf+o+7BRwvsT5DjuO0Z3nk73xoiBryHIQC/ic XmtjY+lZ6p/d5gmn0KGxaVd/0PSf6UOar5nki9gQSAGKiIiFBcTHbegfiEFvEDkjUuQH 7wZAncbMwcow0V5yi7pJ//bBT+PBB9ml86Ovkm2UgN0tLX+vgIcOdZivoKGKO8nM+6Ne JBX968z89tn7oGdv494cpejOZXTpbnWgzW4UjHzrtylHQ1dbKILUJ+AWbDC2MZK4vB51 MJWw== 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=9TF1EF4zJCZjRxFtIEJ5tn74n9O/x+z0nQ+pg77K66I=; b=V7xz5A8Fhzin2w6Ur3+16E1B1rXi3iU/LEP2hJUOejBjJ6UR9tpY3UtCfBzxESJRPk NZt3aW4IhJacGyk4SDnSCroUJIoxh+CNZkJeEnFhf4kxr9+IFXcq3LcFG5aJT/yaQWhq L0WT/QJUgGN5CNHzP3RaVAouVsmcpCNA4ipE6Uj21QSfuP9+HEZB/6ZvaAc0fY5xVxST DORIzoWBe2WwQh4s3N9xGz373s1UiAUqnOC4PFgkm360bKEr0KC4T52HRPFX0iggf59l IZ8Dt8xJe8O/NJk1yQFd4puqQ17bv6ug0s5CmlAnEeciwyv0gsBYKHEqGTpMAbnlQS5x xVfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Vw20ZM2t; 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 v10si4148182edi.16.2020.10.09.02.25.10; Fri, 09 Oct 2020 02:25:36 -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=Vw20ZM2t; 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 S1731589AbgJIDt5 (ORCPT + 99 others); Thu, 8 Oct 2020 23:49:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:51211 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729277AbgJIDtz (ORCPT ); Thu, 8 Oct 2020 23:49:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602215393; 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=9TF1EF4zJCZjRxFtIEJ5tn74n9O/x+z0nQ+pg77K66I=; b=Vw20ZM2tBwd4CEnXOUyPaLnp7pHiK0sqV0di8Q5qrPjBiABg/dZo8rQpLX9nMEkbQggLl6 qEm1TItrbzXbJF/i/8WjJJ5hVva+Gq7MsZ1bNHkRVCgEbL7PzY1shCV8w54JYKmsajKjON Z0zNvHpfpflCCRSdBxS5XIYH+zGMLGQ= 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-272-o-030-bYOD2Yu33kdPw8sA-1; Thu, 08 Oct 2020 23:49:50 -0400 X-MC-Unique: o-030-bYOD2Yu33kdPw8sA-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 0D9731015ECB; Fri, 9 Oct 2020 03:49:49 +0000 (UTC) Received: from [10.72.13.133] (ovpn-13-133.pek2.redhat.com [10.72.13.133]) by smtp.corp.redhat.com (Postfix) with ESMTP id 719415C1BD; Fri, 9 Oct 2020 03:49:33 +0000 (UTC) Subject: Re: [RFC PATCH 08/24] vdpa: introduce virtqueue groups To: Eugenio Perez Martin Cc: Michael Tsirkin , Cindy Lu , kvm list , virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Miller , lingshan.zhu@intel.com, Harpreet Singh Anand , mhabets@solarflare.com, eli@mellanox.com, Adrian Moreno Zapata , Maxime Coquelin , Stefan Hajnoczi , Stefano Garzarella References: <20200924032125.18619-1-jasowang@redhat.com> <20200924032125.18619-9-jasowang@redhat.com> From: Jason Wang Message-ID: <3afd0747-d058-61b6-7818-f3c6993ef728@redhat.com> Date: Fri, 9 Oct 2020 11:49:31 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; 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 On 2020/9/28 下午11:44, Eugenio Perez Martin wrote: > On Thu, Sep 24, 2020 at 5:23 AM Jason Wang wrote: >> This patch introduces virtqueue groups to vDPA device. The virtqueue >> group is the minimal set of virtqueues that must share an address >> space. And the adddress space identifier could only be attached to >> a specific virtqueue group. >> >> A new mandated bus operation is introduced to get the virtqueue group >> ID for a specific virtqueue. >> >> All the vDPA device drivers were converted to simply support a single >> virtqueue group. >> >> Signed-off-by: Jason Wang >> --- >> drivers/vdpa/ifcvf/ifcvf_main.c | 9 ++++++++- >> drivers/vdpa/mlx5/net/mlx5_vnet.c | 8 +++++++- >> drivers/vdpa/vdpa.c | 4 +++- >> drivers/vdpa/vdpa_sim/vdpa_sim.c | 11 ++++++++++- >> include/linux/vdpa.h | 12 +++++++++--- >> 5 files changed, 37 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/vdpa/ifcvf/ifcvf_main.c b/drivers/vdpa/ifcvf/ifcvf_main.c >> index 076d7ac5e723..e6a0be374e51 100644 >> --- a/drivers/vdpa/ifcvf/ifcvf_main.c >> +++ b/drivers/vdpa/ifcvf/ifcvf_main.c >> @@ -327,6 +327,11 @@ static u32 ifcvf_vdpa_get_vq_align(struct vdpa_device *vdpa_dev) >> return IFCVF_QUEUE_ALIGNMENT; >> } >> >> +static u32 ifcvf_vdpa_get_vq_group(struct vdpa_device *vdpa, u16 idx) >> +{ >> + return 0; >> +} >> + >> static void ifcvf_vdpa_get_config(struct vdpa_device *vdpa_dev, >> unsigned int offset, >> void *buf, unsigned int len) >> @@ -387,6 +392,7 @@ static const struct vdpa_config_ops ifc_vdpa_ops = { >> .get_device_id = ifcvf_vdpa_get_device_id, >> .get_vendor_id = ifcvf_vdpa_get_vendor_id, >> .get_vq_align = ifcvf_vdpa_get_vq_align, >> + .get_vq_group = ifcvf_vdpa_get_vq_group, >> .get_config = ifcvf_vdpa_get_config, >> .set_config = ifcvf_vdpa_set_config, >> .set_config_cb = ifcvf_vdpa_set_config_cb, >> @@ -434,7 +440,8 @@ static int ifcvf_probe(struct pci_dev *pdev, const struct pci_device_id *id) >> >> adapter = vdpa_alloc_device(struct ifcvf_adapter, vdpa, >> dev, &ifc_vdpa_ops, >> - IFCVF_MAX_QUEUE_PAIRS * 2); >> + IFCVF_MAX_QUEUE_PAIRS * 2, 1); >> + >> if (adapter == NULL) { >> IFCVF_ERR(pdev, "Failed to allocate vDPA structure"); >> return -ENOMEM; >> diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c b/drivers/vdpa/mlx5/net/mlx5_vnet.c >> index 9df69d5efe8c..4e480f4f754e 100644 >> --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c >> +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c >> @@ -1428,6 +1428,11 @@ static u32 mlx5_vdpa_get_vq_align(struct vdpa_device *vdev) >> return PAGE_SIZE; >> } >> >> +static u32 mlx5_vdpa_get_vq_group(struct vdpa_device *vdpa, u16 idx) >> +{ >> + return 0; >> +} >> + >> enum { MLX5_VIRTIO_NET_F_GUEST_CSUM = 1 << 9, >> MLX5_VIRTIO_NET_F_CSUM = 1 << 10, >> MLX5_VIRTIO_NET_F_HOST_TSO6 = 1 << 11, >> @@ -1838,6 +1843,7 @@ static const struct vdpa_config_ops mlx5_vdpa_ops = { >> .get_vq_notification = mlx5_get_vq_notification, >> .get_vq_irq = mlx5_get_vq_irq, >> .get_vq_align = mlx5_vdpa_get_vq_align, >> + .get_vq_group = mlx5_vdpa_get_vq_group, >> .get_features = mlx5_vdpa_get_features, >> .set_features = mlx5_vdpa_set_features, >> .set_config_cb = mlx5_vdpa_set_config_cb, >> @@ -1925,7 +1931,7 @@ void *mlx5_vdpa_add_dev(struct mlx5_core_dev *mdev) >> max_vqs = min_t(u32, max_vqs, MLX5_MAX_SUPPORTED_VQS); >> >> ndev = vdpa_alloc_device(struct mlx5_vdpa_net, mvdev.vdev, mdev->device, &mlx5_vdpa_ops, >> - 2 * mlx5_vdpa_max_qps(max_vqs)); >> + 2 * mlx5_vdpa_max_qps(max_vqs), 1); >> if (IS_ERR(ndev)) >> return ndev; >> >> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c >> index a69ffc991e13..46399746ec7c 100644 >> --- a/drivers/vdpa/vdpa.c >> +++ b/drivers/vdpa/vdpa.c >> @@ -62,6 +62,7 @@ static void vdpa_release_dev(struct device *d) >> * @parent: the parent device >> * @config: the bus operations that is supported by this device >> * @nvqs: number of virtqueues supported by this device >> + * @ngroups: number of groups supported by this device > Hi! > > Maybe the description of "ngroups" could be "number of*virtqueue* > groups supported by this device"? I think that it could be needed in > some contexts reading the code. Exactly. Will fix. Thanks > > Thanks! >