+CC openxt, Jason, Marek

On Fri, Jul 7, 2023 at 2:06 PM Christopher Clark <
christopher.w.cl...@gmail.com> wrote:

> +CC members of the Hyperlaunch Working Group + participants on earlier
> Hyperlaunch threads
>
> On Thu, Jul 6, 2023 at 2:39 PM Stefano Stabellini <
> stefano.stabell...@amd.com> wrote:
>
>> On Thu, 6 Jul 2023, George Dunlap wrote:
>> > On Wed, Jul 5, 2023 at 11:14 PM Stefano Stabellini <
>> stefano.stabell...@amd.com> wrote:
>> >       On Wed, 5 Jul 2023, George Dunlap wrote:
>> >       > On Mon, Jul 3, 2023 at 9:55 PM P S <pairsp...@gmail.com> wrote:
>> >       >       > On Jul 3, 2023, at 15:45, Luca Fancellu <
>> luca.fance...@arm.com> wrote:
>> >       >       >
>> >       >       >> On 3 Jul 2023, at 18:48, Stefano Stabellini <
>> sstabell...@kernel.org> wrote:
>> >       >       >>
>> >       >       >>> On Mon, 3 Jul 2023, Daniel P. Smith wrote:
>> >       >       >>> On 7/1/23 11:13, Luca Fancellu wrote:
>> >       >       >>>>> On 1 Jul 2023, at 08:53, Andrew Cooper <
>> andrew.coop...@citrix.com> wrote:
>> >       >       >>>>>
>> >       >       >>>>> On 30/06/2023 10:12 am, Luca Fancellu wrote:
>> >       >       >>>>>> The "dom0less" feature was intended to be the
>> feature where a domU
>> >       >       >>>>>> domain could be launched without the control
>> domain (Dom0)
>> >       >       >>>>>> intervention, however the name seems to suggest
>> that Dom0 cannot
>> >       >       >>>>>> be part of the configuration, while instead it's a
>> possible use case.
>> >       >       >>>>>>
>> >       >       >>>>>> To avoid that, rename the "dom0less" configuration
>> with the name
>> >       >       >>>>>> "hyperlaunch", that is less misleading.
>> >       >       >>>>>>
>> >       >       >>>>>> Signed-off-by: Luca Fancellu <
>> luca.fance...@arm.com>
>> >       >       >>>>>> ---
>> >       >       >>>>>> This is an RFC to get the feeling of the community
>> about the name
>> >       >       >>>>>> change, for now it's everything in one patch just
>> to see how it
>> >       >       >>>>>> will look like, if there is interest on proceeding
>> into it, I can
>> >       >       >>>>>> split in more commit.
>> >       >       >>>>>
>> >       >       >>>>> Have you discussed this with Dan and Chris at all?
>> You haven't even
>> >       >       >>>>> CC'd them.
>> >       >       >>>>
>> >       >       >>>> No, this rename idea started from a chat during the
>> summit, anyway Julien
>> >       >       >>>> promptly add them to the CC, because I forgot.
>> >       >       >>>
>> >       >       >>> No worries and thank you for considering and taking
>> the time to do this RFC.
>> >       >       >>> It is greatly appreciated that there is a strong
>> willingness to have dom0less
>> >       >       >>> and hyperlaunch merged.
>> >       >       >>>
>> >       >       >>>>>
>> >       >       >>>>> While there is a lot of end-goal in common between
>> the dom0less and
>> >       >       >>>>> hyperlaunch, and that the name dom0less is deeply
>> misleading,
>> >       >       >>>>> hyperlaunch is specifically not this.
>> >       >       >>>>
>> >       >       >>>> Yes Hyperlaunch is more than this, however as I
>> said, with this RFC I would
>> >       >       >>>> like
>> >       >       >>>> to ear opinions, @Daniel @Christopher could it be a
>> proper name for the
>> >       >       >>>> dom0less
>> >       >       >>>> feature?
>> >       >       >>>
>> >       >       >>> As Andy has alluded, hyperlaunch is meant to provide
>> a flexible means to
>> >       >       >>> handle domain construction at boot to meet a wide
>> range of possible use cases.
>> >       >       >>> One of those use cases is dom0less, so yes,
>> ultimately what dom0less does
>> >       >       >>> today will be achievable under hyperlaunch. Our
>> intended approach to align the
>> >       >       >>> two implementations is one that is meant to be
>> minimally disruptive, since
>> >       >       >>> dom0less is considered a supported (SUPPORT.md)
>> capability. As mentioned, we
>> >       >       >>> are greatly appreciative to the openness to adopt the
>> name,
>> >       >       >>
>> >       >       >> Thanks Daniel!
>> >       >       >>
>> >       >       >>
>> >       >       >>> but a big concern
>> >       >       >>> I personally have is the confusion it could cause a
>> general user. A blanket
>> >       >       >>> rename would end up with two documents in the docs
>> tree that provide two
>> >       >       >>> different explanations of hyperlaunch and two
>> different device tree
>> >       >       >>> definitions. So I think a more measured approach
>> should be considered here.
>> >       >       >>>
>> >       >       >>>> If this patch makes things more difficult for the
>> Hyperlunch serie, I’m ok
>> >       >       >>>> to drop it,
>> >       >       >>>> my only aim was just to find a less misleading name
>> for the feature.
>> >       >       >>>
>> >       >       >>> What I would like to suggest as a good first step
>> would be an update to the
>> >       >       >>> dom0less document. Provide a note at the beginning
>> that points to the
>> >       >       >>> hyperlaunch design doc as a more general approach
>> that will eventually subsume
>> >       >       >>> dom0less. This would provide a gentler transition for
>> exist users of dom0less.
>> >       >       >>>
>> >       >       >>> If it is not too much, I would also ask, please have
>> a look at the design for
>> >       >       >>> boot modules in the series Christopher just posted.
>> The design pulls from the
>> >       >       >>> work done by dom0less and expanded upon it. I major
>> step into merging the two
>> >       >       >>> capabilities will be to have a common set of
>> structures. Once those are in
>> >       >       >>> place, we can move to a common device tree
>> representation, and at that point
>> >       >       >>> we would be fairly close, if not at the point of a
>> formal merger of between
>> >       >       >>> the two.
>> >       >       >>
>> >       >       >> At the moment we have a concrete problem with
>> explaining dom0less and
>> >       >       >> hyperlaunch to potential new users. Using two
>> different names for a
>> >       >       >> similar feature on arm and x86 causes confusion. It is
>> hurting Xen as a
>> >       >       >> solution. Personally I already had to switch to use
>> the word
>> >       >       >> "hyperlaunch" for everything in my users-facing
>> presentations.
>> >       >       >>
>> >       >       >> At the summit, we discussed that it would be a good
>> idea to use a single
>> >       >       >> name to refer to both features on arm and x86. Given
>> that "dom0less"
>> >       >       >> causes additional issues because it makes people think
>> that there is no
>> >       >       >> Dom0, the suggestion was to use "hyperlaunch" to refer
>> to both features.
>> >       >       >>
>> >       >       >> We don't need to 100% align the two implementations
>> and data structures.
>> >       >       >> This is not for engineers that are going to look at
>> the specifications
>> >       >       >> and improve them. This is for users/customers of Xen
>> that are trying to
>> >       >       >> understand what the hypervisor enables them to do. We
>> need to be able to
>> >       >       >> show users architecture slides with the same name and
>> explanation on
>> >       >       >> both ARM and x86.
>> >       >       >>
>> >       >       >> I am sure that Daniel and Christopher remember, but
>> for the others on
>> >       >       >> this email thread, the name "hyperlaunch" was born
>> exactly to be that:
>> >       >       >> the one name to cover both features on ARM and x86
>> even if they have a
>> >       >       >> different implementation. Appended an old email for
>> reference.
>> >       >       >>
>> >       >       >> Also I agree with Daniel that we need to be careful
>> about the two docs
>> >       >       >> under docs/. I think he is right we need to add a
>> paragraph explaining
>> >       >       >> the history and a pointer to the other document.
>> Something like:
>> >       >       >>
>> >       >       >> "Dom0less is the name that was used when initially
>> introducing the
>> >       >       >> feature on ARM. Then, the "dom0less" name was retired
>> in favor of
>> >       >       >> "hyperlaunch" to avoid confusion (a Dom0 might still
>> be present) and to
>> >       >       >> align with x86 (where a similar feature was called
>> hyperlaunch from the
>> >       >       >> start)."
>> >       >       >
>> >       >       > I’m fully ok to add a section like this pointing to the
>> Hyperlaunch design.
>> >       >
>> >       >       _If_ this text is added, please include links/references
>> to the Hyperlaunch wiki page and Hyperlaunch design docs.
>> >       >
>> >       >       > @Daniel and @Christopher would it be ok for you or the
>> changes in the serie
>> >       >       > are going to be problematic for your future work? In
>> the end it’s just a mechanical
>> >       >       > rename, so I guess we just need to agree on naming
>> conventions.
>> >       >
>> >       >       Please see the history of trademark litigation about the
>> use of symbolic names to reference similar-but-different
>> >       artifacts.
>> >       >       It is much easier to use the same name to refer to
>> entirely different objects. Historically, confusion arises when a
>> >       name is
>> >       >       used in similar contexts.
>> >       >
>> >       >       There is also versioning.  Could we refer to dom0less as
>> "Hyperlaunch Version -1"?
>> >       >
>> >       >       How about renaming dom0less to "Hyperlaunch Lite"?
>> >       >
>> >       >
>> >       > Perhaps it would be helpful if you could explain more clearly
>> your concerns.  I take it that you want a name which can be
>> >       used specifically
>> >       > to indicate the full "domB measured boot" functionality that
>> was Daniel and Christopher's original goal, and that you're
>> >       afraid that using
>> >       > plain "Hyperlaunch" for only the "start VMs from Xen on boot"
>> functionality will dilute that?
>> >       >
>> >       > The "start VMs from Xen on boot" functionality is the *only*
>> thing that a big chunk of the users of this functionality want;
>> >       referring to
>> >       > it as "Hyperlaunch Lite" or "Hyperlaunch -1" will undermine the
>> value of the functionality.
>> >       >
>> >       > What if we use "Measured Hyperlaunch", or "Hyperlaunch Measured
>> Boot" to refer to the full measured boot functionality?
>> >
>> >       I think this is the best way.
>> >
>> >
>> >       > Or, "Hyperlaunch DT" for "Booting VMs from Xen using Device
>> Tree" (without the involvement of a domB), "Hyperlaunch Boot
>> >       Domain /
>> >       > Hyperlaunch domB" for a more general "domB" functionality, and
>> "Hyperlaunch Measured Boot" for the full functionality
>> >       (assuming there's
>> >       > more to this than simply having a domB involved)?
>> >
>> >
>> >       We need an overarching name to cover the feature "start VMs from
>> Xen on
>> >       boot" on both ARM and x86. From my understanding and from the
>> original
>> >       emails on the subject, the name "hyperlaunch" was it.
>> >
>> >
>> > Sure; but think "guitar" vs "acoustic guitar" vs "electric guitar".
>> "Electric guitar" is new, "guitar" covers them both, but you sometimes
>> > need a way to specify "acoustic".  Right now target configurations
>> we're talking about include:
>> >
>> > 1. Booting all your domains directly from Xen using DT configurations
>> > 2. Booting a domB, which then executes some more complicated
>> programmatic configuration to launch VMs before disappearing
>> > 3. Doing full measured boot on the whole system using a domB.
>> >
>> > If "Hyperlaunch" means 1-3, we not only need a way to specify that
>> you're talking about 3, but *also* a way to specify that you're talking
>> > about 1.  In the vast majority of cases for the foreseeable future
>> are going to be 1.  Additionally, we want to make sure that
>> > "Hyperlaunch" *actually* turns out to mean 1-3, and not just 1.
>> >
>> > The thing I like about "Hyperlaunch DT" is that to me it sounds pretty
>> cool but also is very descriptive: I haven't talked to people
>> > building these systems, but it seems like saying, "The hypervisor
>> launches VMs based on a Device Tree passed to it at boot" will be
>> > immediately understood, and stick in people's minds.
>> >
>> > So maybe informally, or in "short usage" use "Hyperlaunch", but in
>> documentation or reference systems, when talking specifically about #1,
>> > try to use "Hyperlaunch DT", just to reinforce the idea that there's
>> more to Hyperlaunch that's coming down the road?
>>
>> "Hyperlaunch DT" would refer to both the x86 and ARM implementations
>> because they are both based on DT.
>>
>> I think it is better than "Hyperlaunch Lite" but I am not a fan of
>> either of these two names because "DT" and "Lite" get easily lost in
>> presentations and discussions. For the next few years many will talk
>> about HyperLaunch just to refer to what is Dom0less today. So if the
>> goal when we say "HyperLaunch" is to bring Measure Boot or XSM to
>> people's minds, I don't think this will work well.
>>
>> If we want to keep "Hyperlaunch" to mean 1-3 above, highlighting Measure
>> Boot or XSM, then I think we should consider using "Dom0less" for 1.
>> Yes, it is misleding, but at least it is unique, and a google search for
>> "dom0less" leads the user to the right results.
>>
>> If we do that, we should rename "Hyperlaunch" with "Dom0less" in
>> docs/designs/launch/hyperlaunch.rst. That's because "Hyperlaunch" is
>> defined as "the ability of a hypervisor to construct and start one or
>> more virtual machines at system launch in a specific way", which falls
>> under Dom0less in this discussion.
>>
>> In my opinion, it is better to have specific names for specific
>> features. So I would use "HyperLaunch" to mean "the ability of a
>> hypervisor to construct and start one or more virtual machines at system
>> launch in a specific way" as it is defined today.
>>
>> When we add Measure Boot or XSM or other security/safety features, I
>> would call them out specifically. For instance, "HyperLaunch with XSM".
>> It is more descriptive and highlights each feature.
>>
>> Note that at AMD we'll need HyperLaunch without an all-powerful Dom0,
>> probably with XSM. So I am not writing this because I don't think the
>> other features 2-3 are not important. They definitely are important.
>
>
>
> Thanks to all the participants in this thread for the interest in
> Hyperlaunch and
> the support for enabling common advanced boot functionality for Xen across
> architectures.
>
> I'm aiming to provide here a hopefully-fairly-objective overview of the
> issues
> being raised so that we can ensure that these are covered, and then I will
> also
> give my views afterwards.
>
> ------------------------------------------------------------
> = Naming and communication
>
> - Ensuring expectations are set correctly for the Hyperlaunch name
>     - communicating the value of it, differentiation for Xen
>     - avoiding sub-branding it for feature subsets, use cases, technologies
>
> - Retiring the term 'dom0less'
>
> - How to describe the "starting multiple VMs at host boot" functionality
>
>     - How to describe further Hyperlaunch functionality beyond this
>         - eg. isolation properties and relevance to critical systems
>         - eg. running without a classic dom0
>
>     - How Hyperlaunch relates to other boot functionalities and
> technologies,
>       including:
>         - architecture-specific aspects and architecture-neutral aspects
>         - Device Tree
>         - boot domain
>         - control domain, hardware domain, dom0
>         - domain builder
>         - system measurement
>         - XSM
>         - DRTM
>         - etc.
>
>
> = Migration
>
> - Providing a forward path for existing users of dom0less functionality
> across the technical changes for Hyperlaunch cross-architecture
> implementation
>     - document compatibility
>     - support a "dom0less mode" with existing Device Tree structure
>     - documentation updates to be paired with progress on code
> implementation
>
>
> = Community resourcing
>
> - Supporting code review and merge of Hyperlaunch changes into Xen
>     - transitioning existing Arm logic into common, including FDT
>
> - Provision of accurate, consistent documentation materials to support
> effective communication to existing and prospective users, developers and
> other
> stakeholders
>      - Ensuring that the document structure supports ongoing maintenance:
>         - Multiple use cases, structure docs accordingly: eg.
>             - use case: static partitioning, critical + non-critical VMs
>             - use case: measured launch with a boot domain
>             - use case: fast VM start for embedded systems
>         - Architecture of Hyperlaunch, relevance to other hypervisors
>             - nested systems
>
> - Design, review and agreement for common cross-architecture and
>   arch-extensible interfaces, including:
>     - common boot data structures
>     - Device Tree structure
>     - hypfs entries
>     - introspection to determine hyperlaunched system status
>
> - Development of test cases
>
> - CI of Hyperlaunch interfaces, to ensure that it stays working
>
> ------------------------------------------------------------
>
> Views arrived at in discussion with Rich and Daniel, and after reading the
> thread contributions, follow this point.
>
> "Hyperlaunch" is to be the common name across architectures for a flexible,
> configurable boot system for coordinating the launch of multiple VMs by the
> hypervisor, with a common implementation, pooling resources and development
> risk across the Xen community. The interfaces are core to it.
>
> From the Hyperlaunch design document (reviewed + committed to the tree):
>
> "The design enables seamless transition for existing systems that require
> a dom0, and provides a new general capability to build and launch
> alternative configurations of virtual machines, including support for
> static partitioning and accelerated start of VMs during host boot, while
> adhering to the principles of least privilege. It incorporates the existing
> dom0less functionality, extended to fold in the new developments from the
> Hyperlaunch project, with support for both x86 and Arm platform
> architectures, building upon and replacing the earlier 'late hardware
> domain' feature for disaggregation of dom0.
>
> Hyperlaunch is designed to be flexible and reusable across multiple use
> cases, and our aim is to ensure that it is capable, widely exercised,
> comprehensively tested, and well understood by the Xen community."
>
> https://xenbits.xen.org/docs/4.17-testing/designs/launch/hyperlaunch.html
>
> ie.  Hyperlaunch was created to move away from point solutions that
> hard-code
> specific launch configurations, isolation properties and threat models. It
> isn't just about starting domains -- it is about enabling the construction
> of
> complex use cases runtimes for Xen. It is the result of iterative design
> starting with the disaggregation for the late hardware domain, through
> dom0less development and then with the comprehensive hyperlaunch design and
> implementation that builds upon them both.
>
> The current interest and investment in Hyperlaunch is driven by its
> relevance
> to Safety Critical systems due to the isolation properties and improvement
> in the ability to certify the software -- this is closely related to but
> slightly different from starting multiple VMs at host boot.
>
> To encourage commonality and allow for future development, we should not
> use architecture-specific or vendor-specific name variations, and also
> avoid
> technology-specific name variations (eg. Device Tree or "DT").
>
> Instead, the use case configurations should themselves be describable.
>
> Thanks again,
>
> Christopher
>
>

Reply via email to