Message ID | 20231011165234.1323725-1-quic_svaddagi@quicinc.com (mailing list archive) |
---|---|
Headers | show |
Series | Gunyah hypervisor support | expand |
On 10/11/23 18:52, Srivatsa Vaddagiri wrote: > Gunyah is an open-source Type-1 hypervisor, that is currently supported on ARM64 > architecture. Source code for it can be obtained from: > > https://github.com/quic/gunyah-hypervisor. > > This patch series adds support for Gunyah hypervisor via a new > accelerator option, 'gunyah'. This patch series is based on the Linux kernel's > Gunyah driver, which is being actively developed and not yet merged upstream > [1]. > > This patch series is thus *NOT YET READY* for merge. Early version of this patch > is being published to solicit comments from Qemu community. > > This patch has been tested with the open-source version of Gunyah hypervisor. > Instructions to build hypervisor and test this patch are provided in this > patch series. > > Limitations: > > 1) SMP is not yet supported. This restriction will be removed in the next version > of this patch series. > > 2) virtio-pci is not yet supported. hw/virtio/virtio-pci.c seems to support only > KVM and would need changes to support other hypervisors. If there is any ongoing > work in this regard, would like to build upon it and add support for Gunyah > hypervisor. virtio-pci does support other hypervisors; what is not yet supported is cross-hypervisor support for IRQFD[1]. This is more of a QEMU issue than something specific to virtio-pci. The way to fix it is to add wrappers for kvm_irqchip_add_irqfd_notifier_gsi and kvm_irqchip_remove_irqfd_notifier_gsi to AccelOpsClass, and move the stub implementations in accel/stubs/kvm-stub.c to the abstract superclass. Then you can switch the users of these KVM functions to the AccelOpsClass wrapper. By the way I've just posted a series to remove support for really really old kernels, and this should remove more KVM-specific code from device models. Paolo [1] a Linux eventfd (or QEMU EventNotifier) that triggers a guest interrupt when it becomes readable. QEMU writes to the eventfd and the kernel responds by injecting the interrupt