* [PATCH 0/2] x86/cpu/vmware: Fixes for 5.4 @ 2019-10-18 13:40 Thomas Hellström (VMware) 2019-10-18 13:40 ` [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL Thomas Hellström (VMware) 2019-10-18 13:40 ` [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro Thomas Hellström (VMware) 0 siblings, 2 replies; 6+ messages in thread From: Thomas Hellström (VMware) @ 2019-10-18 13:40 UTC (permalink / raw) To: linux-kernel; +Cc: Thomas Hellstrom From: Thomas Hellstrom <thellstrom@vmware.com> Two fixes for recently introduced regressions: Patch 1 is more or less idential to a previous patch fixing the VMW_PORT macro on LLVM's assembler. However, that patch left out the VMW_HYPERCALL macro (probably not configured for use), so let's fix that also. Patch 2 fixes another VMW_PORT run-time regression at platform detection time ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL 2019-10-18 13:40 [PATCH 0/2] x86/cpu/vmware: Fixes for 5.4 Thomas Hellström (VMware) @ 2019-10-18 13:40 ` Thomas Hellström (VMware) 2019-10-18 16:28 ` Nick Desaulniers 2019-10-18 16:33 ` Sean Christopherson 2019-10-18 13:40 ` [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro Thomas Hellström (VMware) 1 sibling, 2 replies; 6+ messages in thread From: Thomas Hellström (VMware) @ 2019-10-18 13:40 UTC (permalink / raw) To: linux-kernel Cc: Thomas Hellstrom, Sami Tolvanen, clang-built-linux, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86-ml, Borislav Petkov From: Thomas Hellstrom <thellstrom@vmware.com> LLVM's assembler doesn't accept the short form INL instruction: inl (%%dx) but instead insists on the output register to be explicitly specified. This was previously fixed for the VMWARE_PORT macro. Fix it also for the VMWARE_HYPERCALL macro. Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") Suggested-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Cc: clang-built-linux@googlegroups.com Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Cc: Borislav Petkov <bp@suse.de> --- arch/x86/include/asm/vmware.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h index e00c9e875933..f5fbe3778aef 100644 --- a/arch/x86/include/asm/vmware.h +++ b/arch/x86/include/asm/vmware.h @@ -29,7 +29,8 @@ /* The low bandwidth call. The low word of edx is presumed clear. */ #define VMWARE_HYPERCALL \ - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; inl (%%dx)", \ + ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT \ + ", %%dx; inl (%%dx), %%eax", \ "vmcall", X86_FEATURE_VMCALL, \ "vmmcall", X86_FEATURE_VMW_VMMCALL) -- 2.21.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL 2019-10-18 13:40 ` [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL Thomas Hellström (VMware) @ 2019-10-18 16:28 ` Nick Desaulniers 2019-10-18 16:33 ` Sean Christopherson 1 sibling, 0 replies; 6+ messages in thread From: Nick Desaulniers @ 2019-10-18 16:28 UTC (permalink / raw) To: Thomas Hellström (VMware) Cc: LKML, Thomas Hellstrom, Sami Tolvanen, clang-built-linux, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86-ml, Borislav Petkov On Fri, Oct 18, 2019 at 6:41 AM Thomas Hellström (VMware) <thomas_os@shipmail.org> wrote: > > From: Thomas Hellstrom <thellstrom@vmware.com> > > LLVM's assembler doesn't accept the short form INL instruction: > > inl (%%dx) > > but instead insists on the output register to be explicitly specified. > > This was previously fixed for the VMWARE_PORT macro. Fix it also for > the VMWARE_HYPERCALL macro. > > Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") > Suggested-by: Sami Tolvanen <samitolvanen@google.com> > Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Thank you for the patch. Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > Cc: clang-built-linux@googlegroups.com > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: x86-ml <x86@kernel.org> > Cc: Borislav Petkov <bp@suse.de> > --- > arch/x86/include/asm/vmware.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h > index e00c9e875933..f5fbe3778aef 100644 > --- a/arch/x86/include/asm/vmware.h > +++ b/arch/x86/include/asm/vmware.h > @@ -29,7 +29,8 @@ > > /* The low bandwidth call. The low word of edx is presumed clear. */ > #define VMWARE_HYPERCALL \ > - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; inl (%%dx)", \ > + ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT \ > + ", %%dx; inl (%%dx), %%eax", \ > "vmcall", X86_FEATURE_VMCALL, \ > "vmmcall", X86_FEATURE_VMW_VMMCALL) > > -- > 2.21.0 > > -- > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group. > To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20191018134052.3023-2-thomas_os%40shipmail.org. -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL 2019-10-18 13:40 ` [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL Thomas Hellström (VMware) 2019-10-18 16:28 ` Nick Desaulniers @ 2019-10-18 16:33 ` Sean Christopherson 1 sibling, 0 replies; 6+ messages in thread From: Sean Christopherson @ 2019-10-18 16:33 UTC (permalink / raw) To: Thomas Hellström (VMware) Cc: linux-kernel, Thomas Hellstrom, Sami Tolvanen, clang-built-linux, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86-ml, Borislav Petkov On Fri, Oct 18, 2019 at 03:40:51PM +0200, Thomas Hellström (VMware) wrote: > From: Thomas Hellstrom <thellstrom@vmware.com> > > LLVM's assembler doesn't accept the short form INL instruction: > > inl (%%dx) > > but instead insists on the output register to be explicitly specified. > > This was previously fixed for the VMWARE_PORT macro. Fix it also for > the VMWARE_HYPERCALL macro. > > Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") > Suggested-by: Sami Tolvanen <samitolvanen@google.com> > Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> > Cc: clang-built-linux@googlegroups.com > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: x86-ml <x86@kernel.org> > Cc: Borislav Petkov <bp@suse.de> > --- > arch/x86/include/asm/vmware.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h > index e00c9e875933..f5fbe3778aef 100644 > --- a/arch/x86/include/asm/vmware.h > +++ b/arch/x86/include/asm/vmware.h > @@ -29,7 +29,8 @@ > > /* The low bandwidth call. The low word of edx is presumed clear. */ > #define VMWARE_HYPERCALL \ > - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; inl (%%dx)", \ > + ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT \ > + ", %%dx; inl (%%dx), %%eax", \ Why wrap in the middle of movw? Wrapping between instructions or letting the line poke out is more readable IMO, e.g. ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; " \ "inl (%%dx), %%eax", \ or ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT ", %%dx; inl (%%dx), %%eax", \ > "vmcall", X86_FEATURE_VMCALL, \ > "vmmcall", X86_FEATURE_VMW_VMMCALL) > > -- > 2.21.0 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro 2019-10-18 13:40 [PATCH 0/2] x86/cpu/vmware: Fixes for 5.4 Thomas Hellström (VMware) 2019-10-18 13:40 ` [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL Thomas Hellström (VMware) @ 2019-10-18 13:40 ` Thomas Hellström (VMware) 2019-10-18 16:38 ` Sean Christopherson 1 sibling, 1 reply; 6+ messages in thread From: Thomas Hellström (VMware) @ 2019-10-18 13:40 UTC (permalink / raw) To: linux-kernel Cc: Thomas Hellstrom, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86-ml, Borislav Petkov From: Thomas Hellstrom <thellstrom@vmware.com> 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. Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Cc: Borislav Petkov <bp@suse.de> --- arch/x86/include/asm/vmware.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h index f5fbe3778aef..d20eda0c6ed8 100644 --- a/arch/x86/include/asm/vmware.h +++ b/arch/x86/include/asm/vmware.h @@ -4,6 +4,7 @@ #include <asm/cpufeatures.h> #include <asm/alternative.h> +#include <linux/stringify.h> /* * The hypercall definitions differ in the low word of the %edx argument @@ -20,8 +21,8 @@ */ /* Old port-based version */ -#define VMWARE_HYPERVISOR_PORT "0x5658" -#define VMWARE_HYPERVISOR_PORT_HB "0x5659" +#define VMWARE_HYPERVISOR_PORT 0x5658 +#define VMWARE_HYPERVISOR_PORT_HB 0x5659 /* Current vmcall / vmmcall version */ #define VMWARE_HYPERVISOR_HB BIT(0) @@ -29,7 +30,7 @@ /* The low bandwidth call. The low word of edx is presumed clear. */ #define VMWARE_HYPERCALL \ - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT \ + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT) \ ", %%dx; inl (%%dx), %%eax", \ "vmcall", X86_FEATURE_VMCALL, \ "vmmcall", X86_FEATURE_VMW_VMMCALL) @@ -39,7 +40,8 @@ * HB and OUT bits set. */ #define VMWARE_HYPERCALL_HB_OUT \ - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep outsb", \ + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) \ + ", %%dx; rep outsb", \ "vmcall", X86_FEATURE_VMCALL, \ "vmmcall", X86_FEATURE_VMW_VMMCALL) @@ -48,7 +50,8 @@ * HB bit set. */ #define VMWARE_HYPERCALL_HB_IN \ - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep insb", \ + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) \ + ", %%dx; rep insb", \ "vmcall", X86_FEATURE_VMCALL, \ "vmmcall", X86_FEATURE_VMW_VMMCALL) #endif -- 2.21.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro 2019-10-18 13:40 ` [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro Thomas Hellström (VMware) @ 2019-10-18 16:38 ` Sean Christopherson 0 siblings, 0 replies; 6+ messages in thread From: Sean Christopherson @ 2019-10-18 16:38 UTC (permalink / raw) To: Thomas Hellström (VMware) Cc: linux-kernel, Thomas Hellstrom, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86-ml, Borislav Petkov On Fri, Oct 18, 2019 at 03:40:52PM +0200, Thomas Hellström (VMware) wrote: > From: Thomas Hellstrom <thellstrom@vmware.com> > > 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. > > Fixes: b4dd4f6e3648 ("Add a header file for hypercall definitions") > Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Ingo Molnar <mingo@redhat.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: x86-ml <x86@kernel.org> > Cc: Borislav Petkov <bp@suse.de> > --- > arch/x86/include/asm/vmware.h | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h > index f5fbe3778aef..d20eda0c6ed8 100644 > --- a/arch/x86/include/asm/vmware.h > +++ b/arch/x86/include/asm/vmware.h > @@ -4,6 +4,7 @@ > > #include <asm/cpufeatures.h> > #include <asm/alternative.h> > +#include <linux/stringify.h> > > /* > * The hypercall definitions differ in the low word of the %edx argument > @@ -20,8 +21,8 @@ > */ > > /* Old port-based version */ > -#define VMWARE_HYPERVISOR_PORT "0x5658" > -#define VMWARE_HYPERVISOR_PORT_HB "0x5659" > +#define VMWARE_HYPERVISOR_PORT 0x5658 > +#define VMWARE_HYPERVISOR_PORT_HB 0x5659 > > /* Current vmcall / vmmcall version */ > #define VMWARE_HYPERVISOR_HB BIT(0) > @@ -29,7 +30,7 @@ > > /* The low bandwidth call. The low word of edx is presumed clear. */ > #define VMWARE_HYPERCALL \ > - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT \ > + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT) \ > ", %%dx; inl (%%dx), %%eax", \ > "vmcall", X86_FEATURE_VMCALL, \ > "vmmcall", X86_FEATURE_VMW_VMMCALL) > @@ -39,7 +40,8 @@ > * HB and OUT bits set. > */ > #define VMWARE_HYPERCALL_HB_OUT \ > - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep outsb", \ > + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) \ > + ", %%dx; rep outsb", \ > "vmcall", X86_FEATURE_VMCALL, \ > "vmmcall", X86_FEATURE_VMW_VMMCALL) > > @@ -48,7 +50,8 @@ > * HB bit set. > */ > #define VMWARE_HYPERCALL_HB_IN \ > - ALTERNATIVE_2("movw $" VMWARE_HYPERVISOR_PORT_HB ", %%dx; rep insb", \ > + ALTERNATIVE_2("movw $" __stringify(VMWARE_HYPERVISOR_PORT_HB) \ > + ", %%dx; rep insb", \ Same comment on wrapping in the middle of an instruction. Wrapping after movw will stick out, but only by a char or two. > "vmcall", X86_FEATURE_VMCALL, \ > "vmmcall", X86_FEATURE_VMW_VMMCALL) > #endif > -- > 2.21.0 > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-10-18 16:38 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-10-18 13:40 [PATCH 0/2] x86/cpu/vmware: Fixes for 5.4 Thomas Hellström (VMware) 2019-10-18 13:40 ` [PATCH 1/2] x86/cpu/vmware: Use the full form of INL in VMWARE_HYPERCALL Thomas Hellström (VMware) 2019-10-18 16:28 ` Nick Desaulniers 2019-10-18 16:33 ` Sean Christopherson 2019-10-18 13:40 ` [PATCH 2/2] x86/cpu/vmware: Fix platform detection VMWARE_PORT macro Thomas Hellström (VMware) 2019-10-18 16:38 ` Sean Christopherson
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).