RE: [PATCH 2/4] arm64: hyperv: Add support for Hyper-V as a hypervisor

From: Michael Kelley
Date: Mon Jan 21 2019 - 02:13:46 EST


From: Michael Kelley Sent: Friday, January 4, 2019 12:05 PM
>
> > >> As Will said, this isn't a viable option. Please follow SMCCC 1.1.
> > >
> > > I'll have to start a conversation with the Hyper-V team about this.
> > > I don't know why they chose to use HVC #1 or this register scheme
> > > for output values. It may be tough to change at this point because
> > > there are Windows guests on Hyper-V for ARM64 that are already
> > > using this approach.
> >
> > I appreciate you already have stuff in the wild, but there is definitely
> > a case to be made for supporting architecturally specified mechanisms in
> > a hypervisor, and SMCCC is definitely part of it (I'm certainly curious
> > of how you support the Spectre mitigation otherwise).
> >
>
> The Hyper-V guys I need to discuss this with are not back from the
> holidays until January 7th. I'll follow up on this thread once I've
> had that conversation.
>

Feedback from the Hyper-V guys is that they believe the Hyper-V
specific hypercall sequence *is* compliant with SMCCC 1.1, in the
sense of being outside the requirements per Section 2.9 since the
Hyper-V hypercall sequence uses HVC #1. Hyper-V wanted to use a
simpler calling sequence that doesn't have the full register
save/restore requirements, for better performance. The details
of the Hyper-V hypercall sequence are documented internally,
but we do still need to get it published externally as part of a
Hyper-V TLFS version that includes ARM64.

Hyper-V uses the full SMC Calling Conventions in other places,
such as for PSCI calls, for SMCs to EL3, and for the Spectre
mitigation related calls.

Michael