All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/11] xen: drop hypercall function tables
@ 2022-03-10  7:34 Juergen Gross
  2022-03-10  7:34 ` [PATCH v4 01/11] xen/arm: rename do_phydev_op() to do_arm_physdev_op() Juergen Gross
                   ` (11 more replies)
  0 siblings, 12 replies; 28+ messages in thread
From: Juergen Gross @ 2022-03-10  7:34 UTC (permalink / raw)
  To: xen-devel
  Cc: Juergen Gross, Stefano Stabellini, Julien Grall,
	Bertrand Marquis, Volodymyr Babchuk, Andrew Cooper,
	George Dunlap, Jan Beulich, Wei Liu, Roger Pau Monné,
	Christopher Clark, Dario Faggioli, Daniel De Graaf,
	Daniel P. Smith

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

Changes in V3:
- patches 1 and 4 removed as already applied
- comments addressed

Changes in V4:
- 5 patches removed al already applied
- new patches 1, 3 and 11
- avoid switching Arm hypercall handlers to return long (no change of
  handlers returning long already)

Juergen Gross (11):
  xen/arm: rename do_phydev_op() to do_arm_physdev_op()
  xen: move do_vcpu_op() to arch specific code
  xen: switch non style compliant hypercall handler parameter types
  xen: harmonize return types of hypercall handlers
  xen: don't include asm/hypercall.h from C sources
  xen: include compat/platform.h from hypercall.h
  xen: generate hypercall interface related code
  xen: use generated prototypes for hypercall handlers
  xen/x86: call hypercall handlers via generated macro
  xen/arm: call hypercall handlers via generated macro
  xen/x86: remove cf_check attribute from hypercall handlers

 .gitignore                               |   1 +
 xen/arch/arm/domain.c                    |  15 +-
 xen/arch/arm/hvm.c                       |   3 +-
 xen/arch/arm/include/asm/hypercall.h     |   7 +-
 xen/arch/arm/physdev.c                   |   2 +-
 xen/arch/arm/platform_hypercall.c        |   1 +
 xen/arch/arm/traps.c                     | 124 ++-------
 xen/arch/x86/compat.c                    |   6 +-
 xen/arch/x86/cpu/mcheck/mce.c            |   2 +-
 xen/arch/x86/cpu/vpmu.c                  |   3 +-
 xen/arch/x86/domain.c                    |  11 +-
 xen/arch/x86/domctl.c                    |   4 +-
 xen/arch/x86/hvm/dm.c                    |   2 +-
 xen/arch/x86/hvm/hvm.c                   |   2 +-
 xen/arch/x86/hvm/hypercall.c             | 177 ++-----------
 xen/arch/x86/hypercall.c                 |  59 -----
 xen/arch/x86/include/asm/hypercall.h     | 201 ++++-----------
 xen/arch/x86/include/asm/paging.h        |   3 -
 xen/arch/x86/mm.c                        |  13 +-
 xen/arch/x86/mm/paging.c                 |   3 +-
 xen/arch/x86/physdev.c                   |   2 +-
 xen/arch/x86/platform_hypercall.c        |   3 +-
 xen/arch/x86/pv/callback.c               |  26 +-
 xen/arch/x86/pv/descriptor-tables.c      |   8 +-
 xen/arch/x86/pv/emul-priv-op.c           |   2 +-
 xen/arch/x86/pv/hypercall.c              | 187 ++------------
 xen/arch/x86/pv/iret.c                   |   5 +-
 xen/arch/x86/pv/misc-hypercalls.c        |  22 +-
 xen/arch/x86/pv/shim.c                   |   4 +-
 xen/arch/x86/traps.c                     |   2 +-
 xen/arch/x86/x86_64/compat/mm.c          |   3 +-
 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                        |   8 +-
 xen/common/compat/domain.c               |  15 +-
 xen/common/compat/grant_table.c          |   3 +-
 xen/common/compat/kernel.c               |   2 +-
 xen/common/compat/memory.c               |   3 +-
 xen/common/dm.c                          |   2 +-
 xen/common/domain.c                      |  14 +-
 xen/common/domctl.c                      |   2 +-
 xen/common/event_channel.c               |   3 +-
 xen/common/grant_table.c                 |   4 +-
 xen/common/hypfs.c                       |   2 +-
 xen/common/kernel.c                      |   2 +-
 xen/common/kexec.c                       |   6 +-
 xen/common/memory.c                      |   2 +-
 xen/common/multicall.c                   |   4 +-
 xen/common/sched/compat.c                |   2 +-
 xen/common/sched/core.c                  |   4 +-
 xen/common/sysctl.c                      |   2 +-
 xen/common/xenoprof.c                    |   2 +-
 xen/drivers/char/console.c               |   2 +-
 xen/include/Makefile                     |  13 +
 xen/include/hypercall-defs.c             | 285 ++++++++++++++++++++
 xen/include/xen/hypercall.h              | 185 +------------
 xen/scripts/gen_hypercall.awk            | 314 +++++++++++++++++++++++
 xen/xsm/xsm_core.c                       |   4 +-
 59 files changed, 865 insertions(+), 944 deletions(-)
 create mode 100644 xen/include/hypercall-defs.c
 create mode 100644 xen/scripts/gen_hypercall.awk

