LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
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



  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 \
    --subject='RE: [PATCH v11 3/5] arm64: hyperv: Initialize hypervisor on boot' \
    /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

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).