summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2019-10-21 13:24:03 -0400
committerIngo Molnar <mingo@kernel.org>2019-10-21 18:51:44 -0400
commit6fee2a0be0ecae939d4b6cd8297d88b5cbb61654 (patch)
treef740c0d3953187ef571f65414673bec662fc5cd3
parentdb633a4e0e6eda69b6065e3e106f9ea13a0676c3 (diff)
x86/cpu/vmware: Fix platform detection VMWARE_PORT macro
The platform detection VMWARE_PORT macro uses the VMWARE_HYPERVISOR_PORT definition, but expects it to be an integer. However, when it was moved to the new vmware.h include file, it was changed to be a string to better fit into the VMWARE_HYPERCALL set of macros. This obviously breaks the platform detection VMWARE_PORT functionality. Change the VMWARE_HYPERVISOR_PORT and VMWARE_HYPERVISOR_PORT_HB definitions to be integers, and use __stringify() for their stringified form when needed. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Cc: Borislav Petkov <bp@suse.de> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sean Christopherson <sean.j.christopherson@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de> Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") Link: https://lkml.kernel.org/r/20191021172403.3085-3-thomas_os@shipmail.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/include/asm/vmware.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h
index 3caac90f9761..ac9fc51e2b18 100644
--- a/arch/x86/include/asm/vmware.h
+++ b/arch/x86/include/asm/vmware.h
@@ -4,6 +4,7 @@
4 4
5#include <asm/cpufeatures.h> 5#include <asm/cpufeatures.h>
6#include <asm/alternative.h> 6#include <asm/alternative.h>
7#include <linux/stringify.h>
7 8
8/* 9/*
9 * The hypercall definitions differ in the low word of the %edx argument 10 * The hypercall definitions differ in the low word of the %edx argument
@@ -20,8 +21,8 @@
20 */ 21 */
21 22
22/* Old port-based version */ 23/* Old port-based version */
23#define VMWARE_HYPERVISOR_PORT "0x5658" 24#define VMWARE_HYPERVISOR_PORT 0x5658
24#define VMWARE_HYPERVISOR_PORT_HB "0x5659" 25#define VMWARE_HYPERVISOR_PORT_HB 0x5659
25 26
26/* Current vmcall / vmmcall version */ 27/* Current vmcall / vmmcall version */
27#define VMWARE_HYPERVISOR_HB BIT(0) 28#define VMWARE_HYPERVISOR_HB BIT(0)
@@ -29,7 +30,7 @@
29 30
30/* The low bandwidth call. The low word of edx is presumed clear. */ 31/* The low bandwidth call. The low word of edx is presumed clear. */
31#define VMWARE_HYPERCALL \ 32#define VMWARE_HYPERCALL \
32 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; " \ 33 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT) ", %%dx; " \
33 "inl (%%dx), %%eax", \ 34 "inl (%%dx), %%eax", \
34 "vmcall", X86_FEATURE_VMCALL, \ 35 "vmcall", X86_FEATURE_VMCALL, \
35 "vmmcall", X86_FEATURE_VMW_VMMCALL) 36 "vmmcall", X86_FEATURE_VMW_VMMCALL)
@@ -39,7 +40,8 @@
39 * HB and OUT bits set. 40 * HB and OUT bits set.
40 */ 41 */
41#define VMWARE_HYPERCALL_HB_OUT \ 42#define VMWARE_HYPERCALL_HB_OUT \
42 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep outsb", \ 43 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) ", %%dx; " \
44 "rep outsb", \
43 "vmcall", X86_FEATURE_VMCALL, \ 45 "vmcall", X86_FEATURE_VMCALL, \
44 "vmmcall", X86_FEATURE_VMW_VMMCALL) 46 "vmmcall", X86_FEATURE_VMW_VMMCALL)
45 47
@@ -48,7 +50,8 @@
48 * HB bit set. 50 * HB bit set.
49 */ 51 */
50#define VMWARE_HYPERCALL_HB_IN \ 52#define VMWARE_HYPERCALL_HB_IN \
51 ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep insb", \ 53 ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) ", %%dx; " \
54 "rep insb", \
52 "vmcall", X86_FEATURE_VMCALL, \ 55 "vmcall", X86_FEATURE_VMCALL, \
53 "vmmcall", X86_FEATURE_VMW_VMMCALL) 56 "vmmcall", X86_FEATURE_VMW_VMMCALL)
54#endif 57#endif