From: Elliot Berman <quic_eberman@quicinc.com>
To: Alex Elder <elder@linaro.org>,
Bjorn Andersson <quic_bjorande@quicinc.com>,
Murali Nalajala <quic_mnalajal@quicinc.com>
Cc: Trilok Soni <quic_tsoni@quicinc.com>,
Srivatsa Vaddagiri <quic_svaddagi@quicinc.com>,
Carl van Schaik <quic_cvanscha@quicinc.com>,
Prakruthi Deepak Heragu <quic_pheragu@quicinc.com>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Jonathan Corbet <corbet@lwn.net>,
"Bagas Sanjaya" <bagasdotme@gmail.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Jassi Brar <jassisinghbrar@gmail.com>,
"Sudeep Holla" <sudeep.holla@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
<linux-arm-msm@vger.kernel.org>, <devicetree@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-doc@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-acpi@vger.kernel.org>
Subject: Re: [PATCH v8 06/28] virt: gunyah: Identify hypervisor version
Date: Tue, 17 Jan 2023 14:29:53 -0800 [thread overview]
Message-ID: <3c5c8c8f-70ac-7784-a01d-8f08bcee583d@quicinc.com> (raw)
In-Reply-To: <9109de9d-17f2-f1b2-b758-c9df0e562a20@linaro.org>
On 1/17/2023 11:21 AM, Alex Elder wrote:
> On 1/10/23 11:56 AM, Elliot Berman wrote:
>>
>>
>> On 1/9/2023 1:34 PM, Alex Elder wrote:
>>> On 12/19/22 4:58 PM, Elliot Berman wrote:
>>>> Export the version of Gunyah which is reported via the hyp_identify
>>>> hypercall. Increments of the major API version indicate possibly
>>>> backwards incompatible changes.
>>>>
>>>> Export the hypervisor identity so that Gunyah drivers can act according
>>>> to the major API version.
>>>>
>>>> Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
>>>> ---
>>>> drivers/virt/Makefile | 1 +
>>>> drivers/virt/gunyah/Makefile | 1 +
>>>> drivers/virt/gunyah/gunyah.c | 46
>>>> ++++++++++++++++++++++++++++++++++++
>>>> include/linux/gunyah.h | 6 +++++
>>>> 4 files changed, 54 insertions(+)
>>>> create mode 100644 drivers/virt/gunyah/Makefile
>>>> create mode 100644 drivers/virt/gunyah/gunyah.c
>>>>
>>>> diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
>>>> index 093674e05c40..92b7e5311548 100644
>>>> --- a/drivers/virt/Makefile
>>>> +++ b/drivers/virt/Makefile
>>>> @@ -11,3 +11,4 @@ obj-$(CONFIG_NITRO_ENCLAVES) += nitro_enclaves/
>>>> obj-$(CONFIG_ACRN_HSM) += acrn/
>>>> obj-$(CONFIG_EFI_SECRET) += coco/efi_secret/
>>>> obj-$(CONFIG_SEV_GUEST) += coco/sev-guest/
>>>> +obj-y += gunyah/
>>>> diff --git a/drivers/virt/gunyah/Makefile
>>>> b/drivers/virt/gunyah/Makefile
>>>> new file mode 100644
>>>> index 000000000000..2ac4ee64b89d
>>>> --- /dev/null
>>>> +++ b/drivers/virt/gunyah/Makefile
>>>> @@ -0,0 +1 @@
>>>> +obj-$(CONFIG_GUNYAH) += gunyah.o
>>>> diff --git a/drivers/virt/gunyah/gunyah.c
>>>> b/drivers/virt/gunyah/gunyah.c
>>>> new file mode 100644
>>>> index 000000000000..c34c9046fc08
>>>> --- /dev/null
>>>> +++ b/drivers/virt/gunyah/gunyah.c
>>>> @@ -0,0 +1,46 @@
>>>> +// SPDX-License-Identifier: GPL-2.0-only
>>>> +/*
>>>> + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights
>>>> reserved.
>>>> + */
>>>> +
>>>> +#define pr_fmt(fmt) "gunyah: " fmt
>>>> +
>>>> +#include <linux/gunyah.h>
>>>> +#include <linux/init.h>
>>>> +#include <linux/module.h>
>>>> +#include <linux/printk.h>
>>>> +
>>>> +struct gh_hypercall_hyp_identify_resp gunyah_api;
>>>> +EXPORT_SYMBOL_GPL(gunyah_api);
>>>> +
>>>> +static const uint32_t gunyah_known_uuids[][4] = {
>>>> + {0x19bd54bd, 0x0b37571b, 0x946f609b, 0x54539de6}, /*QC_HYP
>>>> (Qualcomm's build) */
>>>> + {0x673d5f14, 0x9265ce36, 0xa4535fdb, 0xc1d58fcd}, /*GUNYAH
>>>> (open source build) */
>>>> +};
>>>> +
>>>> +static int __init gunyah_init(void)
>>>> +{
>>>> + u32 uid[4];
>>>> + int i;
>>>> +
>>>> + gh_hypercall_get_uid(uid);
>>>> +
>>>> + for (i = 0; i < ARRAY_SIZE(gunyah_known_uuids); i++)
>>>> + if (!memcmp(uid, gunyah_known_uuids[i], sizeof(uid)))
>>>> + break;
>>>> +
>>>> + if (i == ARRAY_SIZE(gunyah_known_uuids))
>>>> + return -ENODEV;
>>>> +
>>>> + gh_hypercall_hyp_identify(&gunyah_api);
>>>> +
>>>> + pr_info("Running under Gunyah hypervisor %llx/v%u\n",
>>>> + FIELD_GET(GH_API_INFO_VARIANT_MASK, gunyah_api.api_info),
>>>> + gh_api_version());
>>>> +
>>>> + return 0;
>>>> +}
>>>> +arch_initcall(gunyah_init);
>>>> +
>>>> +MODULE_LICENSE("GPL");
>>>> +MODULE_DESCRIPTION("Gunyah Hypervisor Driver");
>>>> diff --git a/include/linux/gunyah.h b/include/linux/gunyah.h
>>>> index 2765d2b40198..166156f69df9 100644
>>>> --- a/include/linux/gunyah.h
>>>> +++ b/include/linux/gunyah.h
>>>> @@ -92,6 +92,12 @@ struct gh_hypercall_hyp_identify_resp {
>>>> u64 api_info;
>>>> u64 flags[3];
>>>> };
>>>> +extern struct gh_hypercall_hyp_identify_resp gunyah_api;
>>>
>>> Must this global variable be exposed? Can't you hide it--as
>>> well as its interpretation--inside "gunyah.c"?
>>> >> +
>>>> +static inline u16 gh_api_version(void)
>>>> +{
>>>> + return FIELD_GET(GH_API_INFO_API_VERSION_MASK,
>>>> gunyah_api.api_info);
>>>> +}
>>>
>>> If you don't make the above function inline, can you hide the
>>> definition of gunyah_api?
>>>
>>
>> This seems like a good idea to me. I'm thinking to have the following
>> functions:
>>
>> enum gh_api_feature {
>> GH_API_FEATURE_DOORBELL,
>> GH_API_FEATURE_MSGQUEUE,
>> GH_API_FEATURE_VIC,
>> GH_API_FEATURE_VPM,
>> GH_API_FEATURE_VCPU,
>> GH_API_FEATURE_MEMEXTENT,
>> GH_API_FEATURE_TRACE_CTRL,
>> };
>
> My point wasn't necessarily to expose all of that. Already
> "gunyah.h" defines the bit positions in which these things
> are recorded in the identify response. My main point was
> about (not) exposing that global variable.
>
> I support your suggestion of abstracting the feature
> interface that way, but I suggest waiting until it's
> actually needed before you add it. I don't see any
> code that uses GH_IDENTIFY_PARTITION_CSPACE (and the
> rest) currently.
Sure, I will do that.
>
> Oh, and interestingly enough I see GH_API_INFO_BIG_ENDIAN
> defined in the API info...
>
> -Alex
>
>>
>> u16 gh_api_version(void);
>> bool gh_api_has_feature(enum gh_api_feature feature);
>>
>> Thanks,
>> Elliot
>
next prev parent reply other threads:[~2023-01-17 22:44 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-19 22:58 [PATCH v8 00/28] Drivers for gunyah hypervisor Elliot Berman
2022-12-19 22:58 ` [PATCH v8 01/28] docs: gunyah: Introduce Gunyah Hypervisor Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 17:54 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 02/28] dt-bindings: Add binding for gunyah hypervisor Elliot Berman
2023-01-09 21:34 ` Alex Elder
2022-12-19 22:58 ` [PATCH v8 03/28] gunyah: Common types and error codes for Gunyah hypercalls Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 17:55 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 04/28] arm64: smccc: Include alternative-macros.h Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 22:55 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 05/28] virt: gunyah: Add hypercalls to identify Gunyah Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 17:56 ` Elliot Berman
2023-01-17 19:20 ` Alex Elder
2023-01-17 19:20 ` Alex Elder
2023-01-17 22:29 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 06/28] virt: gunyah: Identify hypervisor version Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 17:56 ` Elliot Berman
2023-01-17 19:21 ` Alex Elder
2023-01-17 22:29 ` Elliot Berman [this message]
2022-12-19 22:58 ` [PATCH v8 07/28] mailbox: Allow direct registration to a channel Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 17:57 ` Elliot Berman
2023-01-17 19:21 ` Alex Elder
2022-12-19 22:58 ` [PATCH v8 08/28] virt: gunyah: msgq: Add hypercalls to send and receive messages Elliot Berman
2022-12-19 22:58 ` [PATCH v8 09/28] mailbox: Add Gunyah message queue mailbox Elliot Berman
2023-01-02 6:13 ` Srivatsa Vaddagiri
2023-01-04 0:32 ` Elliot Berman
2023-01-09 21:34 ` Alex Elder
2023-01-10 18:16 ` Elliot Berman
2023-01-17 19:21 ` Alex Elder
2022-12-19 22:58 ` [PATCH v8 10/28] gunyah: rsc_mgr: Add resource manager RPC core Elliot Berman
2023-01-17 22:33 ` Alex Elder
2023-01-20 23:18 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 11/28] gunyah: rsc_mgr: Add VM lifecycle RPC Elliot Berman
2023-01-09 7:13 ` Srivatsa Vaddagiri
2023-01-09 18:51 ` Elliot Berman
2023-01-18 18:26 ` Alex Elder
2023-01-20 1:31 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 12/28] gunyah: vm_mgr: Introduce basic VM Manager Elliot Berman
2023-01-09 9:05 ` Srivatsa Vaddagiri
2023-01-09 19:38 ` Elliot Berman
2022-12-19 22:58 ` [PATCH v8 13/28] gunyah: rsc_mgr: Add RPC for sharing memory Elliot Berman
2023-01-16 8:45 ` Srivatsa Vaddagiri
2022-12-19 22:58 ` [PATCH v8 14/28] gunyah: vm_mgr: Add/remove user memory regions Elliot Berman
2023-01-20 5:34 ` Srivatsa Vaddagiri
2022-12-19 22:58 ` [PATCH v8 15/28] gunyah: vm_mgr: Add ioctls to support basic non-proxy VM boot Elliot Berman
2022-12-19 22:58 ` [PATCH v8 16/28] samples: Add sample userspace Gunyah VM Manager Elliot Berman
2022-12-19 22:58 ` [PATCH v8 17/28] gunyah: rsc_mgr: Add platform ops on mem_lend/mem_reclaim Elliot Berman
2022-12-19 22:58 ` [PATCH v8 18/28] firmware: qcom_scm: Use fixed width src vm bitmap Elliot Berman
2022-12-19 22:58 ` [PATCH v8 19/28] firmware: qcom_scm: Register Gunyah platform ops Elliot Berman
2022-12-19 22:58 ` [PATCH v8 20/28] docs: gunyah: Document Gunyah VM Manager Elliot Berman
2022-12-19 22:58 ` [PATCH v8 21/28] virt: gunyah: Translate gh_rm_hyp_resource into gunyah_resource Elliot Berman
2022-12-19 22:58 ` [PATCH v8 22/28] gunyah: vm_mgr: Add framework to add VM Functions Elliot Berman
2022-12-19 22:58 ` [PATCH v8 23/28] virt: gunyah: Add resource tickets Elliot Berman
2022-12-19 22:58 ` [PATCH v8 24/28] virt: gunyah: Add IO handlers Elliot Berman
2022-12-19 22:58 ` [PATCH v8 25/28] virt: gunyah: Add proxy-scheduled vCPUs Elliot Berman
2022-12-19 22:58 ` [PATCH v8 26/28] virt: gunyah: Add hypercalls for sending doorbell Elliot Berman
2022-12-19 22:58 ` [PATCH v8 27/28] virt: gunyah: Add irqfd interface Elliot Berman
2022-12-19 22:58 ` [PATCH v8 28/28] virt: gunyah: Add ioeventfd Elliot Berman
2023-01-09 21:34 ` [PATCH v8 00/28] Drivers for gunyah hypervisor Alex Elder
2023-01-10 17:54 ` Elliot Berman
2023-01-10 21:47 ` Elliot Berman
2023-01-17 19:20 ` Alex Elder
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=3c5c8c8f-70ac-7784-a01d-8f08bcee583d@quicinc.com \
--to=quic_eberman@quicinc.com \
--cc=arnd@arndb.de \
--cc=bagasdotme@gmail.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=elder@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=jassisinghbrar@gmail.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=quic_bjorande@quicinc.com \
--cc=quic_cvanscha@quicinc.com \
--cc=quic_mnalajal@quicinc.com \
--cc=quic_pheragu@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