From patchwork Tue Oct 11 10:41:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Eugenio Perez Martin X-Patchwork-Id: 13003892 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E4302C433F5 for ; Tue, 11 Oct 2022 11:56:33 +0000 (UTC) Received: from localhost ([::1]:50660 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oiDs8-0007TM-1e for qemu-devel@archiver.kernel.org; Tue, 11 Oct 2022 07:56:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56482) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oiCi9-0004U1-E9 for qemu-devel@nongnu.org; Tue, 11 Oct 2022 06:42:09 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:33164) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oiCi6-0007mM-1I for qemu-devel@nongnu.org; Tue, 11 Oct 2022 06:42:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665484924; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KFzwfI4xWWrXGzPF6GL7m7oIfEjaLoepedAPPZ02oI4=; b=EI8zOspag17FXD2hS6S3t2tmNW2q0Rs5/tZ+3N9eVzumPDj2MgDxvpdcqshMf4pa4/cuvA idqTBxzC1D1EsNljVjMVPYLU/AnDDoP2VTFVi4OQip997BDjSRAGDMTOE2mgIXtqXoFpdK e1lZqjEjLJxLh8mIwRA1kTrOUE+Oe70= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-77-dClyIeZzMOWJ4f8Yee3m4w-1; Tue, 11 Oct 2022 06:42:00 -0400 X-MC-Unique: dClyIeZzMOWJ4f8Yee3m4w-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 15FAF299E750; Tue, 11 Oct 2022 10:42:00 +0000 (UTC) Received: from eperezma.remote.csb (unknown [10.39.193.104]) by smtp.corp.redhat.com (Postfix) with ESMTP id D01BA492B09; Tue, 11 Oct 2022 10:41:56 +0000 (UTC) From: =?utf-8?q?Eugenio_P=C3=A9rez?= To: qemu-devel@nongnu.org Cc: Gautam Dawar , "Michael S. Tsirkin" , Zhu Lingshan , Jason Wang , Si-Wei Liu , Paolo Bonzini , Eli Cohen , Parav Pandit , Laurent Vivier , Stefano Garzarella , Stefan Hajnoczi , "Gonglei (Arei)" , Cindy Lu , Liuxiangdong , Cornelia Huck , kvm@vger.kernel.org, Harpreet Singh Anand Subject: [PATCH v5 0/6] ASID support in vhost-vdpa net Date: Tue, 11 Oct 2022 12:41:48 +0200 Message-Id: <20221011104154.1209338-1-eperezma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Received-SPF: pass client-ip=170.10.129.124; envelope-from=eperezma@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Control VQ is the way net devices use to send changes to the device state, like the number of active queues or its mac address. QEMU needs to intercept this queue so it can track these changes and is able to migrate the device. It can do it from 1576dbb5bbc4 ("vdpa: Add x-svq to NetdevVhostVDPAOptions"). However, to enable x-svq implies to shadow all VirtIO device's virtqueues, which will damage performance. This series adds address space isolation, so the device and the guest communicate directly with them (passthrough) and CVQ communication is split in two: The guest communicates with QEMU and QEMU forwards the commands to the device. Comments are welcome. Thanks! v5: - Move vring state in vhost_vdpa_get_vring_group instead of using a parameter. - Rename VHOST_VDPA_NET_CVQ_PASSTHROUGH to VHOST_VDPA_NET_DATA_ASID v4: - Rebased on last CVQ start series, that allocated CVQ cmd bufs at load - Squash vhost_vdpa_cvq_group_is_independent. - Do not check for cvq index on vhost_vdpa_net_prepare, we only have one that callback registered in that NetClientInfo. - Add comment specifying behavior if device does not support _F_ASID - Update headers to a later Linux commit to not to remove SETUP_RNG_SEED v3: - Do not return an error but just print a warning if vdpa device initialization returns failure while getting AS num of VQ groups - Delete extra newline v2: - Much as commented on series [1], handle vhost_net backend through NetClientInfo callbacks instead of directly. - Fix not freeing SVQ properly when device does not support CVQ - Add BIT_ULL missed checking device's backend feature for _F_ASID. Eugenio PĂ©rez (6): vdpa: Use v->shadow_vqs_enabled in vhost_vdpa_svqs_start & stop vdpa: Allocate SVQ unconditionally vdpa: Add asid parameter to vhost_vdpa_dma_map/unmap vdpa: Store x-svq parameter in VhostVDPAState vdpa: Add listener_shadow_vq to vhost_vdpa vdpa: Always start CVQ in SVQ mode include/hw/virtio/vhost-vdpa.h | 10 ++- hw/virtio/vhost-vdpa.c | 75 ++++++++++--------- net/vhost-vdpa.c | 128 ++++++++++++++++++++++++++++++--- hw/virtio/trace-events | 4 +- 4 files changed, 170 insertions(+), 47 deletions(-)