Messages in this thread | | | Date | Thu, 30 Sep 2021 15:52:53 +0200 | From | Joerg Roedel <> | Subject | Re: [PATCH v2 2/4] x86/mm/64: Flush global TLB on AP bringup |
| |
On Wed, Sep 29, 2021 at 08:09:38AM -0700, Dave Hansen wrote: > On 9/29/21 7:54 AM, Joerg Roedel wrote: > > > + __flush_tlb_all(); > > } > > Is there a reason to do this flush here as opposed to doing it closer to > the CR3 write where we switch away from trampoline_pgd? cr4_init() > seems like an odd place.
Yeah, the reason is that global flushing is done by toggling CR4.PGE and I didn't want to do that before CR4 is set up.
The CR3 switch away from the trampoline_pgd for secondary CPUs on x86-64 happens in head_64.S already. I will add some asm to do a global flush there right after the CR3 switch. Secondary CPUs are already on kernel virtual addresses at this point.
Joerg
| |