KVM: arm64: selftests: Add helpers to enable debug exceptions
authorReiji Watanabe <reijiw@google.com>
Thu, 20 Oct 2022 05:41:57 +0000 (22:41 -0700)
committerMarc Zyngier <maz@kernel.org>
Thu, 10 Nov 2022 19:03:54 +0000 (19:03 +0000)
Add helpers to enable breakpoint and watchpoint exceptions.
No functional change intended.

Signed-off-by: Reiji Watanabe <reijiw@google.com>
Reviewed-by: Ricardo Koller <ricarkol@google.com>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221020054202.2119018-5-reijiw@google.com
tools/testing/selftests/kvm/aarch64/debug-exceptions.c

index 608a6c8db9a211c37b23d221fb1d602d65d380bf..0c237022f4d39d7ad4302e9fad38ad9b257a943d 100644 (file)
@@ -130,10 +130,20 @@ static void enable_os_lock(void)
        GUEST_ASSERT(read_sysreg(oslsr_el1) & 2);
 }
 
+static void enable_monitor_debug_exceptions(void)
+{
+       uint32_t mdscr;
+
+       asm volatile("msr daifclr, #8");
+
+       mdscr = read_sysreg(mdscr_el1) | MDSCR_KDE | MDSCR_MDE;
+       write_sysreg(mdscr, mdscr_el1);
+       isb();
+}
+
 static void install_wp(uint8_t wpn, uint64_t addr)
 {
        uint32_t wcr;
-       uint32_t mdscr;
 
        wcr = DBGWCR_LEN8 | DBGWCR_RD | DBGWCR_WR | DBGWCR_EL1 | DBGWCR_E;
        write_dbgwcr(wpn, wcr);
@@ -141,28 +151,19 @@ static void install_wp(uint8_t wpn, uint64_t addr)
 
        isb();
 
-       asm volatile("msr daifclr, #8");
-
-       mdscr = read_sysreg(mdscr_el1) | MDSCR_KDE | MDSCR_MDE;
-       write_sysreg(mdscr, mdscr_el1);
-       isb();
+       enable_monitor_debug_exceptions();
 }
 
 static void install_hw_bp(uint8_t bpn, uint64_t addr)
 {
        uint32_t bcr;
-       uint32_t mdscr;
 
        bcr = DBGBCR_LEN8 | DBGBCR_EXEC | DBGBCR_EL1 | DBGBCR_E;
        write_dbgbcr(bpn, bcr);
        write_dbgbvr(bpn, addr);
        isb();
 
-       asm volatile("msr daifclr, #8");
-
-       mdscr = read_sysreg(mdscr_el1) | MDSCR_KDE | MDSCR_MDE;
-       write_sysreg(mdscr, mdscr_el1);
-       isb();
+       enable_monitor_debug_exceptions();
 }
 
 static void install_ss(void)