From nobody Tue May 14 22:42:41 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+113048+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+113048+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1704243566; cv=none; d=zohomail.com; s=zohoarc; b=jzC/ktB7x9v0OXjmSa4kzNL7g7j2lNI1hH2L2oSU/i+JmHvfPvmXQrsXGuSWPLD1OE6C+ut73a5vce/QEO2yMd5QeqRz1ZRB7CKYFn3VLcdFNnPOOo5YXft78Cfz8MBMjbAA1PxOXJUe64rG1b+jL2tiEb+1ZeDyyc9pcLNKiwo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704243566; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=0r+LVn+AZ6Qnl37lUV9l0Cb0cqqO3fFmWGXdDBVgXU0=; b=HGnVcJsMVfi+GBqwIWxyX+Qf1szd8ESRricob66hi9pP5opkmEiod6rUvAoiorSHPJKAwYsUHtl3qSc4JYcy3+JjcKNniqQnJpidJVvVNyawHbLB8ibKWAyGuCOzLJMno8bWIUUrN7YtYWxb4b1fvmvb8lu/EVcGGexd4nYaW0o= 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+113048+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1704243566155619.0112758457128; Tue, 2 Jan 2024 16:59:26 -0800 (PST) Return-Path: DKIM-Signature: a=rsa-sha256; bh=m9QTnWqz/enKbkZBT4AT57iNU4FHkCGO0DcJkGixljY=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: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=1704243565; v=1; b=qbPz4JR+WklZ/Xw/QoZFAeYPd1nRdLoQ39ldC90yNijeAbnXAdqLWPq6wO50+B+YeKqB4ILA KfVFNB0R085rHsu1la0wdaeg9wJqLl+q4CoNG8daJBC2TH2EHV3hLYPPzlKkJN6Fhzh8PQxpxG4 epz9N7+Ea/RLTqRbvZnI1KlE= X-Received: by 127.0.0.2 with SMTP id oFAfYY1788612xE0mALv0yoO; Tue, 02 Jan 2024 16:59:25 -0800 X-Received: from zg8tmja5ljk3lje4ms43mwaa.icoremail.net (zg8tmja5ljk3lje4ms43mwaa.icoremail.net [209.97.181.73]) by mx.groups.io with SMTP id smtpd.web10.115796.1703728759131292018 for ; Wed, 27 Dec 2023 17:59:20 -0800 X-Received: from prodtpl.icoremail.net (unknown [10.12.1.20]) by hzbj-icmmx-7 (Coremail) with SMTP id AQAAfwDHT7Z01oxlaDN6BA--.13246S2; Thu, 28 Dec 2023 09:59:16 +0800 (CST) X-Received: from phytium.com.cn (unknown [218.76.62.144]) by mail (Coremail) with SMTP id AQAAfwAXnQtq1oxlqEoAAA--.182S4; Thu, 28 Dec 2023 09:59:09 +0800 (CST) From: "Xiong Yining" To: devel@edk2.groups.io Cc: Xiong Yining , Chen Baozi Subject: [edk2-devel] [PATCH v2 1/1] SbsaQemu: add memory space for the high memory nodes Date: Thu, 28 Dec 2023 01:59:02 +0000 Message-Id: <20231228015902.1692317-2-xiongyining1480@phytium.com.cn> In-Reply-To: <20231228015902.1692317-1-xiongyining1480@phytium.com.cn> References: <20231228015902.1692317-1-xiongyining1480@phytium.com.cn> MIME-Version: 1.0 X-CM-TRANSID: AQAAfwAXnQtq1oxlqEoAAA--.182S4 X-CM-SenderInfo: x0lr0wp1lqx0bjrumio6sk53xlxphulrpou0/1tbiAQAHBmWMfGYBfQACsN X-Coremail-Antispam: 1Uk129KBjvJXoW3Wr17tryUJFy7AryUXr1DZFb_yoWxuw1fpF W7AFWrur48J342vw4fJa4rZFW5CF98G3y5G39rX3WxXa13JF18Zw47Zrn3J3sxXrn8Xayk WF18t34UW3Z5KaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj DUYxn0WfASr-VFAU7a7-sFnT9fnUUIcSsGvfJ3UbIYCTnIWIevJa73UjIFyTuYvj4RJUUU UUUUU 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,xiongyining1480@phytium.com.cn List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: HnfoL7TBKYx779db67FR6bAEx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1704243568527100017 Content-Type: text/plain; charset="utf-8" To support more memory nodes, we refer to the implement of "OvmfPkg/Fdt/HighMemDxe" to add memory space for the high memory nodes except the first one. Signed-off-by: Xiong Yining Signed-off-by: Chen Baozi --- Platform/Qemu/SbsaQemu/SbsaQemu.dsc | 3 +- Platform/Qemu/SbsaQemu/SbsaQemu.fdf | 1 + .../SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.inf | 43 ++++++ .../SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.c | 133 ++++++++++++++++++ 4 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQe= muHighMemDxe.inf create mode 100644 Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQe= muHighMemDxe.c diff --git a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc b/Platform/Qemu/SbsaQemu/S= bsaQemu.dsc index 378600050df9..21acc188b75e 100644 --- a/Platform/Qemu/SbsaQemu/SbsaQemu.dsc +++ b/Platform/Qemu/SbsaQemu/SbsaQemu.dsc @@ -78,7 +78,7 @@ DEFINE NETWORK_HTTP_BOOT_ENABLE =3D FALSE SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - ImagePropertiesRecordLib|MdeModulePkg/Library/ImagePropertiesRecordLib/I= magePropertiesRecordLib.inf + ImagePropertiesRecordLib|MdeModulePkg/Library/ImagePropertiesRecordLib/I= magePropertiesRecordLib.inf =20 FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf @@ -675,6 +675,7 @@ DEFINE NETWORK_HTTP_BOOT_ENABLE =3D FALSE ArmPkg/Drivers/TimerDxe/TimerDxe.inf OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.inf MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer.inf + Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.inf =20 # # FAT filesystem + GPT/MBR partitioning diff --git a/Platform/Qemu/SbsaQemu/SbsaQemu.fdf b/Platform/Qemu/SbsaQemu/S= bsaQemu.fdf index 6fcfd25faaeb..b35f42e11aa4 100644 --- a/Platform/Qemu/SbsaQemu/SbsaQemu.fdf +++ b/Platform/Qemu/SbsaQemu/SbsaQemu.fdf @@ -161,6 +161,7 @@ READ_LOCK_STATUS =3D TRUE =20 INF MdeModulePkg/Core/Dxe/DxeMain.inf INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf + INF Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.= inf =20 # # PI DXE Drivers producing Architectural Protocols (EFI Services) diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighM= emDxe.inf b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMe= mDxe.inf new file mode 100644 index 000000000000..27a7ef649685 --- /dev/null +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.i= nf @@ -0,0 +1,43 @@ +## @file +# High memory node enumeration DXE driver for SbsaQemu +# +# Copyright (c) 2023, Linaro Ltd. All rights reserved. +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D SbsaQemuHighMemDxe + FILE_GUID =3D 9E749C5E-C282-32F8-7CC3-E5A3DDE15329 + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + + ENTRY_POINT =3D InitializeHighMemDxe + +[Sources] + SbsaQemuHighMemDxe.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + Silicon/Qemu/SbsaQemu/SbsaQemu.dec + +[LibraryClasses] + BaseLib + DebugLib + DxeServicesTableLib + PcdLib + UefiBootServicesTableLib + UefiDriverEntryPoint + SbsaQemuSmc + +[Protocols] + gEfiCpuArchProtocolGuid ## CONSUMES + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy + +[Depex] + gEfiCpuArchProtocolGuid diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighM= emDxe.c b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMemD= xe.c new file mode 100644 index 000000000000..01b74a1247cd --- /dev/null +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuHighMemDxe/SbsaQemuHighMemDxe.c @@ -0,0 +1,133 @@ +/** @file +* High memory node enumeration DXE driver for SbsaQemu +* Virtual Machines +* +* Copyright (c) 2023, Linaro Ltd. All rights reserved. +* +* SPDX-License-Identifier: BSD-2-Clause-Patent +* +**/ + +#include +#include +#include +#include +#include +#include + +#include + +EFI_STATUS +EFIAPI +InitializeHighMemDxe ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + + + UINT64 CurBase; + UINT64 CurSize; + UINT64 Attributes; + UINT32 NumMemNodes; + UINT32 index; + MemoryNode MemNode; + EFI_STATUS Status; + EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor; + EFI_CPU_ARCH_PROTOCOL *Cpu; + + Status =3D gBS->LocateProtocol ( + &gEfiCpuArchProtocolGuid, + NULL, + (VOID **)&Cpu + ); + ASSERT_EFI_ERROR (Status); + + // + // Check for memory node and add the memory spaces except the lowest one + // + NumMemNodes =3D SbsaQemuGetMemNodeCount(); + for (index =3D 0; index < NumMemNodes; index++){ + MemNode =3D SbsaQemuGetMemInfo(index); + CurBase =3D MemNode.AddressBase; + CurSize =3D MemNode.AddressSize; + + Status =3D gDS->GetMemorySpaceDescriptor (CurBase, &GcdDescriptor); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_WARN, + "%a: Region 0x%lx - 0x%lx not found in the GCD memory space map\n", + __func__, + CurBase, + CurBase + CurSize - 1 + )); + continue; + } + + if (GcdDescriptor.GcdMemoryType =3D=3D EfiGcdMemoryTypeNonExistent) { + Status =3D gDS->AddMemorySpace ( + EfiGcdMemoryTypeSystemMemory, + CurBase, + CurSize, + EFI_MEMORY_WB | EFI_MEMORY_XP + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: Failed to add System RAM @ 0x%lx - 0x%lx (%r)\n", + __func__, + CurBase, + CurBase + CurSize - 1, + Status + )); + continue; + } + + Status =3D gDS->SetMemorySpaceAttributes ( + CurBase, + CurSize, + EFI_MEMORY_WB | EFI_MEMORY_XP + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_WARN, + "%a: gDS->SetMemorySpaceAttributes() failed on region 0x%lx - 0x= %lx (%r)\n", + __func__, + CurBase, + CurBase + CurSize - 1, + Status + )); + } + + Attributes =3D EFI_MEMORY_WB; + if ((PcdGet64 (PcdDxeNxMemoryProtectionPolicy) & + (1U << (UINT32)EfiConventionalMemory)) !=3D 0) + { + Attributes |=3D EFI_MEMORY_XP; + } + + Status =3D gDS->SetMemorySpaceAttributes (CurBase, CurSize, Attribut= es); + + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "%a: Failed to set System RAM @ 0x%lx - 0x%lx attribute (%r)\n", + __func__, + CurBase, + CurBase + CurSize - 1, + Status + )); + } else { + DEBUG (( + DEBUG_INFO, + "%a: Add System RAM @ 0x%lx - 0x%lx\n", + __func__, + CurBase, + CurBase + CurSize - 1 + )); + } + + } + } + return EFI_SUCCESS; +} --=20 2.34.1 -=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 (#113048): https://edk2.groups.io/g/devel/message/113048 Mute This Topic: https://groups.io/mt/103494168/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-