[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3] x86/AMD: flush TLB after ucode update
The increased number of messages (spec_ctrl.c:print_details()) within a certain time window made me notice some slowness of boot time screen output. Experimentally I've narrowed the time window to be from immediately after the early ucode update on the BSP to the PAT write in cpu_init(), which upon further investigation has an effect because of the full TLB flush that's implied by that write. For that reason, as a workaround, flush the TLB of the mapping of the page that holds the blob. Note that flushing just a single page is sufficient: As per verify_patch_size() patch size can't exceed 4k, and the way xmalloc() works the blob can't be crossing a page boundary. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- v3: Use TLB flush instead of PAT write. v2: Re-base. --- a/xen/arch/x86/microcode_amd.c +++ b/xen/arch/x86/microcode_amd.c @@ -218,6 +218,12 @@ static int apply_microcode(unsigned int spin_unlock_irqrestore(µcode_update_lock, flags); + /* + * Experimentally this helps with performance issues on at least certain + * Fam15 models. + */ + flush_area_local(hdr, FLUSH_TLB_GLOBAL | FLUSH_ORDER(0)); + /* check current patch id and patch's id for match */ if ( hw_err || (rev != hdr->patch_id) ) { _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |