From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 BF037208F7AD7 for ; Wed, 13 Sep 2017 01:41:57 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Sep 2017 01:44:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,386,1500966000"; d="scan'208";a="128281280" Received: from jwang36-mobl2.ccr.corp.intel.com (HELO jwang36-MOBL2.local) ([10.239.192.50]) by orsmga004.jf.intel.com with SMTP; 13 Sep 2017 01:44:54 -0700 Date: Wed, 13 Sep 2017 01:07:48 -0700 From: Wang, Jian J Sender: Wang, Jian J To: edk2-devel@lists.01.org Message-ID: X-Mailer: TortoiseGit MIME-Version: 1.0 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 08:41:58 -0000 Content-Type: text/plain; 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