On 10/23/2024 10:06 PM, Borislav Petkov wrote: > On Fri, Sep 13, 2024 at 05:06:53PM +0530, Neeraj Upadhyay wrote: >> @@ -61,8 +65,30 @@ static void x2apic_savic_send_IPI_mask_allbutself(const struct cpumask *mask, in >> __send_IPI_mask(mask, vector, APIC_DEST_ALLBUT); >> } >> >> +static void x2apic_savic_setup(void) >> +{ >> + void *backing_page; >> + enum es_result ret; >> + unsigned long gpa; >> + >> + if (this_cpu_read(savic_setup_done)) > > I'm sure you can get rid of that silly bool. Like check the apic_backing_page > pointer instead and use that pointer to verify whether the per-CPU setup has > been done successfully. > Ok agree. In this patch version, APIC backing page allocation for all CPUs is done in x2apic_savic_probe(). This is done to group the allocation together, so that these backing pages are mapped using single 2M NPT and RMP entry. I will move the APIC backing page setup to per-CPU setup (x2apic_savic_setup()) and use that pointer to do the check. - Neeraj