From: Michael Kelley <mikelley@microsoft.com>
To: Mark Rutland <Mark.Rutland@arm.com>
Cc: "will@kernel.org" <will@kernel.org>,
"catalin.marinas@arm.com" <catalin.marinas@arm.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
"wei.liu@kernel.org" <wei.liu@kernel.org>,
KY Srinivasan <kys@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
"ardb@kernel.org" <ardb@kernel.org>
Subject: RE: [PATCH v11 3/5] arm64: hyperv: Initialize hypervisor on boot
Date: Mon, 2 Aug 2021 17:13:03 +0000 [thread overview]
Message-ID: <MWHPR21MB15930692A0EF42DC49EAEE83D7EF9@MWHPR21MB1593.namprd21.prod.outlook.com> (raw)
In-Reply-To: <20210802162623.GC59710@C02TD0UTHF1T.local>
From: Mark Rutland <mark.rutland@arm.com> Sent: Monday, August 2, 2021 9:26 AM
>
> On Tue, Jul 20, 2021 at 07:57:01AM -0700, Michael Kelley wrote:
> > Add ARM64-specific code to initialize the Hyper-V
> > hypervisor when booting as a guest VM.
> >
> > This code is built only when CONFIG_HYPERV is enabled.
> >
> > Signed-off-by: Michael Kelley <mikelley@microsoft.com>
> > ---
> > arch/arm64/hyperv/Makefile | 2 +-
> > arch/arm64/hyperv/mshyperv.c | 83 ++++++++++++++++++++++++++++++++++++++++++++
> > 2 files changed, 84 insertions(+), 1 deletion(-)
> > create mode 100644 arch/arm64/hyperv/mshyperv.c
> >
> > diff --git a/arch/arm64/hyperv/Makefile b/arch/arm64/hyperv/Makefile
> > index 1697d30..87c31c0 100644
> > --- a/arch/arm64/hyperv/Makefile
> > +++ b/arch/arm64/hyperv/Makefile
> > @@ -1,2 +1,2 @@
> > # SPDX-License-Identifier: GPL-2.0
> > -obj-y := hv_core.o
> > +obj-y := hv_core.o mshyperv.o
> > diff --git a/arch/arm64/hyperv/mshyperv.c b/arch/arm64/hyperv/mshyperv.c
> > new file mode 100644
> > index 0000000..2811fd0
> > --- /dev/null
> > +++ b/arch/arm64/hyperv/mshyperv.c
> > @@ -0,0 +1,83 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +/*
> > + * Core routines for interacting with Microsoft's Hyper-V hypervisor,
> > + * including hypervisor initialization.
> > + *
> > + * Copyright (C) 2021, Microsoft, Inc.
> > + *
> > + * Author : Michael Kelley <mikelley@microsoft.com>
> > + */
> > +
> > +#include <linux/types.h>
> > +#include <linux/acpi.h>
> > +#include <linux/export.h>
> > +#include <linux/errno.h>
> > +#include <linux/version.h>
> > +#include <linux/cpuhotplug.h>
> > +#include <asm/mshyperv.h>
> > +
> > +static bool hyperv_initialized;
> > +
> > +static int __init hyperv_init(void)
> > +{
> > + struct hv_get_vp_registers_output result;
> > + u32 a, b, c, d;
> > + u64 guest_id;
> > + int ret;
>
> As Marc suggests, before looking at the FADT, you need something like:
>
> /*
> * Hyper-V VMs always have ACPI.
> */
> if (acpi_disabled)
> return 0;
>
> ... where `acpi_disabled` is defined in <linux/acpi.h> (or via its
> includes), so you don't need to include any additional headers.
>
> > +
> > + /*
> > + * If we're in a VM on Hyper-V, the ACPI hypervisor_id field will
> > + * have the string "MsHyperV".
> > + */
> > + if (strncmp((char *)&acpi_gbl_FADT.hypervisor_id, "MsHyperV", 8))
> > + return -EINVAL;
>
> As Marc suggests, it's no an error for a platform to not have Hyper-V,
> so returning 0 in tihs case would be preferable.
>
> Otherwise this looks fine to me.
>
Thanks Marc and Mark. Good point that the code should cleanly
handle the case where a kernel is built with CONFIG_HYPERV but
running somewhere other than as a Hyper-V guest.
Michael
next prev parent reply other threads:[~2021-08-02 17:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 14:56 [PATCH v11 0/5] Enable Linux guests on Hyper-V on ARM64 Michael Kelley
2021-07-20 14:56 ` [PATCH v11 1/5] arm64: hyperv: Add Hyper-V hypercall and register access utilities Michael Kelley
2021-07-20 14:57 ` [PATCH v11 2/5] arm64: hyperv: Add panic handler Michael Kelley
2021-07-21 14:54 ` Boqun Feng
2021-07-27 17:08 ` Sunil Muthuswamy
2021-07-20 14:57 ` [PATCH v11 3/5] arm64: hyperv: Initialize hypervisor on boot Michael Kelley
2021-07-21 14:55 ` Boqun Feng
2021-07-27 17:05 ` Sunil Muthuswamy
2021-08-02 15:55 ` Marc Zyngier
2021-08-02 16:26 ` Mark Rutland
2021-08-02 17:13 ` Michael Kelley [this message]
2021-07-20 14:57 ` [PATCH v11 4/5] arm64: efi: Export screen_info Michael Kelley
2021-07-20 14:57 ` [PATCH v11 5/5] Drivers: hv: Enable Hyper-V code to be built on ARM64 Michael Kelley
2021-07-21 14:52 ` Boqun Feng
2021-08-02 15:15 ` [PATCH v11 0/5] Enable Linux guests on Hyper-V " Michael Kelley
2021-08-02 16:01 ` Marc Zyngier
2021-08-02 16:28 ` Mark Rutland
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=MWHPR21MB15930692A0EF42DC49EAEE83D7EF9@MWHPR21MB1593.namprd21.prod.outlook.com \
--to=mikelley@microsoft.com \
--cc=Mark.Rutland@arm.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=kys@microsoft.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sthemmin@microsoft.com \
--cc=wei.liu@kernel.org \
--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).