From patchwork Wed Apr 10 10:03:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Eugenio Perez Martin X-Patchwork-Id: 13624016 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 B5A0DCD1296 for ; Wed, 10 Apr 2024 10:04:51 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ruUoC-0007IH-RA; Wed, 10 Apr 2024 06:04:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ruUoB-0007Hz-N5 for qemu-devel@nongnu.org; Wed, 10 Apr 2024 06:03:59 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ruUoA-0005ES-2R for qemu-devel@nongnu.org; Wed, 10 Apr 2024 06:03:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712743436; 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=McYhAfYFFcAoUU37ko5xltJUn66Pg+YAABlswhmIqDc=; b=e7mHmLXUxIUWTrw1VVMgRY5EJX2Yg9Af70uIUxViph3TxldeyazzbBXAZwAOswsNxI+Ve6 2IKqp+b/OXN/fZbZmcJHqYUY5+m3BKEplB613jfAJEFzxqtjZQH2XlG6Lj3+C9v8QJcFjP EC0gnQQF+2qz8qKrRzIksgjtlIXNp3Y= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-255-B38Es6_6PLy4622Xd0bu3Q-1; Wed, 10 Apr 2024 06:03:53 -0400 X-MC-Unique: B38Es6_6PLy4622Xd0bu3Q-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DEE8E10499A4; Wed, 10 Apr 2024 10:03:52 +0000 (UTC) Received: from eperezma-thinkpadt480s.rmtes.csb (unknown [10.39.192.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id 101A1C09A05; Wed, 10 Apr 2024 10:03:50 +0000 (UTC) From: =?utf-8?q?Eugenio_P=C3=A9rez?= To: qemu-devel@nongnu.org Cc: Si-Wei Liu , "Michael S. Tsirkin" , Lei Yang , Peter Xu , Jonah Palmer , Dragos Tatulea , Jason Wang Subject: [RFC 0/2] Identify aliased maps in vdpa SVQ iova_tree Date: Wed, 10 Apr 2024 12:03:43 +0200 Message-ID: <20240410100345.389462-1-eperezma@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 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: -37 X-Spam_score: -3.8 X-Spam_bar: --- X-Spam_report: (-3.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.701, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, 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-bounces+qemu-devel=archiver.kernel.org@nongnu.org The guest may have overlapped memory regions, where different GPA leads to the same HVA. This causes a problem when overlapped regions (different GPA but same translated HVA) exists in the tree, as looking them by HVA will return them twice. To solve this, track GPA in the DMA entry that acs as unique identifiers to the maps. When the map needs to be removed, iova tree is able to find the right one. Users that does not go to this extra layer of indirection can use the iova tree as usual, with id = 0. This was found by Si-Wei Liu , but I'm having a hard time to reproduce the issue. This has been tested only without overlapping maps. If it works with overlapping maps, it will be intergrated in the main series. Comments are welcome. Thanks! Eugenio PĂ©rez (2): iova_tree: add an id member to DMAMap vdpa: identify aliased maps in iova_tree hw/virtio/vhost-vdpa.c | 2 ++ include/qemu/iova-tree.h | 5 +++-- util/iova-tree.c | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-)