-- 
2.34.1



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

end of thread, other threads:[~2022-03-24  6:58 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-10  7:34 [PATCH v4 00/11] xen: drop hypercall function tables Juergen Gross
2022-03-10  7:34 ` [PATCH v4 01/11] xen/arm: rename do_phydev_op() to do_arm_physdev_op() Juergen Gross
2022-03-22 20:09   ` Julien Grall
2022-03-10  7:34 ` [PATCH v4 02/11] xen: move do_vcpu_op() to arch specific code Juergen Gross
2022-03-22 20:13   ` Julien Grall
2022-03-10  7:34 ` [PATCH v4 03/11] xen: switch non style compliant hypercall handler parameter types Juergen Gross
2022-03-10  7:34 ` [PATCH v4 04/11] xen: harmonize return types of hypercall handlers Juergen Gross
2022-03-10  7:34 ` [PATCH v4 05/11] xen: don't include asm/hypercall.h from C sources Juergen Gross
2022-03-22 20:15   ` Julien Grall
2022-03-10  7:34 ` [PATCH v4 06/11] xen: include compat/platform.h from hypercall.h Juergen Gross
2022-03-10  7:34 ` [PATCH v4 07/11] xen: generate hypercall interface related code Juergen Gross
2022-03-22 15:31   ` Anthony PERARD
2022-03-22 15:51     ` Juergen Gross
2022-03-22 20:25   ` Julien Grall
2022-03-10  7:34 ` [PATCH v4 08/11] xen: use generated prototypes for hypercall handlers Juergen Gross
2022-03-22 20:26   ` Julien Grall
2022-03-10  7:34 ` [PATCH v4 09/11] xen/x86: call hypercall handlers via generated macro Juergen Gross
2022-03-10  7:34 ` [PATCH v4 10/11] xen/arm: " Juergen Gross
2022-03-23  9:40   ` Julien Grall
2022-03-24  6:58     ` Juergen Gross
2022-03-10  7:34 ` [PATCH v4 11/11] xen/x86: remove cf_check attribute from hypercall handlers Juergen Gross
2022-03-14 17:25   ` Daniel P. Smith
2022-03-17 16:47   ` Jan Beulich
2022-03-17 16:52     ` Juergen Gross
2022-03-17 16:53     ` Jan Beulich
2022-03-22 15:06   ` Teo Couprie Diaz
2022-03-21  7:15 ` [PATCH v4.1 02/11] xen: move do_vcpu_op() to arch specific code Juergen Gross
2022-03-21  7:15   ` [PATCH v4.1 11/11] xen/x86: remove cf_check attribute from hypercall handlers 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.