From patchwork Thu Mar 1 10:31:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Liu, Yi L" X-Patchwork-Id: 10250889 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 0D57D6037D for ; Thu, 1 Mar 2018 10:53:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F016028FC1 for ; Thu, 1 Mar 2018 10:52:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E433128FC4; Thu, 1 Mar 2018 10:52:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 7D91228FC1 for ; Thu, 1 Mar 2018 10:52:59 +0000 (UTC) Received: from localhost ([::1]:55519 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erLpa-0007dh-KW for patchwork-qemu-devel@patchwork.kernel.org; Thu, 01 Mar 2018 05:52:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erLln-0004BR-3u for qemu-devel@nongnu.org; Thu, 01 Mar 2018 05:49:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1erLlm-0007q1-AG for qemu-devel@nongnu.org; Thu, 01 Mar 2018 05:49:03 -0500 Received: from mga14.intel.com ([192.55.52.115]:7314) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1erLll-0007fT-Vt for qemu-devel@nongnu.org; Thu, 01 Mar 2018 05:49:02 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Mar 2018 02:49:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.47,408,1515484800"; d="scan'208";a="31611625" Received: from sky-dev.bj.intel.com ([10.238.144.105]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2018 02:48:59 -0800 From: "Liu, Yi L" To: qemu-devel@nongnu.org, mst@redhat.com, david@gibson.dropbear.id.au Date: Thu, 1 Mar 2018 18:31:56 +0800 Message-Id: <1519900322-30263-7-git-send-email-yi.l.liu@linux.intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1519900322-30263-1-git-send-email-yi.l.liu@linux.intel.com> References: <1519900322-30263-1-git-send-email-yi.l.liu@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 192.55.52.115 Subject: [Qemu-devel] [PATCH v3 06/12] vfio/pci: provide vfio_pci_sva_ops instance X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, alex.williamson@redhat.com, "Liu, Yi L" , eric.auger.pro@gmail.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP VFIO is the bridge for vIOMMU and host IOMMU. Needs to provide API for vIOMMU emulator to set configs to host IOMMU. In this patchset, such API is exposed in hw/pci. Signed-off-by: Liu, Yi L --- hw/vfio/pci.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 033cc8d..a60a4d7 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2775,6 +2775,34 @@ static void vfio_unregister_req_notifier(VFIOPCIDevice *vdev) vdev->req_enabled = false; } +static void vfio_pci_device_sva_bind_pasid_table(PCIBus *bus, + int32_t devfn, uint64_t pasidt_addr, uint32_t size) +{ + /* Propagate the guest pasid table pointer to host IOMMU, and + enable nested translation accordingly. Depends on HW design. + So far, Intel VT-d and AMD IOMMU requires it. */ +} + +static void vfio_pci_device_sva_register_notifier(PCIBus *bus, + int32_t devfn, IOMMUSVAContext *sva_ctx) +{ + /* Register notifier for TLB invalidation propagation + */ +} + +static void vfio_pci_device_sva_unregister_notifier(PCIBus *bus, + int32_t devfn, IOMMUSVAContext *sva_ctx) +{ + /* Unregister notifier for TLB invalidation propagation + */ +} + +static PCISVAOps vfio_pci_sva_ops = { + .sva_bind_pasid_table = vfio_pci_device_sva_bind_pasid_table, + .sva_register_notifier = vfio_pci_device_sva_register_notifier, + .sva_unregister_notifier = vfio_pci_device_sva_unregister_notifier, +}; + static void vfio_realize(PCIDevice *pdev, Error **errp) { VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev); @@ -3019,6 +3047,8 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) vfio_register_req_notifier(vdev); vfio_setup_resetfn_quirk(vdev); + pci_setup_sva_ops(pdev, &vfio_pci_sva_ops); + return; out_teardown: