Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1657891ybt; Thu, 2 Jul 2020 10:32:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNNacv1Jmg/b3T1mtC1B5vdsBxTz95NBSMkhRAU4Jva7HtJ0ofit36qeDacpMsTZF7IZko X-Received: by 2002:a17:906:7208:: with SMTP id m8mr29768395ejk.544.1593711125590; Thu, 02 Jul 2020 10:32:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593711125; cv=none; d=google.com; s=arc-20160816; b=al2MJxoQzd8euLLSMd0Fr3PIMY9xG/7gHlrkavJY0rV/DgpQFJEFwFszN3xkKvxMlf mMrkb8jPw4V33+0UK0Rp52tDT0T4SAmOrnsHxLk0vuxuB8U74YDkpcLWTquVFwjxYVJS lCPcl3rEFKdQToAXpHbmadH3wyffX7vRY1cWZZUbF5Abb0/fH2XR8s3UEeuQ5mFpXyfB Ec350ND3CW5oWG6rwusVwvhBQbJzFAMwyOJacVKhX9P0BuOup/ryPGdB7mnh5a4rl4RS U0ucJiBKdLoEKQk+GwoltyLp5yYWkY7hH95humfJ1uC3HOEouldwZ8ZgbdJnaUBtwI9D Q/dQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=qS9aKixWg8M2HwkRwLxIhre1iwIBiL08luFNH178zko=; b=dUIUa6Zt+6IjXxThq5Vi5ZnfJkD01OfPCTpT3lTB5NYpgwhRWUyK7vNc8yW0V7unoS yWMaFfIUkI/IXGgUdkiCnjFnQIyXVRWXG55c4ORmKbZR1GEIXGmigL48qqbAlaQfmOg0 Z9oPOmRUkaXYoouusIft2fXvblIpz8rc23RkwRA7HejfPaFWNJTmS73byyO+qWulrGP6 6XTm3P2iSgk/eUET3o2xScyAuk28XSnG1zDjL6QkGdoyW3KGXj10van9uumxQB0vyKrg 6wRfyzh4OPn5QWpjOScpfaoRZcFqYV5KZ2aBXvmMtzFnnL/w1z7RdXV3SwxR1M9XG0vi a1+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dlardQB2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id re8si6588677ejb.627.2020.07.02.10.31.42; Thu, 02 Jul 2020 10:32:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=dlardQB2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727858AbgGBRbg (ORCPT + 99 others); Thu, 2 Jul 2020 13:31:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726120AbgGBRbe (ORCPT ); Thu, 2 Jul 2020 13:31:34 -0400 Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB022C08C5C1 for ; Thu, 2 Jul 2020 10:31:34 -0700 (PDT) Received: by mail-io1-xd41.google.com with SMTP id q8so29735874iow.7 for ; Thu, 02 Jul 2020 10:31:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qS9aKixWg8M2HwkRwLxIhre1iwIBiL08luFNH178zko=; b=dlardQB2kRCLmJxUeHCCJ1I//DtST1JMzmk2zK2iYoauEZmj8YlzMayYjIs8nTaonS etg4Ag4rCqNDLBYKFt2YxlJ7IsVmzeOEMu7xoCYebrrw/y9piCzD7+NrUIKt0Q/3l1UT etQxxjV7IZ0iyC3qlWPNbBYh0mW28oml8cxYs6Kk3y4qDW/U1PsEGy5y3E8sFzC0EY0Q Qb4GgY6BdqGv5MT61oqVVem0THpeS3KdnPmEKSeTGFRLV6076ASt+Ts3Sc5XHNA177VE lj1Siv1c6nDNc06rawhTBbQpydFWRRhZsu2BedcpPsSsVW1t5HZRKlufOzdJzYGTbUak 5Ppg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qS9aKixWg8M2HwkRwLxIhre1iwIBiL08luFNH178zko=; b=YB+VoleCuq8Py/YFW9ate1/kjEqV8L8i0hb/Xufn9ZrvWwk03uCjpnweIRv7MNdaUu hTqZi87xl4JiwpSWCTfGOC3Bo2W9EZPVvpJ1ewPYA4AIY8wcAsA/AgFXt3B3uRqGJAzZ 5gCrErwvWgpBugHZm7GOkegge/jzeshFSaO7dr5AGM9SxkH0QRoKv2Uj1gCMSN0MCBJ/ 3qh5FwA1+qfHhIl36dpI2/lfEAFtO8cKu3KnW8+9wMiVWLPdqm/06I4acmspYxgtmX5z VGBIDajutHj7V+JhyqXhWP6vDcO/qXcYnVMmtqNBXtZvBI31Du48PAOoEY1Pco2Sl+qJ J/5w== X-Gm-Message-State: AOAM53104vB8wyQ5580HGPdrbxnw/66GlDb1vPMWLhl/5SSIg3d9EY/1 A94Nwfy7Zw6n+BNPdiFuSAXy1DEuSP8QSSpVkh2iJA== X-Received: by 2002:a02:7f89:: with SMTP id r131mr34382094jac.98.1593711094007; Thu, 02 Jul 2020 10:31:34 -0700 (PDT) MIME-Version: 1.0 References: <20200702082143.25259-1-kishon@ti.com> <20200702055026-mutt-send-email-mst@kernel.org> In-Reply-To: <20200702055026-mutt-send-email-mst@kernel.org> From: Mathieu Poirier Date: Thu, 2 Jul 2020 11:31:23 -0600 Message-ID: Subject: Re: [RFC PATCH 00/22] Enhance VHOST to enable SoC-to-SoC communication To: "Michael S. Tsirkin" Cc: Kishon Vijay Abraham I , Ohad Ben-Cohen , Bjorn Andersson , Jon Mason , Dave Jiang , Allen Hubbe , Lorenzo Pieralisi , Bjorn Helgaas , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Stefano Garzarella , "open list:DOCUMENTATION" , Linux Kernel Mailing List , linux-remoteproc , linux-ntb@googlegroups.com, linux-pci@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2 Jul 2020 at 03:51, Michael S. Tsirkin wrote: > > On Thu, Jul 02, 2020 at 01:51:21PM +0530, Kishon Vijay Abraham I wrote: > > This series enhances Linux Vhost support to enable SoC-to-SoC > > communication over MMIO. This series enables rpmsg communication between > > two SoCs using both PCIe RC<->EP and HOST1-NTB-HOST2 > > > > 1) Modify vhost to use standard Linux driver model > > 2) Add support in vring to access virtqueue over MMIO > > 3) Add vhost client driver for rpmsg > > 4) Add PCIe RC driver (uses virtio) and PCIe EP driver (uses vhost) for > > rpmsg communication between two SoCs connected to each other > > 5) Add NTB Virtio driver and NTB Vhost driver for rpmsg communication > > between two SoCs connected via NTB > > 6) Add configfs to configure the components > > > > UseCase1 : > > > > VHOST RPMSG VIRTIO RPMSG > > + + > > | | > > | | > > | | > > | | > > +-----v------+ +------v-------+ > > | Linux | | Linux | > > | Endpoint | | Root Complex | > > | <-----------------> | > > | | | | > > | SOC1 | | SOC2 | > > +------------+ +--------------+ > > > > UseCase 2: > > > > VHOST RPMSG VIRTIO RPMSG > > + + > > | | > > | | > > | | > > | | > > +------v------+ +------v------+ > > | | | | > > | HOST1 | | HOST2 | > > | | | | > > +------^------+ +------^------+ > > | | > > | | > > +---------------------------------------------------------------------+ > > | +------v------+ +------v------+ | > > | | | | | | > > | | EP | | EP | | > > | | CONTROLLER1 | | CONTROLLER2 | | > > | | <-----------------------------------> | | > > | | | | | | > > | | | | | | > > | | | SoC With Multiple EP Instances | | | > > | | | (Configured using NTB Function) | | | > > | +-------------+ +-------------+ | > > +---------------------------------------------------------------------+ > > > > Software Layering: > > > > The high-level SW layering should look something like below. This series > > adds support only for RPMSG VHOST, however something similar should be > > done for net and scsi. With that any vhost device (PCI, NTB, Platform > > device, user) can use any of the vhost client driver. > > > > > > +----------------+ +-----------+ +------------+ +----------+ > > | RPMSG VHOST | | NET VHOST | | SCSI VHOST | | X | > > +-------^--------+ +-----^-----+ +-----^------+ +----^-----+ > > | | | | > > | | | | > > | | | | > > +-----------v-----------------v--------------v--------------v----------+ > > | VHOST CORE | > > +--------^---------------^--------------------^------------------^-----+ > > | | | | > > | | | | > > | | | | > > +--------v-------+ +----v------+ +----------v----------+ +----v-----+ > > | PCI EPF VHOST | | NTB VHOST | |PLATFORM DEVICE VHOST| | X | > > +----------------+ +-----------+ +---------------------+ +----------+ > > > > This was initially proposed here [1] > > > > [1] -> https://lore.kernel.org/r/2cf00ec4-1ed6-f66e-6897-006d1a5b6390@ti.com > > > I find this very interesting. A huge patchset so will take a bit > to review, but I certainly plan to do that. Thanks! Same here - it will take time. This patchset is sizable and sits behind a few others that are equally big. > > > > > Kishon Vijay Abraham I (22): > > vhost: Make _feature_ bits a property of vhost device > > vhost: Introduce standard Linux driver model in VHOST > > vhost: Add ops for the VHOST driver to configure VHOST device > > vringh: Add helpers to access vring in MMIO > > vhost: Add MMIO helpers for operations on vhost virtqueue > > vhost: Introduce configfs entry for configuring VHOST > > virtio_pci: Use request_threaded_irq() instead of request_irq() > > rpmsg: virtio_rpmsg_bus: Disable receive virtqueue callback when > > reading messages > > rpmsg: Introduce configfs entry for configuring rpmsg > > rpmsg: virtio_rpmsg_bus: Add Address Service Notification support > > rpmsg: virtio_rpmsg_bus: Move generic rpmsg structure to > > rpmsg_internal.h > > virtio: Add ops to allocate and free buffer > > rpmsg: virtio_rpmsg_bus: Use virtio_alloc_buffer() and > > virtio_free_buffer() > > rpmsg: Add VHOST based remote processor messaging bus > > samples/rpmsg: Setup delayed work to send message > > samples/rpmsg: Wait for address to be bound to rpdev for sending > > message > > rpmsg.txt: Add Documentation to configure rpmsg using configfs > > virtio_pci: Add VIRTIO driver for VHOST on Configurable PCIe Endpoint > > device > > PCI: endpoint: Add EP function driver to provide VHOST interface > > NTB: Add a new NTB client driver to implement VIRTIO functionality > > NTB: Add a new NTB client driver to implement VHOST functionality > > NTB: Describe the ntb_virtio and ntb_vhost client in the documentation > > > > Documentation/driver-api/ntb.rst | 11 + > > Documentation/rpmsg.txt | 56 + > > drivers/ntb/Kconfig | 18 + > > drivers/ntb/Makefile | 2 + > > drivers/ntb/ntb_vhost.c | 776 +++++++++++ > > drivers/ntb/ntb_virtio.c | 853 ++++++++++++ > > drivers/ntb/ntb_virtio.h | 56 + > > drivers/pci/endpoint/functions/Kconfig | 11 + > > drivers/pci/endpoint/functions/Makefile | 1 + > > .../pci/endpoint/functions/pci-epf-vhost.c | 1144 ++++++++++++++++ > > drivers/rpmsg/Kconfig | 10 + > > drivers/rpmsg/Makefile | 3 +- > > drivers/rpmsg/rpmsg_cfs.c | 394 ++++++ > > drivers/rpmsg/rpmsg_core.c | 7 + > > drivers/rpmsg/rpmsg_internal.h | 136 ++ > > drivers/rpmsg/vhost_rpmsg_bus.c | 1151 +++++++++++++++++ > > drivers/rpmsg/virtio_rpmsg_bus.c | 184 ++- > > drivers/vhost/Kconfig | 1 + > > drivers/vhost/Makefile | 2 +- > > drivers/vhost/net.c | 10 +- > > drivers/vhost/scsi.c | 24 +- > > drivers/vhost/test.c | 17 +- > > drivers/vhost/vdpa.c | 2 +- > > drivers/vhost/vhost.c | 730 ++++++++++- > > drivers/vhost/vhost_cfs.c | 341 +++++ > > drivers/vhost/vringh.c | 332 +++++ > > drivers/vhost/vsock.c | 20 +- > > drivers/virtio/Kconfig | 9 + > > drivers/virtio/Makefile | 1 + > > drivers/virtio/virtio_pci_common.c | 25 +- > > drivers/virtio/virtio_pci_epf.c | 670 ++++++++++ > > include/linux/mod_devicetable.h | 6 + > > include/linux/rpmsg.h | 6 + > > {drivers/vhost => include/linux}/vhost.h | 132 +- > > include/linux/virtio.h | 3 + > > include/linux/virtio_config.h | 42 + > > include/linux/vringh.h | 46 + > > samples/rpmsg/rpmsg_client_sample.c | 32 +- > > tools/virtio/virtio_test.c | 2 +- > > 39 files changed, 7083 insertions(+), 183 deletions(-) > > create mode 100644 drivers/ntb/ntb_vhost.c > > create mode 100644 drivers/ntb/ntb_virtio.c > > create mode 100644 drivers/ntb/ntb_virtio.h > > create mode 100644 drivers/pci/endpoint/functions/pci-epf-vhost.c > > create mode 100644 drivers/rpmsg/rpmsg_cfs.c > > create mode 100644 drivers/rpmsg/vhost_rpmsg_bus.c > > create mode 100644 drivers/vhost/vhost_cfs.c > > create mode 100644 drivers/virtio/virtio_pci_epf.c > > rename {drivers/vhost => include/linux}/vhost.h (66%) > > > > -- > > 2.17.1 > > >