[tip:x86/pti] x86/retpoline/hyperv: Convert assembler indirect jumps

2018-01-11 Thread tip-bot for David Woodhouse
Commit-ID:  e70e5892b28c18f517f29ab6e83bd57705104b31
Gitweb: https://git.kernel.org/tip/e70e5892b28c18f517f29ab6e83bd57705104b31
Author: David Woodhouse 
AuthorDate: Thu, 11 Jan 2018 21:46:30 +
Committer:  Thomas Gleixner 
CommitDate: Fri, 12 Jan 2018 00:14:30 +0100

x86/retpoline/hyperv: Convert assembler indirect jumps

Convert all indirect jumps in hyperv inline asm code to use non-speculative
sequences when CONFIG_RETPOLINE is enabled.

Signed-off-by: David Woodhouse 
Signed-off-by: Thomas Gleixner 
Acked-by: Arjan van de Ven 
Acked-by: Ingo Molnar 
Cc: gno...@lxorguk.ukuu.org.uk
Cc: Rik van Riel 
Cc: Andi Kleen 
Cc: Josh Poimboeuf 
Cc: thomas.lenda...@amd.com
Cc: Peter Zijlstra 
Cc: Linus Torvalds 
Cc: Jiri Kosina 
Cc: Andy Lutomirski 
Cc: Dave Hansen 
Cc: Kees Cook 
Cc: Tim Chen 
Cc: Greg Kroah-Hartman 
Cc: Paul Turner 
Link: 
https://lkml.kernel.org/r/1515707194-20531-9-git-send-email-d...@amazon.co.uk

---
 arch/x86/include/asm/mshyperv.h | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 581bb54..5119e4b 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /*
  * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@ -186,10 +187,11 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
return U64_MAX;
 
__asm__ __volatile__("mov %4, %%r8\n"
-"call *%5"
+CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input_address)
-:  "r" (output_address), "m" (hv_hypercall_pg)
+:  "r" (output_address),
+   THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory", "r8", "r9", "r10", "r11");
 #else
u32 input_address_hi = upper_32_bits(input_address);
@@ -200,13 +202,13 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
if (!hv_hypercall_pg)
return U64_MAX;
 
-   __asm__ __volatile__("call *%7"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=A" (hv_status),
   "+c" (input_address_lo), ASM_CALL_CONSTRAINT
 : "A" (control),
   "b" (input_address_hi),
   "D"(output_address_hi), "S"(output_address_lo),
-  "m" (hv_hypercall_pg)
+  THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory");
 #endif /* !x86_64 */
return hv_status;
@@ -227,10 +229,10 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
 
 #ifdef CONFIG_X86_64
{
-   __asm__ __volatile__("call *%4"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input1)
-: "m" (hv_hypercall_pg)
+: THUNK_TARGET(hv_hypercall_pg)
 : "cc", "r8", "r9", "r10", "r11");
}
 #else
@@ -238,13 +240,13 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
u32 input1_hi = upper_32_bits(input1);
u32 input1_lo = lower_32_bits(input1);
 
-   __asm__ __volatile__ ("call *%5"
+   __asm__ __volatile__ (CALL_NOSPEC
  : "=A"(hv_status),
"+c"(input1_lo),
ASM_CALL_CONSTRAINT
  : "A" (control),
"b" (input1_hi),
-   "m" (hv_hypercall_pg)
+   THUNK_TARGET(hv_hypercall_pg)
  : "cc", "edi", "esi");
}
 #endif


[tip:x86/pti] x86/retpoline/hyperv: Convert assembler indirect jumps

2018-01-10 Thread tip-bot for David Woodhouse
Commit-ID:  f14fd95d2f3e611619756ea3c008aee3b4bd4978
Gitweb: https://git.kernel.org/tip/f14fd95d2f3e611619756ea3c008aee3b4bd4978
Author: David Woodhouse 
AuthorDate: Tue, 9 Jan 2018 14:43:13 +
Committer:  Thomas Gleixner 
CommitDate: Wed, 10 Jan 2018 19:36:25 +0100

x86/retpoline/hyperv: Convert assembler indirect jumps

Convert all indirect jumps in hyperv inline asm code to use non-speculative
sequences when CONFIG_RETPOLINE is enabled.

