From nobody Mon Apr 29 11:35:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+96947+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96947+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1670227748; cv=none; d=zohomail.com; s=zohoarc; b=LAvaaGYwNHKUiVtmYHPmhd4tXpcY7PeVxCBxM72ojWXslw4VKDFSqLdTaZs03f4vcBF7Qz4h9McjgPNd5jPNEeXfuxyIn1stBC4RLz+IglW9gnrn6tEg5knlwiBysd9GszDlYQ/OPlznzsjmRxaUToYEfNo6EHZVZUCFv5cE5aw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670227748; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=Vr3xGABl6ONuDuvuAlrX3AwgCBTHq5k6xaZE/erf8bk=; b=No3QQSbnZ79WaWzHpcRoqIZfcXCwYNNuilijcdcycC5e8SnBh4g1yxLbD+//voBdAWuYD0E1DwKm5eujAXN2VpyIL8g+y2N70/VWe4t5W4a5G+GRRRL9gzMfNtx0CSnVo3SICo0Fn51RXX5p7Agv/p7TVFqoYgJUQVvyM7+i/EY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96947+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1670227748182458.047394909693; Mon, 5 Dec 2022 00:09:08 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 67G9YY1788612xIGnQcOEuZ4; Mon, 05 Dec 2022 00:09:07 -0800 X-Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.10258.1670227745000185904 for ; Mon, 05 Dec 2022 00:09:07 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="299716425" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="299716425" X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:06 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="770268627" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="770268627" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.238.3.24]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:04 -0800 From: "Min Xu" To: devel@edk2.groups.io Cc: Min M Xu , Erdem Aktas , James Bottomley , Jiewen Yao , Tom Lendacky , Gerd Hoffmann Subject: [edk2-devel] [PATCH V1 1/3] OvmfPkg/IoMmuDxe: Reserve shared memory region for DMA operation Date: Mon, 5 Dec 2022 16:08:51 +0800 Message-Id: <20221205080853.356-2-min.m.xu@intel.com> In-Reply-To: <20221205080853.356-1-min.m.xu@intel.com> References: <20221205080853.356-1-min.m.xu@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: EWphx4ZXRZAmJXkAbYb8quA2x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1670227747; bh=zF09UbbEFTxcl/eYhdJOLujWJQiqQYfa9089N62EA9A=; h=Cc:Date:From:Reply-To:Subject:To; b=RVfUlPhTZWpAJzV5ruS7S9NT468PkBqwm7qMZa1r9zWwcWAmVQVLcP5wDFs2np3ojQ1 QrQT9ZEmGW3M4poF2J2vxAUeH7U3dk3Wm1bcPrb/ZDSVO8Z2rlBthIUdtH49lx5cCRMmS g8gKgke7jZ+vUtFUpel8Cb+A25bF0qJzOLM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1670227749724100005 Content-Type: text/plain; charset="utf-8" From: Min M Xu BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4171 A typical QEMU fw_cfg read bytes with IOMMU for td guest is that: (QemuFwCfgReadBytes@QemuFwCfgLib.c is the example) 1) Allocate DMA Access buffer 2) Map actual data buffer 3) start the transfer and wait for the transfer to complete 4) Free DMA Access buffer 5) Un-map actual data buffer In step 1/2, Private memories are allocated, converted to shared memories. In Step 4/5 the shared memories are converted to private memories and accepted again. The final step is to free the pages. This is time-consuming and impacts td guest's boot perf (both direct boot and grub boot) badly. In a typical grub boot, there are about 5000 calls of page allocation and private/share conversion. Most of page size is less than 32KB. This patch allocates a memory region and initializes it into pieces of memory with different sizes. A piece of such memory consists of 2 parts: the first page is of private memory, and the other pages are shared memory. This is to meet the layout of common buffer. When allocating bounce buffer in IoMmuMap(), IoMmuAllocateBounceBuffer() is called to allocate the buffer. Accordingly when freeing bounce buffer in IoMmuUnmapWorker(), IoMmuFreeBounceBuffer() is called to free the bounce buffer. CommonBuffer is allocated by IoMmuAllocateCommonBuffer and accordingly freed by IoMmuFreeCommonBuffer. This feature is tested in Intel TDX pre-production platform. It saves up to hundreds of ms in a grub boot. Cc: Erdem Aktas Cc: James Bottomley Cc: Jiewen Yao Cc: Tom Lendacky Cc: Gerd Hoffmann Signed-off-by: Min Xu --- OvmfPkg/IoMmuDxe/AmdSevIoMmu.c | 142 +++++------ OvmfPkg/IoMmuDxe/IoMmuBuffer.c | 425 +++++++++++++++++++++++++++++++ OvmfPkg/IoMmuDxe/IoMmuDxe.inf | 1 + OvmfPkg/IoMmuDxe/IoMmuInternal.h | 179 +++++++++++++ 4 files changed, 676 insertions(+), 71 deletions(-) create mode 100644 OvmfPkg/IoMmuDxe/IoMmuBuffer.c create mode 100644 OvmfPkg/IoMmuDxe/IoMmuInternal.h diff --git a/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c b/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c index 6b65897f032a..77e46bbf4a60 100644 --- a/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c +++ b/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c @@ -15,18 +15,7 @@ #include #include #include "AmdSevIoMmu.h" - -#define MAP_INFO_SIG SIGNATURE_64 ('M', 'A', 'P', '_', 'I', 'N', 'F', 'O') - -typedef struct { - UINT64 Signature; - LIST_ENTRY Link; - EDKII_IOMMU_OPERATION Operation; - UINTN NumberOfBytes; - UINTN NumberOfPages; - EFI_PHYSICAL_ADDRESS CryptedAddress; - EFI_PHYSICAL_ADDRESS PlainTextAddress; -} MAP_INFO; +#include "IoMmuInternal.h" =20 // // List of the MAP_INFO structures that have been set up by IoMmuMap() and= not @@ -35,7 +24,10 @@ typedef struct { // STATIC LIST_ENTRY mMapInfos =3D INITIALIZE_LIST_HEAD_VARIABLE (mMapInfos); =20 -#define COMMON_BUFFER_SIG SIGNATURE_64 ('C', 'M', 'N', 'B', 'U', 'F', 'F'= , 'R') +// +// Indicate if the feature of reserved memory is supported in DMA operatio= n. +// +BOOLEAN mReservedSharedMemSupported =3D FALSE; =20 // // ASCII names for EDKII_IOMMU_OPERATION constants, for debug logging. @@ -50,30 +42,6 @@ mBusMasterOperationName[EdkiiIoMmuOperationMaximum] =3D { "CommonBuffer64" }; =20 -// -// The following structure enables Map() and Unmap() to perform in-place -// decryption and encryption, respectively, for BusMasterCommonBuffer[64] -// operations, without dynamic memory allocation or release. -// -// Both COMMON_BUFFER_HEADER and COMMON_BUFFER_HEADER.StashBuffer are allo= cated -// by AllocateBuffer() and released by FreeBuffer(). -// -#pragma pack (1) -typedef struct { - UINT64 Signature; - - // - // Always allocated from EfiBootServicesData type memory, and always - // encrypted. - // - VOID *StashBuffer; - - // - // Followed by the actual common buffer, starting at the next page. - // -} COMMON_BUFFER_HEADER; -#pragma pack () - /** Provides the controller-specific addresses required to access system mem= ory from a DMA bus master. On SEV/TDX guest, the DMA operations must be perf= ormed on @@ -139,6 +107,8 @@ IoMmuMap ( return EFI_INVALID_PARAMETER; } =20 + Status =3D EFI_SUCCESS; + // // Allocate a MAP_INFO structure to remember the mapping when Unmap() is // called later. @@ -153,11 +123,12 @@ IoMmuMap ( // Initialize the MAP_INFO structure, except the PlainTextAddress field // ZeroMem (&MapInfo->Link, sizeof MapInfo->Link); - MapInfo->Signature =3D MAP_INFO_SIG; - MapInfo->Operation =3D Operation; - MapInfo->NumberOfBytes =3D *NumberOfBytes; - MapInfo->NumberOfPages =3D EFI_SIZE_TO_PAGES (MapInfo->NumberOfBytes); - MapInfo->CryptedAddress =3D (UINTN)HostAddress; + MapInfo->Signature =3D MAP_INFO_SIG; + MapInfo->Operation =3D Operation; + MapInfo->NumberOfBytes =3D *NumberOfBytes; + MapInfo->NumberOfPages =3D EFI_SIZE_TO_PAGES (MapInfo->NumberOfBytes= ); + MapInfo->CryptedAddress =3D (UINTN)HostAddress; + MapInfo->ReservedMemBitmap =3D 0; =20 // // In the switch statement below, we point "MapInfo->PlainTextAddress" t= o the @@ -185,12 +156,11 @@ IoMmuMap ( // // Allocate the implicit plaintext bounce buffer. // - Status =3D gBS->AllocatePages ( - AllocateType, - EfiBootServicesData, - MapInfo->NumberOfPages, - &MapInfo->PlainTextAddress - ); + Status =3D IoMmuAllocateBounceBuffer ( + AllocateType, + EfiBootServicesData, + MapInfo + ); if (EFI_ERROR (Status)) { goto FreeMapInfo; } @@ -241,7 +211,8 @@ IoMmuMap ( // Point "DecryptionSource" to the stash buffer so that we decrypt // it to the original location, after the switch statement. // - DecryptionSource =3D CommonBufferHeader->StashBuffer; + DecryptionSource =3D CommonBufferHeader->StashBuffer; + MapInfo->ReservedMemBitmap =3D CommonBufferHeader->ReservedMemBitmap; break; =20 default: @@ -264,12 +235,16 @@ IoMmuMap ( } else if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr)= )) { // // Set the memory shared bit. + // If MapInfo->ReservedMemBitmap is 0, it means the bounce buffer is n= ot allocated + // from the pre-allocated shared memory, so it must be converted to sh= ared memory here. // - Status =3D MemEncryptTdxSetPageSharedBit ( - 0, - MapInfo->PlainTextAddress, - MapInfo->NumberOfPages - ); + if (MapInfo->ReservedMemBitmap =3D=3D 0) { + Status =3D MemEncryptTdxSetPageSharedBit ( + 0, + MapInfo->PlainTextAddress, + MapInfo->NumberOfPages + ); + } } else { ASSERT (FALSE); } @@ -311,12 +286,13 @@ IoMmuMap ( =20 DEBUG (( DEBUG_VERBOSE, - "%a: Mapping=3D0x%p Device(PlainText)=3D0x%Lx Crypted=3D0x%Lx Pages=3D= 0x%Lx\n", + "%a: Mapping=3D0x%p Device(PlainText)=3D0x%Lx Crypted=3D0x%Lx Pages=3D= 0x%Lx, ReservedMemBitmap=3D0x%Lx\n", __FUNCTION__, MapInfo, MapInfo->PlainTextAddress, MapInfo->CryptedAddress, - (UINT64)MapInfo->NumberOfPages + (UINT64)MapInfo->NumberOfPages, + MapInfo->ReservedMemBitmap )); =20 return EFI_SUCCESS; @@ -435,11 +411,13 @@ IoMmuUnmapWorker ( // Restore the memory shared bit mask on the area we used to hold the // plaintext. // - Status =3D MemEncryptTdxClearPageSharedBit ( - 0, - MapInfo->PlainTextAddress, - MapInfo->NumberOfPages - ); + if (MapInfo->ReservedMemBitmap =3D=3D 0) { + Status =3D MemEncryptTdxClearPageSharedBit ( + 0, + MapInfo->PlainTextAddress, + MapInfo->NumberOfPages + ); + } } else { ASSERT (FALSE); } @@ -470,8 +448,9 @@ IoMmuUnmapWorker ( (VOID *)(UINTN)MapInfo->PlainTextAddress, EFI_PAGES_TO_SIZE (MapInfo->NumberOfPages) ); + if (!MemoryMapLocked) { - gBS->FreePages (MapInfo->PlainTextAddress, MapInfo->NumberOfPages); + IoMmuFreeBounceBuffer (MapInfo); } } =20 @@ -551,6 +530,7 @@ IoMmuAllocateBuffer ( VOID *StashBuffer; UINTN CommonBufferPages; COMMON_BUFFER_HEADER *CommonBufferHeader; + UINT32 ReservedMemBitmap; =20 DEBUG (( DEBUG_VERBOSE, @@ -620,12 +600,13 @@ IoMmuAllocateBuffer ( PhysicalAddress =3D SIZE_4GB - 1; } =20 - Status =3D gBS->AllocatePages ( - AllocateMaxAddress, - MemoryType, - CommonBufferPages, - &PhysicalAddress - ); + Status =3D IoMmuAllocateCommonBuffer ( + MemoryType, + CommonBufferPages, + &PhysicalAddress, + &ReservedMemBitmap + ); + if (EFI_ERROR (Status)) { goto FreeStashBuffer; } @@ -633,8 +614,9 @@ IoMmuAllocateBuffer ( CommonBufferHeader =3D (VOID *)(UINTN)PhysicalAddress; PhysicalAddress +=3D EFI_PAGE_SIZE; =20 - CommonBufferHeader->Signature =3D COMMON_BUFFER_SIG; - CommonBufferHeader->StashBuffer =3D StashBuffer; + CommonBufferHeader->Signature =3D COMMON_BUFFER_SIG; + CommonBufferHeader->StashBuffer =3D StashBuffer; + CommonBufferHeader->ReservedMemBitmap =3D ReservedMemBitmap; =20 *HostAddress =3D (VOID *)(UINTN)PhysicalAddress; =20 @@ -707,7 +689,7 @@ IoMmuFreeBuffer ( // Release the common buffer itself. Unmap() has re-encrypted it in-plac= e, so // no need to zero it. // - return gBS->FreePages ((UINTN)CommonBufferHeader, CommonBufferPages); + return IoMmuFreeCommonBuffer (CommonBufferHeader, CommonBufferPages); } =20 /** @@ -878,6 +860,11 @@ IoMmuUnmapAllMappings ( TRUE // MemoryMapLocked ); } + + // + // Release the reserved shared memory as well. + // + IoMmuReleaseReservedSharedMem (TRUE); } =20 /** @@ -936,6 +923,19 @@ InstallIoMmuProtocol ( goto CloseExitBootEvent; } =20 + // + // Currently only Tdx guest support Reserved shared memory for DMA opera= tion. + // + if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { + mReservedSharedMemSupported =3D TRUE; + Status =3D IoMmuInitReservedSharedMem (); + if (EFI_ERROR (Status)) { + mReservedSharedMemSupported =3D FALSE; + } else { + DEBUG ((DEBUG_INFO, "%a: Feature of reserved memory for DMA is suppo= rted.\n", __FUNCTION__)); + } + } + return EFI_SUCCESS; =20 CloseExitBootEvent: diff --git a/OvmfPkg/IoMmuDxe/IoMmuBuffer.c b/OvmfPkg/IoMmuDxe/IoMmuBuffer.c new file mode 100644 index 000000000000..5ada8e9d57bd --- /dev/null +++ b/OvmfPkg/IoMmuDxe/IoMmuBuffer.c @@ -0,0 +1,425 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include +#include +#include +#include +#include +#include +#include "IoMmuInternal.h" + +extern BOOLEAN mReservedSharedMemSupported; + +#define SIZE_OF_MEM_RANGE(MemRange) (MemRange->HeaderSize + MemRange->Dat= aSize) + +#define RESERVED_MEM_BITMAP_4K_MASK 0xf +#define RESERVED_MEM_BITMAP_32K_MASK 0xff0 +#define RESERVED_MEM_BITMAP_128K_MASK 0x3000 +#define RESERVED_MEM_BITMAP_1M_MASK 0x40000 +#define RESERVED_MEM_BITMAP_2M_MASK 0x180000 +#define RESERVED_MEM_BITMAP_MASK 0x1fffff + +STATIC IOMMU_RESERVED_MEM_RANGE mReservedMemRanges[] =3D { + { RESERVED_MEM_BITMAP_4K_MASK, 0, 4, SIZE_4KB, SIZE_4KB, 0 }, + { RESERVED_MEM_BITMAP_32K_MASK, 4, 8, SIZE_32KB, SIZE_4KB, 0 }, + { RESERVED_MEM_BITMAP_128K_MASK, 12, 2, SIZE_128KB, SIZE_4KB, 0 }, + { RESERVED_MEM_BITMAP_1M_MASK, 14, 1, SIZE_1MB, SIZE_4KB, 0 }, + { RESERVED_MEM_BITMAP_2M_MASK, 15, 2, SIZE_2MB, SIZE_4KB, 0 }, +}; + +// +// Bitmap of the allocation of reserved memory. +// +STATIC UINT32 mReservedMemBitmap =3D 0; + +// +// Start address of the reserved memory region. +// +STATIC EFI_PHYSICAL_ADDRESS mReservedSharedMemAddress =3D 0; + +// +// Total size of the reserved memory region. +// +STATIC UINT32 mReservedSharedMemSize =3D 0; + +/** + * Calculate the size of reserved memory. + * + * @retval UINT32 Size of the reserved memory + */ +STATIC +UINT32 +CalcuateReservedMemSize ( + VOID + ) +{ + UINT32 Index; + IOMMU_RESERVED_MEM_RANGE *MemRange; + + if (mReservedSharedMemSize !=3D 0) { + return mReservedSharedMemSize; + } + + for (Index =3D 0; Index < ARRAY_SIZE (mReservedMemRanges); Index++) { + MemRange =3D &mReservedMemRanges[Index]; + mReservedSharedMemSize +=3D (SIZE_OF_MEM_RANGE (MemRange) * MemRange->= Slots); + } + + return mReservedSharedMemSize; +} + +/** + * Allocate a memory region and convert it to be shared. This memory regio= n will be + * used in the DMA operation. + * + * The pre-alloc memory contains pieces of memory regions with different s= ize. The + * allocation of the shared memory regions are indicated by a 32-bit bitma= p (mReservedMemBitmap). + * + * The memory regions are consumed by IoMmuAllocateBuffer (in which Common= Buffer is allocated) and + * IoMmuMap (in which bounce buffer is allocated). + * + * The CommonBuffer contains 2 parts, one page for CommonBufferHeader whic= h is private memory, + * the other part is shared memory. So the layout of a piece of memory reg= ion after initialization + * looks like: + * + * |------------|----------------------------| + * | Header | Data | <-- a piece of pre-all= oc memory region + * | 4k, private| 4k/32k/128k/etc, shared | + * |-----------------------------------------| + * + * @retval EFI_SUCCESS Successfully initialize the reserved memory. + * @retval EFI_UNSUPPORTED This feature is not supported. + */ +EFI_STATUS +IoMmuInitReservedSharedMem ( + VOID + ) +{ + EFI_STATUS Status; + UINT32 Index1, Index2; + UINTN TotalPages; + IOMMU_RESERVED_MEM_RANGE *MemRange; + EFI_PHYSICAL_ADDRESS PhysicalAddress; + + if (!mReservedSharedMemSupported) { + return EFI_UNSUPPORTED; + } + + TotalPages =3D EFI_SIZE_TO_PAGES (CalcuateReservedMemSize ()); + + PhysicalAddress =3D (EFI_PHYSICAL_ADDRESS)(UINTN)AllocatePages (TotalPag= es); + DEBUG (( + DEBUG_VERBOSE, + "%a: ReservedMem (%d pages) address =3D 0x%llx\n", + __FUNCTION__, + TotalPages, + PhysicalAddress + )); + + mReservedMemBitmap =3D 0; + mReservedSharedMemAddress =3D PhysicalAddress; + + for (Index1 =3D 0; Index1 < ARRAY_SIZE (mReservedMemRanges); Index1++) { + MemRange =3D &mReservedMemRanges[Index1]; + MemRange->StartAddressOfMemRange =3D PhysicalAddress; + + for (Index2 =3D 0; Index2 < MemRange->Slots; Index2++) { + Status =3D MemEncryptTdxSetPageSharedBit ( + 0, + (UINT64)(UINTN)(MemRange->StartAddressOfMemRange + Index2= * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize), + EFI_SIZE_TO_PAGES (MemRange->DataSize) + ); + ASSERT (!EFI_ERROR (Status)); + } + + PhysicalAddress +=3D (MemRange->Slots * SIZE_OF_MEM_RANGE (MemRange)); + } + + return EFI_SUCCESS; +} + +/** + * Release the pre-alloc shared memory. + * + * @retval EFI_SUCCESS Successfully release the shared memory + */ +EFI_STATUS +IoMmuReleaseReservedSharedMem ( + BOOLEAN MemoryMapLocked + ) +{ + EFI_STATUS Status; + UINT32 Index1, Index2; + IOMMU_RESERVED_MEM_RANGE *MemRange; + + for (Index1 =3D 0; Index1 < ARRAY_SIZE (mReservedMemRanges); Index1++) { + MemRange =3D &mReservedMemRanges[Index1]; + for (Index2 =3D 0; Index2 < MemRange->Slots; Index2++) { + Status =3D MemEncryptTdxClearPageSharedBit ( + 0, + (UINT64)(UINTN)(MemRange->StartAddressOfMemRange + Index2= * SIZE_OF_MEM_RANGE (MemRange) + MemRange->HeaderSize), + EFI_SIZE_TO_PAGES (MemRange->DataSize) + ); + ASSERT (!EFI_ERROR (Status)); + } + } + + if (!MemoryMapLocked) { + FreePages ((VOID *)(UINTN)mReservedSharedMemAddress, EFI_SIZE_TO_PAGES= (CalcuateReservedMemSize ())); + mReservedSharedMemAddress =3D 0; + mReservedMemBitmap =3D 0; + } + + return EFI_SUCCESS; +} + +/** + * Allocate from the reserved memory pool. + * If the reserved shared memory is exausted or there is no suitalbe size,= it turns + * to the LegacyAllocateBuffer. + * + * @param Type Allocate type + * @param MemoryType The memory type to be allocated + * @param Pages Pages to be allocated. + * @param ReservedMemBitmap Bitmap of the allocated memory region + * @param PhysicalAddress Pointer to the data part of allocated memory= region + * + * @retval EFI_SUCCESS Successfully allocate the buffer + * @retval Other As the error code indicates + */ +STATIC +EFI_STATUS +InternalAllocateBuffer ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + IN OUT UINT32 *ReservedMemBitmap, + IN OUT EFI_PHYSICAL_ADDRESS *PhysicalAddress + ) +{ + UINT32 MemBitmap; + UINT8 Index; + IOMMU_RESERVED_MEM_RANGE *MemRange; + UINTN PagesOfLastMemRange; + + *ReservedMemBitmap =3D 0; + + if (Pages =3D=3D 0) { + ASSERT (FALSE); + return EFI_INVALID_PARAMETER; + } + + if (!mReservedSharedMemSupported) { + goto LegacyAllocateBuffer; + } + + if (mReservedSharedMemAddress =3D=3D 0) { + goto LegacyAllocateBuffer; + } + + PagesOfLastMemRange =3D 0; + + for (Index =3D 0; Index < ARRAY_SIZE (mReservedMemRanges); Index++) { + if ((Pages > PagesOfLastMemRange) && (Pages <=3D EFI_SIZE_TO_PAGES (mR= eservedMemRanges[Index].DataSize))) { + break; + } + + PagesOfLastMemRange =3D EFI_SIZE_TO_PAGES (mReservedMemRanges[Index].D= ataSize); + } + + if (Index =3D=3D ARRAY_SIZE (mReservedMemRanges)) { + // There is no suitable size of reserved memory. Turn to legacy alloca= te. + goto LegacyAllocateBuffer; + } + + MemRange =3D &mReservedMemRanges[Index]; + + if ((mReservedMemBitmap & MemRange->BitmapMask) =3D=3D MemRange->BitmapM= ask) { + // The reserved memory is exausted. Turn to legacy allocate. + goto LegacyAllocateBuffer; + } + + MemBitmap =3D (mReservedMemBitmap & MemRange->BitmapMask) >> MemRange->S= hift; + + for (Index =3D 0; Index < MemRange->Slots; Index++) { + if ((MemBitmap & (UINT8)(1<Slots); + + *PhysicalAddress =3D MemRange->StartAddressOfMemRange + Index * SIZE_O= F_MEM_RANGE (MemRange) + MemRange->HeaderSize; + *ReservedMemBitmap =3D (UINT32)(1 << (Index + MemRange->Shift)); + + DEBUG (( + DEBUG_VERBOSE, + "%a: range-size: %lx, start-address=3D0x%llx, pages=3D0x%llx, bits=3D0= x%lx, bitmap: %lx =3D> %lx\n", + __FUNCTION__, + MemRange->DataSize, + *PhysicalAddress, + Pages, + *ReservedMemBitmap, + mReservedMemBitmap, + mReservedMemBitmap | *ReservedMemBitmap + )); + + return EFI_SUCCESS; + +LegacyAllocateBuffer: + + *ReservedMemBitmap =3D 0; + return gBS->AllocatePages (Type, MemoryType, Pages, PhysicalAddress); +} + +/** + * Allocate reserved shared memory for bounce buffer. + * + * @param Type Allocate type + * @param MemoryType The memory type to be allocated + * @param MapInfo Pointer to the MAP_INFO + * + * @retval EFI_SUCCESS Successfully allocate the bounce buffer + * @retval Other As the error code indicates + + */ +EFI_STATUS +IoMmuAllocateBounceBuffer ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN OUT MAP_INFO *MapInfo + ) +{ + EFI_STATUS Status; + UINT32 ReservedMemBitmap; + + ReservedMemBitmap =3D 0; + Status =3D InternalAllocateBuffer ( + Type, + MemoryType, + MapInfo->NumberOfPages, + &ReservedMemBitmap, + &MapInfo->PlainTextAddress + ); + MapInfo->ReservedMemBitmap =3D ReservedMemBitmap; + mReservedMemBitmap |=3D ReservedMemBitmap; + + ASSERT (Status =3D=3D EFI_SUCCESS); + + return Status; +} + +/** + * Free the bounce buffer allocated in IoMmuAllocateBounceBuffer. + * + * @param MapInfo Pointer to the MAP_INFO + * @return EFI_SUCCESS Successfully free the bounce buffer. + */ +EFI_STATUS +IoMmuFreeBounceBuffer ( + IN OUT MAP_INFO *MapInfo + ) +{ + if (MapInfo->ReservedMemBitmap =3D=3D 0) { + gBS->FreePages (MapInfo->PlainTextAddress, MapInfo->NumberOfPages); + } else { + DEBUG (( + DEBUG_VERBOSE, + "%a: PlainTextAddress=3D0x%Lx, bits=3D0x%Lx, bitmap: %Lx =3D> %Lx\n", + __FUNCTION__, + MapInfo->PlainTextAddress, + MapInfo->ReservedMemBitmap, + mReservedMemBitmap, + mReservedMemBitmap & ((UINT32)(~MapInfo->ReservedMemBitmap)) + )); + MapInfo->PlainTextAddress =3D 0; + mReservedMemBitmap &=3D (UINT32)(~MapInfo->ReservedMemBitmap); + MapInfo->ReservedMemBitmap =3D 0; + } + + return EFI_SUCCESS; +} + +/** + * Allocate CommonBuffer from pre-allocated shared memory. + * + * @param MemoryType Memory type + * @param CommonBufferPages Pages of CommonBuffer + * @param PhysicalAddress Allocated physical address + * @param ReservedMemBitmap Bitmap which indicates the allocation of res= erved memory + * + * @retval EFI_SUCCESS Successfully allocate the common buffer + * @retval Other As the error code indicates + */ +EFI_STATUS +IoMmuAllocateCommonBuffer ( + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN CommonBufferPages, + OUT EFI_PHYSICAL_ADDRESS *PhysicalAddress, + OUT UINT32 *ReservedMemBitmap + ) +{ + EFI_STATUS Status; + + Status =3D InternalAllocateBuffer ( + AllocateMaxAddress, + MemoryType, + CommonBufferPages, + ReservedMemBitmap, + PhysicalAddress + ); + ASSERT (Status =3D=3D EFI_SUCCESS); + + mReservedMemBitmap |=3D *ReservedMemBitmap; + + if (*ReservedMemBitmap !=3D 0) { + *PhysicalAddress -=3D SIZE_4KB; + } + + return Status; +} + +/** + * Free CommonBuffer which is allocated by IoMmuAllocateCommonBuffer(). + * + * @param CommonBufferHeader Pointer to the CommonBufferHeader + * @param CommonBufferPages Pages of CommonBuffer + * + * @retval EFI_SUCCESS Successfully free the common buffer + * @retval Other As the error code indicates + */ +EFI_STATUS +IoMmuFreeCommonBuffer ( + IN COMMON_BUFFER_HEADER *CommonBufferHeader, + IN UINTN CommonBufferPages + ) +{ + if (!mReservedSharedMemSupported) { + goto LegacyFreeCommonBuffer; + } + + if (CommonBufferHeader->ReservedMemBitmap =3D=3D 0) { + goto LegacyFreeCommonBuffer; + } + + DEBUG (( + DEBUG_VERBOSE, + "%a: CommonBuffer=3D0x%Lx, bits=3D0x%Lx, bitmap: %Lx =3D> %Lx\n", + __FUNCTION__, + (UINT64)(UINTN)CommonBufferHeader + SIZE_4KB, + CommonBufferHeader->ReservedMemBitmap, + mReservedMemBitmap, + mReservedMemBitmap & ((UINT32)(~CommonBufferHeader->ReservedMemBitmap)) + )); + + mReservedMemBitmap &=3D (UINT32)(~CommonBufferHeader->ReservedMemBitmap); + return EFI_SUCCESS; + +LegacyFreeCommonBuffer: + return gBS->FreePages ((UINTN)CommonBufferHeader, CommonBufferPages); +} diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf index e10be1dcff49..2192145ea661 100644 --- a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf +++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf @@ -21,6 +21,7 @@ AmdSevIoMmu.c AmdSevIoMmu.h IoMmuDxe.c + IoMmuBuffer.c =20 [Packages] MdePkg/MdePkg.dec diff --git a/OvmfPkg/IoMmuDxe/IoMmuInternal.h b/OvmfPkg/IoMmuDxe/IoMmuInter= nal.h new file mode 100644 index 000000000000..936c35aa536c --- /dev/null +++ b/OvmfPkg/IoMmuDxe/IoMmuInternal.h @@ -0,0 +1,179 @@ +/** @file + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef IOMMU_INTERNAL_H_ +#define IOMMU_INTERNAL_H_ + +#include +#include +#include +#include + +#define MAP_INFO_SIG SIGNATURE_64 ('M', 'A', 'P', '_', 'I', 'N', 'F', 'O') + +typedef struct { + UINT64 Signature; + LIST_ENTRY Link; + EDKII_IOMMU_OPERATION Operation; + UINTN NumberOfBytes; + UINTN NumberOfPages; + EFI_PHYSICAL_ADDRESS CryptedAddress; + EFI_PHYSICAL_ADDRESS PlainTextAddress; + UINT32 ReservedMemBitmap; +} MAP_INFO; + +#define COMMON_BUFFER_SIG SIGNATURE_64 ('C', 'M', 'N', 'B', 'U', 'F', 'F'= , 'R') + +#pragma pack (1) +// +// The following structure enables Map() and Unmap() to perform in-place +// decryption and encryption, respectively, for BusMasterCommonBuffer[64] +// operations, without dynamic memory allocation or release. +// +// Both COMMON_BUFFER_HEADER and COMMON_BUFFER_HEADER.StashBuffer are allo= cated +// by AllocateBuffer() and released by FreeBuffer(). +// +typedef struct { + UINT64 Signature; + + // + // Always allocated from EfiBootServicesData type memory, and always + // encrypted. + // + VOID *StashBuffer; + + // + // Bitmap of reserved memory + // + UINT32 ReservedMemBitmap; + + // + // Followed by the actual common buffer, starting at the next page. + // +} COMMON_BUFFER_HEADER; + +// +// This data structure defines a memory range in the reserved memory regio= n. +// Please refer to IoMmuInitReservedSharedMem() for detailed information. +// +// The memory region looks like: +// |------------|----------------------------| +// | Header | Data | +// | 4k, private| 4k/32k/128k/etc, shared | +// |-----------------------------------------| +// +typedef struct { + UINT32 BitmapMask; + UINT32 Shift; + UINT32 Slots; + UINT32 DataSize; + UINT32 HeaderSize; + EFI_PHYSICAL_ADDRESS StartAddressOfMemRange; +} IOMMU_RESERVED_MEM_RANGE; +#pragma pack() + +/** + * Allocate a memory region and convert it to be shared. This memory regio= n will be + * used in the DMA operation. + * + * The pre-alloc memory contains pieces of memory regions with different s= ize. The + * allocation of the shared memory regions are indicated by a 32-bit bitma= p (mReservedMemBitmap). + * + * The memory regions are consumed by IoMmuAllocateBuffer (in which Common= Buffer is allocated) and + * IoMmuMap (in which bounce buffer is allocated). + * + * The CommonBuffer contains 2 parts, one page for CommonBufferHeader whic= h is private memory, + * the other part is shared memory. So the layout of a piece of memory reg= ion after initialization + * looks like: + * + * |------------|----------------------------| + * | Header | Data | <-- a piece of pre-all= oc memory region + * | 4k, private| 4k/32k/128k/etc, shared | + * |-----------------------------------------| + * + * @retval EFI_SUCCESS Successfully initialize the reserved memory. + * @retval EFI_UNSUPPORTED This feature is not supported. + */ +EFI_STATUS +IoMmuInitReservedSharedMem ( + VOID + ); + +/** + * Release the pre-alloc shared memory. + * + * @retval EFI_SUCCESS Successfully release the shared memory + */ +EFI_STATUS +IoMmuReleaseReservedSharedMem ( + BOOLEAN MemoryMapLocked + ); + +/** + * Allocate reserved shared memory for bounce buffer. + * + * @param Type Allocate type + * @param MemoryType The memory type to be allocated + * @param MapInfo Pointer to the MAP_INFO + * + * @retval EFI_SUCCESS Successfully allocate the bounce buffer + * @retval Other As the error code indicates + */ +EFI_STATUS +IoMmuAllocateBounceBuffer ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN OUT MAP_INFO *MapInfo + ); + +/** + * Free the bounce buffer allocated in IoMmuAllocateBounceBuffer. + * + * @param MapInfo Pointer to the MAP_INFO + * @return EFI_SUCCESS Successfully free the bounce buffer. + */ +EFI_STATUS +IoMmuFreeBounceBuffer ( + IN OUT MAP_INFO *MapInfo + ); + +/** + * Allocate CommonBuffer from pre-allocated shared memory. + * + * @param MemoryType Memory type + * @param CommonBufferPages Pages of CommonBuffer + * @param PhysicalAddress Allocated physical address + * @param ReservedMemBitmap Bitmap which indicates the allocation of res= erved memory + * + * @retval EFI_SUCCESS Successfully allocate the common buffer + * @retval Other As the error code indicates + */ +EFI_STATUS +IoMmuAllocateCommonBuffer ( + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN CommonBufferPages, + OUT EFI_PHYSICAL_ADDRESS *PhysicalAddress, + OUT UINT32 *ReservedMemBitmap + ); + +/** + * Free CommonBuffer which is allocated by IoMmuAllocateCommonBuffer(). + * + * @param CommonBufferHeader Pointer to the CommonBufferHeader + * @param CommonBufferPages Pages of CommonBuffer + * + * @retval EFI_SUCCESS Successfully free the common buffer + * @retval Other As the error code indicates + */ +EFI_STATUS +IoMmuFreeCommonBuffer ( + IN COMMON_BUFFER_HEADER *CommonBufferHeader, + IN UINTN CommonBufferPages + ); + +#endif --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#96947): https://edk2.groups.io/g/devel/message/96947 Mute This Topic: https://groups.io/mt/95464801/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:35:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+96948+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96948+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1670227750; cv=none; d=zohomail.com; s=zohoarc; b=Ezzi6JSd1MCvzPPLcZuM6F5db8MFiMiJ/56d8xbMvcgg1hv2T8oSPhc9HsFN9H4vGcdz1MQr0OMa+/30jC72EyLA+apbV8mfBD/5SguZb2TS/7mxKxTrHijiCzhYQueWg8/1Y1pTu39Q6LIi8BpH9TTzi5CQxUjo5XwK43eHIZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670227750; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=ObviY1og4JZqrQ20m9t0e71UWyWD1AzxktNs2cHwWn4=; b=JGNCPR/1/PekB7iEY1kBgyt55i2X7XU6QwzMHmQbz3h+8C1D/sRpD8FoykB1tL6i2x+1zqYbLFCn1qGJcVbx/fXl8povMzYFZu+eyOdmf5S7v1Vsd3nTkdVBkMXuj7EBdDGyqxwk6xagRWbdAcv1+5HQQn7/5JVtNS33CPeNPw4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96948+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1670227750728471.1423694412491; Mon, 5 Dec 2022 00:09:10 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 6txHYY1788612xsjBubFoBsd; Mon, 05 Dec 2022 00:09:09 -0800 X-Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.10258.1670227745000185904 for ; Mon, 05 Dec 2022 00:09:09 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="299716447" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="299716447" X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:08 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="770268638" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="770268638" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.238.3.24]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:07 -0800 From: "Min Xu" To: devel@edk2.groups.io Cc: Min M Xu , Erdem Aktas , James Bottomley , Jiewen Yao , Tom Lendacky , Gerd Hoffmann Subject: [edk2-devel] [PATCH V1 2/3] OvmfPkg/IoMmuDxe: Rename AmdSevIoMmu to CcIoMmu Date: Mon, 5 Dec 2022 16:08:52 +0800 Message-Id: <20221205080853.356-3-min.m.xu@intel.com> In-Reply-To: <20221205080853.356-1-min.m.xu@intel.com> References: <20221205080853.356-1-min.m.xu@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: CYGrV8ermXfAXGppMZCaL4YWx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1670227749; bh=+idog+YHf2ZBOLKP9/FLE/Jqj+ZjV0ySh4JYsN0ovIk=; h=Cc:Date:From:Reply-To:Subject:To; b=RPP5PiID5kBMWT+FQ5c+ORLNjM7F2LsjpU1yhA0UOqCpQBFu9l62fRnYUsQqODivV0J E26vlTUAj7LQiIERzdEXuspLCRlX+VJ/2lcmuRark9I5Ny0yucHgwqZqZq48ypINku3PR Q3O8YDQZJ47/Ayu3Yt6wVa7ILGFlCdCgpaU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1670227751756100010 Content-Type: text/plain; charset="utf-8" From: Min M Xu BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4171 IoMmuDxe once was designed to support DMA operation when SEV is enabled. After TDX is enabled in IoMmuDxe, some files' name in IoMmuDxe need to be more general. So this patch rename: AmdSevIoMmu.h -> CcIoMmu.h AmdSevIoMmu.c -> CcIoMmu.c Accordingly there are some udates in IoMmuDxe.c and IoMmuDxe.inf. Cc: Erdem Aktas Cc: James Bottomley Cc: Jiewen Yao Cc: Tom Lendacky Cc: Gerd Hoffmann Signed-off-by: Min Xu --- OvmfPkg/IoMmuDxe/{AmdSevIoMmu.c =3D> CcIoMmu.c} | 2 +- OvmfPkg/IoMmuDxe/{AmdSevIoMmu.h =3D> CcIoMmu.h} | 0 OvmfPkg/IoMmuDxe/IoMmuDxe.c | 2 +- OvmfPkg/IoMmuDxe/IoMmuDxe.inf | 5 ++--- 4 files changed, 4 insertions(+), 5 deletions(-) rename OvmfPkg/IoMmuDxe/{AmdSevIoMmu.c =3D> CcIoMmu.c} (96%) rename OvmfPkg/IoMmuDxe/{AmdSevIoMmu.h =3D> CcIoMmu.h} (100%) diff --git a/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c b/OvmfPkg/IoMmuDxe/CcIoMmu.c similarity index 96% rename from OvmfPkg/IoMmuDxe/AmdSevIoMmu.c rename to OvmfPkg/IoMmuDxe/CcIoMmu.c index 77e46bbf4a60..1479af469881 100644 --- a/OvmfPkg/IoMmuDxe/AmdSevIoMmu.c +++ b/OvmfPkg/IoMmuDxe/CcIoMmu.c @@ -14,7 +14,7 @@ =20 #include #include -#include "AmdSevIoMmu.h" +#include "CcIoMmu.h" #include "IoMmuInternal.h" =20 // diff --git a/OvmfPkg/IoMmuDxe/AmdSevIoMmu.h b/OvmfPkg/IoMmuDxe/CcIoMmu.h similarity index 100% rename from OvmfPkg/IoMmuDxe/AmdSevIoMmu.h rename to OvmfPkg/IoMmuDxe/CcIoMmu.h diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.c b/OvmfPkg/IoMmuDxe/IoMmuDxe.c index 86777dd05c26..aab6d8b90687 100644 --- a/OvmfPkg/IoMmuDxe/IoMmuDxe.c +++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.c @@ -9,7 +9,7 @@ =20 **/ =20 -#include "AmdSevIoMmu.h" +#include "CcIoMmu.h" =20 EFI_STATUS EFIAPI diff --git a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf index 2192145ea661..17fca5285692 100644 --- a/OvmfPkg/IoMmuDxe/IoMmuDxe.inf +++ b/OvmfPkg/IoMmuDxe/IoMmuDxe.inf @@ -18,8 +18,8 @@ ENTRY_POINT =3D IoMmuDxeEntryPoint =20 [Sources] - AmdSevIoMmu.c - AmdSevIoMmu.h + CcIoMmu.c + CcIoMmu.h IoMmuDxe.c IoMmuBuffer.c =20 @@ -27,7 +27,6 @@ MdePkg/MdePkg.dec MdeModulePkg/MdeModulePkg.dec OvmfPkg/OvmfPkg.dec -# UefiCpuPkg/UefiCpuPkg.dec =20 [LibraryClasses] BaseLib --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#96948): https://edk2.groups.io/g/devel/message/96948 Mute This Topic: https://groups.io/mt/95464802/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:35:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+96949+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96949+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1670227752; cv=none; d=zohomail.com; s=zohoarc; b=m+ne3Tt6xJxwvZX0cRquQFEvzvCU6B16gi0fD0b+2lTbC+h7s1gD9mrhxT4W8ALgMsfPT0wW2KWwSP9B0qzMrDGt+r3nR3KzC3rsjoNeN/IRwxwGvFZQ602SVe6p3UlwGjtsfqJoulWhjrGjUjVqNzOIMSlbQGE6ypkXIqF132g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1670227752; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=r8wiJ+bP0a8fG6T06vFnvYoJ7QzQdFD89KPhfF3COSU=; b=QBFY+OmqxHCKEFvcy4g5SVORI61WmJpsdeOKWDUZk/Y/WuBt+7WW1E/V5Qm5onjiMJwG1ozzPJ14l5sbFT1RZPCdet3SYVURCusBKhUQFeH/IRzWz2TjqKdpJx1d3en++J1mXg6nGQit9P+on5eZaXTEIUzWiHe1V1GMMWBPcAE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+96949+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1670227752630631.0378859709886; Mon, 5 Dec 2022 00:09:12 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id Rzy9YY1788612xn4KO3S4q3t; Mon, 05 Dec 2022 00:09:12 -0800 X-Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.10258.1670227745000185904 for ; Mon, 05 Dec 2022 00:09:11 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="299716478" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="299716478" X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:11 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="770268650" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="770268650" X-Received: from mxu9-mobl1.ccr.corp.intel.com ([10.238.3.24]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2022 00:09:08 -0800 From: "Min Xu" To: devel@edk2.groups.io Cc: Min M Xu , Michael D Kinney , Liming Gao , Erdem Aktas , Gerd Hoffmann , James Bottomley , Jiewen Yao , Tom Lendacky Subject: [edk2-devel] [PATCH V1 3/3] Maintainers: Update OvmfPkg/IoMmuDxe Date: Mon, 5 Dec 2022 16:08:53 +0800 Message-Id: <20221205080853.356-4-min.m.xu@intel.com> In-Reply-To: <20221205080853.356-1-min.m.xu@intel.com> References: <20221205080853.356-1-min.m.xu@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,min.m.xu@intel.com X-Gm-Message-State: mGzCzg6s4p2umXn0G5IXb99Sx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1670227752; bh=AGq6/HJdR8V3xOhGT4o3ubmlkuEjM3wTOuqAk7FDvYQ=; h=Cc:Date:From:Reply-To:Subject:To; b=a1IUXAsDAwBIkCHcMlyLAou9x0mf1H2+HcmS5gbPKBilmnBlnfSUDcWDcW3NeG81UrB uyDxrWdNbS/fZ0JCiHjfeRusU+kdraAw1SrI8NqAyqerHI0F+jgoCPFcGgQHvTFbavJdG JGRT1Gxv+P1yEK+9p0K6exN6erjnYbbdBKI= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1670227754727100001 Content-Type: text/plain; charset="utf-8" From: Min M Xu https://bugzilla.tianocore.org/show_bug.cgi?id=3D4171 AmdSevIoMmu.* is renamed as CcIoMmu*. The related section in Maintainers.txt should be updated as well. Cc: Michael D Kinney Cc: Liming Gao Cc: Erdem Aktas Cc: Gerd Hoffmann Cc: James Bottomley Cc: Jiewen Yao Cc: Tom Lendacky Signed-off-by: Min Xu --- Maintainers.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maintainers.txt b/Maintainers.txt index 7e98083685bc..9293a3bb91be 100644 --- a/Maintainers.txt +++ b/Maintainers.txt @@ -478,7 +478,7 @@ F: OvmfPkg/AmdSev/ F: OvmfPkg/AmdSevDxe/ F: OvmfPkg/Include/Guid/ConfidentialComputingSecret.h F: OvmfPkg/Include/Library/MemEncryptSevLib.h -F: OvmfPkg/IoMmuDxe/AmdSevIoMmu.* +F: OvmfPkg/IoMmuDxe/CcIoMmu.* F: OvmfPkg/Library/BaseMemEncryptSevLib/ F: OvmfPkg/Library/PlatformBootManagerLibGrub/ F: OvmfPkg/Library/CcExitLib/ --=20 2.29.2.windows.2 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#96949): https://edk2.groups.io/g/devel/message/96949 Mute This Topic: https://groups.io/mt/95464808/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-