This series is based on linux-next, tag: next-20230412. GenieZone is MediaTek proprietary hypervisor solution, and it is running in EL2 stand alone as a type-I hypervisor. It is a pure EL2 implementation which implies it does not rely any specific host VM, and this behavior improves GenieZone's security as it limits its interface. To enable guest VMs running, a driver (gzvm) is provided for VMM (virtual machine monitor) to operate. Currently, the gzvm driver supports only crosvm. This series supports ioctl interfaces for userspace VMM(eg., crosvm) to operate guest VMs lifecycle, irqchip for virtual interrupt handling, asynchronous notifcation mechanism for VMM. Yi-De Wu (6): docs: geniezone: Introduce GenieZone hypervisor dt-bindings: hypervisor: Add binding for MediaTek GenieZone hypervisor soc: mediatek: virt: geniezone: Introduce GenieZone hypervisor support soc: mediatek: virt: geniezone: Introduce irqchip for virtual interrupt injection soc: mediatek: virt: geniezone: Add ioeventfd support soc: mediatek: virt: geniezone: Add irqfd support .../bindings/hypervisor/mediatek,gzvm.yaml | 30 + Documentation/virt/geniezone/introduction.rst | 34 + arch/arm64/include/uapi/asm/gzvm_arch.h | 79 ++ drivers/soc/mediatek/Kconfig | 2 + drivers/soc/mediatek/Makefile | 1 + drivers/soc/mediatek/virt/geniezone/Kconfig | 17 + drivers/soc/mediatek/virt/geniezone/Makefile | 5 + drivers/soc/mediatek/virt/geniezone/gzvm.h | 126 +++ .../mediatek/virt/geniezone/gzvm_eventfd.c | 749 ++++++++++++++++++ .../soc/mediatek/virt/geniezone/gzvm_hyp.h | 72 ++ .../mediatek/virt/geniezone/gzvm_irqchip.c | 107 +++ .../soc/mediatek/virt/geniezone/gzvm_main.c | 233 ++++++ .../soc/mediatek/virt/geniezone/gzvm_vcpu.c | 296 +++++++ drivers/soc/mediatek/virt/geniezone/gzvm_vm.c | 551 +++++++++++++ include/uapi/linux/gzvm_common.h | 291 +++++++ 15 files changed, 2593 insertions(+) create mode 100644 Documentation/devicetree/bindings/hypervisor/mediatek,gzvm.yaml create mode 100644 Documentation/virt/geniezone/introduction.rst create mode 100644 arch/arm64/include/uapi/asm/gzvm_arch.h create mode 100644 drivers/soc/mediatek/virt/geniezone/Kconfig create mode 100644 drivers/soc/mediatek/virt/geniezone/Makefile create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm.h create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_eventfd.c create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_hyp.h create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_irqchip.c create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_main.c create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_vcpu.c create mode 100644 drivers/soc/mediatek/virt/geniezone/gzvm_vm.c create mode 100644 include/uapi/linux/gzvm_common.h -- 2.18.0