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