| /src/sys/arm64/vmm/io/ |
| H A D | vgic.c | 51 vgic_attach_to_vm(struct hyp *hyp, struct vm_vgic_descr *descr) in vgic_attach_to_vm() argument 53 return (VGIC_ATTACH_TO_VM(vgic_dev, hyp, descr)); in vgic_attach_to_vm() 57 vgic_detach_from_vm(struct hyp *hyp) in vgic_detach_from_vm() argument 59 VGIC_DETACH_FROM_VM(vgic_dev, hyp); in vgic_detach_from_vm() 63 vgic_vminit(struct hyp *hyp) in vgic_vminit() argument 65 VGIC_VMINIT(vgic_dev, hyp); in vgic_vminit() 81 vgic_vmcleanup(struct hyp *hyp) in vgic_vmcleanup() argument 83 VGIC_VMCLEANUP(vgic_dev, hyp); in vgic_vmcleanup() 87 vgic_max_cpu_count(struct hyp *hyp) in vgic_max_cpu_count() argument 89 return (VGIC_MAX_CPU_COUNT(vgic_dev, hyp)); in vgic_max_cpu_count() [all …]
|
| H A D | vgic.h | 31 struct hyp; 39 int vgic_attach_to_vm(struct hyp *hyp, struct vm_vgic_descr *descr); 40 void vgic_detach_from_vm(struct hyp *hyp); 41 void vgic_vminit(struct hyp *hyp); 44 void vgic_vmcleanup(struct hyp *hyp); 45 int vgic_max_cpu_count(struct hyp *hyp); 47 int vgic_inject_irq(struct hyp *hyp, int vcpuid, uint32_t irqid, bool level); 48 int vgic_inject_msi(struct hyp *hyp, uint64_t msg, uint64_t addr);
|
| H A D | vtimer.c | 100 hypctx->hyp->vtimer.cntvoff_el2; in vtimer_virtual_timer_intr() 102 vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu), in vtimer_virtual_timer_intr() 136 vtimer_vminit(struct hyp *hyp) in vtimer_vminit() argument 143 if (allow_ecv_phys && (hyp->feats & HYP_FEAT_ECV_POFF) != 0) in vtimer_vminit() 168 hyp->vtimer.cnthctl_el2 = in vtimer_vminit() 172 hyp->vtimer.cnthctl_el2 |= in vtimer_vminit() 178 hyp->vtimer.cnthctl_el2 |= in vtimer_vminit() 191 hyp->vtimer.cnthctl_el2 = in vtimer_vminit() 195 hyp->vtimer.cnthctl_el2 = in vtimer_vminit() 202 hyp->vtimer.cnthctl_el2 |= CNTHCTL_ECV_EN; in vtimer_vminit() [all …]
|
| H A D | vgic_v3.c | 153 static int vgic_v3_max_cpu_count(device_t dev, struct hyp *hyp); 155 #define INJECT_IRQ(hyp, vcpuid, irqid, level) \ argument 156 vgic_v3_inject_irq(NULL, (hyp), (vcpuid), (irqid), (level)) 421 static struct vgic_v3_irq *vgic_v3_get_irq(struct hyp *, int, uint32_t); 426 mpidr_to_vcpu(struct hyp *hyp, uint64_t mpidr) in mpidr_to_vcpu() argument 431 vm = hyp->vm; in mpidr_to_vcpu() 433 hypctx = hyp->ctx[i]; in mpidr_to_vcpu() 441 vgic_v3_vminit(device_t dev, struct hyp *hyp) in vgic_v3_vminit() argument 445 hyp->vgic = malloc(sizeof(*hyp->vgic), M_VGIC_V3, in vgic_v3_vminit() 447 vgic = hyp->vgic; in vgic_v3_vminit() [all …]
|
| H A D | vgic_if.m | 31 struct hyp; 42 struct hyp *hyp; 48 struct hyp *hyp; 53 struct hyp *hyp; 68 struct hyp *hyp; 73 struct hyp *hyp; 83 struct hyp *hyp; 91 struct hyp *hyp;
|
| H A D | vtimer.h | 37 struct hyp; 70 void vtimer_vminit(struct hyp *); 73 void vtimer_vmcleanup(struct hyp *);
|
| /src/sys/riscv/vmm/ |
| H A D | vmm_aplic.c | 208 aplic_handle_idc_claimi(struct hyp *hyp, struct aplic *aplic, int cpu_id, in aplic_handle_idc_claimi() argument 242 aplic_handle_idc(struct hyp *hyp, struct aplic *aplic, int cpu, int reg, in aplic_handle_idc() argument 255 error = aplic_handle_idc_claimi(hyp, aplic, cpu, write, val); in aplic_handle_idc() 265 aplic_mmio_access(struct hyp *hyp, struct aplic *aplic, uint64_t reg, in aplic_mmio_access() argument 291 error = aplic_handle_idc(hyp, aplic, cpu, r, write, val); in aplic_mmio_access() 331 struct hyp *hyp; in mem_read() local 338 hyp = hypctx->hyp; in mem_read() 339 aplic = hyp->aplic; in mem_read() 348 error = aplic_mmio_access(hyp, aplic, reg, false, &val); in mem_read() 360 struct hyp *hyp; in mem_write() local [all …]
|
| H A D | vmm_aplic.h | 36 struct hyp; 40 int aplic_attach_to_vm(struct hyp *hyp, struct vm_aplic_descr *descr); 41 void aplic_detach_from_vm(struct hyp *hyp); 42 int aplic_inject_irq(struct hyp *hyp, int vcpuid, uint32_t irqid, bool level); 43 int aplic_inject_msi(struct hyp *hyp, uint64_t msg, uint64_t addr); 44 void aplic_vminit(struct hyp *hyp); 45 void aplic_vmcleanup(struct hyp *hyp);
|
| H A D | vmm_sbi.c | 52 struct hyp *hyp; in vmm_sbi_handle_rfnc() local 83 hyp = hypctx->hyp; in vmm_sbi_handle_rfnc() 84 active_cpus = vm_active_cpus(hyp->vm); in vmm_sbi_handle_rfnc() 85 maxcpus = vm_get_maxcpus(hyp->vm); in vmm_sbi_handle_rfnc() 87 vcpu = vm_vcpu(hyp->vm, i); in vmm_sbi_handle_rfnc() 108 vmm_fence_add(hyp->vm, &cpus, &fence); in vmm_sbi_handle_rfnc() 137 struct hyp *hyp; in vmm_sbi_handle_ipi() local 151 hyp = hypctx->hyp; in vmm_sbi_handle_ipi() 153 active_cpus = vm_active_cpus(hyp->vm); in vmm_sbi_handle_ipi() 176 riscv_send_ipi(hyp, &cpus); in vmm_sbi_handle_ipi()
|
| H A D | vmm_riscv.c | 126 struct hyp *hyp; in vmmops_init() local 129 size = round_page(sizeof(struct hyp) + in vmmops_init() 131 hyp = malloc_aligned(size, PAGE_SIZE, M_HYP, M_WAITOK | M_ZERO); in vmmops_init() 132 hyp->vm = vm; in vmmops_init() 133 hyp->aplic_attached = false; in vmmops_init() 135 aplic_vminit(hyp); in vmmops_init() 137 return (hyp); in vmmops_init() 201 struct hyp *hyp; in vmmops_vcpu_init() local 204 hyp = vmi; in vmmops_vcpu_init() 206 dprintf("%s: hyp %p\n", __func__, hyp); in vmmops_vcpu_init() [all …]
|
| H A D | vmm_vtimer.c | 89 struct hyp *hyp; in vtimer_inject_irq_callout() local 92 hyp = hypctx->hyp; in vtimer_inject_irq_callout() 95 vcpu_notify_event(vm_vcpu(hyp->vm, hypctx->cpu_id)); in vtimer_inject_irq_callout()
|
| H A D | riscv.h | 92 struct hyp *hyp; member 109 struct hyp { struct 132 void riscv_send_ipi(struct hyp *hyp, cpuset_t *cpus); argument
|
| H A D | vmm.c | 326 struct hyp *hyp; in vm_handle_inst_emul() local 333 hyp = vm->cookie; in vm_handle_inst_emul() 334 if (!hyp->aplic_attached) in vm_handle_inst_emul()
|
| /src/sys/arm64/vmm/ |
| H A D | vmm_arm64.c | 484 return (round_page(sizeof(struct hyp) + in el2_hyp_size() 512 struct hyp *hyp; in vmmops_init() local 517 hyp = malloc_aligned(size, PAGE_SIZE, M_HYP, M_WAITOK | M_ZERO); in vmmops_init() 519 hyp->vm = vm; in vmmops_init() 520 hyp->vgic_attached = false; in vmmops_init() 524 hyp->feats |= HYP_FEAT_ECV_POFF; in vmmops_init() 531 hyp->feats |= HYP_FEAT_FGT2; in vmmops_init() 534 hyp->feats |= HYP_FEAT_FGT; in vmmops_init() 540 hyp->feats |= HYP_FEAT_HCX; in vmmops_init() 542 vtimer_vminit(hyp); in vmmops_init() [all …]
|
| H A D | vmm_handlers.c | 52 vmm_nvhe_enter_guest(struct hyp *hyp, struct hypctx *hypctx) in vmm_nvhe_enter_guest() argument 54 return (vmm_call_hyp(HYP_ENTER_GUEST, hyp->el2_addr, hypctx->el2_addr)); in vmm_nvhe_enter_guest() 58 (struct hyp *hyp, struct hypctx *hypctx))
|
| H A D | vmm_hyp.c | 44 vmm_hyp_reg_store(struct hypctx *hypctx, struct hyp *hyp, bool guest, in vmm_hyp_reg_store() argument 282 vmm_hyp_reg_restore(struct hypctx *hypctx, struct hyp *hyp, bool guest, in vmm_hyp_reg_restore() argument 291 if ((hyp->feats & HYP_FEAT_HCX) != 0) in vmm_hyp_reg_restore() 299 if ((hyp->feats & HYP_FEAT_FGT) != 0) { in vmm_hyp_reg_restore() 306 if ((hyp->feats & HYP_FEAT_FGT2) != 0) { in vmm_hyp_reg_restore() 486 WRITE_SPECIALREG(cnthctl_el2, hyp->vtimer.cnthctl_el2); in vmm_hyp_reg_restore() 487 WRITE_SPECIALREG(cntvoff_el2, hyp->vtimer.cntvoff_el2); in vmm_hyp_reg_restore() 495 hyp->vtimer.cntvoff_el2); in vmm_hyp_reg_restore() 559 vmm_hyp_call_guest(struct hyp *hyp, struct hypctx *hypctx) in vmm_hyp_call_guest() argument 571 ecv_poff = (hyp->vtimer.cnthctl_el2 & CNTHCTL_ECV_EN) != 0; in vmm_hyp_call_guest() [all …]
|
| H A D | vmm_handlers.h | 33 struct hyp; 37 uint64_t vmm_enter_guest(struct hyp *, struct hypctx *); 43 uint64_t vmm_vhe_enter_guest(struct hyp *, struct hypctx *);
|
| H A D | arm64.h | 120 struct hyp *hyp; member 141 struct hyp { struct
|
| H A D | vmm_nvhe.c | 95 return (VMM_HYP_FUNC(enter_guest)((struct hyp *)x1, in vmm_hyp_enter()
|
| H A D | vmm.c | 652 struct hyp *hyp; in vm_handle_inst_emul() local 659 hyp = vm->cookie; in vm_handle_inst_emul() 660 if (!hyp->vgic_attached) in vm_handle_inst_emul()
|
| /src/sys/contrib/device-tree/src/arm64/renesas/ |
| H A D | r9a07g043u.dtsi | 55 interrupt-names = "sec-phys", "phys", "virt", "hyp-phys", 56 "hyp-virt";
|
| /src/sys/contrib/device-tree/src/arm64/cix/ |
| H A D | sky1.dtsi | 323 interrupt-names = "sec-phys", "phys", "virt", "hyp-phys", "hyp-virt";
|
| /src/sys/contrib/device-tree/src/arm64/apple/ |
| H A D | t600x-common.dtsi | 355 interrupt-names = "phys", "virt", "hyp-phys", "hyp-virt";
|
| /src/sys/riscv/include/ |
| H A D | vmm.h | 250 } hyp; member
|
| /src/sys/arm64/include/ |
| H A D | vmm.h | 275 } hyp; member
|