aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2025-10-02 15:34:23 +0000
committerAndrew Turner <andrew@FreeBSD.org>2025-10-02 16:21:33 +0000
commitc1723bbe2aa7f6c8b23d3aa97379d89e883b0a93 (patch)
tree58e9642913036b778a91b5581e3e7f2970fdf888
parent7b18bf2a225af348c2d56ad345862fe0f1055839 (diff)
arm64/vmm: Clear all pmc fields
When clearing pmcntenclr_el0, pmintenclr_el1, and pmovsclr_el0 clear all bits as new fields may be added in the upper 32-bits. Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D52801
-rw-r--r--sys/arm64/vmm/vmm_hyp.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/arm64/vmm/vmm_hyp.c b/sys/arm64/vmm/vmm_hyp.c
index 345535318f6e..c6eeca28b712 100644
--- a/sys/arm64/vmm/vmm_hyp.c
+++ b/sys/arm64/vmm/vmm_hyp.c
@@ -338,11 +338,11 @@ vmm_hyp_reg_restore(struct hypctx *hypctx, struct hyp *hyp, bool guest,
WRITE_SPECIALREG(pmccntr_el0, hypctx->pmccntr_el0);
WRITE_SPECIALREG(pmccfiltr_el0, hypctx->pmccfiltr_el0);
/* Clear all events/interrupts then enable them */
- WRITE_SPECIALREG(pmcntenclr_el0, 0xfffffffful);
+ WRITE_SPECIALREG(pmcntenclr_el0, ~0ul);
WRITE_SPECIALREG(pmcntenset_el0, hypctx->pmcntenset_el0);
- WRITE_SPECIALREG(pmintenclr_el1, 0xfffffffful);
+ WRITE_SPECIALREG(pmintenclr_el1, ~0ul);
WRITE_SPECIALREG(pmintenset_el1, hypctx->pmintenset_el1);
- WRITE_SPECIALREG(pmovsclr_el0, 0xfffffffful);
+ WRITE_SPECIALREG(pmovsclr_el0, ~0ul);
WRITE_SPECIALREG(pmovsset_el0, hypctx->pmovsset_el0);
switch ((hypctx->pmcr_el0 & PMCR_N_MASK) >> PMCR_N_SHIFT) {