From nobody Wed May 14 12:49:03 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1510850421085909.7889921739727; Thu, 16 Nov 2017 08:40:21 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 12BF22035A7C4; Thu, 16 Nov 2017 08:36:10 -0800 (PST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ml01.01.org (Postfix) with ESMTP id 2924F2035A7AD for ; Thu, 16 Nov 2017 08:36:06 -0800 (PST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2017 23:27:07 -0800 Received: from jwang36-mobl2.ccr.corp.intel.com ([10.239.192.64]) by orsmga005.jf.intel.com with ESMTP; 15 Nov 2017 23:27:05 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,402,1505804400"; d="scan'208";a="174145289" From: Jian J Wang To: edk2-devel@lists.01.org Date: Thu, 16 Nov 2017 15:26:59 +0800 Message-Id: <20171116072700.11456-2-jian.j.wang@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 In-Reply-To: <20171116072700.11456-1-jian.j.wang@intel.com> References: <20171116072700.11456-1-jian.j.wang@intel.com> Subject: [edk2] [PATCH v6 1/2] MdeModulePkg/DxeCore: Filter out all paging capabilities 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: , Cc: Laszlo Ersek , Jiewen Yao , Star Zeng , Ard Biesheuvel MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Some OSs will treat EFI_MEMORY_DESCRIPTOR.Attribute as really set attributes and change memory paging attribute accordingly. But current EFI_MEMORY_DESCRIPTOR.Attribute is assigned by value from Capabilities in GCD memory map. This might cause boot problems. Clearing all paging related capabilities can workaround it. The code added in this patch is supposed to be removed once the usage of EFI_MEMORY_DESCRIPTOR.Attribute is clarified in UEFI spec and adopted by both EDK-II Core and all supported OSs. Cc: Jiewen Yao Cc: Star Zeng Cc: Laszlo Ersek Cc: Ard Biesheuvel Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang Reviewed-by: Laszlo Ersek Reviewed-by: Star Zeng if the feedback from Jiewen (a= bout comments) and Laszlo (about MemoryMapStart) has been addressed, and th= e merging will be done in a separated patch. --- MdeModulePkg/Core/Dxe/Mem/Page.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/P= age.c index c9219cc068..783b576e35 100644 --- a/MdeModulePkg/Core/Dxe/Mem/Page.c +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c @@ -1829,6 +1829,23 @@ CoreGetMemoryMap ( // BufferSize =3D ((UINT8 *)MemoryMap - (UINT8 *)MemoryMapStart); =20 + // + // WORKAROUND: Some OSs will treat EFI_MEMORY_DESCRIPTOR.Attribute as re= ally + // set attributes and change memory paging attribute accordi= ngly. + // But current EFI_MEMORY_DESCRIPTOR.Attribute is assigned by + // value from Capabilities in GCD memory map. This might cau= se + // boot problems. Clearing all paging related capabilities c= an + // workaround it. Following code is supposed to be removed o= nce + // the usage of EFI_MEMORY_DESCRIPTOR.Attribute is clarified= in + // UEFI spec and adopted by both EDK-II Core and all support= ed + // OSs. + // + while (MemoryMapStart < MemoryMap) { + MemoryMapStart->Attribute &=3D ~(UINT64)(EFI_MEMORY_RP | EFI_MEMORY_RO= | + EFI_MEMORY_XP); + MemoryMapStart =3D NEXT_MEMORY_DESCRIPTOR(MemoryMapStart, Size); + } + Status =3D EFI_SUCCESS; =20 Done: --=20 2.14.1.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel