All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] xen: drop hypercall function tables
@ 2021-11-01 15:20 Juergen Gross
  2021-11-01 15:20 ` [PATCH v2 01/15] xen: limit number of hypercall parameters to 5 Juergen Gross
                   ` (16 more replies)
  0 siblings, 17 replies; 32+ messages in thread
From: Juergen Gross @ 2021-11-01 15:20 UTC (permalink / raw)
  To: xen-devel
  Cc: Juergen Gross, Jan Beulich, Andrew Cooper, Roger Pau Monné,
	Wei Liu, George Dunlap, Stefano Stabellini, Julien Grall,
	Volodymyr Babchuk, Ian Jackson, Christopher Clark

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

 .gitignore                               |   5 +-
 tools/misc/xenperf.c                     |   5 +
 xen/Makefile                             |  10 +
 xen/arch/arm/domain.c                    |  15 +-
 xen/arch/arm/hvm.c                       |   3 +-
 xen/arch/arm/physdev.c                   |   2 +-
 xen/arch/arm/platform_hypercall.c        |   1 +
 xen/arch/arm/traps.c                     | 124 ++-------
 xen/arch/x86/compat.c                    |  14 +-
 xen/arch/x86/cpu/vpmu.c                  |   1 +
 xen/arch/x86/domain.c                    |  11 +-
 xen/arch/x86/domctl.c                    |   4 +-
 xen/arch/x86/hvm/hypercall.c             | 176 ++-----------
 xen/arch/x86/hypercall.c                 |  59 -----
 xen/arch/x86/mm.c                        |   1 -
 xen/arch/x86/mm/paging.c                 |   3 +-
 xen/arch/x86/platform_hypercall.c        |   1 +
 xen/arch/x86/pv/callback.c               |  20 +-
 xen/arch/x86/pv/emul-priv-op.c           |   2 +-
 xen/arch/x86/pv/hypercall.c              | 192 ++------------
 xen/arch/x86/pv/iret.c                   |   5 +-
 xen/arch/x86/pv/misc-hypercalls.c        |  14 +-
 xen/arch/x86/pv/shim.c                   |  54 ++--
 xen/arch/x86/traps.c                     |   2 +-
 xen/arch/x86/x86_64/compat.c             |   1 -
 xen/arch/x86/x86_64/compat/mm.c          |   1 +
 xen/arch/x86/x86_64/domain.c             |  16 +-
 xen/arch/x86/x86_64/mm.c                 |   2 -
 xen/arch/x86/x86_64/platform_hypercall.c |   3 +-
 xen/common/argo.c                        |  12 +-
 xen/common/compat/domain.c               |  14 +-
 xen/common/compat/grant_table.c          |   1 +
 xen/common/compat/multicall.c            |   2 +-
 xen/common/domain.c                      |  11 +-
 xen/common/event_channel.c               |  10 +
 xen/common/grant_table.c                 |  10 +
 xen/common/kexec.c                       |   6 +-
 xen/common/multicall.c                   |   2 +-
 xen/common/trace.c                       |   2 +-
 xen/include/asm-arm/hypercall.h          |   7 +-
 xen/include/asm-x86/hypercall.h          | 204 ++++-----------
 xen/include/asm-x86/paging.h             |   3 -
 xen/include/asm-x86/pv/shim.h            |   3 +
 xen/include/hypercall-defs.c             | 285 +++++++++++++++++++++
 xen/include/xen/hypercall.h              | 181 +-------------
 xen/include/xen/perfc_defn.h             |   1 -
 xen/scripts/gen_hypercall.awk            | 306 +++++++++++++++++++++++
 47 files changed, 870 insertions(+), 937 deletions(-)
 create mode 100644 xen/include/hypercall-defs.c
 create mode 100644 xen/scripts/gen_hypercall.awk

-- 
2.26.2



^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2021-11-08 13:47 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-01 15:20 [PATCH v2 00/15] xen: drop hypercall function tables Juergen Gross
2021-11-01 15:20 ` [PATCH v2 01/15] xen: limit number of hypercall parameters to 5 Juergen Gross
2021-11-01 15:20 ` [PATCH v2 02/15] xen: move do_vcpu_op() to arch specific code Juergen Gross
2021-11-01 15:20 ` [PATCH v2 03/15] xen: harmonize return types of hypercall handlers Juergen Gross
2021-11-03 14:54   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 04/15] xen/x86: modify hvm_memory_op() prototype Juergen Gross
2021-11-01 15:20 ` [PATCH v2 05/15] xen: don't include asm/hypercall.h from C sources Juergen Gross
2021-11-03 14:57   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 06/15] add .gitignore entries for *.[is] below xen Juergen Gross
2021-11-03 14:58   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 07/15] xen: generate hypercall interface related code Juergen Gross
2021-11-02  7:24   ` Juergen Gross
2021-11-02 10:43   ` Michal Orzel
2021-11-02 11:21     ` Juergen Gross
2021-11-01 15:20 ` [PATCH v2 08/15] xen: use generated prototypes for hypercall handlers Juergen Gross
2021-11-01 15:20 ` [PATCH v2 09/15] x86/pv-shim: don't modify hypercall table Juergen Gross
2021-11-04  9:13   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 10/15] xen/x86: don't use hypercall table for calling compat hypercalls Juergen Gross
2021-11-01 15:20 ` [PATCH v2 11/15] xen/x86: call hypercall handlers via generated macro Juergen Gross
2021-11-04  9:26   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 12/15] xen/arm: " Juergen Gross
2021-11-01 15:20 ` [PATCH v2 13/15] xen/x86: add hypercall performance counters for hvm, correct pv Juergen Gross
2021-11-04  9:31   ` [4.16?] " Jan Beulich
2021-11-01 15:20 ` [PATCH v2 14/15] xen: drop calls_to_multicall performance counter Juergen Gross
2021-11-04  9:32   ` Jan Beulich
2021-11-01 15:20 ` [PATCH v2 15/15] tools/xenperf: update hypercall names Juergen Gross
2021-11-04  9:37   ` Jan Beulich
2021-11-03 11:35 ` [PATCH v2 00/15] xen: drop hypercall function tables Michal Orzel
2021-11-03 11:37   ` Juergen Gross
2021-11-05 14:18 ` Andrew Cooper
2021-11-08  8:36   ` Jan Beulich
2021-11-08 13:47     ` Juergen Gross

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.