Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754600AbcL3Tkc (ORCPT ); Fri, 30 Dec 2016 14:40:32 -0500 Received: from p3plsmtps2ded02.prod.phx3.secureserver.net ([208.109.80.59]:33116 "EHLO p3plsmtps2ded02.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754139AbcL3Tje (ORCPT ); Fri, 30 Dec 2016 14:39:34 -0500 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com, rkagan@virtuozzo.com, x86@kernel.org, tglx@linutronix.de, hpa@zytor.com Cc: "K. Y. Srinivasan" Subject: [PATCH 08/18] Drivers: hv: vmbus: Move the check for hypercall page setup Date: Fri, 30 Dec 2016 13:36:02 -0800 Message-Id: <1483133772-29776-8-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1483133772-29776-1-git-send-email-kys@exchange.microsoft.com> References: <1483133701-29738-1-git-send-email-kys@exchange.microsoft.com> <1483133772-29776-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfOoSKSMkiNKHwKJKtZna5EHQNMceJ1pwYHf6OtHkJTRo52FOzl/mxeQAvgsJa5CDzNodwjMqXHiZWTdCs+sShuSadM4yXgoEGRSstsHBXWR4c8E4Smu7 RZ91KHd21zBGBWPChn1PBHgzxIt3d+ovMT7t3X/sd39zQbgMH0LxKpVfg+/xk/7JDgd3lOnYi1PmjqDuS+mj2NwHCAg0FUVTkqbudpIEjjIUHJoprM7J7ny8 DHleVF1sLczBwXkvwNexi5mvkDfVFQRv4cuFPmQUD0lsbbDxNwKOdBcyPHNza2eHXDkpjD/RZY8fjIeEIPy8rgV58khICL4PDZzKcSE0oUkvC2Lp5cb5m6Sw PaVcApZf7v8A5vuEnlKWSl0KbOFixANiY/1m5yVkzQ398VWkyrXq7rnV5imXRTcqOwin3QQ1Q5qAoPzCj6uQm5LfYcVNLZ0Ruc6aYeYZK/6oY41rt2IgoIZh aSZINyD2iZYpghvPoGhKbAHi+/H+5OEcNt0fH4LZNBwRiWrfmPB0zThqZxgWLiO8VYX84Vnly80VxPEhTFIHjdCWU0OZUNfpb+4YXA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2272 Lines: 73 From: K. Y. Srinivasan As part of the effort to separate out architecture specific code, move the check for detecting if the hypercall page is setup. Signed-off-by: K. Y. Srinivasan --- arch/x86/hyperv/hv_init.c | 15 +++++++++++++++ arch/x86/include/asm/mshyperv.h | 1 + drivers/hv/hv.c | 7 +------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/arch/x86/hyperv/hv_init.c b/arch/x86/hyperv/hv_init.c index 299cafb..8c14488 100644 --- a/arch/x86/hyperv/hv_init.c +++ b/arch/x86/hyperv/hv_init.c @@ -234,3 +234,18 @@ void hyperv_report_panic(struct pt_regs *regs) wrmsrl(HV_X64_MSR_CRASH_CTL, HV_CRASH_CTL_CRASH_NOTIFY); } EXPORT_SYMBOL_GPL(hyperv_report_panic); + +bool hv_is_hypercall_page_setup(void) +{ + union hv_x64_msr_hypercall_contents hypercall_msr; + + /* Check if 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; +} +EXPORT_SYMBOL_GPL(hv_is_hypercall_page_setup); diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index 64e682d..c843ef6 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -115,5 +115,6 @@ static inline __u64 generate_guest_id(__u64 d_info1, __u64 kernel_version, #if IS_ENABLED(CONFIG_HYPERV) void hyperv_init(void); void hyperv_report_panic(struct pt_regs *regs); +bool hv_is_hypercall_page_setup(void); #endif #endif diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 55b85c3..9021398 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -49,7 +49,6 @@ struct hv_context hv_context = { */ int hv_init(void) { - union hv_x64_msr_hypercall_contents hypercall_msr; memset(hv_context.synic_event_page, 0, sizeof(void *) * NR_CPUS); memset(hv_context.synic_message_page, 0, @@ -65,11 +64,7 @@ int hv_init(void) memset(hv_context.clk_evt, 0, sizeof(void *) * NR_CPUS); - /* See if the hypercall page is already set */ - hypercall_msr.as_uint64 = 0; - rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64); - - if (!hypercall_msr.enable) + if (!hv_is_hypercall_page_setup()) return -ENOTSUPP; return 0; -- 1.7.4.1