From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D292021E8796F for ; Wed, 13 Sep 2017 02:22:18 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 13 Sep 2017 02:25:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,387,1500966000"; d="scan'208";a="150787199" Received: from jwang36-mobl2.ccr.corp.intel.com ([10.239.192.50]) by fmsmga005.fm.intel.com with ESMTP; 13 Sep 2017 02:25:15 -0700 From: "Wang, Jian J" To: edk2-devel@lists.01.org Date: Wed, 13 Sep 2017 17:25:03 +0800 Message-Id: <20170913092507.12504-1-jian.j.wang@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 In-Reply-To: References: Subject: [PATCH 0/4] Implement NULL pointer detection feature for special pool 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: Wed, 13 Sep 2017 09:22:19 -0000 The mechanism behind is to trigger a page fault exception at address 0. This can be made by disabling page 0 (0-4095) during page table setup. So this feature can only be available on platform with paging enabled. Once this feature is enabled, any code, like CSM, which has to access memory in page 0 needs to enable this page temporarily in advance and disable it afterwards. PcdNullPointerDetectionPropertyMask is used to control and elaborate the use cases. For example, BIT7 of this PCD must be set for Windows 7 boot on Qemu if BIT0 set; or boot will fail. Wang, Jian J (4): Implement NULL pointer detection in EDK-II Core. Implement NULL pointer detection for SMM mode code. Update CSM code to temporarily bypass NULL pointer detection if enabled. Update QemuVideoDxe driver to bypass NULL pointer detection if enabled. .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c | 10 +++- .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h | 18 +++++++ .../Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf | 2 + .../Csm/LegacyBiosDxe/LegacyBda.c | 4 ++ .../Csm/LegacyBiosDxe/LegacyBios.c | 55 ++++++++++++++++++---- .../Csm/LegacyBiosDxe/LegacyBiosDxe.inf | 2 + .../Csm/LegacyBiosDxe/LegacyBiosInterface.h | 23 +++++++++ .../Csm/LegacyBiosDxe/LegacyBootSupport.c | 33 ++++++++++--- .../Csm/LegacyBiosDxe/LegacyPci.c | 17 ++++++- IntelFrameworkModulePkg/Csm/LegacyBiosDxe/Thunk.c | 41 ++++++++++------ MdeModulePkg/Core/Dxe/DxeMain.inf | 3 +- MdeModulePkg/Core/Dxe/Mem/Page.c | 21 +++++---- MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 47 ++++++++++++++++++ MdeModulePkg/Core/DxeIplPeim/DxeIpl.h | 15 ++++++ MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 3 +- MdeModulePkg/Core/DxeIplPeim/DxeLoad.c | 53 +++++++++++++++++++++ MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c | 8 +++- MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c | 2 + MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 23 ++++++--- MdeModulePkg/MdeModulePkg.dec | 12 +++++ OvmfPkg/QemuVideoDxe/Driver.c | 15 +++++- OvmfPkg/QemuVideoDxe/Qemu.h | 16 +++++++ OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 2 + UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 11 +++++ UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 25 +++++++++- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 2 + UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 17 +++---- UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c | 11 +++++ 28 files changed, 429 insertions(+), 62 deletions(-) -- 2.14.1.windows.1