[PATCH v4 0/9] GenieZone hypervisor drivers

Yi-De Wu posted 9 patches 1 year, 5 months ago
There is a newer version of this series
Documentation/virt/geniezone/introduction.rst |  79 +++
MAINTAINERS                                   |  12 +
arch/arm64/Kbuild                             |   1 +
arch/arm64/geniezone/Makefile                 |   9 +
arch/arm64/geniezone/gzvm_arch_common.h       | 101 ++++
arch/arm64/geniezone/vcpu.c                   | 124 ++++
arch/arm64/geniezone/vgic.c                   |  89 +++
arch/arm64/geniezone/vm.c                     | 218 +++++++
arch/arm64/include/uapi/asm/gzvm_arch.h       |  53 ++
drivers/virt/Kconfig                          |   2 +
drivers/virt/geniezone/Kconfig                |  16 +
drivers/virt/geniezone/Makefile               |  11 +
drivers/virt/geniezone/gzvm_common.h          |  12 +
drivers/virt/geniezone/gzvm_ioeventfd.c       | 263 +++++++++
drivers/virt/geniezone/gzvm_irqchip.c         |  13 +
drivers/virt/geniezone/gzvm_irqfd.c           | 537 ++++++++++++++++++
drivers/virt/geniezone/gzvm_main.c            | 142 +++++
drivers/virt/geniezone/gzvm_vcpu.c            | 294 ++++++++++
drivers/virt/geniezone/gzvm_vm.c              | 526 +++++++++++++++++
include/linux/gzvm_drv.h                      | 168 ++++++
include/uapi/asm-generic/Kbuild               |   1 +
include/uapi/asm-generic/gzvm_arch.h          |  10 +
include/uapi/linux/gzvm.h                     | 280 +++++++++
23 files changed, 2961 insertions(+)
create mode 100644 Documentation/virt/geniezone/introduction.rst
create mode 100644 arch/arm64/geniezone/Makefile
create mode 100644 arch/arm64/geniezone/gzvm_arch_common.h
create mode 100644 arch/arm64/geniezone/vcpu.c
create mode 100644 arch/arm64/geniezone/vgic.c
create mode 100644 arch/arm64/geniezone/vm.c
create mode 100644 arch/arm64/include/uapi/asm/gzvm_arch.h
create mode 100644 drivers/virt/geniezone/Kconfig
create mode 100644 drivers/virt/geniezone/Makefile
create mode 100644 drivers/virt/geniezone/gzvm_common.h
create mode 100644 drivers/virt/geniezone/gzvm_ioeventfd.c
create mode 100644 drivers/virt/geniezone/gzvm_irqchip.c
create mode 100644 drivers/virt/geniezone/gzvm_irqfd.c
create mode 100644 drivers/virt/geniezone/gzvm_main.c
create mode 100644 drivers/virt/geniezone/gzvm_vcpu.c
create mode 100644 drivers/virt/geniezone/gzvm_vm.c
create mode 100644 include/linux/gzvm_drv.h
create mode 100644 include/uapi/asm-generic/gzvm_arch.h
create mode 100644 include/uapi/linux/gzvm.h
[PATCH v4 0/9] GenieZone hypervisor drivers
Posted by Yi-De Wu 1 year, 5 months ago
This series is based on linux-next, tag: next-20230608.

GenieZone hypervisor(gzvm) is a type-1 hypervisor that supports various virtual
machine types and provides security features such as TEE-like scenarios and
secure boot. It can create guest VMs for security use cases and has
virtualization capabilities for both platform and interrupt. Although the
hypervisor can be booted independently, it requires the assistance of GenieZone
hypervisor kernel driver(gzvm-ko) to leverage the ability of Linux kernel for
vCPU scheduling, memory management, inter-VM communication and virtio backend
support.

Changes in v4:
- Add macro to set VM as protected without triggering pvmfw in AVF.
- Add support to pass dtb config to hypervisor.
- Add support for virtual timer.
- Add UAPI to pass memory region metadata to hypervisor.
- Define our own macros for ARM's interrupt number
- Elaborate more on GenieZone hyperivsor in documentation
- Fix coding style.
- Implement our own module for coverting ipa to pa
- Modify the way of initializing device from dt to a more discoverable way
- Move refactoring changes into indepedent patches.

