From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-x235.google.com (mail-io0-x235.google.com [IPv6:2607:f8b0:4001:c06::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 9D6D021A16EFD for ; Thu, 18 May 2017 01:37:44 -0700 (PDT) Received: by mail-io0-x235.google.com with SMTP id f102so24118945ioi.2 for ; Thu, 18 May 2017 01:37:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=vWAhQoXyf2s09WkLDvHWV5C1NH+m+zrSrUO7LV7vyYU=; b=U60kzJr98SwnG2/mDtzNdqGgPssABWfm6/tMvHUpejf8mA+MjFHqJkSeHtKYz3psDs VdyKomglR/dgMLFkCl5OXKCf0cCLk9gCEQJfn8eVsV47uWZJgYtf4pYrxeiVV1vg71EM rcUgyOcmYPbW5qWx9ilDTfJ3cKh1rhNgvovFo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vWAhQoXyf2s09WkLDvHWV5C1NH+m+zrSrUO7LV7vyYU=; b=dGvzYlQxBOwswnHJhqOfIeJJxuZflQZJJRyI6kKALkfcP8ddhz9qOAL2vmfqBcEe0D 2VDQdtqvPq4kNIu99fH7nQp5wQ3lCDJWRaBIMmJQ3ZltBI4WrHtzSbUVdwJY/zWEcIbS gQdFbrEQXGIayo5ZFYxLTFP0FCPWw2maRYV793sGff7lWyEayKNCVlXJ/Vkbeq8h9Q5c ynKmaCp7A7RC9YfVGl06L6ONvpFkqirAC/paOSN48AHJFoxY3Pl472QklsfQ3MneOfDY cWi54/ANwcDrThizfU1ECwDt37d9D2KwbwUUcS3xzt/vo23+BQTBQbriqTQenAew2Mt6 8e9w== X-Gm-Message-State: AODbwcBFOB3ZiV6bfHJJFXWHwW1IjCvZ3xUeFdr4kLDLtDeRUkYglRWj dDA8Nm7ctzABhyc73mZhqHtryRPX/4ru X-Received: by 10.107.26.144 with SMTP id a138mr3045946ioa.72.1495096663730; Thu, 18 May 2017 01:37:43 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.164.24 with HTTP; Thu, 18 May 2017 01:37:43 -0700 (PDT) In-Reply-To: References: <1493915561-8500-1-git-send-email-jiewen.yao@intel.com> From: Ard Biesheuvel Date: Thu, 18 May 2017 09:37:43 +0100 Message-ID: To: "Duran, Leo" , Jiewen Yao Cc: "edk2-devel@lists.01.org" , Ruiyu Ni , "Singh, Brijesh" Subject: Re: [PATCH V5 0/3] Add IOMMU support. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 May 2017 08:37:44 -0000 Content-Type: text/plain; charset="UTF-8" On 13 May 2017 at 20:27, Duran, Leo wrote: > Reviewed-by: Leo Duran > > Thanks, > Leo. > These patches are breaking the build for me under Clang. Apologies for not spotting that at review time. :1088:32: error: implicit conversion from enumeration type 'EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_OPERATION' to different enumeration type 'EDKII_IOMMU_OPERATION' [-Werror,-Wenum-conversion] Operation, ^~~~~~~~~ 1 error generated. >> -----Original Message----- >> From: Jiewen Yao [mailto:jiewen.yao@intel.com] >> Sent: Thursday, May 04, 2017 11:33 AM >> To: edk2-devel@lists.01.org >> Cc: Ruiyu Ni ; Duran, Leo ; >> Singh, Brijesh ; Ard Biesheuvel >> >> Subject: [PATCH V5 0/3] Add IOMMU support. >> >> ================ V5 ============== >> Minor update from V4. >> >> 1) Remove unused SetAttribute() API in IOMMU protocol. >> (Feedback from Ruiyu and Ard) >> 2) Rename SetMappingAttribute() to SetAttribute(). >> (Feedback from Ruiyu) >> 3) Fix the bug in PciBus driver for Operation (Thanks to Ard to catch it) >> >> V4: >> Tested-by: Brijesh Singh With the issue in 3/3 >> addressed: >> Tested-by: Ard Biesheuvel >> >> ================ V4 ============== >> Refine the EDKII_IOMMU_PROTOCOL. >> >> 1) Add AllocateBuffer/FreeBuffer/Map/Unmap() API. >> They are similar to DmaLib in EmbeddedPkg and similar to the previous >> BmDmaLib (by leo.duran@amd.com). >> >> These APIs are invoked by PciHostBridge driver to allocate DMA memory. >> >> The PciHostBridge driver (IOMMU consumer) is simplified: >> It uses IOMMU, if IOMMU protocol is present. >> Else it uses original logic. >> >> 2) Add SetMappingAttribute() API. >> It is similar to SetAttribute() API in V1. >> >> This API is invoked by PciBus driver to set DMA access attribute (read/write) >> for device. >> >> The PciBus driver (IOMMU consumer) is simplified: >> It sets access attribute in Map/Unmap, >> if IOMMU protocol is present. >> >> 3) Remove SetRemapAddress/GetRemapAddress() API. >> Because PciHostBridge/PciBus can call the APIs defined above, there is no >> need to provide remap capability. >> >> -- Sample producer drivers: >> 1) The sample VTd driver (IOMMU producer) is at >> https://github.com/jyao1/edk2/tree/dma_v4/IntelSiliconPkg/IntelVTdDxe >> >> It is added to show the concept. It is not fully implemented yet. >> It will not be checked in in this patch. >> >> 2) The sample AMD SEV driver (IOMMU producer) is at >> https://github.com/jyao1/edk2/tree/dma_v4/IntelSiliconPkg/SampleAmdSe >> vDxe >> (code is borrowed from leo.duran@amd.com and brijesh.singh@amd.com) >> >> This is not a right place to put this driver. >> >> It is added to show the concept. >> It is not fully implemented. It will not be checked in. >> Please do not use it directly. >> >> 3) The sample STYX driver (IOMMU producer) is at >> https://github.com/jyao1/edk2/tree/dma_v4/IntelSiliconPkg/SampleStyxDx >> e >> (code is borrowed from ard.biesheuvel@linaro.org) >> >> This is not a right place to put this driver. >> >> It is added to show the concept. >> It is not fully implemented. It will not be checked in. >> Please do not use it directly. >> >> >> ================ V3 ============== >> 1) Add Remap capability (from Ard Biesheuvel) Add >> EDKII_IOMMU_REMAP_ADDRESS API in IOMMU_PROTOCOL. >> >> NOTE: The code is not fully validated yet. >> The purpose is to collect feedback to decide the next step. >> >> ================ V2 ============== >> 1) Enhance Unmap() in PciIo (From Ruiyu Ni) Maintain a local list of MapInfo >> and match it in Unmap. >> >> 2) CopyMem for ReadOperation in PciIo after SetAttribute (Leo Duran) Fix a >> bug in V1 that copy mem for read happen before SetAttribute, which will >> break AMD SEV solution. >> >> ================ V1 ============== >> >> This patch series adds IOMMU protocol and updates the consumer to >> support IOMMU based DMA access in UEFI. >> >> This patch series can support the BmDmaLib request for AMD SEV. >> submitted by Duran, Leo and Brijesh Singh >> . >> https://lists.01.org/pipermail/edk2-devel/2017-March/008109.html, and >> https://lists.01.org/pipermail/edk2-devel/2017-March/008820.html. >> We can have an AMD SEV specific IOMMU driver to produce IOMMU >> protocol, and clear SEV in IOMMU->SetAttribute(). >> >> This patch series can also support Intel VTd based DMA protection, >> requested by Jiewen Yao , discussed in >> https://lists.01.org/pipermail/edk2-devel/2017-March/008157.html. >> We can have an Intel VTd specific IOMMU driver to produce IOMMU >> protocol, and update VTd engine to grant or deny access in IOMMU- >> >SetAttribute(). >> >> This patch series does not provide a full Intel VTd driver, which will be >> provide in other patch in the future. >> >> The purpose of this patch series to review if this IOMMU protocol design can >> meet all DMA access and management requirement. >> >> Cc: Ruiyu Ni >> Cc: Leo Duran >> Cc: Brijesh Singh >> Cc: Ard Biesheuvel >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Jiewen Yao >> >> Jiewen Yao (3): >> MdeModulePkg/Include: Add IOMMU protocol definition. >> MdeModulePkg/PciHostBridge: Add IOMMU support. >> MdeModulePkg/PciBus: Add IOMMU support. >> >> MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.c | 9 + >> MdeModulePkg/Bus/Pci/PciBusDxe/PciBus.h | 1 + >> MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf | 1 + >> MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c | 47 +++- >> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c | 37 +++ >> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf | 2 + >> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h | 2 + >> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c | 61 +++++ >> MdeModulePkg/Include/Protocol/IoMmu.h | 259 >> ++++++++++++++++++++ >> MdeModulePkg/MdeModulePkg.dec | 3 + >> 10 files changed, 418 insertions(+), 4 deletions(-) create mode 100644 >> MdeModulePkg/Include/Protocol/IoMmu.h >> >> -- >> 2.7.4.windows.1 >