Re: [PATCHv3, RESEND] x86/trampoline: Bypass compat mode in trampoline_start64() if not needed

From: Andi Kleen
Date: Thu Jan 25 2024 - 09:50:39 EST


> I think it is cleaner to switch to IRET here. Does this work for you?
>
> diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S
> index 608f108cba7d..14d9c7daf90f 100644
> --- a/arch/x86/realmode/rm/trampoline_64.S
> +++ b/arch/x86/realmode/rm/trampoline_64.S
> @@ -243,7 +243,9 @@ SYM_CODE_START(trampoline_start64)
> movl $pa_trampoline_pgd, %eax
> movq %rax, %cr3
>
> - jmpq *tr_start(%rip)
> + pushq $__KERNEL_CS
> + pushq tr_start(%rip)
> + lretq

Looks good. Thanks.

-Andi