diff options
author | Robert Zieba <robertzieba@google.com> | 2022-04-14 10:36:15 -0600 |
---|---|---|
committer | Nick Vaccaro <nvaccaro@google.com> | 2022-05-12 15:47:18 +0000 |
commit | 3f01cd14533f12f04a87a9cf1111dd948094bac4 (patch) | |
tree | e1ef98e60c0f91fd59fc14f3983525d21c62760a /src/arch/x86/Kconfig | |
parent | 4be0f4bf9943f5f6c84d1c13dee70b7442f99bd0 (diff) |
arch/x86: Add support for catching null dereferences through debug regs
This commit adds support for catching null dereferences and execution
through x86's debug registers. This is particularly useful when running
32-bit coreboot as paging is not enabled to catch these through page
faults. This commit adds three new configs to support this feature:
DEBUG_HW_BREAKPOINTS, DEBUG_NULL_DEREF_BREAKPOINTS and
DEBUG_NULL_DEREF_HALT.
BUG=b:223902046
TEST=Ran on nipperkin device, verifying that HW breakpoints work as
expected.
Change-Id: I113590689046a13c2a552741bbfe7668a834354a
Signed-off-by: Robert Zieba <robertzieba@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/63657
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Diffstat (limited to 'src/arch/x86/Kconfig')
-rw-r--r-- | src/arch/x86/Kconfig | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index e9fce5026f..993b1e6608 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -320,6 +320,38 @@ config MEMLAYOUT_LD_FILE string default "src/arch/x86/memlayout.ld" +config DEBUG_HW_BREAKPOINTS + bool + default y + help + Enable support for hardware data and instruction breakpoints through + the x86 debug registers + +config DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES + bool + default y + depends on DEBUG_HW_BREAKPOINTS && IDT_IN_EVERY_STAGE + +config DEBUG_NULL_DEREF_BREAKPOINTS + bool + default y + depends on DEBUG_HW_BREAKPOINTS + help + Enable support for catching null dereferences and instruction execution + +config DEBUG_NULL_DEREF_BREAKPOINTS_IN_ALL_STAGES + bool + default y + depends on DEBUG_NULL_DEREF_BREAKPOINTS && DEBUG_HW_BREAKPOINTS_IN_ALL_STAGES + +config DEBUG_NULL_DEREF_HALT + bool + default n + depends on DEBUG_NULL_DEREF_BREAKPOINTS + help + When enabled null dereferences and instruction fetches will halt execution. + Otherwise an error will be printed. + # Some EC need an "EC firmware pointer" (a data structure hinting the address # of its firmware blobs) being put at a fixed position. Its space # (__section__(".ecfw_ptr")) should be reserved if it lies in the range of a |