Signed-off-by: David Woodhouse 
Signed-off-by: Thomas Gleixner 
Acked-by: Arjan van de Ven 
Acked-by: Ingo Molnar 
Cc: gno...@lxorguk.ukuu.org.uk
Cc: Rik van Riel 
Cc: Andi Kleen 
Cc: Peter Zijlstra 
Cc: Linus Torvalds 
Cc: Jiri Kosina 
Cc: Andy Lutomirski 
Cc: Dave Hansen 
Cc: Kees Cook 
Cc: Tim Chen 
Cc: Greg Kroah-Hartman 
Cc: Paul Turner 
Link: 
https://lkml.kernel.org/r/1515508997-6154-8-git-send-email-d...@amazon.co.uk


---
 arch/x86/include/asm/mshyperv.h | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 581bb54..5119e4b 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /*
  * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@ -186,10 +187,11 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
return U64_MAX;
 
__asm__ __volatile__("mov %4, %%r8\n"
-"call *%5"
+CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input_address)
-:  "r" (output_address), "m" (hv_hypercall_pg)
+:  "r" (output_address),
+   THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory", "r8", "r9", "r10", "r11");
 #else
u32 input_address_hi = upper_32_bits(input_address);
@@ -200,13 +202,13 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
if (!hv_hypercall_pg)
return U64_MAX;
 
-   __asm__ __volatile__("call *%7"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=A" (hv_status),
   "+c" (input_address_lo), ASM_CALL_CONSTRAINT
 : "A" (control),
   "b" (input_address_hi),
   "D"(output_address_hi), "S"(output_address_lo),
-  "m" (hv_hypercall_pg)
+  THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory");
 #endif /* !x86_64 */
return hv_status;
@@ -227,10 +229,10 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
 
 #ifdef CONFIG_X86_64
{
-   __asm__ __volatile__("call *%4"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input1)
-: "m" (hv_hypercall_pg)
+: THUNK_TARGET(hv_hypercall_pg)
 : "cc", "r8", "r9", "r10", "r11");
}
 #else
@@ -238,13 +240,13 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
u32 input1_hi = upper_32_bits(input1);
u32 input1_lo = lower_32_bits(input1);
 
-   __asm__ __volatile__ ("call *%5"
+   __asm__ __volatile__ (CALL_NOSPEC
  : "=A"(hv_status),
"+c"(input1_lo),
ASM_CALL_CONSTRAINT
  : "A" (control),
"b" (input1_hi),
-   "m" (hv_hypercall_pg)
+   THUNK_TARGET(hv_hypercall_pg)
  : "cc", "edi", "esi");
}
 #endif


[tip:x86/pti] x86/retpoline/hyperv: Convert assembler indirect jumps

2018-01-10 Thread tip-bot for David Woodhouse
Commit-ID:  713626ed94ad69d330fab550c94d7173cfcbf5ce
Gitweb: https://git.kernel.org/tip/713626ed94ad69d330fab550c94d7173cfcbf5ce
Author: David Woodhouse 
AuthorDate: Tue, 9 Jan 2018 14:43:13 +
Committer:  Thomas Gleixner 
CommitDate: Wed, 10 Jan 2018 19:09:11 +0100

x86/retpoline/hyperv: Convert assembler indirect jumps

Convert all indirect jumps in hyperv inline asm code to use non-speculative
sequences when CONFIG_RETPOLINE is enabled.

Signed-off-by: David Woodhouse 
Signed-off-by: Thomas Gleixner 
Acked-by: Arjan van de Ven 
Acked-by: Ingo Molnar 
Cc: gno...@lxorguk.ukuu.org.uk
Cc: Rik van Riel 
Cc: Andi Kleen 
Cc: Peter Zijlstra 
Cc: Linus Torvalds 
Cc: Jiri Kosina 
Cc: Andy Lutomirski 
Cc: Dave Hansen 
Cc: Kees Cook 
Cc: Tim Chen 
Cc: Greg Kroah-Hartman 
Cc: Paul Turner 
Link: 
https://lkml.kernel.org/r/1515508997-6154-8-git-send-email-d...@amazon.co.uk


