The branch main has been updated by andrew:

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

commit b3d30be6ed7108b97ed628f7ec9497a112d49fd6
Author:     Andrew Turner <and...@freebsd.org>
AuthorDate: 2025-09-22 17:08:14 +0000
Commit:     Andrew Turner <and...@freebsd.org>
CommitDate: 2025-09-23 17:08:36 +0000

    arm64/vmm: Remove support for reading CNTHCTL_EL2
    
    This is now unused as we just set the register value directly.
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D51818
---
 sys/arm64/vmm/hyp.h       | 1 -
 sys/arm64/vmm/io/vtimer.c | 5 +----
 sys/arm64/vmm/io/vtimer.h | 2 +-
 sys/arm64/vmm/vmm_arm64.c | 4 +---
 sys/arm64/vmm/vmm_hyp.c   | 2 --
 5 files changed, 3 insertions(+), 11 deletions(-)

diff --git a/sys/arm64/vmm/hyp.h b/sys/arm64/vmm/hyp.h
index 0b2977c73960..0c8d0fb28b18 100644
--- a/sys/arm64/vmm/hyp.h
+++ b/sys/arm64/vmm/hyp.h
@@ -80,7 +80,6 @@
 #define        HYP_ENTER_GUEST         0x00000002
 #define        HYP_READ_REGISTER       0x00000003
 #define         HYP_REG_ICH_VTR        0x1
-#define         HYP_REG_CNTHCTL        0x2
 #define        HYP_CLEAN_S2_TLBI       0x00000004
 #define        HYP_DC_CIVAC            0x00000005
 #define        HYP_EL2_TLBI            0x00000006
diff --git a/sys/arm64/vmm/io/vtimer.c b/sys/arm64/vmm/io/vtimer.c
index 51b21110d42c..ddc9e6e840a5 100644
--- a/sys/arm64/vmm/io/vtimer.c
+++ b/sys/arm64/vmm/io/vtimer.c
@@ -55,7 +55,6 @@
 #define timer_enabled(ctl)     \
     (!((ctl) & CNTP_CTL_IMASK) && ((ctl) & CNTP_CTL_ENABLE))
 
-static uint64_t cnthctl_el2_reg;
 static uint32_t tmr_frq;
 
 #define timer_condition_met(ctl)       ((ctl) & CNTP_CTL_ISTATUS)
@@ -111,9 +110,8 @@ out:
 }
 
 int
-vtimer_init(uint64_t cnthctl_el2)
+vtimer_init(void)
 {
-       cnthctl_el2_reg = cnthctl_el2;
        /*
         * The guest *MUST* use the same timer frequency as the host. The
         * register CNTFRQ_EL0 is accessible to the guest and a different value
@@ -129,7 +127,6 @@ vtimer_vminit(struct hyp *hyp)
 {
        uint64_t now;
 
-       hyp->vtimer.cnthctl_el2 = cnthctl_el2_reg;
 
        /*
         * Configure the Counter-timer Hypervisor Control Register for the VM.
diff --git a/sys/arm64/vmm/io/vtimer.h b/sys/arm64/vmm/io/vtimer.h
index 71a20344d05e..92ce025968d2 100644
--- a/sys/arm64/vmm/io/vtimer.h
+++ b/sys/arm64/vmm/io/vtimer.h
@@ -66,7 +66,7 @@ struct vtimer_cpu {
        uint32_t        cntkctl_el1;
 };
 
-int    vtimer_init(uint64_t cnthctl_el2);
+int    vtimer_init(void);
 void   vtimer_vminit(struct hyp *);
 void   vtimer_cpuinit(struct hypctx *);
 void   vtimer_cpucleanup(struct hypctx *);
diff --git a/sys/arm64/vmm/vmm_arm64.c b/sys/arm64/vmm/vmm_arm64.c
index 70bb914d68c6..fa13fc76677a 100644
--- a/sys/arm64/vmm/vmm_arm64.c
+++ b/sys/arm64/vmm/vmm_arm64.c
@@ -238,7 +238,6 @@ vmmops_modinit(int ipinum)
        vm_offset_t next_hyp_va;
        vm_paddr_t vmm_base;
        uint64_t id_aa64mmfr0_el1, pa_range_bits, pa_range_field;
-       uint64_t cnthctl_el2;
        int cpu, i;
        bool rv __diagused;
 
@@ -444,10 +443,9 @@ vmmops_modinit(int ipinum)
                        vmem_add(el2_mem_alloc, next_hyp_va,
                            HYP_VM_MAX_ADDRESS - next_hyp_va, M_WAITOK);
        }
-       cnthctl_el2 = vmm_read_reg(HYP_REG_CNTHCTL);
 
        vgic_init();
-       vtimer_init(cnthctl_el2);
+       vtimer_init();
 
        return (0);
 }
diff --git a/sys/arm64/vmm/vmm_hyp.c b/sys/arm64/vmm/vmm_hyp.c
index 475ad79f63cc..6bbf0d7eb730 100644
--- a/sys/arm64/vmm/vmm_hyp.c
+++ b/sys/arm64/vmm/vmm_hyp.c
@@ -615,8 +615,6 @@ VMM_HYP_FUNC(read_reg)(uint64_t reg)
        switch (reg) {
        case HYP_REG_ICH_VTR:
                return (READ_SPECIALREG(ich_vtr_el2));
-       case HYP_REG_CNTHCTL:
-               return (READ_SPECIALREG(cnthctl_el2));
        }
 
        return (0);

Reply via email to