All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: kys@microsoft.com
Cc: linux-kernel@vger.kernel.org, devel@linuxdriverproject.org,
	olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com,
	jasowang@redhat.com, leann.ogasawara@canonical.com,
	marcelo.cerri@canonical.com, sthemmin@microsoft.com,
	Michael Kelley <mikelley@microsoft.com>
Subject: Re: [PATCH 1/2] Drivers: hv: vmbus: Remove x86-isms from arch independent drivers
Date: Tue, 28 Nov 2017 16:33:56 +0100	[thread overview]
Message-ID: <20171128153356.GA20236@kroah.com> (raw)
In-Reply-To: <1510681928-13951-1-git-send-email-kys@exchange.microsoft.com>

On Tue, Nov 14, 2017 at 10:52:07AM -0700, kys@exchange.microsoft.com wrote:
> From: Michael Kelley <mikelley@microsoft.com>
> 
> hv_is_hypercall_page_setup() is used to check if Hyper-V is
> initialized, but a 'hypercall page' is an x86 implementation detail
> that isn't necessarily present on other architectures. Rename to the
> architecture independent hv_is_hyperv_initialized() and add check
> that x86_hyper is pointing to Hyper-V.  Use this function instead of
> direct references to x86-specific data structures in vmbus_drv.c,
> and remove now redundant call in hv_init(). Also remove 'x86' from
> the string name passed to cpuhp_setup_state().
> 
> Signed-off-by: Michael Kelley <mikelley@microsoft.com>
> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
> ---
>  arch/x86/hyperv/hv_init.c       |   21 ++++++++++++++-------
>  arch/x86/include/asm/mshyperv.h |    4 ++--
>  drivers/hv/hv.c                 |    3 ---
>  drivers/hv/vmbus_drv.c          |    5 ++---
>  4 files changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c
> index aeb8edf..e5372c9 100644
> --- a/arch/x86/hyperv/hv_init.c
> +++ b/arch/x86/hyperv/hv_init.c
> @@ -239,17 +239,24 @@ void hyperv_report_panic(struct pt_regs *regs, long err)
>  }
>  EXPORT_SYMBOL_GPL(hyperv_report_panic);
>  
> -bool hv_is_hypercall_page_setup(void)
> +bool hv_is_hyperv_initialized(void)
>  {
>  	union hv_x64_msr_hypercall_contents hypercall_msr;
>  
> -	/* Check if the hypercall page is setup */
> +	/*
> +	 * Ensure that we're really on Hyper-V, and not a KVM or Xen
> +	 * emulation of Hyper-V
> +	 */
> +	if (x86_hyper != &x86_hyper_ms_hyperv)
> +		return false;
> +
> +	/*
> +	 * Verify that earlier initialization succeeded by checking
> +	 * that the hypercall page is setup
> +	 */
>  	hypercall_msr.as_uint64 = 0;
>  	rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
>  
> -	if (!hypercall_msr.enable)
> -		return false;
> -
> -	return true;
> +	return hypercall_msr.enable;
>  }
> -EXPORT_SYMBOL_GPL(hv_is_hypercall_page_setup);
> +EXPORT_SYMBOL_GPL(hv_is_hyperv_initialized);
> diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
> index bd89104..740dc97 100644
> --- a/arch/x86/include/asm/mshyperv.h
> +++ b/arch/x86/include/asm/mshyperv.h
> @@ -311,11 +311,11 @@ static inline int hv_cpu_number_to_vp_number(int cpu_number)
>  void hyperv_setup_mmu_ops(void);
>  void hyper_alloc_mmu(void);
>  void hyperv_report_panic(struct pt_regs *regs, long err);
> -bool hv_is_hypercall_page_setup(void);
> +bool hv_is_hyperv_initialized(void);
>  void hyperv_cleanup(void);
>  #else /* CONFIG_HYPERV */
>  static inline void hyperv_init(void) {}
> -static inline bool hv_is_hypercall_page_setup(void) { return false; }
> +static inline bool hv_is_hyperv_initialized(void) { return false; }
>  static inline void hyperv_cleanup(void) {}
>  static inline void hyperv_setup_mmu_ops(void) {}
>  #endif /* CONFIG_HYPERV */
> diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
> index 8267439..fe96aab 100644
> --- a/drivers/hv/hv.c
> +++ b/drivers/hv/hv.c
> @@ -49,9 +49,6 @@ struct hv_context hv_context = {
>   */
>  int hv_init(void)
>  {
> -	if (!hv_is_hypercall_page_setup())
> -		return -ENOTSUPP;
> -
>  	hv_context.cpu_context = alloc_percpu(struct hv_per_cpu_context);
>  	if (!hv_context.cpu_context)
>  		return -ENOMEM;
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
> index 4f3faf5..398643b 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -37,7 +37,6 @@
>  #include <linux/sched/task_stack.h>
>  
>  #include <asm/hyperv.h>
> -#include <asm/hypervisor.h>
>  #include <asm/mshyperv.h>
>  #include <linux/notifier.h>
>  #include <linux/ptrace.h>
> @@ -1053,7 +1052,7 @@ static int vmbus_bus_init(void)
>  	 * Initialize the per-cpu interrupt state and
>  	 * connect to the host.
>  	 */
> -	ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "x86/hyperv:online",
> +	ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "hyperv/vmbus:online",
>  				hv_synic_init, hv_synic_cleanup);
>  	if (ret < 0)
>  		goto err_alloc;
> @@ -1717,7 +1716,7 @@ static int __init hv_acpi_init(void)
>  {
>  	int ret, t;
>  
> -	if (x86_hyper != &x86_hyper_ms_hyperv)
> +	if (!hv_is_hyperv_initialized())
>  		return -ENODEV;
>  
>  	init_completion(&probe_event);
> -- 
> 1.7.1


Does not apply to 4.15-rc1 :(

  reply	other threads:[~2017-11-28 15:33 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-14 17:51 [PATCH 0/2] Drivers: hv: vmbbus: Miscellaneous cleanup kys
2017-11-14 17:52 ` [PATCH 1/2] Drivers: hv: vmbus: Remove x86-isms from arch independent drivers kys
2017-11-28 15:33   ` Greg KH [this message]
2017-11-14 17:52 ` [PATCH 2/2] vmbus: make hv_get_ringbuffer_availbytes local kys
2017-11-28 15:34   ` Greg KH
2017-11-28 15:58     ` KY Srinivasan
2017-11-28 16:32       ` Stephen Hemminger

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=20171128153356.GA20236@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=apw@canonical.com \
    --cc=devel@linuxdriverproject.org \
    --cc=jasowang@redhat.com \
    --cc=kys@microsoft.com \
    --cc=leann.ogasawara@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo.cerri@canonical.com \
    --cc=mikelley@microsoft.com \
    --cc=olaf@aepfle.de \
    --cc=sthemmin@microsoft.com \
    --cc=vkuznets@redhat.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.