Changes in v3:
https://lore.kernel.org/all/20230512080405.12043-1-yi-de.wu@mediatek.com/
- Refactor: separate arch/arm64/geniezone/gzvm_arch.c into vm.c/vcpu.c/vgic.c
- Remove redundant functions
- Fix reviewer's comments

Changes in v2:
https://lore.kernel.org/all/20230428103622.18291-1-yi-de.wu@mediatek.com/
- Refactor: move to drivers/virt/geniezone
- Refactor: decouple arch-dependent and arch-independent
- Check pending signal before entering guest context
- Fix reviewer's comments

Initial Commit in v1:
https://lore.kernel.org/all/20230413090735.4182-1-yi-de.wu@mediatek.com/

Yi-De Wu (9):
  docs: geniezone: Introduce GenieZone hypervisor
  virt: geniezone: Add GenieZone hypervisor support
  virt: geniezone: Add vcpu support
  virt: geniezone: Add irqchip support for virtual interrupt injection
  virt: geniezone: Add irqfd support
  virt: geniezone: Add ioeventfd support
  virt: geniezone: Add memory region support
  virt: geniezone: Add dtb config support
  virt: geniezone: Add virtual timer support

 Documentation/virt/geniezone/introduction.rst |  79 +++
 MAINTAINERS                                   |  12 +
 arch/arm64/Kbuild                             |   1 +
 arch/arm64/geniezone/Makefile                 |   9 +
 arch/arm64/geniezone/gzvm_arch_common.h       | 101 ++++
 arch/arm64/geniezone/vcpu.c                   | 124 ++++
 arch/arm64/geniezone/vgic.c                   |  89 +++
 arch/arm64/geniezone/vm.c                     | 218 +++++++
 arch/arm64/include/uapi/asm/gzvm_arch.h       |  53 ++
 drivers/virt/Kconfig                          |   2 +
 drivers/virt/geniezone/Kconfig                |  16 +
 drivers/virt/geniezone/Makefile               |  11 +
 drivers/virt/geniezone/gzvm_common.h          |  12 +
 drivers/virt/geniezone/gzvm_ioeventfd.c       | 263 +++++++++
 drivers/virt/geniezone/gzvm_irqchip.c         |  13 +
 drivers/virt/geniezone/gzvm_irqfd.c           | 537 ++++++++++++++++++
 drivers/virt/geniezone/gzvm_main.c            | 142 +++++
 drivers/virt/geniezone/gzvm_vcpu.c            | 294 ++++++++++
 drivers/virt/geniezone/gzvm_vm.c              | 526 +++++++++++++++++
 include/linux/gzvm_drv.h                      | 168 ++++++
 include/uapi/asm-generic/Kbuild               |   1 +
 include/uapi/asm-generic/gzvm_arch.h          |  10 +
 include/uapi/linux/gzvm.h                     | 280 +++++++++
 23 files changed, 2961 insertions(+)
 create mode 100644 Documentation/virt/geniezone/introduction.rst
 create mode 100644 arch/arm64/geniezone/Makefile
 create mode 100644 arch/arm64/geniezone/gzvm_arch_common.h
 create mode 100644 arch/arm64/geniezone/vcpu.c
 create mode 100644 arch/arm64/geniezone/vgic.c
 create mode 100644 arch/arm64/geniezone/vm.c
 create mode 100644 arch/arm64/include/uapi/asm/gzvm_arch.h
 create mode 100644 drivers/virt/geniezone/Kconfig
 create mode 100644 drivers/virt/geniezone/Makefile
 create mode 100644 drivers/virt/geniezone/gzvm_common.h
 create mode 100644 drivers/virt/geniezone/gzvm_ioeventfd.c
 create mode 100644 drivers/virt/geniezone/gzvm_irqchip.c
 create mode 100644 drivers/virt/geniezone/gzvm_irqfd.c
 create mode 100644 drivers/virt/geniezone/gzvm_main.c
 create mode 100644 drivers/virt/geniezone/gzvm_vcpu.c
 create mode 100644 drivers/virt/geniezone/gzvm_vm.c
 create mode 100644 include/linux/gzvm_drv.h
 create mode 100644 include/uapi/asm-generic/gzvm_arch.h
 create mode 100644 include/uapi/linux/gzvm.h

-- 
2.18.0