---
 arch/x86/include/asm/mshyperv.h | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 581bb54..5119e4b 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /*
  * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@ -186,10 +187,11 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
return U64_MAX;
 
__asm__ __volatile__("mov %4, %%r8\n"
-"call *%5"
+CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input_address)
-:  "r" (output_address), "m" (hv_hypercall_pg)
+:  "r" (output_address),
+   THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory", "r8", "r9", "r10", "r11");
 #else
u32 input_address_hi = upper_32_bits(input_address);
@@ -200,13 +202,13 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
if (!hv_hypercall_pg)
return U64_MAX;
 
-   __asm__ __volatile__("call *%7"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=A" (hv_status),
   "+c" (input_address_lo), ASM_CALL_CONSTRAINT
 : "A" (control),
   "b" (input_address_hi),
   "D"(output_address_hi), "S"(output_address_lo),
-  "m" (hv_hypercall_pg)
+  THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory");
 #endif /* !x86_64 */
return hv_status;
@@ -227,10 +229,10 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
 
 #ifdef CONFIG_X86_64
{
-   __asm__ __volatile__("call *%4"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input1)
-: "m" (hv_hypercall_pg)
+: THUNK_TARGET(hv_hypercall_pg)
 : "cc", "r8", "r9", "r10", "r11");
}
 #else
@@ -238,13 +240,13 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
u32 input1_hi = upper_32_bits(input1);
u32 input1_lo = lower_32_bits(input1);
 
-   __asm__ __volatile__ ("call *%5"
+   __asm__ __volatile__ (CALL_NOSPEC
  : "=A"(hv_status),
"+c"(input1_lo),
ASM_CALL_CONSTRAINT
  : "A" (control),
"b" (input1_hi),
-   "m" (hv_hypercall_pg)
+   THUNK_TARGET(hv_hypercall_pg)
  : "cc", "edi", "esi");
}
 #endif


[tip:x86/pti] x86/retpoline/hyperv: Convert assembler indirect jumps

2018-01-10 Thread tip-bot for David Woodhouse
Commit-ID:  6916b4cc0d2b1e2191acc82d75cce8a25b3dc9be
Gitweb: https://git.kernel.org/tip/6916b4cc0d2b1e2191acc82d75cce8a25b3dc9be
Author: David Woodhouse 
AuthorDate: Tue, 9 Jan 2018 14:43:13 +
Committer:  Thomas Gleixner 
CommitDate: Wed, 10 Jan 2018 18:28:23 +0100

x86/retpoline/hyperv: Convert assembler indirect jumps

Convert all indirect jumps in hyperv inline asm code to use non-speculative
sequences when CONFIG_RETPOLINE is enabled.

Signed-off-by: David Woodhouse 
Signed-off-by: Thomas Gleixner 
Acked-by: Arjan van de Ven 
Acked-by: Ingo Molnar 
Cc: gno...@lxorguk.ukuu.org.uk
Cc: Rik van Riel 
Cc: Andi Kleen 
Cc: Peter Zijlstra 
Cc: Linus Torvalds 
Cc: Jiri Kosina 
Cc: Andy Lutomirski 
Cc: Dave Hansen 
Cc: Kees Cook 
Cc: Tim Chen 
Cc: Greg Kroah-Hartman 
Cc: Paul Turner 
Link: 
https://lkml.kernel.org/r/1515508997-6154-8-git-send-email-d...@amazon.co.uk


---
 arch/x86/include/asm/mshyperv.h | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 581bb54..5119e4b 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /*
  * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@ -186,10 +187,11 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
return U64_MAX;
 
__asm__ __volatile__("mov %4, %%r8\n"
-"call *%5"
+CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input_address)
-:  "r" (output_address), "m" (hv_hypercall_pg)
+:  "r" (output_address),
+   THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory", "r8", "r9", "r10", "r11");
 #else
u32 input_address_hi = upper_32_bits(input_address);
@@ -200,13 +202,13 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
if (!hv_hypercall_pg)
return U64_MAX;
 
-   __asm__ __volatile__("call *%7"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=A" (hv_status),
   "+c" (input_address_lo), ASM_CALL_CONSTRAINT
 : "A" (control),
   "b" (input_address_hi),
   "D"(output_address_hi), "S"(output_address_lo),
-  "m" (hv_hypercall_pg)
+  THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory");
 #endif /* !x86_64 */
return hv_status;
@@ -227,10 +229,10 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
 
 #ifdef CONFIG_X86_64
{
-   __asm__ __volatile__("call *%4"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input1)
-: "m" (hv_hypercall_pg)
+: THUNK_TARGET(hv_hypercall_pg)
 : "cc", "r8", "r9", "r10", "r11");
}
 #else
@@ -238,13 +240,13 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
u32 input1_hi = upper_32_bits(input1);
u32 input1_lo = lower_32_bits(input1);
 
