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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.