From patchwork Wed Aug 3 17:18:14 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: 12935793 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6545FC19F28 for ; Wed, 3 Aug 2022 17:23:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236999AbiHCRX1 (ORCPT ); Wed, 3 Aug 2022 13:23:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236321AbiHCRXZ (ORCPT ); Wed, 3 Aug 2022 13:23:25 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id D666F53D06 for ; Wed, 3 Aug 2022 10:23:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1659547404; 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=slZPL044q+C7rvNYiFVId3G4VN1Old5kmH5KWkstxKI=; b=ULwOmNT7I59igavVvPM3ulz/QAupCS2ZpYPY/HnHYsgjAImd8x/DMhPoDGTE1TBTaTbAiw t4W8gKMgTz1V3CNDuxKKNhERlW/3jXnJitd5erZQNEdMLsGvY+OMdPTOIsWkMx4vVkoOn1 oo5e2ypm/kAtbAl50Jf8kIiH+6hKN/o= 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-131-PWmVzDHwPjewsbEIYBPatg-1; Wed, 03 Aug 2022 13:18:55 -0400 X-MC-Unique: PWmVzDHwPjewsbEIYBPatg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7CBE810AF7C9; Wed, 3 Aug 2022 17:18:26 +0000 (UTC) Received: from eperezma.remote.csb (unknown [10.39.192.202]) by smtp.corp.redhat.com (Postfix) with ESMTP id BE7DA1121314; Wed, 3 Aug 2022 17:18:23 +0000 (UTC) From: =?utf-8?q?Eugenio_P=C3=A9rez?= To: qemu-devel@nongnu.org Cc: Jason Wang , Stefan Hajnoczi , Gautam Dawar , Cornelia Huck , Eli Cohen , Stefano Garzarella , Harpreet Singh Anand , Zhu Lingshan , Laurent Vivier , "Michael S. Tsirkin" , kvm@vger.kernel.org, Paolo Bonzini , Liuxiangdong , Parav Pandit , Cindy Lu , "Gonglei (Arei)" Subject: [PATCH v3 0/7] ASID support in vhost-vdpa net Date: Wed, 3 Aug 2022 19:18:14 +0200 Message-Id: <20220803171821.481336-1-eperezma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org 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. This series is based on [1], and this needs to be applied on top of that. Each one of them adds a feature on isolation and could be merged individually once conflicts are solved. Comments are welcome. Thanks! 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. [1] https://lists.nongnu.org/archive/html/qemu-devel/2022-08/msg00349.html Eugenio PĂ©rez (7): linux-headers: Update kernel headers 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 vhost_net: Add NetClientInfo prepare callback vdpa: Always start CVQ in SVQ mode include/hw/virtio/vhost-vdpa.h | 8 +- include/net/net.h | 2 + include/standard-headers/asm-x86/bootparam.h | 7 +- include/standard-headers/drm/drm_fourcc.h | 69 +++++++++ include/standard-headers/linux/ethtool.h | 1 + include/standard-headers/linux/input.h | 12 +- include/standard-headers/linux/pci_regs.h | 1 + include/standard-headers/linux/vhost_types.h | 11 +- include/standard-headers/linux/virtio_ids.h | 14 +- linux-headers/asm-arm64/kvm.h | 27 ++++ linux-headers/asm-generic/unistd.h | 4 +- linux-headers/asm-riscv/kvm.h | 20 +++ linux-headers/asm-riscv/unistd.h | 3 +- linux-headers/asm-x86/kvm.h | 11 +- linux-headers/asm-x86/mman.h | 14 -- linux-headers/linux/kvm.h | 56 ++++++- linux-headers/linux/userfaultfd.h | 10 +- linux-headers/linux/vfio.h | 4 +- linux-headers/linux/vhost.h | 26 +++- hw/net/vhost_net.c | 4 + hw/virtio/vhost-vdpa.c | 65 ++++---- net/vhost-vdpa.c | 154 ++++++++++++++++++- hw/virtio/trace-events | 4 +- 23 files changed, 434 insertions(+), 93 deletions(-)