Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp422031rdh; Sat, 23 Sep 2023 17:21:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFB4TtvlVkc240FEQKZCDHaWIauOzDih6Xz/KtEruiu9PYT4YHWBRkOe4RgDSaPqX4u2K33 X-Received: by 2002:a05:6808:1147:b0:3a1:df63:60cc with SMTP id u7-20020a056808114700b003a1df6360ccmr3942227oiu.59.1695514862981; Sat, 23 Sep 2023 17:21:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695514862; cv=none; d=google.com; s=arc-20160816; b=KlAAq8rwt2JzSyPqWpDWJaqQS6HxT3fgkf5/9hb7NJLlMvN0RpreuW9+UfawoOkf3D 1WlKzwalZshJpAqOfKeJXR6HT1SFLQHT+Oa314mTujQC8GU0Og050SsNa2UQQUfnWwqe wGtzGncXV7GkEQmSR/prxKYqWsuUaT/y1J8JofyTSWyt02gg5sxEjXYZQUoaKy86Bk3Z fqaoNbk6yzYufmq6dUayuxTkFJcNljUtqzZfn/SkjPLE9NrlgToU4D5o64eUG3XPAIic m0m5zx2TQiULZLpww2OoW6leZiKJ5v9Tu63jyXXEhrzz5dqR6LUvj2blYcWin5+gQwV+ CgHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:to:from:dkim-signature; bh=oUMO2OtaVNrK4yV1FIaqhnvn7xtcxe5yI1/jQcR5/F8=; fh=xiBZnYthZkU72K3VlivZH8ewgfrUkWRaBxXhAGtxMAw=; b=W5FcS7h83lEn9P6rS8gJW626MXxuBF8o6GYsiaBryharHNQuVMQm4z8Xz5clzwSgMG m9908frOHw3i9JiAiUTIv8UBTgAylALKQSepiWWLHSVWuZmMUy8Fyp8z3D3pgmse1D7Y QbVtQ+SqQ9zMLjszdftF/DCd5BD4U/RqFTRo/bKjMckFagb2ip5D7aP1f/PApLd6KuUZ Zw2ENCjA0s7Hfen6oUL4M+9Ng3y7ZDw76WGKWR7twcZ/CncXvMl1I7KWwIDjPxLmEjsn 5FSWWnrlmFk6EyuOFaK9DGZ+VAOMUREzZiI+RnGmxvL479j4i4BhNQWQffyTD7rgkPcg 1F1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=PiD7JRKL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id a21-20020a63e855000000b0057d7cff25c7si4204059pgk.417.2023.09.23.17.21.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Sep 2023 17:21:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=PiD7JRKL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 8E18A807DED0; Sat, 23 Sep 2023 10:06:59 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232052AbjIWRGn (ORCPT + 99 others); Sat, 23 Sep 2023 13:06:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49042 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231972AbjIWRGl (ORCPT ); Sat, 23 Sep 2023 13:06:41 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC8AC11D for ; Sat, 23 Sep 2023 10:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695488750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=oUMO2OtaVNrK4yV1FIaqhnvn7xtcxe5yI1/jQcR5/F8=; b=PiD7JRKL7uMjz8moxLSIuEhQ3HmGDWBvFnYDGlxnPBfEbdBzPN+b0tkzgjLYlGn+oqyW7e AIb+Acw3SZcsarkrAlbJQ38ASCsCgCYaR8xeLrW5Q3uC0RpHBPN5gzllCX94w2x4AvrdsD WjfzpsoQ5ezY/7Lt9SmPb4O2JxAiBtM= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-130-0vJcqFGBM1iH50Q-lv9VZw-1; Sat, 23 Sep 2023 13:05:47 -0400 X-MC-Unique: 0vJcqFGBM1iH50Q-lv9VZw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D3BC9811E7E; Sat, 23 Sep 2023 17:05:46 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 949EB2026D4B; Sat, 23 Sep 2023 17:05:43 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, yi.l.liu@intel.com, jgg@nvidia.com, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: [RFC 0/7] vdpa: Add support for iommufd Date: Sun, 24 Sep 2023 01:05:33 +0800 Message-Id: <20230923170540.1447301-1-lulu@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Sat, 23 Sep 2023 10:06:59 -0700 (PDT) X-Spam-Level: ** Hi All Really apologize for the delay, this is the draft RFC for iommufd support for vdpa, This code provides the basic function for iommufd support The code was tested and passed in device vdpa_sim_net The qemu code is https://gitlab.com/lulu6/gitlabqemutmp/-/tree/iommufdRFC The kernel code is https://gitlab.com/lulu6/vhost/-/tree/iommufdRFC ToDo 1. this code is out of date and needs to clean and rebase on the latest code 2. this code has some workaround, I Skip the check for iommu_group and CACHE_COHERENCY, also some misc issues like need to add mutex for iommfd operations 3. only test in emulated device, other modes not tested yet After addressed these problems I will send out a new version for RFC. I will provide the code in 3 weeks Thanks Cindy Signed-off-by: Cindy Lu The test step is 1. create vdpa_sim device ... vdpa dev add name vdpa15 mgmtdev vdpasim_net ... 2. load the VM with the command   -object iommufd,id=iommufd0 \   -device virtio-net-pci,netdev=vhost-vdpa1,disable-legacy=on,disable-modern=off\   -netdev type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa1,iommufd=iommufd0\ 3. in guest VM you can find the vdpa_sim port works well. [root@ubuntunew ~]# ifconfig eth0 eth0: flags=4163  mtu 1500         inet6 fe80::5054:ff:fe12:3456  prefixlen 64  scopeid 0x20         ether 52:54:00:12:34:56  txqueuelen 1000  (Ethernet)         RX packets 53  bytes 9108 (8.8 KiB)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 53  bytes 9108 (8.8 KiB)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 [root@ubuntunew ~]# ./test.sh eth0 [  172.815279] pktgen: Packet Generator for packet performance testing. Version: 2.75 Adding queue 0 of eth0 Configuring devices eth0@0 Running... ctrl^C to stop [root@ubuntunew ~]# ifconfig eth0 eth0: flags=4163  mtu 1500         inet6 fe80::5054:ff:fe12:3456  prefixlen 64  scopeid 0x20         ether 52:54:00:12:34:56  txqueuelen 1000  (Ethernet)         RX packets 183455  bytes 11748533 (11.2 MiB)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 183473  bytes 11749685 (11.2 MiB)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 Cindy Lu (7): vhost/iommufd: Add the functions support iommufd Kconfig: Add the new file vhost/iommufd vhost: Add 3 new uapi to support iommufd vdpa: change the map/unmap process to support iommufd vdpa: Add new vdpa_config_ops vdpa_sim :Add support for iommufd iommufd: Skip the CACHE_COHERENCY and iommu group check drivers/iommu/iommufd/device.c | 6 +- drivers/vdpa/vdpa_sim/vdpa_sim.c | 8 ++ drivers/vhost/Kconfig | 1 + drivers/vhost/Makefile | 1 + drivers/vhost/iommufd.c | 151 +++++++++++++++++++++++ drivers/vhost/vdpa.c | 201 +++++++++++++++++++++++++++++++ drivers/vhost/vhost.h | 21 ++++ include/linux/vdpa.h | 34 +++++- include/uapi/linux/vhost.h | 71 +++++++++++ 9 files changed, 490 insertions(+), 4 deletions(-) create mode 100644 drivers/vhost/iommufd.c -- 2.34.3