From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Elliot Berman <quic_eberman@quicinc.com>,
Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Murali Nalajala <quic_mnalajal@quicinc.com>,
Trilok Soni <quic_tsoni@quicinc.com>,
Srivatsa Vaddagiri <quic_svaddagi@quicinc.com>,
Carl van Schaik <quic_cvanscha@quicinc.com>,
Andy Gross <agross@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Marc Zyngier <maz@kernel.org>, Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Jonathan Corbet <corbet@lwn.net>, Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v2 00/11] Drivers for gunyah hypervisor
Date: Tue, 2 Aug 2022 12:24:21 +0300 [thread overview]
Message-ID: <50230652-c1ae-4ce2-907c-9bdc6b827f8e@linaro.org> (raw)
In-Reply-To: <20220801211240.597859-1-quic_eberman@quicinc.com>
On 02/08/2022 00:12, Elliot Berman wrote:
> Gunyah is a Type-1 hypervisor independent of any
> high-level OS kernel, and runs in a higher CPU privilege level. It does
> not depend on any lower-privileged OS kernel/code for its core
> functionality. This increases its security and can support a much smaller
> trusted computing base than a Type-2 hypervisor.
>
> Gunyah is an open source hypervisor. The source repo is available at
> https://github.com/quic/gunyah-hypervisor.
>
> The diagram below shows the architecture.
>
> ::
>
> Primary VM Secondary VMs
Is there any significant difference between Primary VM and other VMs?
> +-----+ +-----+ | +-----+ +-----+ +-----+
> | | | | | | | | | | |
> EL0 | APP | | APP | | | APP | | APP | | APP |
> | | | | | | | | | | |
> +-----+ +-----+ | +-----+ +-----+ +-----+
> ---------------------|-------------------------
> +--------------+ | +----------------------+
> | | | | |
> EL1 | Linux Kernel | | |Linux kernel/Other OS | ...
> | | | | |
> +--------------+ | +----------------------+
> --------hvc/smc------|------hvc/smc------------
> +----------------------------------------+
> | |
> EL2 | Gunyah Hypervisor |
> | |
> +----------------------------------------+
>
> Gunyah provides these following features.
>
> - Threads and Scheduling: The scheduler schedules virtual CPUs (VCPUs) on
> physical CPUs and enables time-sharing of the CPUs.
Is the scheduling provided behind the back of the OS or does it require
cooperation?
> - Memory Management: Gunyah tracks memory ownership and use of all memory
> under its control. Memory partitioning between VMs is a fundamental
> security feature.
> - Interrupt Virtualization: All interrupts are handled in the hypervisor
> and routed to the assigned VM.
> - Inter-VM Communication: There are several different mechanisms provided
> for communicating between VMs.
> - Device Virtualization: Para-virtualization of devices is supported using
> inter-VM communication. Low level system features and devices such as
> interrupt controllers are supported with emulation where required.
After reviewing some of the patches from the series, I'd like to
understand, what does it provide (and can be provided) to the VMs.
I'd like to understand it first, before going deep into the API issues.
1) The hypervisor provides message queues, doorbells and vCPUs
Each of resources has it's own capability ID.
Why is it called capability? Is it just a misname for the resource ID,
or has it any other meaning behind? If it is a capability, who is
capable of what?
At this moment you create allocate two message queues with fixed IDs for
communication with resource manager. Then you use these message queues
to organize a console and a pack of tty devices.
What other kinds of services does RM provide to the guest OS?
Do you expect any other drivers to be calling into the RM?
What is the usecase for the doorbells? Who provides doorbells?
You mentioned that the RM generates DT overlays. What kind of
information goes to the overlay?
My current impression of this series is that you have misused the
concept of devices. Rather than exporting MSGQs and BELLs as
gunyah_devices and then using them from other drivers, I'd suggest
turning them into resources provided by the gunyah driver core. I
mentioned using the mailbox API for this. Another subsystem that might
ring the bell for you is the remoteproc, especially the rproc_subdev.
I might be completely wrong about this, but if my in-mind picture of
Gunyah is correct, I'd have implemented the gunyah core subsytem as
mailbox provider, RM as a separate platform driver consuming these
mailboxes and in turn being a remoteproc driver, and consoles as
remoteproc subdevices.
I can assume that at some point you would like to use Gunyah to boot
secondary VMs from the primary VM by calling into RM, etc.
Most probably at this moment a VM would be allocated other bells,
message queues, etc. If this assumption is correct, them the VM can
become a separate device (remoteproc?) in the Linux device tree.
I might be wrong in any of the assumptions above. Please feel free to
correct me. We can then think about a better API for your usecase.
--
With best wishes
Dmitry
next prev parent reply other threads:[~2022-08-02 9:24 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-01 21:12 [PATCH v2 00/11] Drivers for gunyah hypervisor Elliot Berman
2022-08-01 21:12 ` [PATCH v2 01/11] docs: gunyah: Introduce Gunyah Hypervisor Elliot Berman
2022-08-01 21:29 ` Jeffrey Hugo
2022-08-05 3:18 ` Bagas Sanjaya
2022-08-05 15:48 ` Elliot Berman
2022-08-06 15:31 ` kernel test robot
2022-08-01 21:12 ` [PATCH v2 02/11] dt-bindings: Add binding for gunyah hypervisor Elliot Berman
2022-08-02 7:28 ` Dmitry Baryshkov
2022-08-02 10:54 ` Krzysztof Kozlowski
2022-08-01 21:12 ` [PATCH v2 03/11] arm64: gunyah: Add Gunyah hypercalls ABI Elliot Berman
2022-08-02 13:34 ` Dmitry Baryshkov
2022-08-03 21:15 ` Elliot Berman
2022-08-04 7:04 ` Dmitry Baryshkov
2022-08-01 21:12 ` [PATCH v2 04/11] gunyah: Common types and error codes for Gunyah hypercalls Elliot Berman
2022-08-02 7:33 ` Dmitry Baryshkov
2022-08-03 21:16 ` Elliot Berman
2022-08-02 7:51 ` Dmitry Baryshkov
2022-08-03 21:16 ` Elliot Berman
2022-08-01 21:12 ` [PATCH v2 05/11] virt: gunyah: Add sysfs nodes Elliot Berman
2022-08-02 7:42 ` Dmitry Baryshkov
2022-08-01 21:12 ` [PATCH v2 06/11] virt: gunyah: Add capabilities bus and devices Elliot Berman
2022-08-02 8:20 ` Dmitry Baryshkov
2022-08-01 21:12 ` [PATCH v2 07/11] gunyah: msgq: Add Gunyah message queues Elliot Berman
2022-08-02 8:14 ` Dmitry Baryshkov
2022-08-08 22:22 ` Elliot Berman
[not found] ` <87zggdven5.wl-maz@kernel.org>
2022-08-09 16:50 ` Elliot Berman
2022-08-23 7:57 ` Dmitry Baryshkov
2022-08-01 21:12 ` [PATCH v2 08/11] gunyah: rsc_mgr: Add resource manager RPC core Elliot Berman
2022-08-01 21:12 ` [PATCH v2 09/11] gunyah: rsc_mgr: Add auxiliary devices for console Elliot Berman
2022-08-02 8:38 ` Dmitry Baryshkov
2022-08-03 21:19 ` Elliot Berman
2022-08-01 21:12 ` [PATCH v2 10/11] gunyah: rsc_mgr: Add RPC for console services Elliot Berman
2022-08-01 21:12 ` [PATCH v2 11/11] gunyah: Add tty console driver for RM Console Serivces Elliot Berman
2022-08-02 8:31 ` Dmitry Baryshkov
2022-08-03 21:15 ` Elliot Berman
2022-08-01 21:27 ` [PATCH v2 00/11] Drivers for gunyah hypervisor Jeffrey Hugo
2022-08-01 21:31 ` Elliot Berman
2022-08-02 9:24 ` Dmitry Baryshkov [this message]
2022-08-08 23:38 ` Elliot Berman
2022-08-09 13:13 ` Robin Murphy
2022-08-10 0:07 ` Elliot Berman
2022-08-10 4:12 ` Jassi Brar
2022-08-18 18:10 ` Elliot Berman
2022-08-23 8:01 ` Dmitry Baryshkov
2022-08-04 8:26 ` Bagas Sanjaya
2022-08-04 21:48 ` Elliot Berman
2022-08-05 2:15 ` Bagas Sanjaya
2022-08-05 7:45 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50230652-c1ae-4ce2-907c-9bdc6b827f8e@linaro.org \
--to=dmitry.baryshkov@linaro.org \
--cc=agross@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=maz@kernel.org \
--cc=quic_cvanscha@quicinc.com \
--cc=quic_eberman@quicinc.com \
--cc=quic_mnalajal@quicinc.com \
--cc=quic_svaddagi@quicinc.com \
--cc=quic_tsoni@quicinc.com \
--cc=robh+dt@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).