Lines Matching refs:ctx
118 static void vm_loop(struct vmctx *ctx);
226 paddr_guest2host(struct vmctx *ctx, uintptr_t gaddr, size_t len) in paddr_guest2host() argument
228 return vm_map_gpa(ctx, gaddr, len); in paddr_guest2host()
329 add_cpu(struct vmctx *ctx, int vcpu_num) in add_cpu() argument
337 mt_vmm_info[i].mt_ctx = ctx; in add_cpu()
341 vm_set_vcpu_regs(ctx, &ctx->bsp_regs); in add_cpu()
350 delete_cpu(struct vmctx *ctx, int vcpu) in delete_cpu() argument
357 vm_destroy_ioreq_client(ctx); in delete_cpu()
374 vmexit_inout(struct vmctx *ctx, struct acrn_io_request *io_req, int *pvcpu) in vmexit_inout() argument
383 error = emulate_inout(ctx, pvcpu, &io_req->reqs.pio_request); in vmexit_inout()
397 vmexit_mmio_emul(struct vmctx *ctx, struct acrn_io_request *io_req, int *pvcpu) in vmexit_mmio_emul() argument
402 err = emulate_mem(ctx, &io_req->reqs.mmio_request); in vmexit_mmio_emul()
421 vmexit_pci_emul(struct vmctx *ctx, struct acrn_io_request *io_req, int *pvcpu) in vmexit_pci_emul() argument
425 err = emulate_pci_cfgrw(ctx, *pvcpu, in, in vmexit_pci_emul()
469 handle_vmexit(struct vmctx *ctx, struct acrn_io_request *io_req, int vcpu) in handle_vmexit() argument
480 (*handler[exitcode])(ctx, io_req, &vcpu); in handle_vmexit()
493 vm_notify_request_done(ctx, vcpu); in handle_vmexit()
497 guest_pm_notify_init(struct vmctx *ctx) in guest_pm_notify_init() argument
506 ioc_init(ctx); in guest_pm_notify_init()
508 power_button_init(ctx); in guest_pm_notify_init()
511 ret = pm_by_vuart_init(ctx, in guest_pm_notify_init()
520 guest_pm_notify_deinit(struct vmctx *ctx) in guest_pm_notify_deinit() argument
523 ioc_deinit(ctx); in guest_pm_notify_deinit()
525 power_button_deinit(ctx); in guest_pm_notify_deinit()
528 pm_by_vuart_deinit(ctx); in guest_pm_notify_deinit()
534 vm_init_vdevs(struct vmctx *ctx) in vm_init_vdevs() argument
540 pci_irq_init(ctx); in vm_init_vdevs()
541 atkbdc_init(ctx); in vm_init_vdevs()
542 ioapic_init(ctx); in vm_init_vdevs()
544 ret = guest_pm_notify_init(ctx); in vm_init_vdevs()
548 ret = vrtc_init(ctx); in vm_init_vdevs()
552 ret = vpit_init(ctx); in vm_init_vdevs()
556 ret = vhpet_init(ctx); in vm_init_vdevs()
560 sci_init(ctx); in vm_init_vdevs()
565 if ((ssram) && (init_vssram(ctx) < 0)) in vm_init_vdevs()
568 ret = monitor_init(ctx); in vm_init_vdevs()
572 if ((cmd_monitor) && init_cmd_monitor(ctx) < 0) in vm_init_vdevs()
575 ret = init_mmio_devs(ctx); in vm_init_vdevs()
579 ret = init_pci(ctx); in vm_init_vdevs()
584 init_vtpm2(ctx); in vm_init_vdevs()
589 deinit_mmio_devs(ctx); in vm_init_vdevs()
594 deinit_vssram(ctx); in vm_init_vdevs()
599 vhpet_deinit(ctx); in vm_init_vdevs()
601 vpit_deinit(ctx); in vm_init_vdevs()
603 vrtc_deinit(ctx); in vm_init_vdevs()
605 guest_pm_notify_deinit(ctx); in vm_init_vdevs()
607 atkbdc_deinit(ctx); in vm_init_vdevs()
608 pci_irq_deinit(ctx); in vm_init_vdevs()
614 vm_deinit_vdevs(struct vmctx *ctx) in vm_deinit_vdevs() argument
620 acrn_writeback_ovmf_nvstorage(ctx); in vm_deinit_vdevs()
622 deinit_pci(ctx); in vm_deinit_vdevs()
623 deinit_mmio_devs(ctx); in vm_deinit_vdevs()
630 deinit_vssram(ctx); in vm_deinit_vdevs()
632 vhpet_deinit(ctx); in vm_deinit_vdevs()
633 vpit_deinit(ctx); in vm_deinit_vdevs()
634 vrtc_deinit(ctx); in vm_deinit_vdevs()
635 guest_pm_notify_deinit(ctx); in vm_deinit_vdevs()
636 atkbdc_deinit(ctx); in vm_deinit_vdevs()
637 pci_irq_deinit(ctx); in vm_deinit_vdevs()
639 deinit_vtpm2(ctx); in vm_deinit_vdevs()
643 vm_reset_vdevs(struct vmctx *ctx) in vm_reset_vdevs() argument
649 acrn_writeback_ovmf_nvstorage(ctx); in vm_reset_vdevs()
662 atkbdc_deinit(ctx); in vm_reset_vdevs()
668 deinit_vssram(ctx); in vm_reset_vdevs()
670 vhpet_deinit(ctx); in vm_reset_vdevs()
671 vpit_deinit(ctx); in vm_reset_vdevs()
672 vrtc_deinit(ctx); in vm_reset_vdevs()
674 deinit_pci(ctx); in vm_reset_vdevs()
675 pci_irq_deinit(ctx); in vm_reset_vdevs()
680 pci_irq_init(ctx); in vm_reset_vdevs()
681 atkbdc_init(ctx); in vm_reset_vdevs()
682 vrtc_init(ctx); in vm_reset_vdevs()
683 vpit_init(ctx); in vm_reset_vdevs()
684 vhpet_init(ctx); in vm_reset_vdevs()
690 init_vssram(ctx); in vm_reset_vdevs()
692 ioapic_init(ctx); in vm_reset_vdevs()
693 init_pci(ctx); in vm_reset_vdevs()
695 acpi_build(ctx, guest_ncpus); in vm_reset_vdevs()
699 vm_system_reset(struct vmctx *ctx) in vm_system_reset() argument
712 vm_pause(ctx); in vm_system_reset()
729 vm_clear_ioreq(ctx); in vm_system_reset()
731 vm_reset_vdevs(ctx); in vm_system_reset()
732 vm_reset(ctx); in vm_system_reset()
737 acrn_sw_load(ctx); in vm_system_reset()
738 vm_set_vcpu_regs(ctx, &ctx->bsp_regs); in vm_system_reset()
739 vm_run(ctx); in vm_system_reset()
743 vm_suspend_resume(struct vmctx *ctx) in vm_suspend_resume() argument
756 vm_pause(ctx); in vm_suspend_resume()
758 vrtc_suspend(ctx); in vm_suspend_resume()
760 vm_clear_ioreq(ctx); in vm_suspend_resume()
761 vm_stop_watchdog(ctx); in vm_suspend_resume()
762 wait_for_resume(ctx); in vm_suspend_resume()
764 pm_backto_wakeup(ctx); in vm_suspend_resume()
765 vm_reset_watchdog(ctx); in vm_suspend_resume()
766 vm_reset(ctx); in vm_suspend_resume()
768 bsp_regs = ctx->bsp_regs; in vm_suspend_resume()
773 guest_wakeup_vec32 = paddr_guest2host(ctx, in vm_suspend_resume()
793 vm_set_vcpu_regs(ctx, &bsp_regs); in vm_suspend_resume()
794 vm_run(ctx); in vm_suspend_resume()
798 vm_loop(struct vmctx *ctx) in vm_loop() argument
802 ctx->ioreq_client = vm_create_ioreq_client(ctx); in vm_loop()
803 if (ctx->ioreq_client < 0) { in vm_loop()
808 if (vm_run(ctx) != 0) { in vm_loop()
817 error = vm_attach_ioreq_client(ctx); in vm_loop()
825 handle_vmexit(ctx, io_req, vcpu_id); in vm_loop()
834 vm_system_reset(ctx); in vm_loop()
838 vm_suspend_resume(ctx); in vm_loop()
845 num_vcpus_allowed(struct vmctx *ctx) in num_vcpus_allowed() argument
936 vm_init_asyncio(struct vmctx *ctx, uint64_t base) in vm_init_asyncio() argument
949 return vm_setup_asyncio(ctx, base); in vm_init_asyncio()
957 struct vmctx *ctx; in main() local
1193 ctx = vm_create(vmname, (unsigned long)ioreq_buf, &guest_ncpus); in main()
1194 if (!ctx) { in main()
1204 max_vcpus = num_vcpus_allowed(ctx); in main()
1212 error = vm_init_asyncio(ctx, (uint64_t)asyncio_page); in main()
1218 error = vm_setup_memory(ctx, memsize); in main()
1231 if (vm_init_vdevs(ctx) < 0) { in main()
1237 error = vm_event_init(ctx); in main()
1246 error = mptable_build(ctx, guest_ncpus); in main()
1252 error = acpi_build(ctx, guest_ncpus); in main()
1259 error = acrn_sw_load(ctx); in main()
1274 error = add_cpu(ctx, guest_ncpus); in main()
1281 _ctx = ctx; in main()
1288 vm_pause(ctx); in main()
1289 delete_cpu(ctx, BSP); in main()
1297 vm_deinit_vdevs(ctx); in main()
1300 vm_unsetup_memory(ctx); in main()
1301 vm_destroy(ctx); in main()
1311 vm_deinit_vdevs(ctx); in main()
1319 vm_unsetup_memory(ctx); in main()
1321 vm_pause(ctx); in main()
1322 vm_destroy(ctx); in main()