Hi all,
I have a couple questions about VM an VMM communication for CAMKES-ARM-VM. Please correct me if I’m wrong. I found when VMM load Linux device it installs a vgic (install_linux_devices() -> vm_install_vgic()) But how exactly a interrupt caused by VM is distributed from GIC to VGIC (kernel to VMM)? I saw that we can register a virq to the VGIC (vm_virq_new()), but I’m not sure when a interrupt is generated how it is passed to the VGIC.
Second, I found that we can install virtual devices to VM (e.g. for Vchan communication). Seems like when Linux tries to access the mapped virtual device, a page_fault will generated. Does it create a interrupt? How does it processed by VMM code exactly? I found post_main() in the generated camkes.c file has 3 threads, case 3 runs the control thread -> run(), case 5 runs vevent interface vevent__run(), and case 7 runs fault hander. Does it triggers vevent? I’m not sure the control flow.
Thank you in advance!