summaryrefslogtreecommitdiff
path: root/arch/x86
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-09-25 00:48:32 +0400
committerDavid S. Miller <davem@davemloft.net>2014-09-25 00:48:32 +0400
commit4daaab4f0c2b55adccab08da06e17acc270cb84a (patch)
tree41dfea3867755d3853218d50533c5600ac8fa6c0 /arch/x86
parent3c4d1daecef875d28bdbe93587908c897c29ba71 (diff)
parentb94d525e58dc9638dd3f98094cb468bcfb262039 (diff)
downloadlinux-4daaab4f0c2b55adccab08da06e17acc270cb84a.tar.xz
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/boot/compressed/head_32.S54
-rw-r--r--arch/x86/boot/compressed/head_64.S56
-rw-r--r--arch/x86/crypto/aesni-intel_glue.c4
3 files changed, 31 insertions, 83 deletions
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index d6b8aa4c986c..cbed1407a5cd 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -30,33 +30,6 @@
#include <asm/boot.h>
#include <asm/asm-offsets.h>
-/*
- * Adjust our own GOT
- *
- * The relocation base must be in %ebx
- *
- * It is safe to call this macro more than once, because in some of the
- * code paths multiple invocations are inevitable, e.g. via the efi*
- * entry points.
- *
- * Relocation is only performed the first time.
- */
-.macro FIXUP_GOT
- cmpb $1, got_fixed(%ebx)
- je 2f
-
- leal _got(%ebx), %edx
- leal _egot(%ebx), %ecx
-1:
- cmpl %ecx, %edx
- jae 2f
- addl %ebx, (%edx)
- addl $4, %edx
- jmp 1b
-2:
- movb $1, got_fixed(%ebx)
-.endm
-
__HEAD
ENTRY(startup_32)
#ifdef CONFIG_EFI_STUB
@@ -83,9 +56,6 @@ ENTRY(efi_pe_entry)
add %esi, 88(%eax)
pushl %eax
- movl %esi, %ebx
- FIXUP_GOT
-
call make_boot_params
cmpl $0, %eax
je fail
@@ -111,10 +81,6 @@ ENTRY(efi32_stub_entry)
leal efi32_config(%esi), %eax
add %esi, 88(%eax)
pushl %eax
-
- movl %esi, %ebx
- FIXUP_GOT
-
2:
call efi_main
cmpl $0, %eax
@@ -224,7 +190,19 @@ relocated:
shrl $2, %ecx
rep stosl
- FIXUP_GOT
+/*
+ * Adjust our own GOT
+ */
+ leal _got(%ebx), %edx
+ leal _egot(%ebx), %ecx
+1:
+ cmpl %ecx, %edx
+ jae 2f
+ addl %ebx, (%edx)
+ addl $4, %edx
+ jmp 1b
+2:
+
/*
* Do the decompression, and jump to the new kernel..
*/
@@ -247,12 +225,8 @@ relocated:
xorl %ebx, %ebx
jmp *%eax
- .data
-/* Have we relocated the GOT? */
-got_fixed:
- .byte 0
-
#ifdef CONFIG_EFI_STUB
+ .data
efi32_config:
.fill 11,8,0
.long efi_call_phys
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 50f69c7eaaf4..2884e0c3e8a5 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -32,33 +32,6 @@
#include <asm/processor-flags.h>
#include <asm/asm-offsets.h>
-/*
- * Adjust our own GOT
- *
- * The relocation base must be in %rbx
- *
- * It is safe to call this macro more than once, because in some of the
- * code paths multiple invocations are inevitable, e.g. via the efi*
- * entry points.
- *
- * Relocation is only performed the first time.
- */
-.macro FIXUP_GOT
- cmpb $1, got_fixed(%rip)
- je 2f
-
- leaq _got(%rip), %rdx
- leaq _egot(%rip), %rcx
-1:
- cmpq %rcx, %rdx
- jae 2f
- addq %rbx, (%rdx)
- addq $8, %rdx
- jmp 1b
-2:
- movb $1, got_fixed(%rip)
-.endm
-
__HEAD
.code32
ENTRY(startup_32)
@@ -279,13 +252,10 @@ ENTRY(efi_pe_entry)
subq $1b, %rbp
/*
- * Relocate efi_config->call() and the GOT entries.
+ * Relocate efi_config->call().
*/
addq %rbp, efi64_config+88(%rip)
- movq %rbp, %rbx
- FIXUP_GOT
-
movq %rax, %rdi
call make_boot_params
cmpq $0,%rax
@@ -301,13 +271,10 @@ handover_entry:
subq $1b, %rbp
/*
- * Relocate efi_config->call() and the GOT entries.
+ * Relocate efi_config->call().
*/
movq efi_config(%rip), %rax
addq %rbp, 88(%rax)
-
- movq %rbp, %rbx
- FIXUP_GOT
2:
movq efi_config(%rip), %rdi
call efi_main
@@ -418,8 +385,19 @@ relocated:
shrq $3, %rcx
rep stosq
- FIXUP_GOT
-
+/*
+ * Adjust our own GOT
+ */
+ leaq _got(%rip), %rdx
+ leaq _egot(%rip), %rcx
+1:
+ cmpq %rcx, %rdx
+ jae 2f
+ addq %rbx, (%rdx)
+ addq $8, %rdx
+ jmp 1b
+2:
+
/*
* Do the decompression, and jump to the new kernel..
*/
@@ -459,10 +437,6 @@ gdt:
.quad 0x0000000000000000 /* TS continued */
gdt_end:
-/* Have we relocated the GOT? */
-got_fixed:
- .byte 0
-
#ifdef CONFIG_EFI_STUB
efi_config:
.quad 0
diff --git a/arch/x86/crypto/aesni-intel_glue.c b/arch/x86/crypto/aesni-intel_glue.c
index 888950f29fd9..a7ccd57f19e4 100644
--- a/arch/x86/crypto/aesni-intel_glue.c
+++ b/arch/x86/crypto/aesni-intel_glue.c
@@ -481,7 +481,7 @@ static void ctr_crypt_final(struct crypto_aes_ctx *ctx,
crypto_inc(ctrblk, AES_BLOCK_SIZE);
}
-#ifdef CONFIG_AS_AVX
+#if 0 /* temporary disabled due to failing crypto tests */
static void aesni_ctr_enc_avx_tfm(struct crypto_aes_ctx *ctx, u8 *out,
const u8 *in, unsigned int len, u8 *iv)
{
@@ -1522,7 +1522,7 @@ static int __init aesni_init(void)
aesni_gcm_dec_tfm = aesni_gcm_dec;
}
aesni_ctr_enc_tfm = aesni_ctr_enc;
-#ifdef CONFIG_AS_AVX
+#if 0 /* temporary disabled due to failing crypto tests */
if (cpu_has_avx) {
/* optimize performance of ctr mode encryption transform */
aesni_ctr_enc_tfm = aesni_ctr_enc_avx_tfm;