From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Elliot Berman <quic_eberman@quicinc.com>,
Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Murali Nalajala <quic_mnalajal@quicinc.com>,
Trilok Soni <quic_tsoni@quicinc.com>,
Srivatsa Vaddagiri <quic_svaddagi@quicinc.com>,
Carl van Schaik <quic_cvanscha@quicinc.com>,
Andy Gross <agross@kernel.org>,
linux-arm-kernel@lists.infradead.org,
Mark Rutland <mark.rutland@arm.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Sudeep Holla <sudeep.holla@arm.com>,
Marc Zyngier <maz@kernel.org>, Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Jonathan Corbet <corbet@lwn.net>, Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v3 06/12] virt: gunyah: Add sysfs nodes
Date: Tue, 23 Aug 2022 11:06:45 +0300 [thread overview]
Message-ID: <9f802d58-e4d8-ddb7-d5a3-dd9408336379@linaro.org> (raw)
In-Reply-To: <20220811214107.1074343-7-quic_eberman@quicinc.com>
On 12/08/2022 00:41, Elliot Berman wrote:
> Add /sys/hypervisor support when detecting that Linux is running in a
> Gunyah environment. Export the version of Gunyah which is reported via
> the hyp_identify hypercall.
>
> Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
> ---
> .../ABI/testing/sysfs-hypervisor-gunyah | 23 +++++
> MAINTAINERS | 1 +
> drivers/virt/Makefile | 1 +
> drivers/virt/gunyah/Makefile | 2 +
> drivers/virt/gunyah/sysfs.c | 87 +++++++++++++++++++
> 5 files changed, 114 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-hypervisor-gunyah
> create mode 100644 drivers/virt/gunyah/Makefile
> create mode 100644 drivers/virt/gunyah/sysfs.c
>
> diff --git a/Documentation/ABI/testing/sysfs-hypervisor-gunyah b/Documentation/ABI/testing/sysfs-hypervisor-gunyah
> new file mode 100644
> index 000000000000..219465783a9e
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-hypervisor-gunyah
> @@ -0,0 +1,23 @@
> +What: /sys/hypervisor/type
> +Date: August 2022
> +KernelVersion: 6.0
> +Contact: linux-arm-msm@vger.kernel.org
> +Description: If running under Gunyah:
> + Type of hypervisor:
> + "gunyah": Gunyah hypervisor
Note, you do not need the 'type'. You already have it in form of
/sys/hypervisor/gunyah dir. If the VM is running under another type of
hypervisor, there will be a different directory for hypervisor files.
> +
> +What: /sys/hypervisor/gunyah/api
> +Date: August 2022
> +KernelVersion: 6.0
> +Contact: linux-arm-msm@vger.kernel.org
> +Description: If running under Gunyah:
> + The Gunyah API version.
Please provide examples here.
> +
> +What: /sys/hypervisor/gunyah/variant
> +Date: August 2022
> +KernelVersion: 6.0
> +Contact: linux-arm-msm@vger.kernel.org
> +Description: If running under Gunyah:
> + The Gunyah variant (build) version.
> + The open source build of Gunyah will report "81".
> + The Qualcomm build of Gunyah will report "72".
Are these numbers fixed in stone? What if some other random company adds
another variant of the Gunyah? What if the open source build is updated
at some point?
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f5d5ebb62701..c774bbcdb348 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -8739,6 +8739,7 @@ M: Elliot Berman <quic_eberman@quicinc.com>
> M: Murali Nalajala <quic_mnalajal@quicinc.com>
> L: linux-arm-msm@vger.kernel.org
> S: Supported
> +F: Documentation/ABI/testing/sysfs-hypervisor-gunyah
> F: Documentation/devicetree/bindings/firmware/gunyah-hypervisor.yaml
> F: Documentation/virt/gunyah/
> F: arch/arm64/gunyah/
> diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
> index 093674e05c40..5cd759f60122 100644
> --- a/drivers/virt/Makefile
> +++ b/drivers/virt/Makefile
> @@ -9,5 +9,6 @@ obj-y += vboxguest/
>
> obj-$(CONFIG_NITRO_ENCLAVES) += nitro_enclaves/
> obj-$(CONFIG_ACRN_HSM) += acrn/
> +obj-$(CONFIG_GUNYAH) += gunyah/
> obj-$(CONFIG_EFI_SECRET) += coco/efi_secret/
> obj-$(CONFIG_SEV_GUEST) += coco/sev-guest/
> diff --git a/drivers/virt/gunyah/Makefile b/drivers/virt/gunyah/Makefile
> new file mode 100644
> index 000000000000..e15f16c17142
> --- /dev/null
> +++ b/drivers/virt/gunyah/Makefile
> @@ -0,0 +1,2 @@
> +gunyah-y += sysfs.o
> +obj-$(CONFIG_GUNYAH) += gunyah.o
> diff --git a/drivers/virt/gunyah/sysfs.c b/drivers/virt/gunyah/sysfs.c
> new file mode 100644
> index 000000000000..9de700fdbfcb
> --- /dev/null
> +++ b/drivers/virt/gunyah/sysfs.c
> @@ -0,0 +1,87 @@
> +// 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/kobject.h>
> +#include <linux/module.h>
> +#include <linux/printk.h>
> +#include <linux/init.h>
> +#include <asm-generic/gunyah.h>
> +
> +static struct gh_hypercall_hyp_identify_resp gunyah_api;
> +
> +static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr, char *buffer)
> +{
> + return sysfs_emit(buffer, "gunyah\n");
> +}
> +static struct kobj_attribute type_attr = __ATTR_RO(type);
> +
> +static ssize_t api_show(struct kobject *kobj, struct kobj_attribute *attr, char *buffer)
> +{
> + return sysfs_emit(buffer, "%d\n", (int)GH_API_INFO_API_VERSION(gunyah_api.api_info));
> +}
> +static struct kobj_attribute api_attr = __ATTR_RO(api);
> +
> +static ssize_t variant_show(struct kobject *kobj, struct kobj_attribute *attr, char *buffer)
> +{
> + return sysfs_emit(buffer, "%d\n", (int)GH_API_INFO_VARIANT(gunyah_api.api_info));
> +}
> +static struct kobj_attribute variant_attr = __ATTR_RO(variant);
> +
> +static struct attribute *gunyah_attrs[] = {
> + &api_attr.attr,
> + &variant_attr.attr,
> + NULL
> +};
> +
> +static const struct attribute_group gunyah_group = {
> + .name = "gunyah",
> + .attrs = gunyah_attrs,
> +};
> +
> +static int __init gunyah_init(void)
> +{
> + int ret;
> + u32 uid[4];
> +
> + gh_hypercall_get_uid(uid);
> +
> + if (!(gh_uid_matches(GUNYAH, uid) || gh_uid_matches(QC_HYP, uid)))
> + return 0;
> +
> + gh_hypercall_hyp_identify(&gunyah_api);
> +
> + if (GH_API_INFO_API_VERSION(gunyah_api.api_info) != 1) {
> + pr_warn("Unrecognized gunyah version: %llu. Currently supported: 1\n",
> + GH_API_INFO_API_VERSION(gunyah_api.api_info));
> + return 0;
> + }
> +
> + pr_notice("Running under Gunyah hypervisor %llx/v%lld\n",
> + GH_API_INFO_VARIANT(gunyah_api.api_info),
> + GH_API_INFO_API_VERSION(gunyah_api.api_info));
> +
> + ret = sysfs_create_file(hypervisor_kobj, &type_attr.attr);
> + if (ret)
> + return ret;
> +
> + ret = sysfs_create_group(hypervisor_kobj, &gunyah_group);
> + if (ret)
> + sysfs_remove_file(hypervisor_kobj, &type_attr.attr);
> +
> + return ret;
> +}
> +module_init(gunyah_init);
> +
> +static void __exit gunyah_exit(void)
> +{
> + sysfs_remove_group(hypervisor_kobj, &gunyah_group);
> + sysfs_remove_file(hypervisor_kobj, &type_attr.attr);
> +}
> +module_exit(gunyah_exit);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_DESCRIPTION("Gunyah Hypervisor Driver");
--
With best wishes
Dmitry
next prev parent reply other threads:[~2022-08-23 8:11 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-11 21:40 [PATCH v3 00/12] Drivers for gunyah hypervisor Elliot Berman
2022-08-11 21:40 ` [PATCH v3 01/12] arm64: smccc: Include alternative-macros.h Elliot Berman
2022-08-11 21:40 ` [PATCH v3 02/12] docs: gunyah: Introduce Gunyah Hypervisor Elliot Berman
2022-08-12 8:25 ` Bagas Sanjaya
2022-08-11 21:40 ` [PATCH v3 03/12] dt-bindings: Add binding for gunyah hypervisor Elliot Berman
2022-08-12 15:13 ` Rob Herring
2022-08-11 21:40 ` [PATCH v3 04/12] gunyah: Common types and error codes for Gunyah hypercalls Elliot Berman
2022-08-11 21:41 ` [PATCH v3 05/12] virt: gunyah: Add hypercalls to identify Gunyah Elliot Berman
2022-08-11 21:41 ` [PATCH v3 06/12] virt: gunyah: Add sysfs nodes Elliot Berman
2022-08-23 8:06 ` Dmitry Baryshkov [this message]
2022-08-11 21:41 ` [PATCH v3 07/12] gunyah: msgq: Add Gunyah message queues Elliot Berman
2022-08-11 21:41 ` [PATCH v3 08/12] gunyah: sysfs: Add node to describe supported features Elliot Berman
2022-08-11 21:41 ` [PATCH v3 09/12] gunyah: rsc_mgr: Add resource manager RPC core Elliot Berman
2022-08-11 21:41 ` [PATCH v3 10/12] gunyah: rsc_mgr: Add RPC for console services Elliot Berman
2022-08-11 21:41 ` [PATCH v3 11/12] gunyah: rsc_mgr: Add auxiliary devices for console Elliot Berman
2022-08-11 21:41 ` [PATCH v3 12/12] tty: gunyah: Add tty console driver for RM Console Serivces Elliot Berman
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=9f802d58-e4d8-ddb7-d5a3-dd9408336379@linaro.org \
--to=dmitry.baryshkov@linaro.org \
--cc=agross@kernel.org \
--cc=bjorn.andersson@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=quic_cvanscha@quicinc.com \
--cc=quic_eberman@quicinc.com \
--cc=quic_mnalajal@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;
as well as URLs for NNTP newsgroup(s).