On 26.11.2021 13:34, Andrew Cooper wrote: > Each IDT vector needs to land on an endbr64 instruction. This is especially > important for the #CP handler, which will escalate to #DF if the endbr64 is > missing. > > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
Reviewed-by: Jan Beulich <jbeul...@suse.com> One remark though: > @@ -1136,7 +1158,8 @@ autogen_stubs: /* Automatically generated stubs. */ > #endif > > ALIGN > -1: pushq $0 > +1: ENDBR64 > + pushq $0 > movb $vec,4(%rsp) > jmp common_interrupt > > @@ -1146,7 +1169,8 @@ autogen_stubs: /* Automatically generated stubs. */ > .elseif vec == X86_EXC_CSO || vec == X86_EXC_SPV || \ > vec == X86_EXC_VE || (vec > X86_EXC_CP && vec < TRAP_nr) > > -1: test $8,%spl /* 64bit exception frames are 16 byte aligned, > but the word */ > +1: ENDBR64 > + test $8,%spl /* 64bit exception frames are 16 byte aligned, > but the word */ > jz 2f /* size is 8 bytes. Check whether the > processor gave us an */ > pushq $0 /* error code, and insert an empty one if not. > */ > 2: movb $vec,4(%rsp) Like with initializers of compound objects vs trailing commas there, I think it would help if we moved away from placing insns on the same lines as labels. As can be seen here, inserting something always means touching two lines instead of just adding one. Jan