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


Reply via email to