public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andy Lutomirski <luto@amacapital.net>,
	Brian Gerst <brgerst@gmail.com>, X86 ML <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 3/5] x86/cpufeature: Get rid of the non-asm goto variant
Date: Thu, 21 Jan 2016 19:34:44 +0100	[thread overview]
Message-ID: <1453401286-26966-4-git-send-email-bp@alien8.de> (raw)
In-Reply-To: <1453401286-26966-1-git-send-email-bp@alien8.de>

From: Borislav Petkov <bp@suse.de>

I can simply quote hpa from the mail:

"Get rid of the non-asm goto variant and just fall back to dynamic if
asm goto is unavailable. It doesn't make any sense, really, if it is
supposed to be safe, and by now the asm goto-capable gcc is in more wide
use. (Originally the gcc 3.x fallback to pure dynamic didn't exist,
either.)"

Booy, am I lazy.

Signed-off-by: Borislav Petkov <bp@suse.de>
Suggested-by: "H. Peter Anvin" <hpa@zytor.com>
---
 arch/x86/include/asm/cpufeature.h | 38 +-------------------------------------
 1 file changed, 1 insertion(+), 37 deletions(-)

diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
index 2b0abb241205..e4759223f82c 100644
--- a/arch/x86/include/asm/cpufeature.h
+++ b/arch/x86/include/asm/cpufeature.h
@@ -174,43 +174,7 @@ static __always_inline __pure bool _static_cpu_has(u16 bit)
 	t_dynamic:
 		return __static_cpu_has(bit);
 #else
-		u8 flag;
-		/* Open-coded due to __stringify() in ALTERNATIVE() */
-		asm volatile("1: movb $2,%0\n"
-			     "2:\n"
-			     ".section .altinstructions,\"a\"\n"
-			     " .long 1b - .\n"		/* src offset */
-			     " .long 3f - .\n"		/* repl offset */
-			     " .word %P2\n"		/* always replace */
-			     " .byte 2b - 1b\n"		/* source len */
-			     " .byte 4f - 3f\n"		/* replacement len */
-			     " .byte 0\n"		/* pad len */
-			     ".previous\n"
-			     ".section .discard,\"aw\",@progbits\n"
-			     " .byte 0xff + (4f-3f) - (2b-1b)\n" /* size check */
-			     ".previous\n"
-			     ".section .altinstr_replacement,\"ax\"\n"
-			     "3: movb $0,%0\n"
-			     "4:\n"
-			     ".previous\n"
-			     ".section .altinstructions,\"a\"\n"
-			     " .long 1b - .\n"		/* src offset */
-			     " .long 5f - .\n"		/* repl offset */
-			     " .word %P1\n"		/* feature bit */
-			     " .byte 4b - 3b\n"		/* src len */
-			     " .byte 6f - 5f\n"		/* repl len */
-			     " .byte 0\n"		/* pad len */
-			     ".previous\n"
-			     ".section .discard,\"aw\",@progbits\n"
-			     " .byte 0xff + (6f-5f) - (4b-3b)\n" /* size check */
-			     ".previous\n"
-			     ".section .altinstr_replacement,\"ax\"\n"
-			     "5: movb $1,%0\n"
-			     "6:\n"
-			     ".previous\n"
-			     : "=qm" (flag)
-			     : "i" (bit), "i" (X86_FEATURE_ALWAYS));
-		return (flag == 2 ? __static_cpu_has(bit) : flag);
+		return boot_cpu_has(bit);
 #endif /* CC_HAVE_ASM_GOTO */
 }
 
-- 
2.3.5

  parent reply	other threads:[~2016-01-21 18:35 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-21 18:34 [RFC PATCH 0/5] x86/cpufeature: Cleanups and improvements Borislav Petkov
2016-01-21 18:34 ` [PATCH 1/5] x86/cpufeature: Carve out X86_FEATURE_* Borislav Petkov
2016-01-21 18:57   ` H. Peter Anvin
2016-01-21 19:03     ` Borislav Petkov
2016-01-22 11:19       ` Borislav Petkov
2016-02-03 14:36         ` David Howells
2016-01-21 18:34 ` [PATCH 2/5] x86/cpufeature: Remove static_cpu_has() Borislav Petkov
2016-01-21 19:04   ` Andy Lutomirski
2016-01-21 19:39     ` Borislav Petkov
2016-01-21 19:41       ` H. Peter Anvin
2016-01-21 19:51         ` Borislav Petkov
2016-01-21 19:05   ` H. Peter Anvin
2016-01-21 18:34 ` Borislav Petkov [this message]
2016-01-21 18:59   ` [PATCH 3/5] x86/cpufeature: Get rid of the non-asm goto variant H. Peter Anvin
2016-01-21 18:34 ` [PATCH 4/5] x86/alternatives: Add an auxilary section Borislav Petkov
2016-01-21 19:00   ` H. Peter Anvin
2016-01-21 19:07     ` Borislav Petkov
2016-01-21 19:10       ` H. Peter Anvin
2016-01-21 18:34 ` [PATCH 5/5] x86/alternatives: Discard dynamic check after init Borislav Petkov
2016-01-21 19:03   ` H. Peter Anvin
2016-01-21 21:53 ` [RFC PATCH 0/5] x86/cpufeature: Cleanups and improvements Brian Gerst
2016-01-21 22:20   ` Borislav Petkov

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=1453401286-26966-4-git-send-email-bp@alien8.de \
    --to=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=x86@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox