Skip to content

x86/idtentry: Error when CONFIG_HYPERV is set with LLVM_IAS=1 #1088

@dileks

Description

@dileks

With @jcai19 diff from #1043 (comment) applied and CONFIG_HYPERV=m I see with Linux v5.8-rc4 and LLVM_IAS=1 (here: Debian/testing AMD64):

  clang-11 -Wp,-MMD,arch/x86/entry/.entry_64.o.d -nostdinc -isystem /usr/lib/llvm-11/lib/clang/11.0.0/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -D__KERNEL__ -Qunused-arguments -D__ASSEMBLY__ -fno-PIE -Werror=unknown-warning-option -m64 -Wa,-gdwarf-4 -gz=zlib -DCC_USING_FENTRY    -c -o arch/x86/entry/entry_64.o arch/x86/entry/entry_64.S
...
<instantiation>:9:6: error: expected absolute expression
 .if HYPERVISOR_REENLIGHTENMENT_VECTOR == 3
     ^
<instantiation>:1:1: note: while in macro instantiation
idtentry HYPERVISOR_REENLIGHTENMENT_VECTOR asm_sysvec_hyperv_reenlightenment sysvec_hyperv_reenlightenment has_error_code=0
^
./arch/x86/include/asm/idtentry.h:627:1: note: while in macro instantiation
idtentry_sysvec HYPERVISOR_REENLIGHTENMENT_VECTOR sysvec_hyperv_reenlightenment;
^
<instantiation>:9:6: error: expected absolute expression
 .if HYPERVISOR_STIMER0_VECTOR == 3
     ^
<instantiation>:1:1: note: while in macro instantiation
idtentry HYPERVISOR_STIMER0_VECTOR asm_sysvec_hyperv_stimer0 sysvec_hyperv_stimer0 has_error_code=0
^
./arch/x86/include/asm/idtentry.h:628:1: note: while in macro instantiation
idtentry_sysvec HYPERVISOR_STIMER0_VECTOR sysvec_hyperv_stimer0;
^
make[5]: *** [scripts/Makefile.build:361: arch/x86/entry/entry_64.o] Error 1
make[4]: *** [scripts/Makefile.build:497: arch/x86/entry] Error 2
make[3]: *** [Makefile:1762: arch/x86] Error 2

Check arch/x86/include/asm/idtentry.h:

Line #625: #if IS_ENABLED(CONFIG_HYPERV)
Line #626: DECLARE_IDTENTRY_SYSVEC(HYPERVISOR_CALLBACK_VECTOR,	sysvec_hyperv_callback);
Line #627: DECLARE_IDTENTRY_SYSVEC(HYPERVISOR_REENLIGHTENMENT_VECTOR,	sysvec_hyperv_reenlightenment);
Line #628: DECLARE_IDTENTRY_SYSVEC(HYPERVISOR_STIMER0_VECTOR,	sysvec_hyperv_stimer0);
Line #629: #endif
  1. Workaround: Use -no-integrated-as (see invalid reassignment of non-absolute variable 'pos' #1043 (comment))
  2. Workaround: CONFIG_HYPERV=n

As @jcai19 points out this is a different issue to #1043.

Metadata

Metadata

Assignees

Labels

[ARCH] x86_64This bug impacts ARCH=x86_64[FIXED][LINUX] 5.8This bug was fixed in Linux 5.8[TOOL] integrated-asThe issue is relevant to LLVM integrated assembler

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions