From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Zhao Yakui <yakui.zhao@intel.com>
Cc: linux-kernel@vger.kernel.org, x86@kernel.org,
Jason Chen CJ <jason.cj.chen@intel.com>
Subject: Re: [RFC PATCH 1/3] arch/x86: add ACRN hypervisor guest
Date: Sat, 23 Mar 2019 08:17:17 -0700 [thread overview]
Message-ID: <20190323151717.GA22376@linux.intel.com> (raw)
In-Reply-To: <1551924251-19466-2-git-send-email-yakui.zhao@intel.com>
On Thu, Mar 07, 2019 at 10:04:09AM +0800, Zhao Yakui wrote:
> ACRN is one open-source hypervisour, which is maintained by Linux
> foundation. This is to add the para-virtualization support so that
> it allows to enable the Linux guest on acrn-hypervisor.
>
> This adds x86_hyper_acrn into supported hypervisors array, which
> enables ACRN services guest running on ACRN hypervisor. It is
> restricted to X86_64.
>
> Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
> Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
> ---
> arch/x86/Kconfig | 8 ++++++++
> arch/x86/include/asm/hypervisor.h | 1 +
> arch/x86/kernel/cpu/Makefile | 1 +
> arch/x86/kernel/cpu/acrn.c | 36 ++++++++++++++++++++++++++++++++++++
> arch/x86/kernel/cpu/hypervisor.c | 4 ++++
> 5 files changed, 50 insertions(+)
> create mode 100644 arch/x86/kernel/cpu/acrn.c
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 90b562a..c7b64e7 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -843,6 +843,14 @@ config JAILHOUSE_GUEST
> cell. You can leave this option disabled if you only want to start
> Jailhouse and run Linux afterwards in the root cell.
>
> +config ACRN
My personal preference would be to use ACRN_GUEST. Inevitably there will
be a need to wrap ACRN code with an ifdef, and seeing "GUEST" in such
cases immediately lets readers know the code in question is related to
running as a guest without having to remember that ACRN is a hypervisor.
This is especially true for readers that have never heard of ACRN.
> + bool "Enable services on ACRN hypervisor"
> + depends on X86_64 && PARAVIRT
> + help
> + This option allows to run Linux as guest in ACRN hypervisor.
> + It is needed if you want to run ACRN services linux on top of
> + ACRN hypervisor.
> +
> endif #HYPERVISOR_GUEST
>
> source "arch/x86/Kconfig.cpu"
> diff --git a/arch/x86/include/asm/hypervisor.h b/arch/x86/include/asm/hypervisor.h
> index 8c5aaba..50a30f6 100644
> --- a/arch/x86/include/asm/hypervisor.h
> +++ b/arch/x86/include/asm/hypervisor.h
> @@ -29,6 +29,7 @@ enum x86_hypervisor_type {
> X86_HYPER_XEN_HVM,
> X86_HYPER_KVM,
> X86_HYPER_JAILHOUSE,
> + X86_HYPER_ACRN,
> };
>
> #ifdef CONFIG_HYPERVISOR_GUEST
> diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
> index cfd24f9..cde1436 100644
> --- a/arch/x86/kernel/cpu/Makefile
> +++ b/arch/x86/kernel/cpu/Makefile
> @@ -44,6 +44,7 @@ obj-$(CONFIG_X86_CPU_RESCTRL) += resctrl/
> obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o
>
> obj-$(CONFIG_HYPERVISOR_GUEST) += vmware.o hypervisor.o mshyperv.o
> +obj-$(CONFIG_ACRN) += acrn.o
>
> ifdef CONFIG_X86_FEATURE_NAMES
> quiet_cmd_mkcapflags = MKCAP $@
> diff --git a/arch/x86/kernel/cpu/acrn.c b/arch/x86/kernel/cpu/acrn.c
> new file mode 100644
> index 0000000..ddeaafb
> --- /dev/null
> +++ b/arch/x86/kernel/cpu/acrn.c
> @@ -0,0 +1,36 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * ACRN hypervisor support
> + *
> + * Copyright (C) 2019 Intel Corporation. All rights reserved.
> + *
> + * Jason Chen CJ <jason.cj.chen@intel.com>
> + * Zhao Yakui <yakui.zhao@intel.com>
> + *
> + */
> +
> +#include <asm/hypervisor.h>
> +
> +static uint32_t __init acrn_detect(void)
> +{
> + return hypervisor_cpuid_base("ACRNACRNACRN\0\0", 0);
> +}
> +
> +static void __init acrn_init_platform(void)
> +{
> +}
> +
> +static bool acrn_x2apic_available(void)
> +{
> + /* do not support x2apic */
> + return false;
> +}
> +
> +const struct hypervisor_x86 x86_hyper_acrn = {
> + .name = "ACRN",
> + .detect = acrn_detect,
> + .type = X86_HYPER_ACRN,
> + .init.init_platform = acrn_init_platform,
> + .init.x2apic_available = acrn_x2apic_available,
> +};
> +EXPORT_SYMBOL(x86_hyper_acrn);
> diff --git a/arch/x86/kernel/cpu/hypervisor.c b/arch/x86/kernel/cpu/hypervisor.c
> index 479ca47..5a6f072 100644
> --- a/arch/x86/kernel/cpu/hypervisor.c
> +++ b/arch/x86/kernel/cpu/hypervisor.c
> @@ -32,6 +32,7 @@ extern const struct hypervisor_x86 x86_hyper_xen_pv;
> extern const struct hypervisor_x86 x86_hyper_xen_hvm;
> extern const struct hypervisor_x86 x86_hyper_kvm;
> extern const struct hypervisor_x86 x86_hyper_jailhouse;
> +extern const struct hypervisor_x86 x86_hyper_acrn;
>
> static const __initconst struct hypervisor_x86 * const hypervisors[] =
> {
> @@ -49,6 +50,9 @@ static const __initconst struct hypervisor_x86 * const hypervisors[] =
> #ifdef CONFIG_JAILHOUSE_GUEST
> &x86_hyper_jailhouse,
> #endif
> +#ifdef CONFIG_ACRN
> + &x86_hyper_acrn,
> +#endif
> };
>
> enum x86_hypervisor_type x86_hyper_type;
> --
> 2.7.4
>
next prev parent reply other threads:[~2019-03-23 15:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-07 2:04 [RFC PATCH 0/3] arch/x86: Add the support of ACRN hypervisor under arch/x86 Zhao Yakui
2019-03-07 2:04 ` [RFC PATCH 1/3] arch/x86: add ACRN hypervisor guest Zhao Yakui
2019-03-22 15:20 ` Thomas Gleixner
2019-03-25 3:24 ` Zhao, Yakui
2019-03-23 15:17 ` Sean Christopherson [this message]
2019-03-07 2:04 ` [RFC PATCH 2/3] arch/x86/acrn: Use HYPERVISOR_CALLBACK_VECTOR for Acrn upcall vector Zhao Yakui
2019-03-22 15:44 ` Thomas Gleixner
2019-03-22 19:53 ` Borislav Petkov
2019-03-25 3:57 ` Zhao, Yakui
2019-03-25 8:27 ` Thomas Gleixner
2019-03-26 0:58 ` Zhao, Yakui
2019-03-07 2:04 ` [RFC PATCH 3/3] arch/x86/acrn: add hypercall for acrn_hypervisor Zhao Yakui
2019-03-22 16:01 ` Thomas Gleixner
2019-03-25 6:12 ` Zhao, Yakui
2019-03-25 8:30 ` Thomas Gleixner
2019-03-26 0:59 ` Zhao, Yakui
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=20190323151717.GA22376@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=jason.cj.chen@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
--cc=yakui.zhao@intel.com \
/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).