Thread (80 messages) 80 messages, 6 authors, 2023-07-20

Re: [PATCH v13 20/24] virt: gunyah: Add proxy-scheduled vCPUs

From: Alex Elder <hidden>
Date: 2023-06-05 19:51:27
Also in: linux-arm-kernel, linux-arm-msm, linux-doc, lkml

On 5/9/23 3:47 PM, Elliot Berman wrote:
Gunyah allows host virtual machines to schedule guest virtual machines
and handle their MMIO accesses. vCPUs are presented to the host as a
Gunyah resource and represented to userspace as a Gunyah VM function.

Creating the vcpu VM function will create a file descriptor that:
  - can run an ioctl: GH_VCPU_RUN to schedule the guest vCPU until the
    next interrupt occurs on the host or when the guest vCPU can no
    longer be run.
  - can be mmap'd to share a gh_vcpu_run structure which can look up the
    reason why GH_VCPU_RUN returned and provide return values for MMIO
    access.

Co-developed-by: Prakruthi Deepak Heragu <redacted>
Signed-off-by: Prakruthi Deepak Heragu <redacted>
Signed-off-by: Elliot Berman <redacted>
To be honest I have spent less time immersed in the VCPU stuff
than I would like.

I have looked through this patch today, though, and with the
exception of a typo I point out, it looks generally good to me.

For now I'm going to give you this; I might take a closer look
at a future date when you have updated your code.

Acked-by: Alex Elder <redacted>
quoted hunk ↗ jump to hunk
---
  Documentation/virt/gunyah/vm-manager.rst |  46 ++-
  arch/arm64/gunyah/gunyah_hypercall.c     |  28 ++
  drivers/virt/gunyah/Kconfig              |  11 +
  drivers/virt/gunyah/Makefile             |   2 +
  drivers/virt/gunyah/gunyah_vcpu.c        | 468 +++++++++++++++++++++++
  drivers/virt/gunyah/vm_mgr.c             |   4 +
  drivers/virt/gunyah/vm_mgr.h             |   1 +
  include/linux/gunyah.h                   |  24 ++
  include/uapi/linux/gunyah.h              | 128 +++++++
  9 files changed, 710 insertions(+), 2 deletions(-)
  create mode 100644 drivers/virt/gunyah/gunyah_vcpu.c
diff --git a/Documentation/virt/gunyah/vm-manager.rst b/Documentation/virt/gunyah/vm-manager.rst
index 3b51bab9d793..6789d13fed14 100644
--- a/Documentation/virt/gunyah/vm-manager.rst
+++ b/Documentation/virt/gunyah/vm-manager.rst
@@ -5,8 +5,7 @@ Virtual Machine Manager
  =======================
  
  The Gunyah Virtual Machine Manager is a Linux driver to support launching
-virtual machines using Gunyah. It presently supports launching non-proxy
-scheduled Linux-like virtual machines.
+virtual machines using Gunyah.
  
  Except for some basic information about the location of initial binaries,
  most of the configuration about a Gunyah virtual machine is described in the
@@ -98,3 +97,46 @@ GH_VM_START
  ~~~~~~~~~~~
  
  This ioctl starts the VM.
+
+GH_VM_ADD_FUNCTION
+~~~~~~~~~~~~~~~~~~
+
+This ioctl registers a Gunyah VM function with the VM manager. The VM function
+is described with a &struct gh_fn_desc.type and some arguments for that type.
+Typically, the function is added before the VM starts, but the function doesn't
+"operate" until the VM starts with `GH_VM_START`_. For example, vCPU ioclts will
s/ioclts/ioctls/
+all return an error until the VM starts because the vCPUs don't exist until the
+VM is started. This allows the VMM to set up all the kernel functions needed for
+the VM *before* the VM starts.
+
+.. kernel-doc:: include/uapi/linux/gunyah.h
+   :identifiers: gh_fn_desc gh_fn_type
+
. . .
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help