From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 7A6C77803D1 for ; Wed, 6 Dec 2023 18:27:23 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Aa8h/12oyTMqUVICwvsJBPUNCe+l+jY39PW4DeqxOOw=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1701887242; v=1; b=wGFYLnDAM6zBhg2b79+d4ZGlgHJ1IWpG0G460vRSr2BZGcGLTGCHpp3kW1WTUiYE0aGGi793 dQcJ7GSJUJqQ+V+iWLn/yvXVhLK4JQ3eRBmqNiG6OiOLepXpYx+8NVH66Xr1qAHfgA1awXkE58z NehQQH7qA9EfNT/VtAgok96g= X-Received: by 127.0.0.2 with SMTP id qvzLYY7687511xyDOmn6RZ3a; Wed, 06 Dec 2023 10:27:22 -0800 X-Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by mx.groups.io with SMTP id smtpd.web10.100758.1701784085903937533 for ; Tue, 05 Dec 2023 05:48:05 -0800 X-Received: by mail-pl1-f196.google.com with SMTP id d9443c01a7336-1cfabcbda7bso29772355ad.0 for ; Tue, 05 Dec 2023 05:48:05 -0800 (PST) X-Gm-Message-State: Cs8N5Ef34GyBGJdT8FnoyAjAx7686176AA= X-Google-Smtp-Source: AGHT+IH848GfzuxoI4iG0dKatKmAQqvJBfKiMTVt7UseMyLp8BdRcrOtwPWdqVZpE6DsMMTXn+6W7A== X-Received: by 2002:a17:902:b58f:b0:1cf:6675:b313 with SMTP id a15-20020a170902b58f00b001cf6675b313mr1601407pls.22.1701784085043; Tue, 05 Dec 2023 05:48:05 -0800 (PST) X-Received: from stewart.. ([222.253.82.188]) by smtp.googlemail.com with ESMTPSA id j16-20020a170902da9000b001c7443d0890sm4787268plx.102.2023.12.05.05.48.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 05:48:04 -0800 (PST) From: "Nhi Pham" To: devel@edk2.groups.io Cc: Nhi Pham , Ard Biesheuvel , Ray Ni , Sami Mujawar , Oliver Smith-Denny Subject: [edk2-devel] [PATCH v1 1/1] StandaloneMmPkg/StandaloneMmHobLib: Remove HOB creation Date: Tue, 5 Dec 2023 20:47:57 +0700 Message-Id: <20231205134757.14692-1-nhiphambka@gmail.com> MIME-Version: 1.0 Precedence: Bulk 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,nhiphambka@gmail.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=wGFYLnDA; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io According to the discussion in "StandaloneMmPkg: Fix HOB space and heap space conflicted issue" [1], Standalone MM modules should be HOB consumers where HOB is read-only. Therefore, this patch removes the supported functions for HOB creation in the StandaloneMmHobLib. [1] https://edk2.groups.io/g/devel/message/108333 Cc: Ard Biesheuvel Cc: Ray Ni Cc: Sami Mujawar Cc: Oliver Smith-Denny Signed-off-by: Nhi Pham --- StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c | 171 ++++= ++-------------- 1 file changed, 51 insertions(+), 120 deletions(-) diff --git a/StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.= c b/StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c index ee61bdd227d0..bef66d167494 100644 --- a/StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c +++ b/StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.c @@ -1,5 +1,5 @@ /** @file=0D - HOB Library implementation for Standalone MM Core.=0D + HOB Library implementation for Standalone MM modules.=0D =0D Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
=0D Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.
=0D @@ -250,48 +250,13 @@ GetBootModeHob ( return HandOffHob->BootMode;=0D }=0D =0D -VOID *=0D -CreateHob (=0D - IN UINT16 HobType,=0D - IN UINT16 HobLength=0D - )=0D -{=0D - EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;=0D - EFI_HOB_GENERIC_HEADER *HobEnd;=0D - EFI_PHYSICAL_ADDRESS FreeMemory;=0D - VOID *Hob;=0D -=0D - HandOffHob =3D GetHobList ();=0D -=0D - HobLength =3D (UINT16)((HobLength + 0x7) & (~0x7));=0D -=0D - FreeMemory =3D HandOffHob->EfiFreeMemoryTop - HandOffHob->EfiFreeMemoryB= ottom;=0D -=0D - if (FreeMemory < HobLength) {=0D - return NULL;=0D - }=0D -=0D - Hob =3D (VOID *)(UINTN)HandOffHob= ->EfiEndOfHobList;=0D - ((EFI_HOB_GENERIC_HEADER *)Hob)->HobType =3D HobType;=0D - ((EFI_HOB_GENERIC_HEADER *)Hob)->HobLength =3D HobLength;=0D - ((EFI_HOB_GENERIC_HEADER *)Hob)->Reserved =3D 0;=0D -=0D - HobEnd =3D (EFI_HOB_GENERIC_HEADER *)((UINTN)Hob + = HobLength);=0D - HandOffHob->EfiEndOfHobList =3D (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;=0D -=0D - HobEnd->HobType =3D EFI_HOB_TYPE_END_OF_HOB_LIST;=0D - HobEnd->HobLength =3D sizeof (EFI_HOB_GENERIC_HEADER);=0D - HobEnd->Reserved =3D 0;=0D - HobEnd++;=0D - HandOffHob->EfiFreeMemoryBottom =3D (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;= =0D -=0D - return Hob;=0D -}=0D -=0D /**=0D Builds a HOB for a loaded PE32 module.=0D =0D This function builds a HOB for a loaded PE32 module.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If ModuleName is NULL, then ASSERT().=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @@ -310,33 +275,19 @@ BuildModuleHob ( IN EFI_PHYSICAL_ADDRESS EntryPoint=0D )=0D {=0D - EFI_HOB_MEMORY_ALLOCATION_MODULE *Hob;=0D -=0D - ASSERT (=0D - ((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) =3D=3D 0) &&=0D - ((ModuleLength & (EFI_PAGE_SIZE - 1)) =3D=3D 0)=0D - );=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMOR= Y_ALLOCATION_MODULE));=0D -=0D - CopyGuid (&(Hob->MemoryAllocationHeader.Name), &gEfiHobMemoryAllocModule= Guid);=0D - Hob->MemoryAllocationHeader.MemoryBaseAddress =3D MemoryAllocationModule= ;=0D - Hob->MemoryAllocationHeader.MemoryLength =3D ModuleLength;=0D - Hob->MemoryAllocationHeader.MemoryType =3D EfiBootServicesCode;=0D -=0D //=0D - // Zero the reserved space to match HOB spec=0D + // HOB is read only for Standalone MM drivers=0D //=0D - ZeroMem (Hob->MemoryAllocationHeader.Reserved, sizeof (Hob->MemoryAlloca= tionHeader.Reserved));=0D -=0D - CopyGuid (&Hob->ModuleName, ModuleName);=0D - Hob->EntryPoint =3D EntryPoint;=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D Builds a HOB that describes a chunk of system memory.=0D =0D This function builds a HOB that describes a chunk of system memory.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @param ResourceType The type of resource described by this HOB.= =0D @@ -354,15 +305,10 @@ BuildResourceDescriptorHob ( IN UINT64 NumberOfBytes=0D )=0D {=0D - EFI_HOB_RESOURCE_DESCRIPTOR *Hob;=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, sizeof (EFI_HOB_RES= OURCE_DESCRIPTOR));=0D - ASSERT (Hob !=3D NULL);=0D -=0D - Hob->ResourceType =3D ResourceType;=0D - Hob->ResourceAttribute =3D ResourceAttribute;=0D - Hob->PhysicalStart =3D PhysicalStart;=0D - Hob->ResourceLength =3D NumberOfBytes;=0D + //=0D + // HOB is read only for Standalone MM drivers=0D + //=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D @@ -371,6 +317,9 @@ BuildResourceDescriptorHob ( This function builds a customized HOB tagged with a GUID for identificat= ion=0D and returns the start address of GUID HOB data so that caller can fill t= he customized data.=0D The HOB Header and Name field is already stripped.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If Guid is NULL, then ASSERT().=0D If there is no additional space for HOB creation, then ASSERT().=0D If DataLength >=3D (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT()= .=0D @@ -388,16 +337,11 @@ BuildGuidHob ( IN UINTN DataLength=0D )=0D {=0D - EFI_HOB_GUID_TYPE *Hob;=0D -=0D //=0D - // Make sure that data length is not too long.=0D + // HOB is read only for Standalone MM drivers=0D //=0D - ASSERT (DataLength <=3D (0xffff - sizeof (EFI_HOB_GUID_TYPE)));=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16)(sizeof (EFI_HOB= _GUID_TYPE) + DataLength));=0D - CopyGuid (&Hob->Name, Guid);=0D - return Hob + 1;=0D + ASSERT (FALSE);=0D + return NULL;=0D }=0D =0D /**=0D @@ -406,6 +350,9 @@ BuildGuidHob ( This function builds a customized HOB tagged with a GUID for identificat= ion,=0D copies the input data to the HOB data field and returns the start addres= s of the GUID HOB data.=0D The HOB Header and Name field is already stripped.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If Guid is NULL, then ASSERT().=0D If Data is NULL and DataLength > 0, then ASSERT().=0D If there is no additional space for HOB creation, then ASSERT().=0D @@ -426,19 +373,20 @@ BuildGuidDataHob ( IN UINTN DataLength=0D )=0D {=0D - VOID *HobData;=0D -=0D - ASSERT (Data !=3D NULL || DataLength =3D=3D 0);=0D -=0D - HobData =3D BuildGuidHob (Guid, DataLength);=0D -=0D - return CopyMem (HobData, Data, DataLength);=0D + //=0D + // HOB is read only for Standalone MM drivers=0D + //=0D + ASSERT (FALSE);=0D + return NULL;=0D }=0D =0D /**=0D Builds a Firmware Volume HOB.=0D =0D This function builds a Firmware Volume HOB.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @param BaseAddress The base address of the Firmware Volume.=0D @@ -452,18 +400,19 @@ BuildFvHob ( IN UINT64 Length=0D )=0D {=0D - EFI_HOB_FIRMWARE_VOLUME *Hob;=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_FV, sizeof (EFI_HOB_FIRMWARE_VOLUME));=0D -=0D - Hob->BaseAddress =3D BaseAddress;=0D - Hob->Length =3D Length;=0D + //=0D + // HOB is read only for Standalone MM drivers=0D + //=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D Builds a EFI_HOB_TYPE_FV2 HOB.=0D =0D This function builds a EFI_HOB_TYPE_FV2 HOB.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @param BaseAddress The base address of the Firmware Volume.=0D @@ -481,20 +430,19 @@ BuildFv2Hob ( IN CONST EFI_GUID *FileName=0D )=0D {=0D - EFI_HOB_FIRMWARE_VOLUME2 *Hob;=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_FV2, sizeof (EFI_HOB_FIRMWARE_VOLUME2));= =0D -=0D - Hob->BaseAddress =3D BaseAddress;=0D - Hob->Length =3D Length;=0D - CopyGuid (&Hob->FvName, FvName);=0D - CopyGuid (&Hob->FileName, FileName);=0D + //=0D + // HOB is read only for Standalone MM drivers=0D + //=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D Builds a HOB for the CPU.=0D =0D This function builds a HOB for the CPU.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @param SizeOfMemorySpace The maximum physical memory addressability o= f the processor.=0D @@ -508,23 +456,19 @@ BuildCpuHob ( IN UINT8 SizeOfIoSpace=0D )=0D {=0D - EFI_HOB_CPU *Hob;=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_CPU, sizeof (EFI_HOB_CPU));=0D -=0D - Hob->SizeOfMemorySpace =3D SizeOfMemorySpace;=0D - Hob->SizeOfIoSpace =3D SizeOfIoSpace;=0D -=0D //=0D - // Zero the reserved space to match HOB spec=0D + // HOB is read only for Standalone MM drivers=0D //=0D - ZeroMem (Hob->Reserved, sizeof (Hob->Reserved));=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D Builds a HOB for the memory allocation.=0D =0D This function builds a HOB for the memory allocation.=0D + It can only be invoked by Standalone MM Core.=0D + For Standalone MM drivers, it will ASSERT() since HOB is read only for S= tandalone MM drivers.=0D +=0D If there is no additional space for HOB creation, then ASSERT().=0D =0D @param BaseAddress The 64 bit physical address of the memory.=0D @@ -540,23 +484,10 @@ BuildMemoryAllocationHob ( IN EFI_MEMORY_TYPE MemoryType=0D )=0D {=0D - EFI_HOB_MEMORY_ALLOCATION *Hob;=0D -=0D - ASSERT (=0D - ((BaseAddress & (EFI_PAGE_SIZE - 1)) =3D=3D 0) &&=0D - ((Length & (EFI_PAGE_SIZE - 1)) =3D=3D 0)=0D - );=0D -=0D - Hob =3D CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMOR= Y_ALLOCATION));=0D -=0D - ZeroMem (&(Hob->AllocDescriptor.Name), sizeof (EFI_GUID));=0D - Hob->AllocDescriptor.MemoryBaseAddress =3D BaseAddress;=0D - Hob->AllocDescriptor.MemoryLength =3D Length;=0D - Hob->AllocDescriptor.MemoryType =3D MemoryType;=0D //=0D - // Zero the reserved space to match HOB spec=0D + // HOB is read only for Standalone MM drivers=0D //=0D - ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Res= erved));=0D + ASSERT (FALSE);=0D }=0D =0D /**=0D --=20 2.34.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#112136): https://edk2.groups.io/g/devel/message/112136 Mute This Topic: https://groups.io/mt/103018869/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-