On 01/11/2021 15:20, Juergen Gross wrote:
> In order to avoid indirect function calls on the hypercall path as
> much as possible this series is removing the hypercall function tables
> and is replacing the hypercall handler calls via the function array
> by automatically generated call macros.
>
> Another by-product of generating the call macros is the automatic
> generating of the hypercall handler prototypes from the same data base
> which is used to generate the macros.
>
> This has the additional advantage of using type safe calls of the
> handlers and to ensure related handler (e.g. PV and HVM ones) share
> the same prototypes.
>
> A very brief performance test (parallel build of the Xen hypervisor
> in a 6 vcpu guest) showed a very slim improvement (less than 1%) of
> the performance with the patches applied. The test was performed using
> a PV and a PVH guest.
>
> Changes in V2:
> - new patches 6, 14, 15
> - patch 7: support hypercall priorities for faster code
> - comments addressed
>
> Juergen Gross (15):
>   xen: limit number of hypercall parameters to 5
>   xen: move do_vcpu_op() to arch specific code
>   xen: harmonize return types of hypercall handlers
>   xen/x86: modify hvm_memory_op() prototype
>   xen: don't include asm/hypercall.h from C sources
>   add .gitignore entries for *.[is] below xen
>   xen: generate hypercall interface related code
>   xen: use generated prototypes for hypercall handlers
>   x86/pv-shim: don't modify hypercall table
>   xen/x86: don't use hypercall table for calling compat hypercalls
>   xen/x86: call hypercall handlers via generated macro
>   xen/arm: call hypercall handlers via generated macro
>   xen/x86: add hypercall performance counters for hvm, correct pv
>   xen: drop calls_to_multicall performance counter
>   tools/xenperf: update hypercall names

https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/1752237172

Something here causes

hypercall.c: In function 'hvm_hypercall':
hypercall.c:174:23: error: unused variable 'r8' [-Werror=unused-variable]
  174 |         unsigned long r8 = regs->r8;
      |                       ^~
hypercall.c:190:22: error: unused variable 'edi' [-Werror=unused-variable]
  190 |         unsigned int edi = regs->edi;
      |                      ^~~
cc1: all warnings being treated as errors

I suspect it will be "call hypercall handlers via generated macro", but
I haven't investigated further.

~Andrew

Reply via email to