[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 00/16] x86: indirect call overhead reduction



>>> On 11.07.18 at 15:15, <JBeulich@xxxxxxxx> wrote:
> While indirect calls have always been more expensive than direct ones,
> their cost has further increased with the Spectre v2 mitigations. In a
> number of cases we simply pointlessly use them in the first place. In
> many other cases the indirection solely exists to abstract from e.g.
> vendor specific hardware details, and hence the pointers used never
> change once set. Here we can use alternatives patching to get rid of
> the indirection.
> 
> From patch 8 onwards dependencies exist on earlier, yet to be reviewed
> patches ("x86/alternatives: fully leverage automatic NOP filling" as well
> as the "x86: improve PDX <-> PFN and alike translations" series at the
> very least). I nevertheless wanted to enable a first round of review of
> the series, the more that some of the patches (not just initial ones)
> could perhaps be taken irrespective of those dependencies.
> 
> Further areas where indirect calls could be eliminated (and that I've put
> on my todo list in case the general concept here is deemed reasonable)
> are IOMMU, cpufreq, vPMU, and XSM. For some of these, the ARM side
> would need dealing with as well - I'm not sure whether replacing indirect
> calls by direct ones is worthwhile there as well; if not, the wrappers
> would simply need to become function invocations in the ARM case.
> 
> 01: VMX: reduce number of posted-interrupt hooks
> 02: VMX: don't unconditionally set the tsc_scaling.setup hook
> 03: x86/HVM: switch virtual_intr_delivery_enabled() hook to simple boolean
> 04: x86/HVM: drop vmfunc_intercept
> 05: x86/HVM: add wrapper for hvm_funcs.set_tsc_offset()
> 06: x86: allow producing .i or .s for multiply compiled files
> 07: x86/shadow: fetch CPL just once in sh_page_fault()
> 08: x86/alternatives: allow using assembler macros in favor of C ones
> 09: x86: infrastructure to allow converting certain indirect calls to direct 
> ones
> 10: x86/HVM: patch indirect calls through hvm_funcs to direct ones
> 11: x86/HVM: patch vINTR indirect calls through hvm_funcs to direct ones
> 12: x86: patch ctxt_switch_masking() indirect call to direct one
> 13: x86/genapic: drop .target_cpus() hook
> 14: x86/genapic: remove indirection from genapic hook accesses
> 15: x86/genapic: patch indirect calls to direct ones
> 16: x86/cpuidle: patch some indirect calls to direct ones

The last patch is wrong for the non-mwait-idle case, and I've
therefore dropped it.

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.