public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v3 0/6] Add NULL pointer detection feature
@ 2017-09-28  1:03 Jian J Wang
  2017-09-28  1:03 ` [PATCH v3 1/6] MdeModulePkg/MdeModulePkg.dec, .uni: Add NULL pointer detection PCD Jian J Wang
                   ` (5 more replies)
  0 siblings, 6 replies; 19+ messages in thread
From: Jian J Wang @ 2017-09-28  1:03 UTC (permalink / raw)
  To: edk2-devel
  Cc: Star Zeng, Eric Dong, Laszlo Ersek, Jiewen Yao, Michael Kinney,
	Jordan Justen, Ayellet Wolman

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 <star.zeng@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Ayellet Wolman <ayellet.wolman@intel.com>
Suggested-by: Ayellet Wolman <ayellet.wolman@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>

Jian J Wang (5):
  MdeModulePkg/DxeIpl: Implement NULL pointer detection
  MdeModulePkg/Core/Dxe: Add EndOfDxe workaround for NULL pointer
    detection
  UefiCpuPkg/PiSmmCpuDxeSmm: Implement NULL pointer detection for SMM
    code
  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,.uni: Add NULL pointer detection PCD

 .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.c       | 101 ++++++++++++++
 .../Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h       |   2 +
 .../Csm/BiosThunk/KeyboardDxe/KeyboardDxe.inf      |   2 +
 .../Csm/LegacyBiosDxe/LegacyBda.c                  |   4 +
 .../Csm/LegacyBiosDxe/LegacyBios.c                 | 152 +++++++++++++++++++++
 .../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 ++
 MdeModulePkg/MdeModulePkg.uni                      |  13 ++
 OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf              |   1 +
 OvmfPkg/QemuVideoDxe/VbeShim.c                     |  14 ++
 UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c           |  12 ++
 UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c              |  25 +++-
 UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf       |   1 +
 UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c            |  12 ++
 27 files changed, 606 insertions(+), 21 deletions(-)

-- 
2.14.1.windows.1



^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-10-02 17:55 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-28  1:03 [PATCH v3 0/6] Add NULL pointer detection feature Jian J Wang
2017-09-28  1:03 ` [PATCH v3 1/6] MdeModulePkg/MdeModulePkg.dec, .uni: Add NULL pointer detection PCD Jian J Wang
2017-09-28  3:35   ` Zeng, Star
2017-09-28  1:03 ` [PATCH v3 2/6] MdeModulePkg/DxeIpl: Implement NULL pointer detection Jian J Wang
2017-09-28  3:23   ` Zeng, Star
2017-09-28  3:31     ` Zeng, Star
2017-09-28  3:55       ` Wang, Jian J
2017-09-28  5:09         ` Zeng, Star
2017-09-28  5:33           ` Wang, Jian J
2017-09-28  3:50     ` Wang, Jian J
2017-09-28  5:11       ` Zeng, Star
2017-09-28  1:03 ` [PATCH v3 3/6] MdeModulePkg/Core/Dxe: Add EndOfDxe workaround Jian J Wang
2017-09-28  3:34   ` Zeng, Star
2017-09-28  5:08     ` Wang, Jian J
2017-09-28  1:03 ` [PATCH v3 4/6] UefiCpuPkg/PiSmmCpuDxeSmm: Implement NULL pointer detection for SMM code Jian J Wang
2017-09-28  1:03 ` [PATCH v3 5/6] IntelFrameworkModulePkg/Csm: Add code to bypass NULL pointer detection Jian J Wang
2017-09-28  1:03 ` [PATCH v3 6/6] OvmfPkg/QemuVideoDxe: Bypass NULL pointer detection during VBE SHIM installing Jian J Wang
2017-09-28  7:59   ` Laszlo Ersek
2017-10-02 17:58   ` Jordan Justen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox