[{"id":2540485,"web_url":"http://patchwork.ozlabs.org/comment/2540485/","msgid":"<20200928155448-mutt-send-email-mst@kernel.org>","list_archive_url":null,"date":"2020-09-28T19:55:09","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":2235,"url":"http://patchwork.ozlabs.org/api/people/2235/","name":"Michael S. Tsirkin","email":"mst@redhat.com"},"content":"On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> Change core vdpa functionality into a loadbale module such that upcoming\n> block implementation will be able to use it.\n> \n> Signed-off-by: Eli Cohen <elic@nvidia.com>\n\nWhy don't we merge this patch together with the block module?\n\n> ---\n> V0 --> V1:\n> Removed \"default n\" for configu options as 'n' is the default\n> \n>  drivers/vdpa/Kconfig               |  8 +++-----\n>  drivers/vdpa/Makefile              |  2 +-\n>  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n>  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n>  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n>  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n>  6 files changed, 42 insertions(+), 8 deletions(-)\n>  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> \n> diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> index 4271c408103e..57ff6a7f7401 100644\n> --- a/drivers/vdpa/Kconfig\n> +++ b/drivers/vdpa/Kconfig\n> @@ -29,10 +29,9 @@ config IFCVF\n>  \t  To compile this driver as a module, choose M here: the module will\n>  \t  be called ifcvf.\n>  \n> -config MLX5_VDPA\n> -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> +config MLX5_VDPA_CORE\n> +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n>  \tdepends on MLX5_CORE\n> -\tdefault n\n>  \thelp\n>  \t  Support library for Mellanox VDPA drivers. Provides code that is\n>  \t  common for all types of VDPA drivers. The following drivers are planned:\n> @@ -40,8 +39,7 @@ config MLX5_VDPA\n>  \n>  config MLX5_VDPA_NET\n>  \ttristate \"vDPA driver for ConnectX devices\"\n> -\tdepends on MLX5_VDPA\n> -\tdefault n\n> +\tdepends on MLX5_VDPA_CORE\n>  \thelp\n>  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n>  \t  of virtio net datapath such that descriptors put on the ring will\n> diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> index d160e9b63a66..07353bbb9f8b 100644\n> --- a/drivers/vdpa/Makefile\n> +++ b/drivers/vdpa/Makefile\n> @@ -2,4 +2,4 @@\n>  obj-$(CONFIG_VDPA) += vdpa.o\n>  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n>  obj-$(CONFIG_IFCVF)    += ifcvf/\n> -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> index 89a5bededc9f..9f50f7e8d889 100644\n> --- a/drivers/vdpa/mlx5/Makefile\n> +++ b/drivers/vdpa/mlx5/Makefile\n> @@ -1,4 +1,7 @@\n>  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n>  \n> -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> +\n> +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> new file mode 100644\n> index 000000000000..4b39b55f57ab\n> --- /dev/null\n> +++ b/drivers/vdpa/mlx5/core/core_main.c\n> @@ -0,0 +1,20 @@\n> +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> +\n> +#include <linux/module.h>\n> +\n> +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> +MODULE_LICENSE(\"Dual BSD/GPL\");\n> +\n> +static int __init mlx5_vdpa_core_init(void)\n> +{\n> +\treturn 0;\n> +}\n> +\n> +static void __exit mlx5_vdpa_core_exit(void)\n> +{\n> +}\n> +\n> +module_init(mlx5_vdpa_core_init);\n> +module_exit(mlx5_vdpa_core_exit);\n> diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> index ef1c550f8266..c093eab6c714 100644\n> --- a/drivers/vdpa/mlx5/core/mr.c\n> +++ b/drivers/vdpa/mlx5/core/mr.c\n> @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n>  \tmutex_unlock(&mr->mkey_mtx);\n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n>  \n>  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n>  {\n> @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n>  out:\n>  \tmutex_unlock(&mr->mkey_mtx);\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n>  \n>  static bool map_empty(struct vhost_iotlb *iotlb)\n>  {\n> @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n>  \n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> index 96e6421c5d1c..89606a18e286 100644\n> --- a/drivers/vdpa/mlx5/core/resources.c\n> +++ b/drivers/vdpa/mlx5/core/resources.c\n> @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n>  \n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n>  \n>  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n>  {\n> @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n>  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n>  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n>  \n>  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n>  {\n> @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n>  \n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n>  \n>  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n>  {\n> @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n>  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n>  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n>  \n>  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n>  {\n> @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n>  \n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n>  \n>  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n>  {\n> @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n>  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n>  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n>  \n>  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n>  {\n> @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n>  \n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n>  \n>  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n>  {\n> @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n>  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n>  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n>  \n>  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n>  \t\t\t  int inlen)\n> @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n>  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n>  \treturn err;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n>  \n>  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n>  {\n> @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n>  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n>  \tres->valid = false;\n>  }\n> +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> -- \n> 2.27.0","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=redhat.com","ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=PNS96dIL;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0YCY3Zljz9s1t\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 05:55:21 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1726748AbgI1TzT (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Mon, 28 Sep 2020 15:55:19 -0400","from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:49011 \"EHLO\n        us-smtp-delivery-124.mimecast.com\" rhost-flags-OK-OK-OK-OK)\n        by vger.kernel.org with ESMTP id S1726328AbgI1TzT (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Mon, 28 Sep 2020 15:55:19 -0400","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-411-GP36ALLFMyu3ssCe4sc1fw-1; Mon, 28 Sep 2020 15:55:14 -0400","by mail-wr1-f72.google.com with SMTP id 33so806948wrk.12\n        for <netdev@vger.kernel.org>; Mon, 28 Sep 2020 12:55:14 -0700 (PDT)","from redhat.com (bzq-79-179-71-128.red.bezeqint.net.\n [79.179.71.128])\n        by smtp.gmail.com with ESMTPSA id\n v9sm3010804wrv.35.2020.09.28.12.55.11\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Mon, 28 Sep 2020 12:55:12 -0700 (PDT)"],"Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n        s=mimecast20190719; t=1601322917;\n        h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n         to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n         in-reply-to:in-reply-to:references:references;\n        bh=1qD/bYiwXaDqvMUHTGUqMaHkNigUfku0s1G1pgifknA=;\n        b=PNS96dILccnm1r9MTUtp7gB7t0xo02nWRnHUwZlTmgEdl78OiJVjxn3EuzTCPpOyb/AXiM\n        edvSRiwdJbiGPakBj0KBRQbBw1gv8ZD5NaWb2FZoJ1AY8VDuG8iIv/4XxVLII8fINkSVII\n        mEo9Qp3hvYZ2NcmK6GY7bgzWAH036ZU=","X-MC-Unique":"GP36ALLFMyu3ssCe4sc1fw-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20161025;\n        h=x-gm-message-state:date:from:to:cc:subject:message-id:references\n         :mime-version:content-disposition:in-reply-to;\n        bh=1qD/bYiwXaDqvMUHTGUqMaHkNigUfku0s1G1pgifknA=;\n        b=HSqYoCEfaU5nkxXFr8rrtUsxCofivqAOzA3qcaRwNVarsSzCL2ToUb971JwI3ERR/t\n         r408wQdfk+srmBpYrSW/IVWez3yBlD6qJ/OCNLgLwqKkLUrEyhlxRFS4s3h5pveaam3W\n         rptBmv1ina95RYNXp8aNgtx9NfEnsVaQi6hWKDZCFz2TlDEtq2yqY94Yq8nJW6Ws4bkJ\n         8QT8zDsimVoJygSepfeHXkkSPgLG7Ia+wKbtn+x4zg4BGNhag3bc5RsyS9g47+4TGku1\n         qInb9OwjrmIkQeSU8YCd9xQ+CVvoZcIjk5jBN7hg5N5sb4Wydsz1yv8DfyiZ3pc3aUnt\n         lrWw==","X-Gm-Message-State":"AOAM533jHv5+RuBmleKJoTXK7KMhkFGF084X+50+ZBKxFf1cVNEF+W2A\n        JdCQOXxjEpmJKRGBQT0yykOoOPvye91otSK3wQEiuXJiyJmvSJW6wTMaRUUY7XxGQ6KHJ6B75P6\n        gYRfxHKd/I9PCK6hF","X-Received":["by 2002:a7b:c151:: with SMTP id z17mr806547wmi.53.1601322913403;\n        Mon, 28 Sep 2020 12:55:13 -0700 (PDT)","by 2002:a7b:c151:: with SMTP id z17mr806531wmi.53.1601322913098;\n        Mon, 28 Sep 2020 12:55:13 -0700 (PDT)"],"X-Google-Smtp-Source":"\n ABdhPJxHJc0NzkL6UIF4Usztiftaij8e1WIEJYDq5hNYrhp+v+0ltPTCNUWn4xJ0d+jBa6m27TyepA==","Date":"Mon, 28 Sep 2020 15:55:09 -0400","From":"\"Michael S. Tsirkin\" <mst@redhat.com>","To":"Eli Cohen <elic@nvidia.com>","Cc":"jasowang@redhat.com, virtualization@lists.linux-foundation.org,\n        linux-kernel@vger.kernel.org, netdev@vger.kernel.org,\n        eli@nvidia.com","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200928155448-mutt-send-email-mst@kernel.org>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540768,"web_url":"http://patchwork.ozlabs.org/comment/2540768/","msgid":"<20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>","list_archive_url":null,"date":"2020-09-29T06:20:26","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":80026,"url":"http://patchwork.ozlabs.org/api/people/80026/","name":"Eli Cohen","email":"elic@nvidia.com"},"content":"On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > Change core vdpa functionality into a loadbale module such that upcoming\n> > block implementation will be able to use it.\n> > \n> > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> \n> Why don't we merge this patch together with the block module?\n> \n\nSince there are still not too many users of this driver, I would prefer\nto merge this as early as possible so pepole get used to the involved\nmodules.\n\nAnyways, I will send another version of the patch which makes use of\n'select' instead of 'depends'.\n\nHope you agree to merge this.\n\n> > ---\n> > V0 --> V1:\n> > Removed \"default n\" for configu options as 'n' is the default\n> > \n> >  drivers/vdpa/Kconfig               |  8 +++-----\n> >  drivers/vdpa/Makefile              |  2 +-\n> >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> >  6 files changed, 42 insertions(+), 8 deletions(-)\n> >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > \n> > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > index 4271c408103e..57ff6a7f7401 100644\n> > --- a/drivers/vdpa/Kconfig\n> > +++ b/drivers/vdpa/Kconfig\n> > @@ -29,10 +29,9 @@ config IFCVF\n> >  \t  To compile this driver as a module, choose M here: the module will\n> >  \t  be called ifcvf.\n> >  \n> > -config MLX5_VDPA\n> > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > +config MLX5_VDPA_CORE\n> > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> >  \tdepends on MLX5_CORE\n> > -\tdefault n\n> >  \thelp\n> >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> >  \n> >  config MLX5_VDPA_NET\n> >  \ttristate \"vDPA driver for ConnectX devices\"\n> > -\tdepends on MLX5_VDPA\n> > -\tdefault n\n> > +\tdepends on MLX5_VDPA_CORE\n> >  \thelp\n> >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> >  \t  of virtio net datapath such that descriptors put on the ring will\n> > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > index d160e9b63a66..07353bbb9f8b 100644\n> > --- a/drivers/vdpa/Makefile\n> > +++ b/drivers/vdpa/Makefile\n> > @@ -2,4 +2,4 @@\n> >  obj-$(CONFIG_VDPA) += vdpa.o\n> >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > index 89a5bededc9f..9f50f7e8d889 100644\n> > --- a/drivers/vdpa/mlx5/Makefile\n> > +++ b/drivers/vdpa/mlx5/Makefile\n> > @@ -1,4 +1,7 @@\n> >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> >  \n> > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > +\n> > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > new file mode 100644\n> > index 000000000000..4b39b55f57ab\n> > --- /dev/null\n> > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > @@ -0,0 +1,20 @@\n> > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > +\n> > +#include <linux/module.h>\n> > +\n> > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > +\n> > +static int __init mlx5_vdpa_core_init(void)\n> > +{\n> > +\treturn 0;\n> > +}\n> > +\n> > +static void __exit mlx5_vdpa_core_exit(void)\n> > +{\n> > +}\n> > +\n> > +module_init(mlx5_vdpa_core_init);\n> > +module_exit(mlx5_vdpa_core_exit);\n> > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > index ef1c550f8266..c093eab6c714 100644\n> > --- a/drivers/vdpa/mlx5/core/mr.c\n> > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> >  \tmutex_unlock(&mr->mkey_mtx);\n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> >  \n> >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> >  {\n> > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> >  out:\n> >  \tmutex_unlock(&mr->mkey_mtx);\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> >  \n> >  static bool map_empty(struct vhost_iotlb *iotlb)\n> >  {\n> > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> >  \n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > index 96e6421c5d1c..89606a18e286 100644\n> > --- a/drivers/vdpa/mlx5/core/resources.c\n> > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> >  \n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> >  \n> >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> >  {\n> > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> >  \n> >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> >  {\n> > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> >  \n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> >  \n> >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> >  {\n> > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> >  \n> >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> >  {\n> > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> >  \n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> >  \n> >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> >  {\n> > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> >  \n> >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> >  {\n> > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> >  \n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> >  \n> >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> >  {\n> > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> >  \n> >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> >  \t\t\t  int inlen)\n> > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> >  \treturn err;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> >  \n> >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> >  {\n> > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> >  \tres->valid = false;\n> >  }\n> > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > -- \n> > 2.27.0\n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nvidia.com","ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256\n header.s=n1 header.b=QMsjpYx6;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0q4z2qSYz9sPB\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 16:20:35 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1727403AbgI2GUd (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 02:20:33 -0400","from hqnvemgate24.nvidia.com ([216.228.121.143]:5897 \"EHLO\n        hqnvemgate24.nvidia.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n        with ESMTP id S1725320AbgI2GUc (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 02:20:32 -0400","from hqmail.nvidia.com (Not Verified[216.228.121.13]) by\n hqnvemgate24.nvidia.com (using TLS: TLSv1.2, AES256-SHA)\n        id <B5f72d1cb0002>; Mon, 28 Sep 2020 23:18:51 -0700","from mtl-vdi-166.wap.labs.mlnx (10.124.1.5) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 29 Sep\n 2020 06:20:30 +0000"],"Date":"Tue, 29 Sep 2020 09:20:26 +0300","From":"Eli Cohen <elic@nvidia.com>","To":"\"Michael S. Tsirkin\" <mst@redhat.com>","CC":"<jasowang@redhat.com>, <virtualization@lists.linux-foundation.org>,\n        <linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,\n        <eli@nvidia.com>","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Disposition":"inline","In-Reply-To":"<20200928155448-mutt-send-email-mst@kernel.org>","User-Agent":"Mutt/1.9.5 (bf161cf53efb) (2018-04-13)","X-Originating-IP":"[10.124.1.5]","X-ClientProxiedBy":"HQMAIL111.nvidia.com (172.20.187.18) To\n HQMAIL107.nvidia.com (172.20.187.13)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;\n        t=1601360332; bh=P+M9w/6yD+LMpmlqsq40BdUDqFTD7DDTQBk/Kpd9MyM=;\n        h=Date:From:To:CC:Subject:Message-ID:References:MIME-Version:\n         Content-Type:Content-Disposition:In-Reply-To:User-Agent:\n         X-Originating-IP:X-ClientProxiedBy;\n        b=QMsjpYx6tkoKkUNvQ9tIZ7Oa/ELlltguFThENX0FXYUGmapswNfH8YhYMkWYLP6ek\n         KEUaIQkm7mZNap6xKfBOwCoi8NMnhc/zMiBIcaJLt/rANaWtEUrNP62H2/lL37mZ4m\n         yPZ+tGu5XKckmrchbhMaX3EX2KJTzBE/lPef7eERiuGjAcIZa6mqkNXz3TKg1o3RUA\n         wY7MFvvTQcKotrzoXB4uauiH6Pfc+GUsLOU9hegTC21pWIfCBNLXjOQ6ImV8b9VlM7\n         pyGyk9Sc3BuDA7bK9p90O7Ww8h2vsB8NweoSoZ6W2ZZkjyzgWXe1z3Dr2QBU03+iCX\n         TejGnhlJX6Sjg==","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540776,"web_url":"http://patchwork.ozlabs.org/comment/2540776/","msgid":"<20200929022430-mutt-send-email-mst@kernel.org>","list_archive_url":null,"date":"2020-09-29T06:26:44","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":2235,"url":"http://patchwork.ozlabs.org/api/people/2235/","name":"Michael S. Tsirkin","email":"mst@redhat.com"},"content":"On Tue, Sep 29, 2020 at 09:20:26AM +0300, Eli Cohen wrote:\n> On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> > On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > > Change core vdpa functionality into a loadbale module such that upcoming\n> > > block implementation will be able to use it.\n> > > \n> > > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> > \n> > Why don't we merge this patch together with the block module?\n> > \n> \n> Since there are still not too many users of this driver, I would prefer\n> to merge this as early as possible so pepole get used to the involved\n> modules.\n> \n> Anyways, I will send another version of the patch which makes use of\n> 'select' instead of 'depends'.\n> \n> Hope you agree to merge this.\n\nAre you quite sure there will be a block driver though?\nI'd like to avoid a situation in which we have infrastructure\nin place but no users.\n\n> > > ---\n> > > V0 --> V1:\n> > > Removed \"default n\" for configu options as 'n' is the default\n> > > \n> > >  drivers/vdpa/Kconfig               |  8 +++-----\n> > >  drivers/vdpa/Makefile              |  2 +-\n> > >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> > >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> > >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> > >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> > >  6 files changed, 42 insertions(+), 8 deletions(-)\n> > >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > > \n> > > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > > index 4271c408103e..57ff6a7f7401 100644\n> > > --- a/drivers/vdpa/Kconfig\n> > > +++ b/drivers/vdpa/Kconfig\n> > > @@ -29,10 +29,9 @@ config IFCVF\n> > >  \t  To compile this driver as a module, choose M here: the module will\n> > >  \t  be called ifcvf.\n> > >  \n> > > -config MLX5_VDPA\n> > > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > > +config MLX5_VDPA_CORE\n> > > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> > >  \tdepends on MLX5_CORE\n> > > -\tdefault n\n> > >  \thelp\n> > >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> > >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> > >  \n> > >  config MLX5_VDPA_NET\n> > >  \ttristate \"vDPA driver for ConnectX devices\"\n> > > -\tdepends on MLX5_VDPA\n> > > -\tdefault n\n> > > +\tdepends on MLX5_VDPA_CORE\n> > >  \thelp\n> > >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> > >  \t  of virtio net datapath such that descriptors put on the ring will\n> > > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > > index d160e9b63a66..07353bbb9f8b 100644\n> > > --- a/drivers/vdpa/Makefile\n> > > +++ b/drivers/vdpa/Makefile\n> > > @@ -2,4 +2,4 @@\n> > >  obj-$(CONFIG_VDPA) += vdpa.o\n> > >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> > >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > > index 89a5bededc9f..9f50f7e8d889 100644\n> > > --- a/drivers/vdpa/mlx5/Makefile\n> > > +++ b/drivers/vdpa/mlx5/Makefile\n> > > @@ -1,4 +1,7 @@\n> > >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> > >  \n> > > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > > +\n> > > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > > new file mode 100644\n> > > index 000000000000..4b39b55f57ab\n> > > --- /dev/null\n> > > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > > @@ -0,0 +1,20 @@\n> > > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > > +\n> > > +#include <linux/module.h>\n> > > +\n> > > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > > +\n> > > +static int __init mlx5_vdpa_core_init(void)\n> > > +{\n> > > +\treturn 0;\n> > > +}\n> > > +\n> > > +static void __exit mlx5_vdpa_core_exit(void)\n> > > +{\n> > > +}\n> > > +\n> > > +module_init(mlx5_vdpa_core_init);\n> > > +module_exit(mlx5_vdpa_core_exit);\n> > > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > > index ef1c550f8266..c093eab6c714 100644\n> > > --- a/drivers/vdpa/mlx5/core/mr.c\n> > > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> > >  \tmutex_unlock(&mr->mkey_mtx);\n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> > >  \n> > >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > >  {\n> > > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > >  out:\n> > >  \tmutex_unlock(&mr->mkey_mtx);\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> > >  \n> > >  static bool map_empty(struct vhost_iotlb *iotlb)\n> > >  {\n> > > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> > >  \n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > > index 96e6421c5d1c..89606a18e286 100644\n> > > --- a/drivers/vdpa/mlx5/core/resources.c\n> > > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> > >  \n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> > >  \n> > >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > >  {\n> > > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> > >  \n> > >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> > >  {\n> > > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> > >  \n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> > >  \n> > >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > >  {\n> > > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> > >  \n> > >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > >  {\n> > > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > >  \n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> > >  \n> > >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > >  {\n> > > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> > >  \n> > >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > >  {\n> > > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > >  \n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> > >  \n> > >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > >  {\n> > > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> > >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> > >  \n> > >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> > >  \t\t\t  int inlen)\n> > > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > >  \treturn err;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> > >  \n> > >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > >  {\n> > > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > >  \tres->valid = false;\n> > >  }\n> > > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > > -- \n> > > 2.27.0\n> >","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=redhat.com","ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=AKzj7qhO;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0qDJ317Gz9s0b\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 16:26:56 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1725779AbgI2G0y (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 02:26:54 -0400","from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:21415 \"EHLO\n        us-smtp-delivery-124.mimecast.com\" rhost-flags-OK-OK-OK-OK)\n        by vger.kernel.org with ESMTP id S1725535AbgI2G0y (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 02:26:54 -0400","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-493-7mdhuSp5PpW6gn8e3699gg-1; Tue, 29 Sep 2020 02:26:50 -0400","by mail-wr1-f72.google.com with SMTP id a10so1278823wrw.22\n        for <netdev@vger.kernel.org>; Mon, 28 Sep 2020 23:26:49 -0700 (PDT)","from redhat.com (bzq-79-179-71-128.red.bezeqint.net.\n [79.179.71.128])\n        by smtp.gmail.com with ESMTPSA id\n b11sm4393471wrt.38.2020.09.28.23.26.46\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Mon, 28 Sep 2020 23:26:47 -0700 (PDT)"],"Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n        s=mimecast20190719; t=1601360811;\n        h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n         to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n         in-reply-to:in-reply-to:references:references;\n        bh=zAJ0Fhk7Jl4WMMRBzRepRA1oVyxLNpVd5noydx074OE=;\n        b=AKzj7qhOBAzMUicl9Ogo/pjYv7cA/lkVg+8PUO6CZI28lUJmQ6K6Ys1JVTV+ybW88k+q4j\n        y/RK1g90fOF7qf3zpUA5gSxnMelc9wh26IFFsoIYLTXpLqcLcRZjqFN8U8Z/OwX1aUHhAi\n        nAqectiF5WocOe7/+upTUsn7SaU7xng=","X-MC-Unique":"7mdhuSp5PpW6gn8e3699gg-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20161025;\n        h=x-gm-message-state:date:from:to:cc:subject:message-id:references\n         :mime-version:content-disposition:in-reply-to;\n        bh=zAJ0Fhk7Jl4WMMRBzRepRA1oVyxLNpVd5noydx074OE=;\n        b=OX7y2RJIOyIj9RyRiWPvHjEjF1FmPSTTevtIJH82whjEnz6eq51PL49Vof7VQiCey9\n         b0TstGJnGmabnYp6hrZy/oRmJud4jsAm8hV5IY5kSNNWuYN6e1nHiqOCqWF7NpEQutan\n         BkxfFuGoCcC9HnI0umeX76XJh3aMoN2O/UgVty9nqXnMv0+pZ2UF8U6BYRX/3BWAbFMX\n         iHB4W2I9FOJ0aMjYZiLHovWwvRmvcifOCGAIgSJCOkQlEEwk7ddEXcg1wawv1Et10Kee\n         kBLCuZr0toE414Ul1gAyyJhS2KvJHbYfpQuWp6hdqkbGlF5PalpKzvyTNdjhU35Vb+8X\n         ee+A==","X-Gm-Message-State":"AOAM53241jxyC4JXzK209d/p9zejj98ZecS6AyMOJL9roOD0BwhVV92U\n        Nz7nDG0R/CVR2ZdIFAtg3N8bbDmkgE3UpgILUTDTXoR9RrXEU28un2dAtN6oQ0Dgfl1DHwob7Ij\n        R7pkztd22g3dZc+EM","X-Received":["by 2002:adf:f508:: with SMTP id q8mr2142005wro.233.1601360807934;\n        Mon, 28 Sep 2020 23:26:47 -0700 (PDT)","by 2002:adf:f508:: with SMTP id q8mr2141983wro.233.1601360807655;\n        Mon, 28 Sep 2020 23:26:47 -0700 (PDT)"],"X-Google-Smtp-Source":"\n ABdhPJxaRo89FVwBcd4BiGa68p1LJ6RIySLUwgNzydk7tIMGjs9Ues2dq5ud7qi3aGmXV3VXybEnKA==","Date":"Tue, 29 Sep 2020 02:26:44 -0400","From":"\"Michael S. Tsirkin\" <mst@redhat.com>","To":"Eli Cohen <elic@nvidia.com>","Cc":"jasowang@redhat.com, virtualization@lists.linux-foundation.org,\n        linux-kernel@vger.kernel.org, netdev@vger.kernel.org,\n        eli@nvidia.com","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929022430-mutt-send-email-mst@kernel.org>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540779,"web_url":"http://patchwork.ozlabs.org/comment/2540779/","msgid":"<20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>","list_archive_url":null,"date":"2020-09-29T06:34:33","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":80026,"url":"http://patchwork.ozlabs.org/api/people/80026/","name":"Eli Cohen","email":"elic@nvidia.com"},"content":"On Tue, Sep 29, 2020 at 02:26:44AM -0400, Michael S. Tsirkin wrote:\n> On Tue, Sep 29, 2020 at 09:20:26AM +0300, Eli Cohen wrote:\n> > On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> > > On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > > > Change core vdpa functionality into a loadbale module such that upcoming\n> > > > block implementation will be able to use it.\n> > > > \n> > > > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> > > \n> > > Why don't we merge this patch together with the block module?\n> > > \n> > \n> > Since there are still not too many users of this driver, I would prefer\n> > to merge this as early as possible so pepole get used to the involved\n> > modules.\n> > \n> > Anyways, I will send another version of the patch which makes use of\n> > 'select' instead of 'depends'.\n> > \n> > Hope you agree to merge this.\n> \n> Are you quite sure there will be a block driver though?\n> I'd like to avoid a situation in which we have infrastructure\n> in place but no users.\n>\n\nI know it's in our plans but I see your point. Let me know if you\nprefer me to send the patch that fixes the 'depends' thing or defer it\nto a later time.\n\n> > > > ---\n> > > > V0 --> V1:\n> > > > Removed \"default n\" for configu options as 'n' is the default\n> > > > \n> > > >  drivers/vdpa/Kconfig               |  8 +++-----\n> > > >  drivers/vdpa/Makefile              |  2 +-\n> > > >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> > > >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> > > >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> > > >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> > > >  6 files changed, 42 insertions(+), 8 deletions(-)\n> > > >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > > > \n> > > > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > > > index 4271c408103e..57ff6a7f7401 100644\n> > > > --- a/drivers/vdpa/Kconfig\n> > > > +++ b/drivers/vdpa/Kconfig\n> > > > @@ -29,10 +29,9 @@ config IFCVF\n> > > >  \t  To compile this driver as a module, choose M here: the module will\n> > > >  \t  be called ifcvf.\n> > > >  \n> > > > -config MLX5_VDPA\n> > > > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > > > +config MLX5_VDPA_CORE\n> > > > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> > > >  \tdepends on MLX5_CORE\n> > > > -\tdefault n\n> > > >  \thelp\n> > > >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> > > >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > > > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> > > >  \n> > > >  config MLX5_VDPA_NET\n> > > >  \ttristate \"vDPA driver for ConnectX devices\"\n> > > > -\tdepends on MLX5_VDPA\n> > > > -\tdefault n\n> > > > +\tdepends on MLX5_VDPA_CORE\n> > > >  \thelp\n> > > >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> > > >  \t  of virtio net datapath such that descriptors put on the ring will\n> > > > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > > > index d160e9b63a66..07353bbb9f8b 100644\n> > > > --- a/drivers/vdpa/Makefile\n> > > > +++ b/drivers/vdpa/Makefile\n> > > > @@ -2,4 +2,4 @@\n> > > >  obj-$(CONFIG_VDPA) += vdpa.o\n> > > >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> > > >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > > > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > > > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > > > index 89a5bededc9f..9f50f7e8d889 100644\n> > > > --- a/drivers/vdpa/mlx5/Makefile\n> > > > +++ b/drivers/vdpa/mlx5/Makefile\n> > > > @@ -1,4 +1,7 @@\n> > > >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> > > >  \n> > > > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > > > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > > > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > > > +\n> > > > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > > > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > > > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > > > new file mode 100644\n> > > > index 000000000000..4b39b55f57ab\n> > > > --- /dev/null\n> > > > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > > > @@ -0,0 +1,20 @@\n> > > > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > > > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > > > +\n> > > > +#include <linux/module.h>\n> > > > +\n> > > > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > > > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > > > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > > > +\n> > > > +static int __init mlx5_vdpa_core_init(void)\n> > > > +{\n> > > > +\treturn 0;\n> > > > +}\n> > > > +\n> > > > +static void __exit mlx5_vdpa_core_exit(void)\n> > > > +{\n> > > > +}\n> > > > +\n> > > > +module_init(mlx5_vdpa_core_init);\n> > > > +module_exit(mlx5_vdpa_core_exit);\n> > > > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > > > index ef1c550f8266..c093eab6c714 100644\n> > > > --- a/drivers/vdpa/mlx5/core/mr.c\n> > > > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > > > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> > > >  \n> > > >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > >  {\n> > > > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > >  out:\n> > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> > > >  \n> > > >  static bool map_empty(struct vhost_iotlb *iotlb)\n> > > >  {\n> > > > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> > > >  \n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > > > index 96e6421c5d1c..89606a18e286 100644\n> > > > --- a/drivers/vdpa/mlx5/core/resources.c\n> > > > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > > > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> > > >  \n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> > > >  \n> > > >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > >  {\n> > > > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> > > >  \n> > > >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> > > >  {\n> > > > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> > > >  \n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> > > >  \n> > > >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > >  {\n> > > > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> > > >  \n> > > >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > >  {\n> > > > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > >  \n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> > > >  \n> > > >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > >  {\n> > > > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> > > >  \n> > > >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > >  {\n> > > > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > >  \n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> > > >  \n> > > >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > >  {\n> > > > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> > > >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> > > >  \n> > > >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> > > >  \t\t\t  int inlen)\n> > > > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > >  \treturn err;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> > > >  \n> > > >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > >  {\n> > > > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > >  \tres->valid = false;\n> > > >  }\n> > > > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > > > -- \n> > > > 2.27.0\n> > > \n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nvidia.com","ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256\n header.s=n1 header.b=QaGzBY9Z;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0qPJ3JtPz9sRR\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 16:34:44 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1727416AbgI2Gej (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 02:34:39 -0400","from hqnvemgate24.nvidia.com ([216.228.121.143]:7556 \"EHLO\n        hqnvemgate24.nvidia.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n        with ESMTP id S1725306AbgI2Gej (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 02:34:39 -0400","from hqmail.nvidia.com (Not Verified[216.228.121.13]) by\n hqnvemgate24.nvidia.com (using TLS: TLSv1.2, AES256-SHA)\n        id <B5f72d51a0003>; Mon, 28 Sep 2020 23:32:58 -0700","from mtl-vdi-166.wap.labs.mlnx (10.124.1.5) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 29 Sep\n 2020 06:34:37 +0000"],"Date":"Tue, 29 Sep 2020 09:34:33 +0300","From":"Eli Cohen <elic@nvidia.com>","To":"\"Michael S. Tsirkin\" <mst@redhat.com>","CC":"<jasowang@redhat.com>, <virtualization@lists.linux-foundation.org>,\n        <linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,\n        <elic@nvidia.com>","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929022430-mutt-send-email-mst@kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Disposition":"inline","In-Reply-To":"<20200929022430-mutt-send-email-mst@kernel.org>","User-Agent":"Mutt/1.9.5 (bf161cf53efb) (2018-04-13)","X-Originating-IP":"[10.124.1.5]","X-ClientProxiedBy":"HQMAIL111.nvidia.com (172.20.187.18) To\n HQMAIL107.nvidia.com (172.20.187.13)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;\n        t=1601361178; bh=l9qG9LBFjw4viaVywOFIG85jlSGRc2/E0zyTKuySSrQ=;\n        h=Date:From:To:CC:Subject:Message-ID:References:MIME-Version:\n         Content-Type:Content-Disposition:In-Reply-To:User-Agent:\n         X-Originating-IP:X-ClientProxiedBy;\n        b=QaGzBY9ZSHz+QT5YRFkA1VOOtjiu9Bosuefda6vwKgM79rnBGbYmvaJ1q57zyyCXZ\n         ET/0hc1taTEXUWt6MzwS1BZW5LCzt1nRYDlpB5B8B7QvNgszI0sVwi52JNGgSomrMC\n         G9FSL3e66zLAYRngGNdh801B+NqJ9Aan45Kq52DFVAihc51JgUNkF56IYmLRNBERD2\n         DDJ9NKJZd/A2Tsha5SlyrMynAk0W5FH1wV6Z/JllzsDEaVAysbM4wiOGtmBMfn5evw\n         Rvj0LUqPlWfXeDqWFgSz+cGskcq5iqIAXYCPWppnBOBY1IDd3fWIXi6rTjyYErxQ9K\n         6icMeFSk0u/FQ==","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540782,"web_url":"http://patchwork.ozlabs.org/comment/2540782/","msgid":"<20200929025038-mutt-send-email-mst@kernel.org>","list_archive_url":null,"date":"2020-09-29T06:51:12","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":2235,"url":"http://patchwork.ozlabs.org/api/people/2235/","name":"Michael S. Tsirkin","email":"mst@redhat.com"},"content":"On Tue, Sep 29, 2020 at 09:34:33AM +0300, Eli Cohen wrote:\n> On Tue, Sep 29, 2020 at 02:26:44AM -0400, Michael S. Tsirkin wrote:\n> > On Tue, Sep 29, 2020 at 09:20:26AM +0300, Eli Cohen wrote:\n> > > On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> > > > On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > > > > Change core vdpa functionality into a loadbale module such that upcoming\n> > > > > block implementation will be able to use it.\n> > > > > \n> > > > > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> > > > \n> > > > Why don't we merge this patch together with the block module?\n> > > > \n> > > \n> > > Since there are still not too many users of this driver, I would prefer\n> > > to merge this as early as possible so pepole get used to the involved\n> > > modules.\n> > > \n> > > Anyways, I will send another version of the patch which makes use of\n> > > 'select' instead of 'depends'.\n> > > \n> > > Hope you agree to merge this.\n> > \n> > Are you quite sure there will be a block driver though?\n> > I'd like to avoid a situation in which we have infrastructure\n> > in place but no users.\n> >\n> \n> I know it's in our plans but I see your point. Let me know if you\n> prefer me to send the patch that fixes the 'depends' thing or defer it\n> to a later time.\n\nNot sure what's the depends thing.\n\n> > > > > ---\n> > > > > V0 --> V1:\n> > > > > Removed \"default n\" for configu options as 'n' is the default\n> > > > > \n> > > > >  drivers/vdpa/Kconfig               |  8 +++-----\n> > > > >  drivers/vdpa/Makefile              |  2 +-\n> > > > >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> > > > >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> > > > >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> > > > >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> > > > >  6 files changed, 42 insertions(+), 8 deletions(-)\n> > > > >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > > > > \n> > > > > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > > > > index 4271c408103e..57ff6a7f7401 100644\n> > > > > --- a/drivers/vdpa/Kconfig\n> > > > > +++ b/drivers/vdpa/Kconfig\n> > > > > @@ -29,10 +29,9 @@ config IFCVF\n> > > > >  \t  To compile this driver as a module, choose M here: the module will\n> > > > >  \t  be called ifcvf.\n> > > > >  \n> > > > > -config MLX5_VDPA\n> > > > > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > > > > +config MLX5_VDPA_CORE\n> > > > > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> > > > >  \tdepends on MLX5_CORE\n> > > > > -\tdefault n\n> > > > >  \thelp\n> > > > >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> > > > >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > > > > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> > > > >  \n> > > > >  config MLX5_VDPA_NET\n> > > > >  \ttristate \"vDPA driver for ConnectX devices\"\n> > > > > -\tdepends on MLX5_VDPA\n> > > > > -\tdefault n\n> > > > > +\tdepends on MLX5_VDPA_CORE\n> > > > >  \thelp\n> > > > >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> > > > >  \t  of virtio net datapath such that descriptors put on the ring will\n> > > > > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > > > > index d160e9b63a66..07353bbb9f8b 100644\n> > > > > --- a/drivers/vdpa/Makefile\n> > > > > +++ b/drivers/vdpa/Makefile\n> > > > > @@ -2,4 +2,4 @@\n> > > > >  obj-$(CONFIG_VDPA) += vdpa.o\n> > > > >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> > > > >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > > > > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > > > > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > > > > index 89a5bededc9f..9f50f7e8d889 100644\n> > > > > --- a/drivers/vdpa/mlx5/Makefile\n> > > > > +++ b/drivers/vdpa/mlx5/Makefile\n> > > > > @@ -1,4 +1,7 @@\n> > > > >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> > > > >  \n> > > > > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > > > > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > > > > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > > > > +\n> > > > > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > > > > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > > > > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > new file mode 100644\n> > > > > index 000000000000..4b39b55f57ab\n> > > > > --- /dev/null\n> > > > > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > @@ -0,0 +1,20 @@\n> > > > > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > > > > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > > > > +\n> > > > > +#include <linux/module.h>\n> > > > > +\n> > > > > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > > > > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > > > > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > > > > +\n> > > > > +static int __init mlx5_vdpa_core_init(void)\n> > > > > +{\n> > > > > +\treturn 0;\n> > > > > +}\n> > > > > +\n> > > > > +static void __exit mlx5_vdpa_core_exit(void)\n> > > > > +{\n> > > > > +}\n> > > > > +\n> > > > > +module_init(mlx5_vdpa_core_init);\n> > > > > +module_exit(mlx5_vdpa_core_exit);\n> > > > > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > > > > index ef1c550f8266..c093eab6c714 100644\n> > > > > --- a/drivers/vdpa/mlx5/core/mr.c\n> > > > > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > > > > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> > > > >  \n> > > > >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > >  {\n> > > > > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > >  out:\n> > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> > > > >  \n> > > > >  static bool map_empty(struct vhost_iotlb *iotlb)\n> > > > >  {\n> > > > > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> > > > >  \n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > > > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > > > > index 96e6421c5d1c..89606a18e286 100644\n> > > > > --- a/drivers/vdpa/mlx5/core/resources.c\n> > > > > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > > > > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> > > > >  \n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> > > > >  \n> > > > >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > >  {\n> > > > > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> > > > >  \n> > > > >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> > > > >  {\n> > > > > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> > > > >  \n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> > > > >  \n> > > > >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > >  {\n> > > > > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> > > > >  \n> > > > >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > >  {\n> > > > > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > >  \n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> > > > >  \n> > > > >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > >  {\n> > > > > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> > > > >  \n> > > > >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > >  {\n> > > > > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > >  \n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> > > > >  \n> > > > >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > >  {\n> > > > > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> > > > >  \n> > > > >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> > > > >  \t\t\t  int inlen)\n> > > > > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > >  \treturn err;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> > > > >  \n> > > > >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > >  {\n> > > > > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > >  \tres->valid = false;\n> > > > >  }\n> > > > > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > > > > -- \n> > > > > 2.27.0\n> > > > \n> >","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=redhat.com","ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=NFkBgNxU;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0qmc53rgz9sPB\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 16:51:28 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1726944AbgI2GvZ (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 02:51:25 -0400","from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:48482 \"EHLO\n        us-smtp-delivery-124.mimecast.com\" rhost-flags-OK-OK-OK-OK)\n        by vger.kernel.org with ESMTP id S1725786AbgI2GvX (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 02:51:23 -0400","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-23-73TlCFEUPE2voKpqXMRgpw-1; Tue, 29 Sep 2020 02:51:18 -0400","by mail-wr1-f72.google.com with SMTP id l9so1311949wrq.20\n        for <netdev@vger.kernel.org>; Mon, 28 Sep 2020 23:51:18 -0700 (PDT)","from redhat.com (bzq-79-179-71-128.red.bezeqint.net.\n [79.179.71.128])\n        by smtp.gmail.com with ESMTPSA id\n u13sm4356273wrm.77.2020.09.28.23.51.14\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Mon, 28 Sep 2020 23:51:15 -0700 (PDT)"],"Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n        s=mimecast20190719; t=1601362280;\n        h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n         to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n         in-reply-to:in-reply-to:references:references;\n        bh=P2el4z4T/pzkwfe+NnTyTuHBT85wHNdc3OI7ierNM/Y=;\n        b=NFkBgNxUY5gqCYXZTH56uM4gREuvum5z6VuUykZ7bsNy4iIXic4xSMF3uUgBx2dpNjGU9W\n        Q0pxEFiU+s4CmVUHUYJ/0QV7/NE7yFRIa+MGlIZdMs/ukaDzJUgnNClwzHqTHEL7IX+ab2\n        Bg321FZRbhTRPmQA8Tmph56pjztm6q0=","X-MC-Unique":"73TlCFEUPE2voKpqXMRgpw-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20161025;\n        h=x-gm-message-state:date:from:to:cc:subject:message-id:references\n         :mime-version:content-disposition:in-reply-to;\n        bh=P2el4z4T/pzkwfe+NnTyTuHBT85wHNdc3OI7ierNM/Y=;\n        b=J4ldclm3LHyK9LVJd/QDyIU5C9wy6xYUPY+b468VBZj2Qm8VKPnTTl0pqUqlpISj63\n         PxtJ1XKv8PDM7t4v/jyQHs1LItwYU8GFQj7S9T/nW4T3G2L6REv/RpQ+WxaaQDrLXbP/\n         PcZXI0R3w735lZZiRBpMq4X4OyeZbRzq0znzu+2VxqLTVrxIK63N2jPLjWvXH7fOKP8L\n         WxqZFkbpj37LmDgBXal/jVR5N/QRlRI+eNWRZDvGPHFVdjlZufYcqAidM+d8Z43uZwWh\n         ri0S2sHe2EhPKFqETQFXN/BEdGoEhdkS6x/IWjs2ZMC82xyr34Rcc6RbHA4qFe7jK0lo\n         4lVw==","X-Gm-Message-State":"AOAM532vJ4912cpMEGMpL7O/A50nFBxYu1RprF0NdL4BasNWQ4z1Romi\n        7m7SJSI0ouRRhmsJW5a7bZEILakYBCirSItRx3jgRWpEuoWLjdDt/oPE8BFu36exTSd43pAwBm2\n        EXkhhxuP8x+Cc3Rc6","X-Received":["by 2002:a5d:55c8:: with SMTP id i8mr2395208wrw.331.1601362276982;\n        Mon, 28 Sep 2020 23:51:16 -0700 (PDT)","by 2002:a5d:55c8:: with SMTP id i8mr2395182wrw.331.1601362276658;\n        Mon, 28 Sep 2020 23:51:16 -0700 (PDT)"],"X-Google-Smtp-Source":"\n ABdhPJzFyBifzvckpLQD7r8EHKOtkcUo+iba3+gpfBH8ykb9hU5ZqL4RKVRr01XS3RiySG+bnJSoxA==","Date":"Tue, 29 Sep 2020 02:51:12 -0400","From":"\"Michael S. Tsirkin\" <mst@redhat.com>","To":"Eli Cohen <elic@nvidia.com>","Cc":"jasowang@redhat.com, virtualization@lists.linux-foundation.org,\n        linux-kernel@vger.kernel.org, netdev@vger.kernel.org","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929025038-mutt-send-email-mst@kernel.org>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929022430-mutt-send-email-mst@kernel.org>\n <20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540788,"web_url":"http://patchwork.ozlabs.org/comment/2540788/","msgid":"<20200929065744.GE120395@mtl-vdi-166.wap.labs.mlnx>","list_archive_url":null,"date":"2020-09-29T06:57:44","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":80026,"url":"http://patchwork.ozlabs.org/api/people/80026/","name":"Eli Cohen","email":"elic@nvidia.com"},"content":"On Tue, Sep 29, 2020 at 02:51:12AM -0400, Michael S. Tsirkin wrote:\n> On Tue, Sep 29, 2020 at 09:34:33AM +0300, Eli Cohen wrote:\n> > On Tue, Sep 29, 2020 at 02:26:44AM -0400, Michael S. Tsirkin wrote:\n> > > On Tue, Sep 29, 2020 at 09:20:26AM +0300, Eli Cohen wrote:\n> > > > On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> > > > > On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > > > > > Change core vdpa functionality into a loadbale module such that upcoming\n> > > > > > block implementation will be able to use it.\n> > > > > > \n> > > > > > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> > > > > \n> > > > > Why don't we merge this patch together with the block module?\n> > > > > \n> > > > \n> > > > Since there are still not too many users of this driver, I would prefer\n> > > > to merge this as early as possible so pepole get used to the involved\n> > > > modules.\n> > > > \n> > > > Anyways, I will send another version of the patch which makes use of\n> > > > 'select' instead of 'depends'.\n> > > > \n> > > > Hope you agree to merge this.\n> > > \n> > > Are you quite sure there will be a block driver though?\n> > > I'd like to avoid a situation in which we have infrastructure\n> > > in place but no users.\n> > >\n> > \n> > I know it's in our plans but I see your point. Let me know if you\n> > prefer me to send the patch that fixes the 'depends' thing or defer it\n> > to a later time.\n> \n> Not sure what's the depends thing.\n> \n\nUse \"select MLX5_CORE\"\ninstead of \"depends on MLX5_CORE\"\n\nWasn't this agreed upon?\n\n> > > > > > ---\n> > > > > > V0 --> V1:\n> > > > > > Removed \"default n\" for configu options as 'n' is the default\n> > > > > > \n> > > > > >  drivers/vdpa/Kconfig               |  8 +++-----\n> > > > > >  drivers/vdpa/Makefile              |  2 +-\n> > > > > >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> > > > > >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> > > > > >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> > > > > >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> > > > > >  6 files changed, 42 insertions(+), 8 deletions(-)\n> > > > > >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > > > > > \n> > > > > > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > > > > > index 4271c408103e..57ff6a7f7401 100644\n> > > > > > --- a/drivers/vdpa/Kconfig\n> > > > > > +++ b/drivers/vdpa/Kconfig\n> > > > > > @@ -29,10 +29,9 @@ config IFCVF\n> > > > > >  \t  To compile this driver as a module, choose M here: the module will\n> > > > > >  \t  be called ifcvf.\n> > > > > >  \n> > > > > > -config MLX5_VDPA\n> > > > > > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > > > > > +config MLX5_VDPA_CORE\n> > > > > > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> > > > > >  \tdepends on MLX5_CORE\n> > > > > > -\tdefault n\n> > > > > >  \thelp\n> > > > > >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> > > > > >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > > > > > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> > > > > >  \n> > > > > >  config MLX5_VDPA_NET\n> > > > > >  \ttristate \"vDPA driver for ConnectX devices\"\n> > > > > > -\tdepends on MLX5_VDPA\n> > > > > > -\tdefault n\n> > > > > > +\tdepends on MLX5_VDPA_CORE\n> > > > > >  \thelp\n> > > > > >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> > > > > >  \t  of virtio net datapath such that descriptors put on the ring will\n> > > > > > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > > > > > index d160e9b63a66..07353bbb9f8b 100644\n> > > > > > --- a/drivers/vdpa/Makefile\n> > > > > > +++ b/drivers/vdpa/Makefile\n> > > > > > @@ -2,4 +2,4 @@\n> > > > > >  obj-$(CONFIG_VDPA) += vdpa.o\n> > > > > >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> > > > > >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > > > > > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > > > > > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > > > > > index 89a5bededc9f..9f50f7e8d889 100644\n> > > > > > --- a/drivers/vdpa/mlx5/Makefile\n> > > > > > +++ b/drivers/vdpa/mlx5/Makefile\n> > > > > > @@ -1,4 +1,7 @@\n> > > > > >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> > > > > >  \n> > > > > > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > > > > > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > > > > > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > > > > > +\n> > > > > > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > > > > > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > > > > > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > > new file mode 100644\n> > > > > > index 000000000000..4b39b55f57ab\n> > > > > > --- /dev/null\n> > > > > > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > > @@ -0,0 +1,20 @@\n> > > > > > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > > > > > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > > > > > +\n> > > > > > +#include <linux/module.h>\n> > > > > > +\n> > > > > > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > > > > > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > > > > > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > > > > > +\n> > > > > > +static int __init mlx5_vdpa_core_init(void)\n> > > > > > +{\n> > > > > > +\treturn 0;\n> > > > > > +}\n> > > > > > +\n> > > > > > +static void __exit mlx5_vdpa_core_exit(void)\n> > > > > > +{\n> > > > > > +}\n> > > > > > +\n> > > > > > +module_init(mlx5_vdpa_core_init);\n> > > > > > +module_exit(mlx5_vdpa_core_exit);\n> > > > > > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > > > > > index ef1c550f8266..c093eab6c714 100644\n> > > > > > --- a/drivers/vdpa/mlx5/core/mr.c\n> > > > > > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > > > > > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> > > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > > >  {\n> > > > > > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > > >  out:\n> > > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> > > > > >  \n> > > > > >  static bool map_empty(struct vhost_iotlb *iotlb)\n> > > > > >  {\n> > > > > > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> > > > > >  \n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > > > > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > > > > > index 96e6421c5d1c..89606a18e286 100644\n> > > > > > --- a/drivers/vdpa/mlx5/core/resources.c\n> > > > > > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > > > > > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> > > > > >  \n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > > >  {\n> > > > > > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > > >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> > > > > >  \n> > > > > >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> > > > > >  {\n> > > > > > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> > > > > >  \n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > > >  {\n> > > > > > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > > >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> > > > > >  \n> > > > > >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > > >  {\n> > > > > > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > > >  \n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > > >  {\n> > > > > > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > > >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> > > > > >  \n> > > > > >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > > >  {\n> > > > > > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > > >  \n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > > >  {\n> > > > > > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > > >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> > > > > >  \n> > > > > >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> > > > > >  \t\t\t  int inlen)\n> > > > > > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > > >  \treturn err;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> > > > > >  \n> > > > > >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > >  {\n> > > > > > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > > >  \tres->valid = false;\n> > > > > >  }\n> > > > > > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > > > > > -- \n> > > > > > 2.27.0\n> > > > > \n> > > \n>","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nvidia.com","ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256\n header.s=n1 header.b=UryIlOK0;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0qw30xLyz9sPB\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 16:57:55 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1725786AbgI2G5v (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 02:57:51 -0400","from hqnvemgate24.nvidia.com ([216.228.121.143]:10029 \"EHLO\n        hqnvemgate24.nvidia.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n        with ESMTP id S1725283AbgI2G5v (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 02:57:51 -0400","from hqmail.nvidia.com (Not Verified[216.228.121.13]) by\n hqnvemgate24.nvidia.com (using TLS: TLSv1.2, AES256-SHA)\n        id <B5f72da8a0000>; Mon, 28 Sep 2020 23:56:10 -0700","from mtl-vdi-166.wap.labs.mlnx (10.124.1.5) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 29 Sep\n 2020 06:57:48 +0000"],"Date":"Tue, 29 Sep 2020 09:57:44 +0300","From":"Eli Cohen <elic@nvidia.com>","To":"\"Michael S. Tsirkin\" <mst@redhat.com>","CC":"<jasowang@redhat.com>, <virtualization@lists.linux-foundation.org>,\n        <linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,\n        <elic@nvidia.com>","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929065744.GE120395@mtl-vdi-166.wap.labs.mlnx>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929022430-mutt-send-email-mst@kernel.org>\n <20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929025038-mutt-send-email-mst@kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Disposition":"inline","In-Reply-To":"<20200929025038-mutt-send-email-mst@kernel.org>","User-Agent":"Mutt/1.9.5 (bf161cf53efb) (2018-04-13)","X-Originating-IP":"[10.124.1.5]","X-ClientProxiedBy":"HQMAIL111.nvidia.com (172.20.187.18) To\n HQMAIL107.nvidia.com (172.20.187.13)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;\n        t=1601362570; bh=qX0VezLa0GBHLLAfabypjfJhrpG/izBbOuqMQZLjD1g=;\n        h=Date:From:To:CC:Subject:Message-ID:References:MIME-Version:\n         Content-Type:Content-Disposition:In-Reply-To:User-Agent:\n         X-Originating-IP:X-ClientProxiedBy;\n        b=UryIlOK0lnRpRu8T502/vyOcYR+QAiB8IuJpjPgYzZNyizkmWrHn+cr/aKQ8BTswL\n         WmVib1a6AhKAfmAw4v9NhU7U3aSUfA2UlaMTS2zrbfWtJwreU/M+RyHWLZ672jidd4\n         a1TvLnSzuWcV0nJwwF3+WMZU1dbpybh8C1Yyiu1GcMYh6eKGPwMU0bcPaUecAzaX/Z\n         07zd2j5HljTmPlJbPQ7FngT2JfjiQW1xqUdRzLhopIGkJJdVTyXNbc9eKu1mGNvbuy\n         mAwN3n5xe/BR9xOUzsbdKFp1v3wfZx17WD7mMzrKVGHQfmvzosLRI2hsv9UyS4/TUG\n         mhJAuP84BJRoQ==","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540795,"web_url":"http://patchwork.ozlabs.org/comment/2540795/","msgid":"<20200929031348-mutt-send-email-mst@kernel.org>","list_archive_url":null,"date":"2020-09-29T07:17:05","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":2235,"url":"http://patchwork.ozlabs.org/api/people/2235/","name":"Michael S. Tsirkin","email":"mst@redhat.com"},"content":"On Tue, Sep 29, 2020 at 09:57:44AM +0300, Eli Cohen wrote:\n> On Tue, Sep 29, 2020 at 02:51:12AM -0400, Michael S. Tsirkin wrote:\n> > On Tue, Sep 29, 2020 at 09:34:33AM +0300, Eli Cohen wrote:\n> > > On Tue, Sep 29, 2020 at 02:26:44AM -0400, Michael S. Tsirkin wrote:\n> > > > On Tue, Sep 29, 2020 at 09:20:26AM +0300, Eli Cohen wrote:\n> > > > > On Mon, Sep 28, 2020 at 03:55:09PM -0400, Michael S. Tsirkin wrote:\n> > > > > > On Thu, Sep 24, 2020 at 05:32:31PM +0300, Eli Cohen wrote:\n> > > > > > > Change core vdpa functionality into a loadbale module such that upcoming\n> > > > > > > block implementation will be able to use it.\n> > > > > > > \n> > > > > > > Signed-off-by: Eli Cohen <elic@nvidia.com>\n> > > > > > \n> > > > > > Why don't we merge this patch together with the block module?\n> > > > > > \n> > > > > \n> > > > > Since there are still not too many users of this driver, I would prefer\n> > > > > to merge this as early as possible so pepole get used to the involved\n> > > > > modules.\n> > > > > \n> > > > > Anyways, I will send another version of the patch which makes use of\n> > > > > 'select' instead of 'depends'.\n> > > > > \n> > > > > Hope you agree to merge this.\n> > > > \n> > > > Are you quite sure there will be a block driver though?\n> > > > I'd like to avoid a situation in which we have infrastructure\n> > > > in place but no users.\n> > > >\n> > > \n> > > I know it's in our plans but I see your point. Let me know if you\n> > > prefer me to send the patch that fixes the 'depends' thing or defer it\n> > > to a later time.\n> > \n> > Not sure what's the depends thing.\n> > \n> \n> Use \"select MLX5_CORE\"\n> instead of \"depends on MLX5_CORE\"\n> \n> Wasn't this agreed upon?\n\nHmm I don't know. I recall a similar discussion around VHOST_IOTLB.\nThat's different ...\n\nI see\n\n[linux]$ git grep MLX5_CORE|grep depends\ndrivers/infiniband/hw/mlx5/Kconfig:     depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && RFS_ACCEL\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && NET_SWITCHDEV\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && DCB\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on TLS=y || MLX5_CORE=m\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on TLS=y || MLX5_CORE=m\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\ndrivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && MLX5_ESWITCH\ndrivers/vdpa/Kconfig:   depends on MLX5_CORE\n\nand no selects of this symbol, I guess you are saying you are changing everything\nelse to select - is that right? Then I guess vdpa should follow suit ...\n\n\n> > > > > > > ---\n> > > > > > > V0 --> V1:\n> > > > > > > Removed \"default n\" for configu options as 'n' is the default\n> > > > > > > \n> > > > > > >  drivers/vdpa/Kconfig               |  8 +++-----\n> > > > > > >  drivers/vdpa/Makefile              |  2 +-\n> > > > > > >  drivers/vdpa/mlx5/Makefile         |  7 +++++--\n> > > > > > >  drivers/vdpa/mlx5/core/core_main.c | 20 ++++++++++++++++++++\n> > > > > > >  drivers/vdpa/mlx5/core/mr.c        |  3 +++\n> > > > > > >  drivers/vdpa/mlx5/core/resources.c | 10 ++++++++++\n> > > > > > >  6 files changed, 42 insertions(+), 8 deletions(-)\n> > > > > > >  create mode 100644 drivers/vdpa/mlx5/core/core_main.c\n> > > > > > > \n> > > > > > > diff --git a/drivers/vdpa/Kconfig b/drivers/vdpa/Kconfig\n> > > > > > > index 4271c408103e..57ff6a7f7401 100644\n> > > > > > > --- a/drivers/vdpa/Kconfig\n> > > > > > > +++ b/drivers/vdpa/Kconfig\n> > > > > > > @@ -29,10 +29,9 @@ config IFCVF\n> > > > > > >  \t  To compile this driver as a module, choose M here: the module will\n> > > > > > >  \t  be called ifcvf.\n> > > > > > >  \n> > > > > > > -config MLX5_VDPA\n> > > > > > > -\tbool \"MLX5 VDPA support library for ConnectX devices\"\n> > > > > > > +config MLX5_VDPA_CORE\n> > > > > > > +\ttristate \"MLX5 VDPA support library for ConnectX devices\"\n> > > > > > >  \tdepends on MLX5_CORE\n> > > > > > > -\tdefault n\n> > > > > > >  \thelp\n> > > > > > >  \t  Support library for Mellanox VDPA drivers. Provides code that is\n> > > > > > >  \t  common for all types of VDPA drivers. The following drivers are planned:\n> > > > > > > @@ -40,8 +39,7 @@ config MLX5_VDPA\n> > > > > > >  \n> > > > > > >  config MLX5_VDPA_NET\n> > > > > > >  \ttristate \"vDPA driver for ConnectX devices\"\n> > > > > > > -\tdepends on MLX5_VDPA\n> > > > > > > -\tdefault n\n> > > > > > > +\tdepends on MLX5_VDPA_CORE\n> > > > > > >  \thelp\n> > > > > > >  \t  VDPA network driver for ConnectX6 and newer. Provides offloading\n> > > > > > >  \t  of virtio net datapath such that descriptors put on the ring will\n> > > > > > > diff --git a/drivers/vdpa/Makefile b/drivers/vdpa/Makefile\n> > > > > > > index d160e9b63a66..07353bbb9f8b 100644\n> > > > > > > --- a/drivers/vdpa/Makefile\n> > > > > > > +++ b/drivers/vdpa/Makefile\n> > > > > > > @@ -2,4 +2,4 @@\n> > > > > > >  obj-$(CONFIG_VDPA) += vdpa.o\n> > > > > > >  obj-$(CONFIG_VDPA_SIM) += vdpa_sim/\n> > > > > > >  obj-$(CONFIG_IFCVF)    += ifcvf/\n> > > > > > > -obj-$(CONFIG_MLX5_VDPA) += mlx5/\n> > > > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5/\n> > > > > > > diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile\n> > > > > > > index 89a5bededc9f..9f50f7e8d889 100644\n> > > > > > > --- a/drivers/vdpa/mlx5/Makefile\n> > > > > > > +++ b/drivers/vdpa/mlx5/Makefile\n> > > > > > > @@ -1,4 +1,7 @@\n> > > > > > >  subdir-ccflags-y += -I$(srctree)/drivers/vdpa/mlx5/core\n> > > > > > >  \n> > > > > > > -obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa.o\n> > > > > > > -mlx5_vdpa-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o core/resources.o core/mr.o\n> > > > > > > +obj-$(CONFIG_MLX5_VDPA_CORE) += mlx5_vdpa_core.o\n> > > > > > > +mlx5_vdpa_core-$(CONFIG_MLX5_VDPA_CORE) += core/resources.o core/mr.o core/core_main.o\n> > > > > > > +\n> > > > > > > +obj-$(CONFIG_MLX5_VDPA_NET) += mlx5_vdpa_net.o\n> > > > > > > +mlx5_vdpa_net-$(CONFIG_MLX5_VDPA_NET) += net/main.o net/mlx5_vnet.o\n> > > > > > > diff --git a/drivers/vdpa/mlx5/core/core_main.c b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > > > new file mode 100644\n> > > > > > > index 000000000000..4b39b55f57ab\n> > > > > > > --- /dev/null\n> > > > > > > +++ b/drivers/vdpa/mlx5/core/core_main.c\n> > > > > > > @@ -0,0 +1,20 @@\n> > > > > > > +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB\n> > > > > > > +/* Copyright (c) 2020 Mellanox Technologies Ltd. */\n> > > > > > > +\n> > > > > > > +#include <linux/module.h>\n> > > > > > > +\n> > > > > > > +MODULE_AUTHOR(\"Eli Cohen <elic@nvidia.com>\");\n> > > > > > > +MODULE_DESCRIPTION(\"Mellanox VDPA core driver\");\n> > > > > > > +MODULE_LICENSE(\"Dual BSD/GPL\");\n> > > > > > > +\n> > > > > > > +static int __init mlx5_vdpa_core_init(void)\n> > > > > > > +{\n> > > > > > > +\treturn 0;\n> > > > > > > +}\n> > > > > > > +\n> > > > > > > +static void __exit mlx5_vdpa_core_exit(void)\n> > > > > > > +{\n> > > > > > > +}\n> > > > > > > +\n> > > > > > > +module_init(mlx5_vdpa_core_init);\n> > > > > > > +module_exit(mlx5_vdpa_core_exit);\n> > > > > > > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c\n> > > > > > > index ef1c550f8266..c093eab6c714 100644\n> > > > > > > --- a/drivers/vdpa/mlx5/core/mr.c\n> > > > > > > +++ b/drivers/vdpa/mlx5/core/mr.c\n> > > > > > > @@ -434,6 +434,7 @@ int mlx5_vdpa_create_mr(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *iotlb)\n> > > > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_mr);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > > > >  {\n> > > > > > > @@ -456,6 +457,7 @@ void mlx5_vdpa_destroy_mr(struct mlx5_vdpa_dev *mvdev)\n> > > > > > >  out:\n> > > > > > >  \tmutex_unlock(&mr->mkey_mtx);\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_mr);\n> > > > > > >  \n> > > > > > >  static bool map_empty(struct vhost_iotlb *iotlb)\n> > > > > > >  {\n> > > > > > > @@ -484,3 +486,4 @@ int mlx5_vdpa_handle_set_map(struct mlx5_vdpa_dev *mvdev, struct vhost_iotlb *io\n> > > > > > >  \n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_handle_set_map);\n> > > > > > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c\n> > > > > > > index 96e6421c5d1c..89606a18e286 100644\n> > > > > > > --- a/drivers/vdpa/mlx5/core/resources.c\n> > > > > > > +++ b/drivers/vdpa/mlx5/core/resources.c\n> > > > > > > @@ -98,6 +98,7 @@ int mlx5_vdpa_create_tis(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tisn)\n> > > > > > >  \n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tis);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > > > >  {\n> > > > > > > @@ -108,6 +109,7 @@ void mlx5_vdpa_destroy_tis(struct mlx5_vdpa_dev *mvdev, u32 tisn)\n> > > > > > >  \tMLX5_SET(destroy_tis_in, in, tisn, tisn);\n> > > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tis, in);\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tis);\n> > > > > > >  \n> > > > > > >  int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *rqtn)\n> > > > > > >  {\n> > > > > > > @@ -121,6 +123,7 @@ int mlx5_vdpa_create_rqt(struct mlx5_vdpa_dev *mvdev, void *in, int inlen, u32 *\n> > > > > > >  \n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_rqt);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > > > >  {\n> > > > > > > @@ -131,6 +134,7 @@ void mlx5_vdpa_destroy_rqt(struct mlx5_vdpa_dev *mvdev, u32 rqtn)\n> > > > > > >  \tMLX5_SET(destroy_rqt_in, in, rqtn, rqtn);\n> > > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_rqt, in);\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_rqt);\n> > > > > > >  \n> > > > > > >  int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > > > >  {\n> > > > > > > @@ -144,6 +148,7 @@ int mlx5_vdpa_create_tir(struct mlx5_vdpa_dev *mvdev, void *in, u32 *tirn)\n> > > > > > >  \n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_create_tir);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > > > >  {\n> > > > > > > @@ -154,6 +159,7 @@ void mlx5_vdpa_destroy_tir(struct mlx5_vdpa_dev *mvdev, u32 tirn)\n> > > > > > >  \tMLX5_SET(destroy_tir_in, in, tirn, tirn);\n> > > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, destroy_tir, in);\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_destroy_tir);\n> > > > > > >  \n> > > > > > >  int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > > > >  {\n> > > > > > > @@ -170,6 +176,7 @@ int mlx5_vdpa_alloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 *tdn)\n> > > > > > >  \n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_transport_domain);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > > > >  {\n> > > > > > > @@ -180,6 +187,7 @@ void mlx5_vdpa_dealloc_transport_domain(struct mlx5_vdpa_dev *mvdev, u32 tdn)\n> > > > > > >  \tMLX5_SET(dealloc_transport_domain_in, in, transport_domain, tdn);\n> > > > > > >  \tmlx5_cmd_exec_in(mvdev->mdev, dealloc_transport_domain, in);\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_dealloc_transport_domain);\n> > > > > > >  \n> > > > > > >  int mlx5_vdpa_create_mkey(struct mlx5_vdpa_dev *mvdev, struct mlx5_core_mkey *mkey, u32 *in,\n> > > > > > >  \t\t\t  int inlen)\n> > > > > > > @@ -266,6 +274,7 @@ int mlx5_vdpa_alloc_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > > > >  \treturn err;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_alloc_resources);\n> > > > > > >  \n> > > > > > >  void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > > >  {\n> > > > > > > @@ -282,3 +291,4 @@ void mlx5_vdpa_free_resources(struct mlx5_vdpa_dev *mvdev)\n> > > > > > >  \tmutex_destroy(&mvdev->mr.mkey_mtx);\n> > > > > > >  \tres->valid = false;\n> > > > > > >  }\n> > > > > > > +EXPORT_SYMBOL(mlx5_vdpa_free_resources);\n> > > > > > > -- \n> > > > > > > 2.27.0\n> > > > > > \n> > > > \n> >","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=redhat.com","ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=FWXV3iA+;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0rLd3Pjwz9sRR\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 17:17:29 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1726431AbgI2HR1 (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 03:17:27 -0400","from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:27540 \"EHLO\n        us-smtp-delivery-124.mimecast.com\" rhost-flags-OK-OK-OK-OK)\n        by vger.kernel.org with ESMTP id S1725355AbgI2HR0 (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 03:17:26 -0400","from mail-wm1-f70.google.com (mail-wm1-f70.google.com\n [209.85.128.70]) (Using TLS) by relay.mimecast.com with ESMTP id\n us-mta-493-MhOCnRO3O5KXIJuAbh0Y3A-1; Tue, 29 Sep 2020 03:17:21 -0400","by mail-wm1-f70.google.com with SMTP id s24so1357447wmh.1\n        for <netdev@vger.kernel.org>; Tue, 29 Sep 2020 00:17:20 -0700 (PDT)","from redhat.com (bzq-79-179-71-128.red.bezeqint.net.\n [79.179.71.128])\n        by smtp.gmail.com with ESMTPSA id\n z15sm4722542wrv.94.2020.09.29.00.17.17\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Tue, 29 Sep 2020 00:17:18 -0700 (PDT)"],"Dkim-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n        s=mimecast20190719; t=1601363843;\n        h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n         to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n         in-reply-to:in-reply-to:references:references;\n        bh=uFFAkA3/1aZz/o+ZDBqbYbAsb3pp0PKXRHscgx88F1k=;\n        b=FWXV3iA+aecQ3gtsEddVCNb89l3zmGlh/4Tz0SdDDgcCzCqWLsItzYId7dZpuM+tbpAu++\n        LRTTouXbbXaJa8J3OqG9lCXukQr8ubw2Dfz28umoGGva4zr860Bsp+y4VmobSfrVfT3ZWm\n        Bec1npsaHRg/9XaM90UKrKmHe4jw0UM=","X-MC-Unique":"MhOCnRO3O5KXIJuAbh0Y3A-1","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20161025;\n        h=x-gm-message-state:date:from:to:cc:subject:message-id:references\n         :mime-version:content-disposition:in-reply-to;\n        bh=uFFAkA3/1aZz/o+ZDBqbYbAsb3pp0PKXRHscgx88F1k=;\n        b=BFP2OJGGK/frDOsdT2LzA0QT1v0/Qun4VHt27IUTuU7he14PoEkuBhynSx4kDyhM4P\n         Me+2uFqds5/dStzgJY+dzT35AYaOOgbkl2lw3NU+hkunXHxCJT8/CC+USg4xmTG8IxSh\n         nkGiStHxreiNx8XcVwrWwqdNVoKyVBZwypRQCn65fISIrV+3cZbi9PEp/6xXgHYuywTj\n         RNUu68oQ8zyATOFYsLuivpA/ejcXOcH0be1515nIi11EkKrMEsU1bh3un8x/gVpWokVo\n         qNuQXWLnjcP71iiv0/wfcciAYadWqbq0uXerj6OfgeW5auAqFLN/cy8A0cGJCuyw76Ud\n         il8w==","X-Gm-Message-State":"AOAM533gt5y0TWV55bML3jVIRr4g/2lOndJqPjXrO0GrOY/0iovcU5km\n        xIUixZeg4zUGBMQd5b2E/L3puxziukM7ggG32YCXAHLz0MF9vM5REsH48LFaWgcnhEogUQs9d4a\n        Bq76AVUPZrMtFLpzI","X-Received":["by 2002:a1c:c256:: with SMTP id s83mr2923762wmf.93.1601363839299;\n        Tue, 29 Sep 2020 00:17:19 -0700 (PDT)","by 2002:a1c:c256:: with SMTP id s83mr2923739wmf.93.1601363838975;\n        Tue, 29 Sep 2020 00:17:18 -0700 (PDT)"],"X-Google-Smtp-Source":"\n ABdhPJzM9slXPoYtcGdR2naRrQhkb2gEeBL2pP9tzwp7rdb0hF40OioFgPNIp6/uZtfjPtINhPMNVg==","Date":"Tue, 29 Sep 2020 03:17:05 -0400","From":"\"Michael S. Tsirkin\" <mst@redhat.com>","To":"Eli Cohen <elic@nvidia.com>","Cc":"jasowang@redhat.com, virtualization@lists.linux-foundation.org,\n        linux-kernel@vger.kernel.org, netdev@vger.kernel.org","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929031348-mutt-send-email-mst@kernel.org>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929022430-mutt-send-email-mst@kernel.org>\n <20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929025038-mutt-send-email-mst@kernel.org>\n <20200929065744.GE120395@mtl-vdi-166.wap.labs.mlnx>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20200929065744.GE120395@mtl-vdi-166.wap.labs.mlnx>","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":2540806,"web_url":"http://patchwork.ozlabs.org/comment/2540806/","msgid":"<20200929074248.GA123696@mtl-vdi-166.wap.labs.mlnx>","list_archive_url":null,"date":"2020-09-29T07:42:48","subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","submitter":{"id":80026,"url":"http://patchwork.ozlabs.org/api/people/80026/","name":"Eli Cohen","email":"elic@nvidia.com"},"content":"On Tue, Sep 29, 2020 at 03:17:05AM -0400, Michael S. Tsirkin wrote:\n> > \n> > Use \"select MLX5_CORE\"\n> > instead of \"depends on MLX5_CORE\"\n> > \n> > Wasn't this agreed upon?\n> \n> Hmm I don't know. I recall a similar discussion around VHOST_IOTLB.\n> That's different ...\n\nI see.\n\n> \n> I see\n> \n> [linux]$ git grep MLX5_CORE|grep depends\n> drivers/infiniband/hw/mlx5/Kconfig:     depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && RFS_ACCEL\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && NET_SWITCHDEV\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && DCB\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on TLS=y || MLX5_CORE=m\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on TLS=y || MLX5_CORE=m\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN\n> drivers/net/ethernet/mellanox/mlx5/core/Kconfig:        depends on MLX5_CORE_EN && MLX5_ESWITCH\n> drivers/vdpa/Kconfig:   depends on MLX5_CORE\n> \n> and no selects of this symbol, I guess you are saying you are changing everything\n> else to select - is that right? Then I guess vdpa should follow suit ...\n> \n\nNo, I will leave that and will discuss internally if/who/when will do\nthis.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nvidia.com","ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nvidia.com header.i=@nvidia.com header.a=rsa-sha256\n header.s=n1 header.b=n1Ox6h0L;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C0rw24kN5z9sSf\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Tue, 29 Sep 2020 17:42:58 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S1727035AbgI2Hmy (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Tue, 29 Sep 2020 03:42:54 -0400","from hqnvemgate26.nvidia.com ([216.228.121.65]:10874 \"EHLO\n        hqnvemgate26.nvidia.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n        with ESMTP id S1725554AbgI2Hmy (ORCPT\n        <rfc822;netdev@vger.kernel.org>); Tue, 29 Sep 2020 03:42:54 -0400","from hqmail.nvidia.com (Not Verified[216.228.121.13]) by\n hqnvemgate26.nvidia.com (using TLS: TLSv1.2, AES256-SHA)\n        id <B5f72e5710000>; Tue, 29 Sep 2020 00:42:41 -0700","from mtl-vdi-166.wap.labs.mlnx (10.124.1.5) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 29 Sep\n 2020 07:42:52 +0000"],"Date":"Tue, 29 Sep 2020 10:42:48 +0300","From":"Eli Cohen <elic@nvidia.com>","To":"\"Michael S. Tsirkin\" <mst@redhat.com>","CC":"<jasowang@redhat.com>, <virtualization@lists.linux-foundation.org>,\n        <linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,\n        <elic@nvidia.com>","Subject":"Re: [PATCH V1 vhost-next] vdpa/mlx5: Make vdpa core driver a\n distinct module","Message-ID":"<20200929074248.GA123696@mtl-vdi-166.wap.labs.mlnx>","References":"<20200924143231.GA186492@mtl-vdi-166.wap.labs.mlnx>\n <20200928155448-mutt-send-email-mst@kernel.org>\n <20200929062026.GB120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929022430-mutt-send-email-mst@kernel.org>\n <20200929063433.GC120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929025038-mutt-send-email-mst@kernel.org>\n <20200929065744.GE120395@mtl-vdi-166.wap.labs.mlnx>\n <20200929031348-mutt-send-email-mst@kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Disposition":"inline","In-Reply-To":"<20200929031348-mutt-send-email-mst@kernel.org>","User-Agent":"Mutt/1.9.5 (bf161cf53efb) (2018-04-13)","X-Originating-IP":"[10.124.1.5]","X-ClientProxiedBy":"HQMAIL105.nvidia.com (172.20.187.12) To\n HQMAIL107.nvidia.com (172.20.187.13)","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1;\n        t=1601365361; bh=khNyUg6fCBHz2WjAbLMQyLYkEJvYeDmjiMJT4IcmDR4=;\n        h=Date:From:To:CC:Subject:Message-ID:References:MIME-Version:\n         Content-Type:Content-Disposition:In-Reply-To:User-Agent:\n         X-Originating-IP:X-ClientProxiedBy;\n        b=n1Ox6h0L1r6zOGQpGzRyQfSzRq3NzlDT35HuIqTIFBGQgtpjIQVsDtbeflwSaQJ6K\n         XkVDzlEe31USSyJKRh7tk4xxdTAuRRA0x4cx+zMnrhjodwWqTj+c3M7fQER3Kn1ACY\n         7CuVNm0Ye7x0rMtuCeOA4zmgij1kdii+MiYBUyDgDKoWugX9H6E+0euCubuykyP7jV\n         8wHDiakvHVmXta6n3mBT9KDPzKUO+hm4W3oEHGWRoRDqbpXcNhG/LawykCdM48Yg2m\n         HqbXV439INGTKl1HpYlDyGsexuvPc+zwHktE0xNSfJIpcrgvs4qI2nFTPuZPi/4ZSQ\n         sOoSVd7Oz71Lg==","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]