-   __asm__ __volatile__ ("call *%5"
+   __asm__ __volatile__ (CALL_NOSPEC
  : "=A"(hv_status),
"+c"(input1_lo),
ASM_CALL_CONSTRAINT
  : "A" (control),
"b" (input1_hi),
-   "m" (hv_hypercall_pg)
+   THUNK_TARGET(hv_hypercall_pg)
  : "cc", "edi", "esi");
}
 #endif


[tip:x86/pti] x86/retpoline/hyperv: Convert assembler indirect jumps

2018-01-09 Thread tip-bot for David Woodhouse
Commit-ID:  d4c3db4aa32afef03ba09ba9f1e522828b886854
Gitweb: https://git.kernel.org/tip/d4c3db4aa32afef03ba09ba9f1e522828b886854
Author: David Woodhouse 
AuthorDate: Tue, 9 Jan 2018 14:43:13 +
Committer:  Thomas Gleixner 
CommitDate: Tue, 9 Jan 2018 16:17:53 +0100

x86/retpoline/hyperv: Convert assembler indirect jumps

Convert all indirect jumps in hyperv inline asm code to use non-speculative
sequences when CONFIG_RETPOLINE is enabled.

Signed-off-by: David Woodhouse 
Signed-off-by: Thomas Gleixner 
Acked-by: Arjan van de Ven 
Acked-by: Ingo Molnar 
Cc: gno...@lxorguk.ukuu.org.uk
Cc: Rik van Riel 
Cc: Andi Kleen 
Cc: Peter Zijlstra 
Cc: Linus Torvalds 
Cc: Jiri Kosina 
Cc: Andy Lutomirski 
Cc: Dave Hansen 
Cc: Kees Cook 
Cc: Tim Chen 
Cc: Greg Kroah-Hartman 
Cc: Paul Turner 
Link: 
https://lkml.kernel.org/r/1515508997-6154-8-git-send-email-d...@amazon.co.uk

---
 arch/x86/include/asm/mshyperv.h | 18 ++
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h
index 581bb54..5119e4b 100644
--- a/arch/x86/include/asm/mshyperv.h
+++ b/arch/x86/include/asm/mshyperv.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 /*
  * The below CPUID leaves are present if VersionAndFeatures.HypervisorPresent
@@ -186,10 +187,11 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
return U64_MAX;
 
__asm__ __volatile__("mov %4, %%r8\n"
-"call *%5"
+CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input_address)
-:  "r" (output_address), "m" (hv_hypercall_pg)
+:  "r" (output_address),
+   THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory", "r8", "r9", "r10", "r11");
 #else
u32 input_address_hi = upper_32_bits(input_address);
@@ -200,13 +202,13 @@ static inline u64 hv_do_hypercall(u64 control, void 
*input, void *output)
if (!hv_hypercall_pg)
return U64_MAX;
 
-   __asm__ __volatile__("call *%7"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=A" (hv_status),
   "+c" (input_address_lo), ASM_CALL_CONSTRAINT
 : "A" (control),
   "b" (input_address_hi),
   "D"(output_address_hi), "S"(output_address_lo),
-  "m" (hv_hypercall_pg)
+  THUNK_TARGET(hv_hypercall_pg)
 : "cc", "memory");
 #endif /* !x86_64 */
return hv_status;
@@ -227,10 +229,10 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
 
 #ifdef CONFIG_X86_64
{
-   __asm__ __volatile__("call *%4"
+   __asm__ __volatile__(CALL_NOSPEC
 : "=a" (hv_status), ASM_CALL_CONSTRAINT,
   "+c" (control), "+d" (input1)
-: "m" (hv_hypercall_pg)
+: THUNK_TARGET(hv_hypercall_pg)
 : "cc", "r8", "r9", "r10", "r11");
}
 #else
@@ -238,13 +240,13 @@ static inline u64 hv_do_fast_hypercall8(u16 code, u64 
input1)
u32 input1_hi = upper_32_bits(input1);
u32 input1_lo = lower_32_bits(input1);
 
-   __asm__ __volatile__ ("call *%5"
+   __asm__ __volatile__ (CALL_NOSPEC
  : "=A"(hv_status),
"+c"(input1_lo),
ASM_CALL_CONSTRAINT
  : "A" (control),
"b" (input1_hi),
-   "m" (hv_hypercall_pg)
+   THUNK_TARGET(hv_hypercall_pg)
  : "cc", "edi", "esi");
}
 #endif