Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Oct 2025 16:32:22 GMT
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: e14f3edc16bc - stable/15 - arm64/vmm: Save dbgclaimset_el1
Message-ID:  <202510091632.599GWMR9023616@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/15 has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=e14f3edc16bc6f72fe4b8e095b0c1806a5e834f0

commit e14f3edc16bc6f72fe4b8e095b0c1806a5e834f0
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2025-10-02 15:34:43 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2025-10-09 16:31:49 +0000

    arm64/vmm: Save dbgclaimset_el1
    
    It may be used by the guest.
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D52803
    
    (cherry picked from commit 4954ec00c4200d8bfd29875fc13f541942209824)
---
 sys/arm64/vmm/arm64.h   | 1 +
 sys/arm64/vmm/vmm_hyp.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/sys/arm64/vmm/arm64.h b/sys/arm64/vmm/arm64.h
index f6b14e10c51b..6a4af47ac60a 100644
--- a/sys/arm64/vmm/arm64.h
+++ b/sys/arm64/vmm/arm64.h
@@ -87,6 +87,7 @@ struct hypctx {
 	uint64_t	pmevcntr_el0[31];
 	uint64_t	pmevtyper_el0[31];
 
+	uint64_t	dbgclaimset_el1;
 	uint64_t	dbgbcr_el1[16];	/* Debug Breakpoint Control Registers */
 	uint64_t	dbgbvr_el1[16];	/* Debug Breakpoint Value Registers */
 	uint64_t	dbgwcr_el1[16];	/* Debug Watchpoint Control Registers */
diff --git a/sys/arm64/vmm/vmm_hyp.c b/sys/arm64/vmm/vmm_hyp.c
index 34402d7a4f05..636247c48080 100644
--- a/sys/arm64/vmm/vmm_hyp.c
+++ b/sys/arm64/vmm/vmm_hyp.c
@@ -108,6 +108,8 @@ vmm_hyp_reg_store(struct hypctx *hypctx, struct hyp *hyp, bool guest)
 		}
 	}
 
+	hypctx->dbgclaimset_el1 = READ_SPECIALREG(dbgclaimset_el1);
+
 	dfr0 = READ_SPECIALREG(id_aa64dfr0_el1);
 	switch (ID_AA64DFR0_BRPs_VAL(dfr0) - 1) {
 #define	STORE_DBG_BRP(x)						\
@@ -390,6 +392,9 @@ vmm_hyp_reg_restore(struct hypctx *hypctx, struct hyp *hyp, bool guest)
 #undef LOAD_PMU
 	}
 
+	WRITE_SPECIALREG(dbgclaimclr_el1, ~0ul);
+	WRITE_SPECIALREG(dbgclaimclr_el1, hypctx->dbgclaimset_el1);
+
 	dfr0 = READ_SPECIALREG(id_aa64dfr0_el1);
 	switch (ID_AA64DFR0_BRPs_VAL(dfr0) - 1) {
 #define	LOAD_DBG_BRP(x)							\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510091632.599GWMR9023616>