From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 7C5FD20945B95 for ; Wed, 20 Sep 2017 22:17:30 -0700 (PDT) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Sep 2017 22:20:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,423,1500966000"; d="scan'208";a="154308576" Received: from jwang36-mobl2.ccr.corp.intel.com ([10.239.192.31]) by fmsmga006.fm.intel.com with ESMTP; 20 Sep 2017 22:20:34 -0700 From: Jian J Wang To: edk2-devel@lists.01.org Cc: Star Zeng , Eric Dong , Laszlo Ersek , Jiewen Yao , Michael Kinney , Jordan Justen , Ayellet Wolman Date: Thu, 21 Sep 2017 13:20:26 +0800 Message-Id: <20170921052032.13652-1-jian.j.wang@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 In-Reply-To: References: Subject: [PATCH v2 0/6] Add NULL pointer detection feature 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: Thu, 21 Sep 2017 05:17:30 -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. Cc: Star Zeng Cc: Eric Dong Cc: Laszlo Ersek Cc: Jiewen Yao Cc: Michael Kinney Cc: Jordan Justen Cc: Ayellet Wolman Suggested-by: Ayellet Wolman Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang Jian J Wang (5): MdeModulePkg/DxeIpl: Implement NULL pointer detection UefiCpuPkg/PiSmmCpuDxeSmm: Implement NULL pointer detection for SMM code MdeModulePkg/Core/Dxe: Add EndOfDxe workaround for NULL pointer detection IntelFrameworkModulePkg/Csm: Add code to bypass NULL pointer detection OvmfPkg/QemuVideoDxe: Bypass NULL pointer detection during VBE SHIM installing Wang, Jian J (1): MdeModulePkg/MdeModulePkg.dec: Add NULL pointer detection PCD .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c | 13 ++++ .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h | 2 + .../Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf | 2 + .../Csm/LegacyBiosDxe/LegacyBda.c | 4 + .../Csm/LegacyBiosDxe/LegacyBios.c | 90 ++++++++++++++++++++++ .../Csm/LegacyBiosDxe/LegacyBiosDxe.inf | 2 + .../Csm/LegacyBiosDxe/LegacyBiosInterface.h | 18 +++++ .../Csm/LegacyBiosDxe/LegacyBootSupport.c | 23 +++++- .../Csm/LegacyBiosDxe/LegacyPci.c | 17 +++- IntelFrameworkModulePkg/Csm/LegacyBiosDxe/Thunk.c | 27 +++++-- MdeModulePkg/Core/Dxe/DxeMain.inf | 1 + MdeModulePkg/Core/Dxe/Mem/Page.c | 4 +- MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 48 ++++++++++++ MdeModulePkg/Core/DxeIplPeim/DxeIpl.h | 25 ++++++ MdeModulePkg/Core/DxeIplPeim/DxeIpl.inf | 1 + MdeModulePkg/Core/DxeIplPeim/DxeLoad.c | 65 ++++++++++++++++ MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c | 11 ++- MdeModulePkg/Core/DxeIplPeim/X64/DxeLoadFunc.c | 2 + MdeModulePkg/Core/DxeIplPeim/X64/VirtualMemory.c | 31 ++++++-- MdeModulePkg/MdeModulePkg.dec | 13 ++++ OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 2 + OvmfPkg/QemuVideoDxe/VbeShim.c | 22 ++++++ UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 12 +++ UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 25 +++++- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 1 + UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c | 12 +++ 26 files changed, 452 insertions(+), 21 deletions(-) -- 2.14.1.windows.1