Re: [PATCH 5/7] x86: Use IBRS for firmware update path

From: Thomas Gleixner
Date: Fri Jan 05 2018 - 08:40:43 EST


On Thu, 4 Jan 2018, Tim Chen wrote:
> #ifdef APM_ZERO_SEGS
> # define APM_DO_ZERO_SEGS \
> "pushl %%ds\n\t" \
> @@ -28,6 +30,7 @@ static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in,
> u32 *eax, u32 *ebx, u32 *ecx,
> u32 *edx, u32 *esi)
> {
> + unprotected_firmware_begin();
> /*
> * N.B. We do NOT need a cld after the BIOS call
> * because we always save and restore the flags.
> @@ -44,6 +47,7 @@ static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in,
> "=S" (*esi)
> : "a" (func), "b" (ebx_in), "c" (ecx_in)
> : "memory", "cc");
> + unprotected_formware_end();

This doesn't even compile unless the new compiler speculates that into
unprotected_firmware_end().

Thanks,

tglx