Re: sev_es_trampoline_start undefined symbol referenced errors during kunit run

From: Borislav Petkov
Date: Mon Apr 14 2025 - 19:01:20 EST


On Mon, Apr 14, 2025 at 04:28:44PM -0600, Shuah Khan wrote:
> Hi Tom,
>
> I have been seeing sev_es_trampoline_start undefined symbol referenced errors
> during the following kunit test runs.
>
> ./tools/testing/kunit/kunit.py run --arch x86_64
> ./tools/testing/kunit/kunit.py run --alltests --arch x86_64
>
> The error is here:
>
> ERROR:root:ld:arch/x86/realmode/rm/realmode.lds:236: undefined symbol `sev_es_trampoline_start' referenced in expression
> make[6]: *** [../arch/x86/realmode/rm/Makefile:49: arch/x86/realmode/rm/realmode.elf] Error 1
> make[5]: *** [../arch/x86/realmode/Makefile:22: arch/x86/realmode/rm/realmode.bin] Error 2
> make[4]: *** [../scripts/Makefile.build:461: arch/x86/realmode] Error 2
>
> I made time to look into this error.
>
> sev_es_trampoline_start is referenced in arch/x86/coco/sev/core.c twice:
>
> - To override start_ip in wakeup_cpu_via_vmgexit()
> - In sev_es_setup_ap_jump_table() to compute startup_ip
>
> sev_es_trampoline_start is defined if CONFIG_AMD_MEM_ENCRYPT is enabled
> and all other references to it are under ifdef CONFIG_AMD_MEM_ENCRYPT
> conditional except the two in arch/x86/coco/sev/core.c
>
> git grep sev_es_trampoline_start
> arch/x86/coco/sev/core.c: start_ip = real_mode_header->sev_es_trampoline_start;
> arch/x86/coco/sev/core.c: startup_ip = (u16)(rmh->sev_es_trampoline_start -
> arch/x86/include/asm/realmode.h: u32 sev_es_trampoline_start;
> arch/x86/realmode/rm/header.S: .long pa_sev_es_trampoline_start
> arch/x86/realmode/rm/trampoline_64.S:SYM_CODE_START(sev_es_trampoline_start)
> arch/x86/realmode/rm/trampoline_64.S:SYM_CODE_END(sev_es_trampoline_start)
>
> Why are these references not under ifdef CONFIG_AMD_MEM_ENCRYPT conditional?

obj-$(CONFIG_AMD_MEM_ENCRYPT) += sev/

in arch/x86/coco/Makefile

The real problem looks like that pasyms.h thing which gets included at the end
of realmode.lds and which contains that symbol.

How exactly can this be reproduced? Exact steps please.

Thx.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette