Enable KVM to act as the interface to create and manage Qualcomm's Gunyah-based virtual machines [1]. [1] https://www.qualcomm.com/developer/blog/2024/08/learn-about-gunyah--qualcomm-s-open-source--lightweight-hypervis Signed-off-by: Karim Manaouil <karim.manaouil@xxxxxxxxxx> --- arch/arm64/kvm/gunyah.c | 12 ++++++++++++ drivers/virt/gunyah/gunyah.c | 3 +++ include/linux/gunyah.h | 1 + 3 files changed, 16 insertions(+) diff --git a/arch/arm64/kvm/gunyah.c b/arch/arm64/kvm/gunyah.c index 23b9128bf5b1..91f0260ef3f5 100644 --- a/arch/arm64/kvm/gunyah.c +++ b/arch/arm64/kvm/gunyah.c @@ -2071,3 +2071,15 @@ void kvm_arch_free_vm(struct kvm *kvm) kfree(ghvm); } + +int kvm_gunyah_init(void) +{ + int err; + + err = kvm_init(sizeof(struct kvm_vcpu), 0, THIS_MODULE); + if (err) + return err; + + return 0; +} +EXPORT_SYMBOL_GPL(kvm_gunyah_init); diff --git a/drivers/virt/gunyah/gunyah.c b/drivers/virt/gunyah/gunyah.c index 3e795e3ba881..629c812fbac0 100644 --- a/drivers/virt/gunyah/gunyah.c +++ b/drivers/virt/gunyah/gunyah.c @@ -28,6 +28,9 @@ static int gunyah_probe(struct platform_device *pdev) return -ENODEV; } + if (!kvm_gunyah_init()) + pr_info("KVM for Gunyah is available!\n"); + return devm_of_platform_populate(&pdev->dev); } diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h index 26fdfa3174da..7d43449c4547 100644 --- a/include/linux/gunyah.h +++ b/include/linux/gunyah.h @@ -421,4 +421,5 @@ enum gunyah_error gunyah_hypercall_vcpu_run(u64 capid, unsigned long *resume_data, struct gunyah_hypercall_vcpu_run_resp *resp); +int kvm_gunyah_init(void); #endif -- 2.39.5