Re: [PATCH] efi/x86: Drop the special GDT for the EFI thunk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 24 May 2020 at 00:15, Arvind Sankar <nivedita@xxxxxxxxxxxx> wrote:
>
> Instead of using efi_gdt64 to switch back to 64-bit mode and then
> switching to the real boot-time GDT, just switch to the boot-time GDT
> directly. The two GDT's are identical other than efi_gdt64 not including
> the 32-bit code segment.
>
> Signed-off-by: Arvind Sankar <nivedita@xxxxxxxxxxxx>

Queued, thanks.

> ---
>  arch/x86/boot/compressed/efi_thunk_64.S | 19 +++----------------
>  1 file changed, 3 insertions(+), 16 deletions(-)
>
> diff --git a/arch/x86/boot/compressed/efi_thunk_64.S b/arch/x86/boot/compressed/efi_thunk_64.S
> index 2b2049259619..c4bb0f9363f5 100644
> --- a/arch/x86/boot/compressed/efi_thunk_64.S
> +++ b/arch/x86/boot/compressed/efi_thunk_64.S
> @@ -28,8 +28,6 @@ SYM_FUNC_START(__efi64_thunk)
>         push    %rbx
>
>         leaq    1f(%rip), %rbp
> -       leaq    efi_gdt64(%rip), %rbx
> -       movl    %ebx, 2(%rbx)           /* Fixup the gdt base address */
>
>         movl    %ds, %eax
>         push    %rax
> @@ -48,7 +46,8 @@ SYM_FUNC_START(__efi64_thunk)
>         movl    %r8d, 0xc(%rsp)
>         movl    %r9d, 0x10(%rsp)
>
> -       sgdt    0x14(%rsp)
> +       leaq    0x14(%rsp), %rbx
> +       sgdt    (%rbx)
>
>         /*
>          * Switch to gdt with 32-bit segments. This is the firmware GDT
> @@ -68,8 +67,7 @@ SYM_FUNC_START(__efi64_thunk)
>         pushq   %rax
>         lretq
>
> -1:     lgdt    0x14(%rsp)
> -       addq    $32, %rsp
> +1:     addq    $32, %rsp
>         movq    %rdi, %rax
>
>         pop     %rbx
> @@ -175,14 +173,3 @@ SYM_DATA_END(efi32_boot_cs)
>  SYM_DATA_START(efi32_boot_ds)
>         .word   0
>  SYM_DATA_END(efi32_boot_ds)
> -
> -SYM_DATA_START(efi_gdt64)
> -       .word   efi_gdt64_end - efi_gdt64
> -       .long   0                       /* Filled out by user */
> -       .word   0
> -       .quad   0x0000000000000000      /* NULL descriptor */
> -       .quad   0x00af9a000000ffff      /* __KERNEL_CS */
> -       .quad   0x00cf92000000ffff      /* __KERNEL_DS */
> -       .quad   0x0080890000000000      /* TS descriptor */
> -       .quad   0x0000000000000000      /* TS continued */
> -SYM_DATA_END_LABEL(efi_gdt64, SYM_L_LOCAL, efi_gdt64_end)
> --
> 2.26.2
>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux