Re: [PATCH v8 05/28] virt: gunyah: Add hypercalls to identify Gunyah

From: Elliot Berman
Date: Tue Jan 17 2023 - 17:43:56 EST




On 1/17/2023 11:20 AM, Alex Elder wrote:
On 1/10/23 11:56 AM, Elliot Berman wrote:
There are two calls to help identify Gunyah:

1. gh_hypercall_get_uid() returns a UID when running under a Gunyah
    hypervisor.
2. gh_hypercall_hyp_identify() returns build information and a set of
    feature flags that are supported by Gunyah.

The first is a "service", while the second is a "hypercall".
Can you explain the distinction?  The sentence at the top
refers to both as "hypercalls".


I learned more details about this to answer your question. "get_uid()" is a standardized call that is ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID defined in include/arm-smccc.h. I'll use that.

You didn't really explain the distinction between hypercall
and service in Gunyah.  Both are encoded as "vendor specific
hypervisor service calls" according to the SVCCC specification.
I haven't found where ARM_SMCCC_VENDOR_HYP_CALL_UID_FUNC_ID
gets handled, but I accept your answer that it's basically
a standard call.  The "get UID" is the only one that's defined
as a Gunyah "service"; the rest are hypercalls.


This came from a Gunyah implementation detail that separates standard (service) calls from the non-standard calls. I was following the distinction from Gunyah code not realizing that it's actually a standardized call that Linux would already have support for.

Thanks,
Elliot

It's not a big deal, I just noticed the difference and was
curious about it.

                    -Alex