Re: [PATCH v6 70/76] x86/smpboot: Setup TSS for starting AP

From: Borislav Petkov
Date: Mon Aug 31 2020 - 13:25:26 EST


On Mon, Aug 24, 2020 at 10:55:05AM +0200, Joerg Roedel wrote:
> @@ -1814,27 +1814,26 @@ static inline void ucode_cpu_init(int cpu)
> load_ucode_ap();
> }
>
> -static inline void tss_setup_ist(struct tss_struct *tss)
> +static inline void tss_setup_ist(struct tss_struct *tss,
> + struct cpu_entry_area *cea)
> {
> /* Set up the per-CPU TSS IST stacks */
> - tss->x86_tss.ist[IST_INDEX_DF] = __this_cpu_ist_top_va(DF);
> - tss->x86_tss.ist[IST_INDEX_NMI] = __this_cpu_ist_top_va(NMI);
> - tss->x86_tss.ist[IST_INDEX_DB] = __this_cpu_ist_top_va(DB);
> - tss->x86_tss.ist[IST_INDEX_MCE] = __this_cpu_ist_top_va(MCE);
> + tss->x86_tss.ist[IST_INDEX_DF] = CEA_ESTACK_TOP(&cea->estacks, DF);
> + tss->x86_tss.ist[IST_INDEX_NMI] = CEA_ESTACK_TOP(&cea->estacks, NMI);
> + tss->x86_tss.ist[IST_INDEX_DB] = CEA_ESTACK_TOP(&cea->estacks, DB);
> + tss->x86_tss.ist[IST_INDEX_MCE] = CEA_ESTACK_TOP(&cea->estacks, MCE);

#ifdef CONFIG_AMD_MEM_ENCRYPT

> /* Only mapped when SEV-ES is active */
> - tss->x86_tss.ist[IST_INDEX_VC] = __this_cpu_ist_top_va(VC);
> + tss->x86_tss.ist[IST_INDEX_VC] = CEA_ESTACK_TOP(&cea->estacks, VC);

#endif

--
Regards/Gruss,
Boris.

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